Browse Source

订单炉号验证

laoyao 3 years ago
parent
commit
209cd955d5

+ 19 - 5
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/OrderServiceImpl.java

@@ -158,7 +158,7 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
                 int bomNum = Integer.parseInt(map.get("bomNum").toString());
                 MMeterialReceiveLog m = meterialReceiveLogMap.get(meterialReceiveId);
                 int usedNum = (m.getUsedNum()==null?0:m.getUsedNum());
-                isFalse(bomNum>m.getBatchStand()+usedNum,"零件数超出");
+                isFalse(bomNum>m.getBatchStand()-usedNum,"零件数超出");
                 m.setUsedNum(bomNum+usedNum);
                 l.add(m);
             }
@@ -209,6 +209,8 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
     public Order update(OrderUpdateDTO data) {
         Order order = BeanPlusUtil.toBean(data, Order.class);
 
+        List<OrderProduct>orderProductList = orderProductService.list(Wraps.<OrderProduct>lbQ().eq(OrderProduct::getOrderId,order.getId()));
+        Map<Long,OrderProduct>orderProductMap = orderProductList.stream().collect(Collectors.toMap(t->t.getId(), t->t));
         //验证炉号
         List<OrderProductUpdateDTO> detailList = data.getOrderProductList();
         if(detailList != null && detailList.size() > 0){
@@ -217,16 +219,28 @@ public class OrderServiceImpl extends SuperServiceImpl<OrderMapper, Order> imple
             Map<String,MMeterialReceiveLog> meterialReceiveLogMap = meterialReceiveLogList.stream().collect(Collectors.toMap(t->t.getId().toString(), t->t));
             List<MMeterialReceiveLog>l = new ArrayList<MMeterialReceiveLog>();
             for(OrderProductUpdateDTO dto:detailList){
+                int modifyNum = 0;
+                OrderProduct oriOrderProduct = orderProductMap.get(dto.getId());
+                if(oriOrderProduct.getBomNum().intValue() == dto.getBomNum()){
+                    continue;
+                }else{//零件数量修改了
+                    modifyNum = dto.getBomNum().intValue() - oriOrderProduct.getBomNum().intValue();
+                }
+
+
+
                 String meterialReceiveId = dto.getMeterialReceiveId().toString();
                 int bomNum = dto.getBomNum();
                 MMeterialReceiveLog m = meterialReceiveLogMap.get(meterialReceiveId);
-
-                isFalse(bomNum>m.getBatchStand()+m.getUsedNum(),"零件数超出");
-                m.setUsedNum(bomNum+m.getUsedNum());
+                int usedNum = (m.getUsedNum()==null?0:m.getUsedNum());
+                isFalse(modifyNum>m.getBatchStand()-usedNum,"零件数超出");
+                m.setUsedNum(bomNum+modifyNum);
                 l.add(m);
             }
             //修改已用数量
-            meterialReceiveLogService.saveOrUpdateBatch(l);
+            if(CollectionUtil.isNotEmpty(l)){
+                meterialReceiveLogService.saveOrUpdateBatch(l);
+            }
         }
 
         //删除明细

+ 1 - 1
imcs-admin-boot/imcs-business-biz/src/main/resources/mapper_business/base/productionReadyCenter/MMeterialReceiveLogMapper.xml

@@ -20,7 +20,7 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id,create_time,create_user,update_time,update_user,meterialCode,tradeMark,
+        id,create_time,create_user,update_time,update_user,meterialCode,tradeMark,used_num,
         meterial_id, furnace_batch_no, bom_batch_no, batch_stand, factory, meterial_batch_no, factory_date
     </sql>