From 293c2a7cc9d8648a9fbee2332f93b755156fdbf7 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期一, 22 十二月 2025 15:01:18 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/BasAgvLocDetlService.java              |    5 +
 src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java       |    2 
 src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java |   20 ++----
 src/main/java/com/zy/asrs/mapper/BasAgvLocDetlMapper.java                |   16 +++++
 src/main/resources/mapper/LocDetlMapper.xml                              |    2 
 src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java            |   50 ++++------------
 src/main/java/com/zy/asrs/service/impl/BasAgvLocDetlServiceImpl.java     |   18 ++++++
 src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java  |   10 ++
 8 files changed, 69 insertions(+), 54 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/BasAgvLocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/BasAgvLocDetlMapper.java
index c2eabea..16b9925 100644
--- a/src/main/java/com/zy/asrs/mapper/BasAgvLocDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/BasAgvLocDetlMapper.java
@@ -2,11 +2,27 @@
 
 import com.zy.asrs.entity.BasAgvLocDetl;
 import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.LocDetl;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
 import org.springframework.stereotype.Repository;
 
 @Mapper
 @Repository
 public interface BasAgvLocDetlMapper extends BaseMapper<BasAgvLocDetl> {
+    @Update("update asr_bas_agv_loc_detl set loc_no = #{newLocNo}, modi_time=getDate() where loc_no = #{oldLocNo}")
+    int updateLocNo(String newLocNo, String oldLocNo);
+
+    BasAgvLocDetl selectItem(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch,
+                       @Param("brand")String brand, @Param("standby1")String standby1, @Param("standby2")String standby2,
+                       @Param("standby3")String standby3, @Param("boxType1")String boxType1, @Param("boxType2")String boxType2, @Param("boxType3")String boxType3 );
+    int updateAnfme(@Param("anfme")Double anfme, @Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch,
+                    @Param("brand")String brand,@Param("standby1")String standby1,@Param("standby2")String standby2,
+                    @Param("standby3")String standby3,@Param("boxType1")String boxType1,@Param("boxType2")String boxType2,@Param("boxType3")String boxType3 );
+    int deleteItem(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch,
+                   @Param("brand")String brand,@Param("standby1")String standby1,@Param("standby2")String standby2,
+                   @Param("standby3")String standby3,@Param("boxType1")String boxType1,@Param("boxType2")String boxType2,@Param("boxType3")String boxType3 );
+
 
 }
diff --git a/src/main/java/com/zy/asrs/service/BasAgvLocDetlService.java b/src/main/java/com/zy/asrs/service/BasAgvLocDetlService.java
index 8284022..6820b62 100644
--- a/src/main/java/com/zy/asrs/service/BasAgvLocDetlService.java
+++ b/src/main/java/com/zy/asrs/service/BasAgvLocDetlService.java
@@ -2,7 +2,12 @@
 
 import com.zy.asrs.entity.BasAgvLocDetl;
 import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.LocDetl;
 
 public interface BasAgvLocDetlService extends IService<BasAgvLocDetl> {
+    boolean updateLocNo(String newLocNo, String oldLocNo);
+    BasAgvLocDetl selectItem(String locNo, String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3);
+    boolean updateAnfme(Double anfme, String locNo, String matnr
+            ,String batch,String brand,String standby1,String standby2,String standby3,String boxType1,String boxType2,String boxType3);
 
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/BasAgvLocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasAgvLocDetlServiceImpl.java
index cdb79ac..a9bc7e6 100644
--- a/src/main/java/com/zy/asrs/service/impl/BasAgvLocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/BasAgvLocDetlServiceImpl.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.service.impl;
 
+import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.mapper.BasAgvLocDetlMapper;
 import com.zy.asrs.entity.BasAgvLocDetl;
 import com.zy.asrs.service.BasAgvLocDetlService;
@@ -8,5 +9,22 @@
 
 @Service("basAgvLocDetlService")
 public class BasAgvLocDetlServiceImpl extends ServiceImpl<BasAgvLocDetlMapper, BasAgvLocDetl> implements BasAgvLocDetlService {
+    @Override
+    public boolean updateLocNo(String newLocNo, String oldLocNo) {
+        return baseMapper.updateLocNo(newLocNo, oldLocNo) > 0;
+    }
+    @Override
+    public BasAgvLocDetl selectItem(String locNo, String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3) {
+        return this.baseMapper.selectItem(locNo, matnr, batch,brand,standby1,standby2,standby3,boxType1,boxType2,boxType3);
+    }
 
+    @Override
+    public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch,
+                               String brand,String standby1,String standby2,String standby3,String boxType1,String boxType2,String boxType3) {
+        if (anfme <= 0) {
+            return this.baseMapper.deleteItem(locNo, matnr, batch, brand, standby1, standby2, standby3, boxType1, boxType2, boxType3) > 0;
+        } else {
+            return baseMapper.updateAnfme(anfme, locNo, matnr, batch, brand, standby1, standby2, standby3, boxType1, boxType2, boxType3) > 0;
+        }
+    }
 }
