来料加工
This commit is contained in:
@@ -102,4 +102,5 @@ public interface OriginalMaterialProcessingDetailService {
|
|||||||
*/
|
*/
|
||||||
List<OriginalMaterialProcessingDetailDO> queryOriginalMaterialProcessingDetailListByOrderId(Long orderId);
|
List<OriginalMaterialProcessingDetailDO> queryOriginalMaterialProcessingDetailListByOrderId(Long orderId);
|
||||||
|
|
||||||
|
void updateOriginalMaterialProcessingDetailList(List<OriginalMaterialProcessingDetailSaveReqVO> originalMaterialProcessingDetailSaveReqVOS);
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.zt.plat.module.contractorder.service.originalmaterialprocessing;
|
package com.zt.plat.module.contractorder.service.originalmaterialprocessing;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||||
import com.zt.plat.module.base.api.materialinfomation.MaterialInfomationApi;
|
import com.zt.plat.module.base.api.materialinfomation.MaterialInfomationApi;
|
||||||
import com.zt.plat.module.base.api.materialinfomation.dto.MaterialInfomationPageReqDTO;
|
import com.zt.plat.module.base.api.materialinfomation.dto.MaterialInfomationPageReqDTO;
|
||||||
@@ -12,7 +14,9 @@ import com.zt.plat.module.contractorder.controller.admin.originalmaterialprocess
|
|||||||
import com.zt.plat.module.contractorder.controller.admin.originalmaterialprocessing.vo.OriginalMaterialProcessingDetailSaveReqVO;
|
import com.zt.plat.module.contractorder.controller.admin.originalmaterialprocessing.vo.OriginalMaterialProcessingDetailSaveReqVO;
|
||||||
import com.zt.plat.module.contractorder.dal.dataobject.entrustorder.EntrustOrderDetailDO;
|
import com.zt.plat.module.contractorder.dal.dataobject.entrustorder.EntrustOrderDetailDO;
|
||||||
import com.zt.plat.module.contractorder.dal.dataobject.originalmaterialprocessing.OriginalMaterialProcessingDetailDO;
|
import com.zt.plat.module.contractorder.dal.dataobject.originalmaterialprocessing.OriginalMaterialProcessingDetailDO;
|
||||||
|
import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDetailDO;
|
||||||
import com.zt.plat.module.contractorder.dal.mysql.originalmaterialprocessing.OriginalMaterialProcessingDetailMapper;
|
import com.zt.plat.module.contractorder.dal.mysql.originalmaterialprocessing.OriginalMaterialProcessingDetailMapper;
|
||||||
|
import com.zt.plat.module.contractorder.enums.ErpConstants;
|
||||||
import com.zt.plat.module.erp.service.erp.ErpOrderService;
|
import com.zt.plat.module.erp.service.erp.ErpOrderService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@@ -136,6 +140,63 @@ public class OriginalMaterialProcessingDetailServiceImpl implements OriginalMate
|
|||||||
return originalMaterialProcessingDetailMapper.selectList(OriginalMaterialProcessingDetailDO::getOrderId, orderId);
|
return originalMaterialProcessingDetailMapper.selectList(OriginalMaterialProcessingDetailDO::getOrderId, orderId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateOriginalMaterialProcessingDetailList(List<OriginalMaterialProcessingDetailSaveReqVO> originalMaterialProcessingDetailSaveReqVOS) {
|
||||||
|
List<OriginalMaterialProcessingDetailDO> beanList = BeanUtils.toBean(originalMaterialProcessingDetailSaveReqVOS, OriginalMaterialProcessingDetailDO.class);
|
||||||
|
beanList.forEach(this::setElemInfo);
|
||||||
|
|
||||||
|
beanList.forEach(item -> {
|
||||||
|
String priceConditionDetail = item.getPriceConditionDetail();
|
||||||
|
// 空值校验,避免空指针异常
|
||||||
|
if (priceConditionDetail == null || priceConditionDetail.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 解析外层JSON数组(原嵌套数组)
|
||||||
|
List<JSONArray> outerJsonArrays = JSONArray.parseArray(priceConditionDetail, JSONArray.class);
|
||||||
|
if (item.getId() != null && !outerJsonArrays.isEmpty()) {
|
||||||
|
// 核心修改:定义一维集合,收集所有扁平后的元素
|
||||||
|
List<Object> flatProcessedElements = new ArrayList<>();
|
||||||
|
|
||||||
|
// 遍历外层数组,扁平化所有内层元素
|
||||||
|
for (JSONArray innerJsonArray : outerJsonArrays) {
|
||||||
|
if (innerJsonArray == null || innerJsonArray.isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// 遍历当前内层数组的每个元素,做flag处理
|
||||||
|
for (int innerIdx = 0; innerIdx < innerJsonArray.size(); innerIdx++) {
|
||||||
|
String originalJsonStr = innerJsonArray.getString(innerIdx);
|
||||||
|
if (originalJsonStr == null || originalJsonStr.isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
JSONObject jsonObject = JSONObject.parseObject(originalJsonStr);
|
||||||
|
String flag = jsonObject.getString("flag");
|
||||||
|
|
||||||
|
// 根据flag处理:D删除,I改U,其他保留
|
||||||
|
if (ErpConstants.SALES_DOCUMENT_REQUEST_FLAG_D.equals(flag)) {
|
||||||
|
continue; // D直接跳过(删除)
|
||||||
|
} else if (ErpConstants.SALES_DOCUMENT_REQUEST_FLAG_I.equals(flag)) {
|
||||||
|
jsonObject.put("flag", ErpConstants.SALES_DOCUMENT_REQUEST_FLAG_U);
|
||||||
|
flatProcessedElements.add(jsonObject); // 加入一维集合
|
||||||
|
} else {
|
||||||
|
flatProcessedElements.add(jsonObject); // 其他flag直接加入
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 把扁平后的一维集合转为JSON数组,直接作为最终结果
|
||||||
|
JSONArray finalOneDimensionalArray = JSONArray.parseArray(JSONArray.toJSONString(flatProcessedElements));
|
||||||
|
// 4. 重新设置处理后的JSON字符串(此时就是[{},{}]格式)
|
||||||
|
item.setPriceConditionDetail(finalOneDimensionalArray.toString());
|
||||||
|
} else {
|
||||||
|
// 无外层数组/无ID时,保持原空值(避免写入空数组[],可根据业务调整)
|
||||||
|
item.setPriceConditionDetail(priceConditionDetail);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// 6. 批量插入/更新
|
||||||
|
originalMaterialProcessingDetailMapper.insertOrUpdate(beanList);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<OriginalMaterialProcessingDetailRespVO> getOriginalMaterialProcessingDetailListByOrderId(Long orderId) {
|
public List<OriginalMaterialProcessingDetailRespVO> getOriginalMaterialProcessingDetailListByOrderId(Long orderId) {
|
||||||
return BeanUtils.toBean(originalMaterialProcessingDetailMapper.selectList(OriginalMaterialProcessingDetailDO::getOrderId, orderId), OriginalMaterialProcessingDetailRespVO.class);
|
return BeanUtils.toBean(originalMaterialProcessingDetailMapper.selectList(OriginalMaterialProcessingDetailDO::getOrderId, orderId), OriginalMaterialProcessingDetailRespVO.class);
|
||||||
|
|||||||
Reference in New Issue
Block a user