Browse Source

fix:使用工具类做实体转换,material_requisition表增加sale_order_id字段,用于库存锁传递

luobo 1 week ago
parent
commit
0f85127783

+ 1 - 0
easydo-mes/src/main/java/easydo/technology/model/MaterialRequisition.java

@@ -17,6 +17,7 @@ public class MaterialRequisition extends CommonModel{
     private String name;
     private String dispatchId;
     private String orderId;
+    private String saleOrderId;
     private String bomId;
     private String requisitionType;
     private String outboundStatus;

+ 1 - 0
easydo-mes/src/main/java/easydo/technology/model/ProductOrderDispatch.java

@@ -18,6 +18,7 @@ public class ProductOrderDispatch extends CommonModel {
     private String code;
     private String name;
     private String orderId;
+    private String saleOrderId;
     private String beginDate;
     private String endDate;
     private String status;

+ 1 - 0
easydo-mes/src/main/java/easydo/technology/model/vo/MaterialRequisitionVO.java

@@ -16,6 +16,7 @@ public class MaterialRequisitionVO {
     private String name;
     private String dispatchId;
     private String orderId;
+    private String saleOrderId;
     private String bomId;
     private String requisitionType;
     private String outboundStatus;

+ 1 - 0
easydo-mes/src/main/java/easydo/technology/model/vo/ProductOrderDispatchVO.java

@@ -73,6 +73,7 @@ public class ProductOrderDispatchVO {
         private String name;
         private String dispatchId;
         private String orderId;
+        private String saleOrderId;
         private String bomId;
         private String requisitionType;  // auto-领料, manual-补料
         private String outboundStatus;   // applied-申请完毕, pending-未出库, partial-部分出库, completed-出库完毕

+ 7 - 0
easydo-mes/src/main/java/easydo/technology/service/impl/MaterialRequisitionServiceImpl.java

@@ -58,6 +58,7 @@ public class MaterialRequisitionServiceImpl implements MaterialRequisitionServic
                 vo.setName(model.getName());
                 vo.setDispatchId(model.getDispatchId());
                 vo.setOrderId(model.getOrderId());
+                vo.setSaleOrderId(model.getSaleOrderId());
                 vo.setBomId(model.getBomId());
                 vo.setRequisitionType(model.getRequisitionType());
                 vo.setOutboundStatus(model.getOutboundStatus());
@@ -102,6 +103,7 @@ public class MaterialRequisitionServiceImpl implements MaterialRequisitionServic
             requisition.setName(model.getName());
             requisition.setDispatchId(model.getDispatchId());
             requisition.setOrderId(model.getOrderId());
+            requisition.setSaleOrderId(model.getSaleOrderId());
             requisition.setBomId(model.getBomId());
             requisition.setRequisitionType(model.getRequisitionType() != null && !model.getRequisitionType().trim().isEmpty()
                 ? model.getRequisitionType()
@@ -164,6 +166,9 @@ public class MaterialRequisitionServiceImpl implements MaterialRequisitionServic
             if (model.getOrderId() == null || model.getOrderId().trim().isEmpty()) {
                 model.setOrderId(requisition.getOrderId());
             }
+            if (model.getSaleOrderId() == null || model.getSaleOrderId().trim().isEmpty()) {
+                model.setSaleOrderId(requisition.getSaleOrderId());
+            }
             if (model.getBomId() == null || model.getBomId().trim().isEmpty()) {
                 model.setBomId(requisition.getBomId());
             }
@@ -177,6 +182,7 @@ public class MaterialRequisitionServiceImpl implements MaterialRequisitionServic
             requisition.setName(model.getName());
             requisition.setDispatchId(model.getDispatchId());
             requisition.setOrderId(model.getOrderId());
+            requisition.setSaleOrderId(model.getSaleOrderId());
             requisition.setBomId(model.getBomId());
             requisition.setRequisitionType(model.getRequisitionType() != null && !model.getRequisitionType().trim().isEmpty()
                 ? model.getRequisitionType()
@@ -302,6 +308,7 @@ public class MaterialRequisitionServiceImpl implements MaterialRequisitionServic
             MaterialRequisition requisition = new MaterialRequisition();
             requisition.setDispatchId(dispatch.getId());
             requisition.setOrderId(dispatch.getOrderId());
+            requisition.setSaleOrderId(dispatch.getSaleOrderId());
             requisition.setBomId(dispatch.getBomId());
             requisition.setRequisitionType(MESEnum.MATERIAL_REQUISITION_TYPE_AUTO.getValue());  // 自动生成
             requisition.setOutboundStatus(MESEnum.MATERIAL_REQUISITION_OUTBOUND_STATUS_APPLIED.getValue());  // 申请完毕

+ 9 - 54
easydo-mes/src/main/java/easydo/technology/service/impl/ProductOrderDispatchServiceImpl.java

@@ -10,6 +10,7 @@ import easydo.technology.service.FlowNoService;
 import easydo.technology.service.MaterialRequisitionService;
 import easydo.technology.service.ProductOrderDispatchService;
 import easydo.technology.system.model.SysUser;
+import easydo.technology.utils.ConvertUtil;
 import easydo.technology.utils.SecurityUtils;
 import org.springframework.stereotype.Service;
 
@@ -108,32 +109,8 @@ public class ProductOrderDispatchServiceImpl implements ProductOrderDispatchServ
             // 转换为 VO 对象
             List<ProductOrderDispatchVO> voList = new ArrayList<>();
             for (ProductOrderDispatch model : list) {
-                ProductOrderDispatchVO vo = new ProductOrderDispatchVO();
-                
-                // 复制主要字段
-                vo.setId(model.getId());
-                vo.setCode(model.getCode());
-                vo.setName(model.getName());
-                vo.setOrderId(model.getOrderId());
-                vo.setBomId(model.getBomId());
-                vo.setStageId(model.getStageId());
-                vo.setRouteId(model.getRouteId());
-                vo.setOrderNum(model.getOrderNum());
-                vo.setProcessNum(model.getProcessNum());
-                vo.setProcessTimeHour(model.getProcessTimeHour());
-                vo.setReadyTimeHour(model.getReadyTimeHour());
-                vo.setMoveNum(model.getMoveNum());
-                vo.setMoveTimeHour(model.getMoveTimeHour());
-                vo.setStatus(model.getStatus());
-                vo.setIsReport(model.getIsReport());
-                vo.setIsReview(model.getIsReview());
-                vo.setIsRound(model.getIsRound());
-                vo.setIsInspection(model.getIsInspection());
-                vo.setBeginDate(model.getBeginDate());
-                vo.setEndDate(model.getEndDate());
-                vo.setCreateTime(model.getCreateTime());
-                vo.setTenantId(model.getTenantId());
-                
+                ProductOrderDispatchVO vo = ConvertUtil.convert(model, ProductOrderDispatchVO.class);
+
                 // 查询并设置工单信息(返回整表对象)
                 if (model.getOrderId() != null) {
                     ProductOrder orderParam = new ProductOrder();
@@ -186,12 +163,7 @@ public class ProductOrderDispatchServiceImpl implements ProductOrderDispatchServ
                 if (userItems != null && !userItems.isEmpty()) {
                     List<ProductOrderDispatchVO.SimpleDispatchUserItem> simpleUserItems = new ArrayList<>();
                     for (DispatchUserItem item : userItems) {
-                        ProductOrderDispatchVO.SimpleDispatchUserItem simpleItem = new ProductOrderDispatchVO.SimpleDispatchUserItem();
-                        simpleItem.setId(item.getId());
-                        simpleItem.setUserId(item.getUserId());
-                        simpleItem.setStatus(item.getStatus());
-                        simpleItem.setIsReport(item.getIsReport());
-                        simpleItem.setIsReview(item.getIsReview());
+                        ProductOrderDispatchVO.SimpleDispatchUserItem simpleItem = ConvertUtil.convert(item, ProductOrderDispatchVO.SimpleDispatchUserItem.class);
                         
                         // 查询用户信息
                         if (item.getUserId() != null) {
@@ -199,10 +171,7 @@ public class ProductOrderDispatchServiceImpl implements ProductOrderDispatchServ
                             userParam.setId(item.getUserId());
                             SysUser user = jdbcClient.getJdbcModelById(userParam, connection);
                             if (user != null) {
-                                ProductOrderDispatchVO.SimpleUser simpleUser = new ProductOrderDispatchVO.SimpleUser();
-                                simpleUser.setId(user.getId());
-                                simpleUser.setUsername(user.getUsername());
-                                simpleUser.setNickName(user.getNickName());
+                                ProductOrderDispatchVO.SimpleUser simpleUser = ConvertUtil.convert(user, ProductOrderDispatchVO.SimpleUser.class);
                                 simpleItem.setUser(simpleUser);
                             }
                         }
@@ -250,6 +219,7 @@ public class ProductOrderDispatchServiceImpl implements ProductOrderDispatchServ
 
             // 2. 获取租户ID
             String tenantId = order.getTenantId();
+            String saleOrderId = order.getSaleOrderId();
 
             // 3. 按明细处理:新增 / 修改 / 删除
             if (vo.getItems() != null && !vo.getItems().isEmpty()) {
@@ -363,6 +333,7 @@ public class ProductOrderDispatchServiceImpl implements ProductOrderDispatchServ
                         existDispatch.setName(item.getName());
                         existDispatch.setRouteId(routeId);
                         existDispatch.setBomId(item.getBomId());
+                        existDispatch.setSaleOrderId(saleOrderId);
                         existDispatch.setStageId(item.getStageId());
                         existDispatch.setOrderNum(item.getOrderNum());
                         existDispatch.setProcessNum(item.getProcessNum());
@@ -415,6 +386,7 @@ public class ProductOrderDispatchServiceImpl implements ProductOrderDispatchServ
                         dispatch.setName(item.getName());
                         dispatch.setRouteId(routeId);
                         dispatch.setBomId(item.getBomId());
+                        dispatch.setSaleOrderId(saleOrderId);
                         dispatch.setStageId(item.getStageId());
                         dispatch.setOrderNum(item.getOrderNum());
                         dispatch.setProcessNum(item.getProcessNum());
@@ -616,24 +588,7 @@ public class ProductOrderDispatchServiceImpl implements ProductOrderDispatchServ
                     List<ProductOrderDispatchVO.SimpleMaterialRequisition> simpleRequisitions = new ArrayList<>();
                     for (MaterialRequisition req : requisitions) {
                         ProductOrderDispatchVO.SimpleMaterialRequisition simpleReq = 
-                            new ProductOrderDispatchVO.SimpleMaterialRequisition();
-                        simpleReq.setId(req.getId());
-                        simpleReq.setCode(req.getCode());
-                        simpleReq.setName(req.getName());
-                        simpleReq.setDispatchId(req.getDispatchId());
-                        simpleReq.setOrderId(req.getOrderId());
-                        simpleReq.setBomId(req.getBomId());
-                        simpleReq.setRequisitionType(req.getRequisitionType());
-                        simpleReq.setOutboundStatus(req.getOutboundStatus());
-                        simpleReq.setStatus(req.getStatus());
-                        simpleReq.setRequisitionDate(req.getRequisitionDate());
-                        simpleReq.setReceiverId(req.getReceiverId());
-                        simpleReq.setRemark(req.getRemark());
-                        simpleReq.setTenantId(req.getTenantId());
-                        simpleReq.setCreateId(req.getCreateId());
-                        simpleReq.setCreateTime(req.getCreateTime());
-                        simpleReq.setUpdateId(req.getUpdateId());
-                        simpleReq.setUpdateTime(req.getUpdateTime());
+                            ConvertUtil.convert(req, ProductOrderDispatchVO.SimpleMaterialRequisition.class);
                         simpleRequisitions.add(simpleReq);
                     }
                     vo.setMaterialRequisitions(simpleRequisitions);