From 655f0eaba18ec8c56058a87270bf7e15790b6aab Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期三, 17 十二月 2025 11:05:56 +0800
Subject: [PATCH] 添加备货单接口对接

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |   87 +++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 83 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index caa1443..13d9382 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -12,6 +12,9 @@
 import com.zy.asrs.entity.param.FullStoreParam;
 import com.zy.asrs.entity.param.LocDetlAdjustParam;
 import com.zy.asrs.entity.param.StockOutParam;
+import com.zy.asrs.enums.LocAreaType;
+import com.zy.asrs.enums.LocStsType;
+import com.zy.asrs.enums.TaskIOType;
 import com.zy.asrs.mapper.LocMastMapper;
 import com.zy.asrs.entity.result.FindLocNoAttributeVo;
 import com.zy.asrs.service.*;
@@ -31,6 +34,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -98,6 +102,12 @@
     private TaskService taskService;
     @Autowired
     private TaskDetlService taskDetlService;
+    @Autowired
+    private BasStationService basStationService;
+    @Autowired
+    private BasStationDetlService basStationDetlService;
+    @Autowired
+    private BasAreasService basAreasService;
 
     @Override
     @Transactional
@@ -148,7 +158,7 @@
         // 鐢熸垚宸ヤ綔妗f槑缁�
         List<DetlDto> detlDtos = new ArrayList<>();
         param.getList().forEach(elem -> {
-            DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(), elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
+            DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(), elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme(), elem.getThreeCode());
             if (DetlDto.has(detlDtos, detlDto)) {
                 DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(), detlDto.getBrand(), detlDto.getStandby1(), detlDto.getStandby2(), detlDto.getStandby3(), detlDto.getBoxType1(), detlDto.getBoxType2(), detlDto.getBoxType3());
                 assert detlDto1 != null;
@@ -274,7 +284,7 @@
                         }
                         detlDtos.add(new DetlDto(locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(),
                                 locDetl.getStandby1(), locDetl.getStandby2(), locDetl.getStandby3(),
-                                locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3(), locDetl.getAnfme()));
+                                locDetl.getBoxType1(), locDetl.getBoxType2(), locDetl.getBoxType3(), locDetl.getAnfme(), locDetl.getThreeCode()));
                         locDetl.setOwner(param.getOwnerId());
                         try {
                             locDetlService.update(locDetl, new EntityWrapper<LocDetl>().eq("loc_no", locNo).eq("matnr", locDetl.getMatnr()));
@@ -409,8 +419,21 @@
         // 鍒ゆ柇鏄惁鏄洏鐐瑰崟
         String orderNo = taskDto.getLocDtos().get(0).getOrderNo();
 //        OrderPakout orderPakout = orderPakOutService.selectByNo(orderNo);
-        CheckOrder checkOrder = checkOrderService.selectOne(new EntityWrapper<CheckOrder>().eq("order_no", orderNo));
-        int ioType = checkOrder.getDocType() == 8 ? 107 : (taskDto.isAll() ? 101 : 103);
+
+        int ioType =  (taskDto.isAll() ? 101 : 103);
+        if(ioType == 101){
+            boolean DiffQty = taskDto.getLocDtos().stream().allMatch(locDto ->
+                    locDetlService.selectOne(new EntityWrapper<LocDetl>()
+                            .eq("loc_no", locDto.getLocNo())
+                            .eq("matnr", locDto.getMatnr())
+                            .eq("batch", locDto.getBatch())
+                            .eq("standby1",locDto.getStandby1())
+                    ).getDiffQty().compareTo(BigDecimal.ZERO) == 0
+            );
+            if (!DiffQty){
+                ioType = 103;
+            }
+        }
         StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
@@ -1443,6 +1466,10 @@
         if (Cools.isEmpty(wrkMast)) {
             throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
+        BasAreas basAreas = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("whs_type_id", LocAreaType.LOC_AREA_TYPE_CRN.type));
+        if (Objects.isNull(basAreas)) {
+            throw new CoolException("鏁版嵁閿欒锛屽簱鍖轰笉瀛樺湪锛侊紒");
+        }
         // 鍏ュ嚭搴撶被鍨嬪垽鏂�
         if (wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) {
             throw new CoolException("褰撳墠鍏ュ嚭搴撶被鍨嬫棤娉曡繘琛屾搷浣�");
@@ -1451,6 +1478,11 @@
         if (wrkMast.getWrkSts() < 11 || wrkMast.getWrkSts() == 15) {
             throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曡繘琛屾搷浣�");
         }
+        String agvSta = null;
+        if (wrkMast.getIoType() == TaskIOType.MERGE_OUT.type) {
+            agvSta = wrkMast.getAvgSta();
+        }
+
         // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
 //        if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
 //            throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
@@ -1486,11 +1518,58 @@
         // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
         LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
         locMast.setLocSts("Q");
+        locMast.setAreaId(basAreas.getId());
+        locMast.setAreaName(basAreas.getName());
+        locMast.setBarcode(locMast.getBarcode());
         locMast.setModiTime(now);
         locMast.setModiUser(userId);
         if (!locMastService.updateById(locMast)) {
             throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
         }
+
+        // . 鍒犻櫎缂撳瓨绔欑偣鏄庣粏
+        if (!Objects.isNull(agvSta)) {
+            // 淇敼鐩爣绔欑偣淇℃伅
+            BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", agvSta));
+            if (Objects.isNull(station)) {
+                throw new CoolException("绔欑偣涓嶅瓨鍦�!!");
+            }
+            basStationDetlService.delete(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo()));
+            station.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
+            if (!basStationService.updateById(station)) {
+                throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�");
+            }
+        }
+        // .淇敼骞舵墭鍏ュ簱鏄庣粏鎵樼爜
+        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
+                        .eq("area_id", locMast.getAreaId())
+                .eq("loc_no", locMast.getLocNo()));
+        if (!Objects.isNull(locDetls) && !locDetls.isEmpty()) {
+            locDetls.forEach(locDetl -> {
+                locDetl.setZpallet(locMast.getBarcode());
+                locDetl.setBarcode(locMast.getBarcode());
+                if (!locDetlService.updateById(locDetl)) {
+                    throw new CoolException("搴撳瓨鏄庣粏淇敼澶辫触锛侊紒");
+                }
+            });
+        }
+
+        // .淇敼浠诲姟妗f槑缁嗘墭鐩樼爜
+
+
+        List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+        if (!Objects.isNull(wrkDetls) && !wrkDetls.isEmpty()) {
+            wrkDetls.forEach(wrkDetl -> {
+               wrkDetl.setZpallet(wrkMast.getBarcode());
+               wrkDetl.setBarcode(wrkMast.getBarcode());
+                if (!wrkDetlService.updateById(wrkDetl)) {
+                    throw new CoolException("浠诲姟妗f槑缁嗕慨鏀瑰け璐ワ紒锛�");
+
+                }
+            });
+        }
+
+
     }
 
     @Override

--
Gitblit v1.9.1