diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/vo/QuerySaleOrderListReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/vo/QuerySaleOrderListReqVO.java index db0ed4a4..1292b996 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/vo/QuerySaleOrderListReqVO.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/vo/QuerySaleOrderListReqVO.java @@ -44,7 +44,7 @@ public class QuerySaleOrderListReqVO extends AbstractChanjetContent { add(new ParamDicDTO("01")); }}); put("SaleOrder.AuditedTime", new ArrayList(){{ - add(new ParamDicDTO(LocalDate.now().minusDays(15).toString())); + add(new ParamDicDTO(LocalDate.now().minusDays(30).toString())); add(new ParamDicDTO(LocalDate.now().toString())); }}); }}; diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/projectorder/vo/ProjectOrderSaveReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/projectorder/vo/ProjectOrderSaveReqVO.java index 69106b02..335d0f65 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/projectorder/vo/ProjectOrderSaveReqVO.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/projectorder/vo/ProjectOrderSaveReqVO.java @@ -144,4 +144,13 @@ public class ProjectOrderSaveReqVO { @Schema(description = "包装状态") private Integer packageStatus; + @Schema(description = "客户分订单号") + private String pubuserdefnvc2; + + @Schema(description = "订单序号") + private String priuserdefnvc2; + + @Schema(description = "颜色") + private String freeItem0; + } diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/projectorder/ProjectOrderDO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/projectorder/ProjectOrderDO.java index fd0449de..2f5d6001 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/projectorder/ProjectOrderDO.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/projectorder/ProjectOrderDO.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; import com.chanko.yunxi.mes.module.biz.enums.ProjectOrderStatusEnum; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.math.BigDecimal; @@ -205,6 +206,21 @@ public class ProjectOrderDO extends BaseDO { */ private String ts; + /** + * 客户分订单号 + */ + private String pubuserdefnvc2; + + /** + * 订单序号 + */ + private String priuserdefnvc2; + + /** + * 颜色 + */ + private String freeItem0; + /** * 快照原始单据日期 */ diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/projectorder/ProjectOrderSubDO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/projectorder/ProjectOrderSubDO.java index 6a128cea..2a928089 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/projectorder/ProjectOrderSubDO.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/projectorder/ProjectOrderSubDO.java @@ -2,6 +2,7 @@ package com.chanko.yunxi.mes.module.biz.dal.dataobject.projectorder; import com.baomidou.mybatisplus.annotation.*; import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.math.BigDecimal; @@ -191,4 +192,19 @@ public class ProjectOrderSubDO extends BaseDO { private Integer orderAmount; + /** + * 客户分订单号 + */ + private String pubuserdefnvc2; + + /** + * 订单序号 + */ + private String priuserdefnvc2; + + /** + * 颜色 + */ + private String freeItem0; + } diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetManager.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetManager.java index fde2277e..2c0cf2d0 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetManager.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetManager.java @@ -800,9 +800,12 @@ public class ChanjetManager { boolean hasMore = false; List resulDataList = new ArrayList<>(32); do { + // 分页查询近15天内的已生效的销售订单,一次100条 QuerySaleOrderListReqVO paramVO = new QuerySaleOrderListReqVO(pageIndex); CommonResult 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> dataGroupByCode = resulDataList.stream().collect(Collectors.groupingBy(QuerySaleOrderListResDTO::getExternalCode)); + // 根据销售订单编码查询生产订单 List doList = projectOrderMapper.selectList(new LambdaQueryWrapper() {{ in(ProjectOrderDO::getExternalCode, dataGroupByCode.keySet()); eq(ProjectOrderDO::getOrderSource, ProjectOrderSourceEnum.INTERFACE.getCode()); @@ -881,16 +887,18 @@ public class ChanjetManager { // 处理 for (Map.Entry> entry : dataGroupByCode.entrySet()) { + // 销售订单编码 String id = entry.getKey(); List voList = entry.getValue(); QuerySaleOrderListResDTO vo = voList.get(0); List existsDOs = existsDOGroupByCode.get(id); - QuerySaleOrderReqVO param = new QuerySaleOrderReqVO(new QuerySaleOrderReqVO.SaleOrderParamVO(id)); - CommonResult orderDetail = chanjetSpi.invoke(QUERY_SALE_ORDER, param, VoucherVO.class); + // 本地生产订单不存在,则创建 + if (CollUtil.isEmpty(existsDOs)) { +// QuerySaleOrderReqVO param = new QuerySaleOrderReqVO(new QuerySaleOrderReqVO.SaleOrderParamVO(id)); +// CommonResult orderDetail = chanjetSpi.invoke(QUERY_SALE_ORDER, param, VoucherVO.class); - if (CollUtil.isEmpty(existsDOs)) { // 新增 ProjectOrderSaveReqVO saveReqVO = new ProjectOrderSaveReqVO(); List 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() {{ - 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() {{ + 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() {{ +// 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 orderId = projectOrderController.operateProjectOrder(saveReqVO); saveReqVO.setId(orderId.getData()); - -// // 根据销售订单的每个产品的BOM,找到物料编码为6开头的物料,原先的生成生产订单的逻辑不变,再另外生成一张生产订单 -// // voList 是订单中的产品列表 -// List 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 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(); -// } } } diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/projectorder/ProjectOrderServiceImpl.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/projectorder/ProjectOrderServiceImpl.java index a53d46e8..d4ddc335 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/projectorder/ProjectOrderServiceImpl.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/projectorder/ProjectOrderServiceImpl.java @@ -98,6 +98,7 @@ public class ProjectOrderServiceImpl implements ProjectOrderService { CustomerDO customer = customerService.getCustomer(projectOrder.getCustomerId()); projectOrder.setCode(PROJECT_ORDER.getCode(customer==null?"":customer.getCode(), serialNumberDO.getSerialNumber().toString())); projectOrder.setOrderStatus(ProjectOrderStatusEnum.valueOf(createReqVO.getActive()).getCode()); + if(!StringUtils.isEmpty(createReqVO.getExternalCode())){ projectOrder.setCode(projectOrder.getExternalCode()); diff --git a/sql/v1.0.0/2.business/1.structure.sql b/sql/v1.0.0/2.business/1.structure.sql index 82fe5907..70c5333d 100644 --- a/sql/v1.0.0/2.business/1.structure.sql +++ b/sql/v1.0.0/2.business/1.structure.sql @@ -674,7 +674,7 @@ alter table wms_storage_check_mat Modify COLUMN pn_id bigint(20) default null CO alter table project_sale_order ADD COLUMN ts varchar(32) default null COMMENT '用友时间戳'; ALTER TABLE pro_task_report ADD COLUMN `has_synch_storage` TINYINT(1) DEFAULT null COMMENT '入库同步标识'; -alter table project_sale_order_sub ADD COLUMN customer_sub_code varchar(64) default null COMMENT '客户分订单号'; -alter table project_sale_order_sub ADD COLUMN serial_number varchar(64) default null COMMENT '订单序列号'; -alter table project_sale_order_sub ADD COLUMN color varchar(64) default null COMMENT '颜色'; +alter table project_sale_order_sub ADD COLUMN pubuserdefnvc2 varchar(64) default null COMMENT '客户分订单号'; +alter table project_sale_order_sub ADD COLUMN priuserdefnvc2 varchar(64) default null COMMENT '订单序列号'; +alter table project_sale_order_sub ADD COLUMN freeItem0 varchar(64) default null COMMENT '颜色';