diff --git a/src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java b/src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java
index c2f21f6..79b9d7c 100644
--- a/src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java
@@ -66,9 +66,9 @@
                 case 1:
                     LocMast sourceLoc1 = locMastService.selectById(basAgvMast.getSourceLocNo());
                     LocMast locMast1 = locMastService.selectById(basAgvMast.getLocNo());
-                    List<LocDetl> locDetls1 = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
+                    List<BasAgvLocDetl> locDetls1 = basAgvLocDetlService.selectList(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                     if (!locDetls1.isEmpty()) {
-                        locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
+                        basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                     }
                     // 淇敼鐩爣搴撲綅鐘舵�� ==> .locSts
                     locMast1.setLocSts("F");
@@ -82,7 +82,7 @@
                     }
                     try{
                         // 杞Щ搴撳瓨鏄庣粏鏁版嵁: 搴撳瓨鍙� 鐢卞伐浣滄。婧愬簱浣嶅彉涓虹洰鏍囧簱浣�
-                        locDetlService.updateLocNo(basAgvMast.getLocNo(), basAgvMast.getSourceLocNo());
+                        basAgvLocDetlService.updateLocNo(basAgvMast.getLocNo(), basAgvMast.getSourceLocNo());
                     } catch (Exception e) {
                         return FAIL.setMsg(e.getMessage());
                     }
@@ -100,15 +100,15 @@
 
                     basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
                     basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
-                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
+//                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                     basAgvMast.setStatus(4);
                     basAgvMastService.updateById(basAgvMast);
 //                    openService.agvBindAndBin(String.valueOf(basAgvMast.getTaskNo()));
                     break;
                 case 2:
-                    List<LocDetl> locDetls2 = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
+                    List<BasAgvLocDetl> locDetls2 = basAgvLocDetlService.selectList(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                     if (!locDetls2.isEmpty()) {
-                        locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
+                        basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                     }
 
                     LocMast locMast2 = locMastService.selectById(basAgvMast.getLocNo());
@@ -125,18 +125,11 @@
                         return FAIL.setMsg("搴撲綅鐘舵�佸紓甯�");
                     }
                     List<LocDetl> locDetlList1 = new ArrayList<>();
