Browse Source

修改sap修改订单item逻辑

tanzhongran 3 years ago
parent
commit
0f44d9bb6f

+ 12 - 0
abi-cloud-qr-platform-common/src/main/java/com/abi/task/common/utils/IMathUtils.java

@@ -18,6 +18,18 @@ public class IMathUtils {
         return num.intValue();
     }
 
+    /**
+     * 如果Long为null返回0,否则返回它的值
+     * @param num
+     * @return
+     */
+    public static long asLong(Long num){
+        if(num==null){
+            return 0;
+        }
+        return num;
+    }
+
     /**
      * 字符串转Long
      * @param str

+ 39 - 35
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/QrPackageSapOrderItemServiceImpl.java

@@ -7,7 +7,9 @@ import com.abi.qms.platform.dto.req.BatchImportPackageSapOrderItemReq;
 import com.abi.qms.platform.service.QrPackageSapOrderItemService;
 import com.abi.task.common.api.exception.BusinessException;
 import com.abi.task.common.api.exception.ErrorCodeEnum;
+import com.abi.task.common.utils.IMathUtils;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -56,12 +58,9 @@ public class QrPackageSapOrderItemServiceImpl implements QrPackageSapOrderItemSe
 
         List<BatchImportPackageSapOrderItemReq.BatchImportSapOrderItem> sapOrderItemList = req.getBatchImportSapOrderItemList();
         for (BatchImportPackageSapOrderItemReq.BatchImportSapOrderItem item : sapOrderItemList) {
-
             try {
-
                 updateQrPackageSapOrderItem(item);
             } catch (Exception e) {
-
                 log.error("修改Sap订单明细数据失败",e);
             }
         }
@@ -83,43 +82,48 @@ public class QrPackageSapOrderItemServiceImpl implements QrPackageSapOrderItemSe
     }
 
     private void updateQrPackageSapOrderItem(BatchImportPackageSapOrderItemReq.BatchImportSapOrderItem item) {
-
-        //根据sap订单号和物料ID查询物料订单明细信息
-        QrPackageSapOrderItem qrPackageSapOrderItem = getQrPackageSapOrderItemInfo(item.getSapOrderNo(),item.getSapMaterialId());
-
-        QrPackageSapOrderItem sapOrderItem = new QrPackageSapOrderItem();
-        sapOrderItem.setSapOrderNo(item.getSapOrderNo());
-        sapOrderItem.setSapMaterialId(item.getSapMaterialId());
-        sapOrderItem.setSapCoverFactoryId(item.getSapCoverFactoryId());
-        sapOrderItem.setSapBeerFactoryId(item.getSapBeerFactoryId());
-        sapOrderItem.setSapMaterialName(item.getSapMaterialName());
-
-        //判断订单信息是否存在如果不存在就新增一条数据
-        if (ObjectUtil.isNull(qrPackageSapOrderItem)) {
-            sapOrderItem.setPurchaseCount(item.getPurchaseCount());
-            saveQrPackageSapOrderItem(sapOrderItem);
+        //新的item +数量
+        QrPackageSapOrderItem curItem = getQrPackageSapOrderItemInfo(item.getSapOrderNo(),item.getSapMaterialId());
+        if(curItem==null){
+            //如果没有则新增一个数量为0的
+            curItem = new QrPackageSapOrderItem();
+            curItem.setSapOrderNo(item.getSapOrderNo());
+            curItem.setSapMaterialId(item.getSapMaterialId());
+            curItem.setSapCoverFactoryId(item.getSapCoverFactoryId());
+            curItem.setSapBeerFactoryId(item.getSapBeerFactoryId());
+            curItem.setSapMaterialName(item.getSapMaterialName());
+            curItem.setPurchaseCount(0L);
+            qrPackageSapOrderItemMapper.insert(curItem);
         }
-
-        sapOrderItem.setId(qrPackageSapOrderItem.getId());
-
-        //判断物料ID是否修改 如果没有修改 采购数量=(新的采购数量-老的采购数量)+当前的采购数量
-        if (qrPackageSapOrderItem.getSapMaterialId().equals(item.getOriSapMaterialId())) {
-            sapOrderItem.setPurchaseCount((item.getPurchaseCount() - item.getOriPurchaseCount()) + qrPackageSapOrderItem.getPurchaseCount());
-        } else {
-            //如果物料ID修改 采购数量等于当前采购数量减去老的采购数量再加上新的采购数量
-            long purchaseCount = (qrPackageSapOrderItem.getPurchaseCount() - item.getOriPurchaseCount()) + item.getPurchaseCount();
-            //如果采购数量为0就删除此订单号数据
-            if (purchaseCount == 0) {
-                qrPackageSapOrderItemMapper.deleteById(qrPackageSapOrderItem.getId());
-                return;
-            }
-            sapOrderItem.setPurchaseCount(purchaseCount);
+        long afterAddCount = IMathUtils.asLong(curItem.getPurchaseCount()) + IMathUtils.asLong(item.getPurchaseCount());
+        curItem.setPurchaseCount(afterAddCount);
+        qrPackageSapOrderItemMapper.updateById(curItem);
+
+        //老的item -数量
+        //老的item
+        QrPackageSapOrderItem oriItem = curItem;
+        if (!item.getSapMaterialId().equals(item.getOriSapMaterialId())) {
+            oriItem = getQrPackageSapOrderItemInfo(item.getSapOrderNo(),item.getOriSapMaterialId());
+        }
+        long afterSubCount = IMathUtils.asLong(oriItem.getPurchaseCount()) - IMathUtils.asLong(item.getOriPurchaseCount());
+        oriItem.setPurchaseCount(afterSubCount);
+        //如果剪完后为0,直接删除,否则修改
+        if(afterSubCount>0){
+            qrPackageSapOrderItemMapper.updateById(oriItem);
+        }else{
+            qrPackageSapOrderItemMapper.deleteById(oriItem.getId());
         }
-        qrPackageSapOrderItemMapper.updateById(sapOrderItem);
+
+        //针对酒厂包材厂的改动,直接改订单下所有item
+        UpdateWrapper<QrPackageSapOrderItem> sapOrderItemUw = new UpdateWrapper<>();
+        sapOrderItemUw.set("sap_cover_factory_id",item.getSapCoverFactoryId());
+        sapOrderItemUw.set("sap_beer_factory_id",item.getSapBeerFactoryId());
+        sapOrderItemUw.eq("sap_order_no",item.getSapOrderNo());
+        qrPackageSapOrderItemMapper.update(null,sapOrderItemUw);
+
     }
 
     private void  saveQrPackageSapOrderItem(QrPackageSapOrderItem sapOrderItem) {
-
         //采购数量
         long newPurchaseCount = sapOrderItem.getPurchaseCount() == null ? 0 : sapOrderItem.getPurchaseCount();