|
|
|
@ -800,9 +800,12 @@ public class ChanjetManager {
|
|
|
|
|
boolean hasMore = false;
|
|
|
|
|
List<QuerySaleOrderListResDTO> resulDataList = new ArrayList<>(32);
|
|
|
|
|
do {
|
|
|
|
|
// 分页查询近15天内的已生效的销售订单,一次100条
|
|
|
|
|
QuerySaleOrderListReqVO paramVO = new QuerySaleOrderListReqVO(pageIndex);
|
|
|
|
|
CommonResult<ListResultResVO> retResult = chanjetSpi.invoke(QUERY_SALE_ORDER_LIST, paramVO, ListResultResVO.class);
|
|
|
|
|
if(!retResult.isSuccess()){
|
|
|
|
|
|
|
|
|
|
// 获取销售订单数据失败时抛出异常
|
|
|
|
|
if(!retResult.isSuccess()){
|
|
|
|
|
throw new RuntimeException(retResult.getMsg());
|
|
|
|
|
}
|
|
|
|
|
ListResultResVO result = retResult.getData();
|
|
|
|
@ -823,6 +826,8 @@ public class ChanjetManager {
|
|
|
|
|
resDTO.setExternalId(values.get(0));
|
|
|
|
|
resDTO.setExternalCode(values.get(1));
|
|
|
|
|
resDTO.setCustomerId(ChanjetSpi.getIdPrefix() + Long.parseLong(values.get(2)));
|
|
|
|
|
|
|
|
|
|
// 根据编码判断物料信息是否存在,没有则添加
|
|
|
|
|
MaterialDO materialDOByCode = materialMapper.selectOne(MaterialDO::getCode,values.get(9));
|
|
|
|
|
if(materialDOByCode!=null){
|
|
|
|
|
resDTO.setMaterialId(materialDOByCode.getId());
|
|
|
|
@ -867,11 +872,12 @@ public class ChanjetManager {
|
|
|
|
|
|
|
|
|
|
// 处理数据
|
|
|
|
|
if(!resulDataList.isEmpty()){
|
|
|
|
|
// 存在新物料标记位
|
|
|
|
|
final Boolean[] hasNewMat = {false};
|
|
|
|
|
|
|
|
|
|
// 按照销售订单编码分组
|
|
|
|
|
Map<String, List<QuerySaleOrderListResDTO>> dataGroupByCode =
|
|
|
|
|
resulDataList.stream().collect(Collectors.groupingBy(QuerySaleOrderListResDTO::getExternalCode));
|
|
|
|
|
|
|
|
|
|
// 根据销售订单编码查询生产订单
|
|
|
|
|
List<ProjectOrderDO> doList = projectOrderMapper.selectList(new LambdaQueryWrapper<ProjectOrderDO>() {{
|
|
|
|
|
in(ProjectOrderDO::getExternalCode, dataGroupByCode.keySet());
|
|
|
|
|
eq(ProjectOrderDO::getOrderSource, ProjectOrderSourceEnum.INTERFACE.getCode());
|
|
|
|
@ -881,16 +887,18 @@ public class ChanjetManager {
|
|
|
|
|
|
|
|
|
|
// 处理
|
|
|
|
|
for (Map.Entry<String, List<QuerySaleOrderListResDTO>> entry : dataGroupByCode.entrySet()) {
|
|
|
|
|
// 销售订单编码
|
|
|
|
|
String id = entry.getKey();
|
|
|
|
|
List<QuerySaleOrderListResDTO> voList = entry.getValue();
|
|
|
|
|
QuerySaleOrderListResDTO vo = voList.get(0);
|
|
|
|
|
List<ProjectOrderDO> existsDOs = existsDOGroupByCode.get(id);
|
|
|
|
|
|
|
|
|
|
QuerySaleOrderReqVO param = new QuerySaleOrderReqVO(new QuerySaleOrderReqVO.SaleOrderParamVO(id));
|
|
|
|
|
CommonResult<VoucherVO> orderDetail = chanjetSpi.invoke(QUERY_SALE_ORDER, param, VoucherVO.class);
|
|
|
|
|
// 本地生产订单不存在,则创建
|
|
|
|
|
if (CollUtil.isEmpty(existsDOs)) {
|
|
|
|
|
|
|
|
|
|
// QuerySaleOrderReqVO param = new QuerySaleOrderReqVO(new QuerySaleOrderReqVO.SaleOrderParamVO(id));
|
|
|
|
|
// CommonResult<VoucherVO> orderDetail = chanjetSpi.invoke(QUERY_SALE_ORDER, param, VoucherVO.class);
|
|
|
|
|
|
|
|
|
|
if (CollUtil.isEmpty(existsDOs)) {
|
|
|
|
|
// 新增
|
|
|
|
|
ProjectOrderSaveReqVO saveReqVO = new ProjectOrderSaveReqVO();
|
|
|
|
|
List<ProjectOrderSubDO> subDOList = new ArrayList<>(16);
|
|
|
|
@ -900,10 +908,11 @@ public class ChanjetManager {
|
|
|
|
|
.setOrderSource(ProjectOrderSourceEnum.INTERFACE.getCode())
|
|
|
|
|
.setOrderStatus(ProjectOrderStatusEnum.SAVE.getCode())
|
|
|
|
|
.setIsUrgency(YesOrNoEnum.N.getCode())
|
|
|
|
|
.setActive(OperateTypeEnum.SAVE.name());
|
|
|
|
|
.setActive(OperateTypeEnum.SAVE.name())
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
SaleOrder saleOrder = new SaleOrder();
|
|
|
|
|
BeanUtil.copyProperties(orderDetail.getData().getData(),saleOrder);
|
|
|
|
|
// SaleOrder saleOrder = new SaleOrder();
|
|
|
|
|
// BeanUtil.copyProperties(orderDetail.getData().getData(),saleOrder);
|
|
|
|
|
|
|
|
|
|
// 子项目处理
|
|
|
|
|
// 相同物料累计数量
|
|
|
|
@ -911,114 +920,84 @@ public class ChanjetManager {
|
|
|
|
|
ProjectOrderSubDO subDO = new ProjectOrderSubDO();
|
|
|
|
|
BeanUtil.copyProperties(mList.get(0), subDO);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for(SaleOrderDetail saleOrderDetail : saleOrder.getSaleOrderDetails()){
|
|
|
|
|
|
|
|
|
|
if(saleOrderDetail.getInventory().getCode().equals(mid)) {
|
|
|
|
|
for (Integer idx = 0; idx < saleOrderDetail.getDynamicPropertyValues().size(); idx++) {
|
|
|
|
|
if (saleOrderDetail.getDynamicPropertyKeys().get(idx).equals("freeItem0".toLowerCase())
|
|
|
|
|
&& !StringUtils.isEmpty(saleOrderDetail.getDynamicPropertyValues().get(idx))) {
|
|
|
|
|
|
|
|
|
|
String color = saleOrderDetail.getDynamicPropertyValues().get(idx);
|
|
|
|
|
|
|
|
|
|
MaterialDO materialDOWithColor = materialMapper.selectOne(new LambdaQueryWrapper<MaterialDO>() {{
|
|
|
|
|
eq(MaterialDO::getName, mList.get(0).getMaterialName());
|
|
|
|
|
eq(MaterialDO::getCode, mList.get(0).getMaterialCode());
|
|
|
|
|
eq(MaterialDO::getSpec, mList.get(0).getMaterialSpec());
|
|
|
|
|
eq(MaterialDO::getColor, color);
|
|
|
|
|
}});
|
|
|
|
|
if (materialDOWithColor == null) {
|
|
|
|
|
materialDOWithColor = new MaterialDO();
|
|
|
|
|
materialDOWithColor.setCode(mList.get(0).getMaterialCode() + "-" + color);
|
|
|
|
|
materialDOWithColor.setName(mList.get(0).getMaterialName() + "-" + color);
|
|
|
|
|
materialDOWithColor.setShortName(mList.get(0).getMaterialName() + "-" + color);
|
|
|
|
|
materialDOWithColor.setColor(color);
|
|
|
|
|
materialDOWithColor.setSpec(mList.get(0).getMaterialSpec());
|
|
|
|
|
materialDOWithColor.setExternalCode(mList.get(0).getMaterialCode());
|
|
|
|
|
materialDOWithColor.setStatus(ValidStatusEnum.VALID.getCode());
|
|
|
|
|
materialDOWithColor.setUnit(mList.get(0).getUnit());
|
|
|
|
|
materialDOWithColor.setMaterialType(mList.get(0).getMaterialType());
|
|
|
|
|
materialDOWithColor.setInventoryProperty(6);
|
|
|
|
|
|
|
|
|
|
materialMapper.insert(materialDOWithColor);
|
|
|
|
|
|
|
|
|
|
subDO.setMaterialId(materialDOWithColor.getId());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 获得颜色数据
|
|
|
|
|
String color = mList.get(0).getFreeItem0();
|
|
|
|
|
|
|
|
|
|
MaterialDO materialDOWithColor = materialMapper.selectOne(new LambdaQueryWrapper<MaterialDO>() {{
|
|
|
|
|
eq(MaterialDO::getName, mList.get(0).getMaterialName());
|
|
|
|
|
eq(MaterialDO::getCode, mList.get(0).getMaterialCode());
|
|
|
|
|
eq(MaterialDO::getSpec, mList.get(0).getMaterialSpec());
|
|
|
|
|
eq(MaterialDO::getColor, color);
|
|
|
|
|
}});
|
|
|
|
|
if (materialDOWithColor == null) {
|
|
|
|
|
materialDOWithColor = new MaterialDO();
|
|
|
|
|
materialDOWithColor.setCode(mList.get(0).getMaterialCode() + "-" + color);
|
|
|
|
|
materialDOWithColor.setName(mList.get(0).getMaterialName() + "-" + color);
|
|
|
|
|
materialDOWithColor.setShortName(mList.get(0).getMaterialName() + "-" + color);
|
|
|
|
|
materialDOWithColor.setColor(color);
|
|
|
|
|
materialDOWithColor.setSpec(mList.get(0).getMaterialSpec());
|
|
|
|
|
materialDOWithColor.setExternalCode(mList.get(0).getMaterialCode());
|
|
|
|
|
materialDOWithColor.setStatus(ValidStatusEnum.VALID.getCode());
|
|
|
|
|
materialDOWithColor.setUnit(mList.get(0).getUnit());
|
|
|
|
|
materialDOWithColor.setMaterialType(mList.get(0).getMaterialType());
|
|
|
|
|
materialDOWithColor.setInventoryProperty(6);
|
|
|
|
|
|
|
|
|
|
materialMapper.insert(materialDOWithColor);
|
|
|
|
|
|
|
|
|
|
subDO.setMaterialId(materialDOWithColor.getId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// for(SaleOrderDetail saleOrderDetail : saleOrder.getSaleOrderDetails()){
|
|
|
|
|
//
|
|
|
|
|
// if(saleOrderDetail.getInventory().getCode().equals(mid)) {
|
|
|
|
|
// for (Integer idx = 0; idx < saleOrderDetail.getDynamicPropertyValues().size(); idx++) {
|
|
|
|
|
// if (saleOrderDetail.getDynamicPropertyKeys().get(idx).equals("freeItem0".toLowerCase())
|
|
|
|
|
// && !StringUtils.isEmpty(saleOrderDetail.getDynamicPropertyValues().get(idx))) {
|
|
|
|
|
//
|
|
|
|
|
// String color = saleOrderDetail.getDynamicPropertyValues().get(idx);
|
|
|
|
|
//
|
|
|
|
|
// MaterialDO materialDOWithColor = materialMapper.selectOne(new LambdaQueryWrapper<MaterialDO>() {{
|
|
|
|
|
// eq(MaterialDO::getName, mList.get(0).getMaterialName());
|
|
|
|
|
// eq(MaterialDO::getCode, mList.get(0).getMaterialCode());
|
|
|
|
|
// eq(MaterialDO::getSpec, mList.get(0).getMaterialSpec());
|
|
|
|
|
// eq(MaterialDO::getColor, color);
|
|
|
|
|
// }});
|
|
|
|
|
// if (materialDOWithColor == null) {
|
|
|
|
|
// materialDOWithColor = new MaterialDO();
|
|
|
|
|
// materialDOWithColor.setCode(mList.get(0).getMaterialCode() + "-" + color);
|
|
|
|
|
// materialDOWithColor.setName(mList.get(0).getMaterialName() + "-" + color);
|
|
|
|
|
// materialDOWithColor.setShortName(mList.get(0).getMaterialName() + "-" + color);
|
|
|
|
|
// materialDOWithColor.setColor(color);
|
|
|
|
|
// materialDOWithColor.setSpec(mList.get(0).getMaterialSpec());
|
|
|
|
|
// materialDOWithColor.setExternalCode(mList.get(0).getMaterialCode());
|
|
|
|
|
// materialDOWithColor.setStatus(ValidStatusEnum.VALID.getCode());
|
|
|
|
|
// materialDOWithColor.setUnit(mList.get(0).getUnit());
|
|
|
|
|
// materialDOWithColor.setMaterialType(mList.get(0).getMaterialType());
|
|
|
|
|
// materialDOWithColor.setInventoryProperty(6);
|
|
|
|
|
//
|
|
|
|
|
// materialMapper.insert(materialDOWithColor);
|
|
|
|
|
//
|
|
|
|
|
// subDO.setMaterialId(materialDOWithColor.getId());
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
subDO.setAmount(mList.stream().mapToInt(QuerySaleOrderListResDTO::getAmount).sum());
|
|
|
|
|
subDO.setOrderAmount(mList.stream().mapToInt(QuerySaleOrderListResDTO::getAmount).sum());
|
|
|
|
|
subDO.setPubuserdefnvc2(mList.get(0).getPubuserdefnvc2());
|
|
|
|
|
subDO.setPriuserdefnvc2(mList.get(0).getPriuserdefnvc2());
|
|
|
|
|
subDO.setFreeItem0(mList.get(0).getFreeItem0());
|
|
|
|
|
subDOList.add(subDO);
|
|
|
|
|
|
|
|
|
|
// if (materialMapper.selectList(MaterialDO::getCode, subDO.getMaterialCode()) == null) {
|
|
|
|
|
// hasNewMat[0] = true;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
saveReqVO.setProjectOrderSubs(subDOList);
|
|
|
|
|
CommonResult<Long> orderId = projectOrderController.operateProjectOrder(saveReqVO);
|
|
|
|
|
saveReqVO.setId(orderId.getData());
|
|
|
|
|
|
|
|
|
|
// // 根据销售订单的每个产品的BOM,找到物料编码为6开头的物料,原先的生成生产订单的逻辑不变,再另外生成一张生产订单
|
|
|
|
|
// // voList 是订单中的产品列表
|
|
|
|
|
// List<ProjectOrderSubDO> subJSDOList = new ArrayList<>(100);
|
|
|
|
|
// voList.stream().collect(Collectors.groupingBy(QuerySaleOrderListResDTO::getMaterialId)).forEach((mid, mList) -> {
|
|
|
|
|
// MaterialDO materialDO = materialMapper.selectById(mid);
|
|
|
|
|
// saveSemiFinishedOrder(materialDO,saveReqVO,mList.stream().mapToInt(QuerySaleOrderListResDTO::getAmount).sum(),subJSDOList);
|
|
|
|
|
// });
|
|
|
|
|
//
|
|
|
|
|
// // 保存订单产品信息
|
|
|
|
|
// if(!CollUtil.isEmpty(subJSDOList)) {
|
|
|
|
|
// ProjectOrderDO newProjectOrderDO =BeanUtil.toBean(projectOrderMapper.selectById(saveReqVO.getId()),ProjectOrderDO.class);
|
|
|
|
|
// String code = newProjectOrderDO.getCode()+"-挤塑";
|
|
|
|
|
// newProjectOrderDO.setId(null)
|
|
|
|
|
// .setCode(code)
|
|
|
|
|
// .setExternalCode(code)
|
|
|
|
|
// .setStatus(ValidStatusEnum.VALID.getCode())
|
|
|
|
|
// .setOrderSource(ProjectOrderSourceEnum.INTERFACE.getCode())
|
|
|
|
|
// .setOrderStatus(ProjectOrderStatusEnum.SAVE.getCode())
|
|
|
|
|
// .setIsUrgency(YesOrNoEnum.N.getCode());
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// // 保存订单信息
|
|
|
|
|
// projectOrderMapper.insert(newProjectOrderDO);
|
|
|
|
|
//
|
|
|
|
|
// // 相同物料累计数量
|
|
|
|
|
// List<ProjectOrderSubDO> subNewDOList = new ArrayList<>(100);
|
|
|
|
|
// subJSDOList.stream().collect(Collectors.groupingBy(ProjectOrderSubDO::getMaterialId)).forEach((mid, mList) -> {
|
|
|
|
|
// ProjectOrderSubDO subDO = new ProjectOrderSubDO();
|
|
|
|
|
// BeanUtil.copyProperties(mList.get(0), subDO);
|
|
|
|
|
//
|
|
|
|
|
// subDO.setProjectOrderId(newProjectOrderDO.getId());
|
|
|
|
|
// subDO.setAmount(mList.stream().mapToInt(ProjectOrderSubDO::getAmount).sum());
|
|
|
|
|
// subDO.setOrderAmount(mList.stream().mapToInt(ProjectOrderSubDO::getOrderAmount).sum());
|
|
|
|
|
// subNewDOList.add(subDO);
|
|
|
|
|
// });
|
|
|
|
|
// projectOrderSubMapper.insertBatch(subNewDOList);
|
|
|
|
|
//
|
|
|
|
|
// // 手动记录日志
|
|
|
|
|
// operateLogFrameworkService.createOperateLog(request,
|
|
|
|
|
// LocalDateTime.now(),
|
|
|
|
|
// BusinessTypeEnum.PROJECT_ORDER.name(),
|
|
|
|
|
// newProjectOrderDO.getId(),
|
|
|
|
|
// OperateTypeEnum.valueOf(OperateTypeEnum.SAVE.name()).getType(),
|
|
|
|
|
// "");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// if(hasNewMat[0]){
|
|
|
|
|
// // 存在新的物料,则同步物料信息
|
|
|
|
|
// this.queryMaterial();
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|