-                    List<LocDetl> locDetlList2 = new ArrayList<>();
-                    List<BasAgvLocDetl> basAgvLocDetlList = basAgvLocDetlService.selectList(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
+                    List<BasAgvLocDetl> locDetlList2 = new ArrayList<>();
                     List<BasAgvWrkDetl> basAgvWrkDetlList = basAgvWrkDetlService.selectList(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
-                    if (!basAgvLocDetlList.isEmpty()) {
-                        for (BasAgvLocDetl basAgvLocDetl : basAgvLocDetlList){
-                            LocDetl locDetl = new LocDetl();
-                            locDetl.sync(basAgvLocDetl);
-                            locDetlList1.add(locDetl);
-                        }
-                    } else if (!basAgvWrkDetlList.isEmpty()){
+                    if (!basAgvWrkDetlList.isEmpty()){
                         for (BasAgvWrkDetl wrkDetl : basAgvWrkDetlList){
-                            LocDetl locDetl = new LocDetl();
+                            BasAgvLocDetl locDetl = new BasAgvLocDetl();
                             locDetl.sync(wrkDetl);
                             locDetl.setLocNo(basAgvMast.getLocNo()); // 搴撲綅鍙�
                             locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
@@ -150,40 +143,25 @@
                     } else {
                         locMast2.setLocSts("D");
                     }
-
                     if (!locMastService.updateById(locMast2)) {
                         return FAIL;
                     }
-                    if (!locDetlList1.isEmpty()){
-                        for (LocDetl locDetlold : locDetlList1) {
-                            LocDetl locDetl = locDetlService.selectItem(basAgvMast.getLocNo(), locDetlold.getMatnr(), locDetlold.getBatch(),locDetlold.getBrand()
-                                    ,locDetlold.getStandby1(),locDetlold.getStandby2(),locDetlold.getStandby3(),locDetlold.getBoxType1(),locDetlold.getBoxType2(),locDetlold.getBoxType3());
-                            if (null != locDetl) {
-                                if (!locDetlService.updateAnfme(locDetlold.getAnfme(), basAgvMast.getLocNo(), locDetlold.getMatnr(), locDetlold.getBatch(),locDetlold.getBrand(),locDetlold.getStandby1(),locDetlold.getStandby2(),locDetlold.getStandby3()
-                                        ,locDetlold.getBoxType1(),locDetlold.getBoxType2(),locDetlold.getBoxType3())) {
-                                }
-                            } else {
-                                if (!locDetlService.insert(locDetlold)) {
-                                }
-                            }
-                        }
-                    }
                     if (!locDetlList2.isEmpty()){
-                        for (LocDetl locDetlold : locDetlList2) {
-                            LocDetl locDetl = locDetlService.selectItem(basAgvMast.getLocNo(), locDetlold.getMatnr(), locDetlold.getBatch(),locDetlold.getBrand()
+                        for (BasAgvLocDetl locDetlold : locDetlList2) {
+                            BasAgvLocDetl locDetl = basAgvLocDetlService.selectItem(basAgvMast.getLocNo(), locDetlold.getMatnr(), locDetlold.getBatch(),locDetlold.getBrand()
                                     ,locDetlold.getStandby1(),locDetlold.getStandby2(),locDetlold.getStandby3(),locDetlold.getBoxType1(),locDetlold.getBoxType2(),locDetlold.getBoxType3());
                             if (null != locDetl) {
-                                if (!locDetlService.updateAnfme(locDetlold.getAnfme(), basAgvMast.getLocNo(), locDetlold.getMatnr(), locDetlold.getBatch(),locDetlold.getBrand(),locDetlold.getStandby1(),locDetlold.getStandby2(),locDetlold.getStandby3()
+                                if (!basAgvLocDetlService.updateAnfme(locDetlold.getAnfme(), basAgvMast.getLocNo(), locDetlold.getMatnr(), locDetlold.getBatch(),locDetlold.getBrand(),locDetlold.getStandby1(),locDetlold.getStandby2(),locDetlold.getStandby3()
                                         ,locDetlold.getBoxType1(),locDetlold.getBoxType2(),locDetlold.getBoxType3())) {
                                 }
                             } else {
-                                if (!locDetlService.insert(locDetlold)) {
+                                if (!basAgvLocDetlService.insert(locDetlold)) {
                                 }
                             }
                         }
                     }
 
-                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
+//                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                     basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
                     basAgvMast.setStatus(3);
                     if(basAgvMast.getFloorNo() == 2 || basAgvMast.getFloorNo() == 3){
diff --git a/src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java
index 8a9fe5c..13d010f 100644
--- a/src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java
@@ -35,7 +35,7 @@
     @Value("${erp.switch.ReviewOrderSwitch}")
     private boolean ReviewOrderSwitch;
 
-//    @Scheduled(cron = "0/20 * * * * ? ")
+    @Scheduled(cron = "0/20 * * * * ? ")
     @Async("orderThreadPool")
     public void completeAndReport(){
         if(!ReviewOrderSwitch){
diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
index fbe8310..9165559 100644
--- a/src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
+++ b/src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
@@ -263,7 +263,7 @@
                 JSONArray data = jsonResponse.getJSONObject("data").getJSONArray("rows");
                 if(data.size()<=0)  continue;
                 //鍟嗗搧妗f鍚屾
-                if (kingDeeUtilType.formId.equals("BD_MATERIAL")) {
+                if(kingDeeUtilType.formId.equals("BD_MATERIAL")) {
                     Tag tag = tagService.selectByName("鍏ㄩ儴", 1);
                     // 澶勭悊鍒嗛〉锛氭牴鎹繑鍥炵殑totalCount鍜宲ageSize璁$畻椤垫暟
                     int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize");
@@ -1229,6 +1229,11 @@
                                             "鐗╂枡妗f涓嶅瓨鍦細" + matnr, false);
                                     continue;
                                 }
+                                if (mat.getSafeQty() == null || mat.getSafeQty() == 0) {
+                                    callApiLogSaveOrder(order, kingDeeUtilType,
+                                            "妗f绠辨暟閲忓紓甯革細" + matnr, false);
+                                    continue;
+                                }
                                 anfmeBox = Math.floor(anfme / mat.getSafeQty());
                                 // ========= 鏄庣粏鍘婚噸 =========
                                 List<OrderDetl> orderDetls =
@@ -1477,6 +1482,7 @@
                             String owner = "鍜屽緱绉戞妧";
                             String ownerUuid = "BU-00001";
                             String orderId = jsonObjectNew.getString("id");
+                            String manuBill = jsonObjectNew.getString("manufacturenun");
                             // ========= 璐т富鏍¢獙 =========
                             LocOwner locOwner = locOwnerService.selectByUuid(ownerUuid);
 //                            if (locOwner == null) {
@@ -1497,7 +1503,7 @@
                                         null,    // 椤圭洰缂栧彿
                                         orderId,    //鏀舵枡鍗昳d
                                         null,    // 璋冩嫧椤圭洰缂栧彿
-                                        null,    // 鍒濆绁ㄦ嵁鍙�
+                                        manuBill,    // 鍒濆绁ㄦ嵁鍙�
                                         null,    // 绁ㄦ嵁鍙�
                                         null,    // 椤圭洰id
                                         owner,    // 璐т富
diff --git a/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java b/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java
index 5334a08..8adf401 100644
--- a/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java
@@ -188,12 +188,12 @@
                     JSONObject billentry = new JSONObject()
                             .fluentPut("id", 0L)
                             .fluentPut("warehouse_number", orderDetl.getManu())  // 浠撳簱缂栧彿
-                            .fluentPut("invstatus_number", "110")  // 搴撳瓨鐘舵��
-                            .fluentPut("invtype_number", "110")  // 搴撳瓨绫诲瀷
-                            .fluentPut("outinvstatus_number", "110")
-                            .fluentPut("linetype_number", "010")  // 琛屽彿绫诲瀷
                             .fluentPut("qty", qty)  // 鏁伴噺
-                            .fluentPut("material_number", orderDetl.getMatnr())  // 鐗╂枡缂栧彿
+                            .fluentPut("baseqty", qty)  // 鏁伴噺
+                            .fluentPut("prdqty", qty)  // 鏁伴噺
+                            .fluentPut("manubill", order.getDefNumber())
+                            .fluentPut("producttype", "C")  // 鐗╂枡缂栧彿
+                            .fluentPut("qualitystatus", "A")  // 鐗╂枡缂栧彿
                             .fluentPut("billentry_lk", billentryLkArray1);
 
                     billentryArray1.add(billentry);
@@ -203,16 +203,8 @@
                                 new JSONObject()
                                         .fluentPut("billno", UUID.randomUUID().toString().replace("-", "").substring(0, 16))
                                         .fluentPut("trdbillno", UUID.randomUUID().toString().replace("-", ""))
-                                        .fluentPut("billtype_number", "im_PurInBill_STD_BT_S")
+                                        .fluentPut("billstatus", "C")
                                         .fluentPut("biztime", sdf1.format(now1))
-                                        .fluentPut("exratedate", sdf1.format(now1))
-                                        .fluentPut("bizorg_number", boxType21)
-                                        .fluentPut("biztype_number", "110")  // 璐т富/璐ф簮
-                                        .fluentPut("org_number", boxType21)  // 璐т富/璐ф簮
-                                        .fluentPut("paymode", "CREDIT")
-                                        .fluentPut("invscheme_number", "110")
-                                        .fluentPut("billtype_number", "im_PurInBill_STD_BT_S")
-                                        .fluentPut("supplier_number", suppCode1)  // 渚涘簲鍟嗙紪鍙�
                                         .fluentPut("billentry", billentryArray1)  // 灏� billentry 鏁扮粍娣诲姞鍒拌姹傚弬鏁�
                         )));
             case "STK_MISCELLANEOUS": // 鍏朵粬鍏ュ簱鍗�
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index 3d49e1d..aada17d 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -358,7 +358,7 @@
             and a.standby3 like '%' + #{standby3} + '%'
         </if>
         <if test="boxType3!=null and boxType3!='' ">
-            and a.box_type3 like '%' + #{boxType3} + '%'
+            and a.boxType3 like '%' + #{boxType3} + '%'
         </if>
     </sql>
 

--
Gitblit v1.9.1