来料加工
This commit is contained in:
@@ -102,4 +102,5 @@ public interface OriginalMaterialProcessingDetailService {
|
||||
*/
|
||||
List<OriginalMaterialProcessingDetailDO> queryOriginalMaterialProcessingDetailListByOrderId(Long orderId);
|
||||
|
||||
void updateOriginalMaterialProcessingDetailList(List<OriginalMaterialProcessingDetailSaveReqVO> originalMaterialProcessingDetailSaveReqVOS);
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.zt.plat.module.contractorder.service.originalmaterialprocessing;
|
||||
|
||||
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.module.base.api.materialinfomation.MaterialInfomationApi;
|
||||
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.dal.dataobject.entrustorder.EntrustOrderDetailDO;
|
||||
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.enums.ErpConstants;
|
||||
import com.zt.plat.module.erp.service.erp.ErpOrderService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -136,6 +140,63 @@ public class OriginalMaterialProcessingDetailServiceImpl implements OriginalMate
|
||||
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
|
||||
public List<OriginalMaterialProcessingDetailRespVO> getOriginalMaterialProcessingDetailListByOrderId(Long orderId) {
|
||||
return BeanUtils.toBean(originalMaterialProcessingDetailMapper.selectList(OriginalMaterialProcessingDetailDO::getOrderId, orderId), OriginalMaterialProcessingDetailRespVO.class);
|
||||
|
||||
Reference in New Issue
Block a user