From f3a7b17ceb5da091ec7987a7a78b23996364b687 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期三, 22 四月 2026 14:54:30 +0800
Subject: [PATCH] #4.22需求变更V1

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |  158 ++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 140 insertions(+), 18 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 be3e4b6..58bff73 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -2,10 +2,7 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.SnowflakeIdWorker;
+import com.core.common.*;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.EmptyPlateOutParam;
@@ -952,8 +949,14 @@
             throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
         }
         // 鍏ュ簱 + 搴撲綅杞Щ
-        if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType() == 11)) {
+        if (wrkMast.getWrkSts() < 4 ) {
             wrkMast.setWrkSts(4L);
+            WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", wrkMast.getBarcode()).eq("wrk_sts",15L));
+            if (!Cools.isEmpty(wrkMast) &&(wrkMast.getIoType()==1||wrkMast.getIoType()==11||wrkMast.getIoType()==10)) {
+                mast.setOveMk("Y");
+                wrkMast.setModiTime(new  Date());
+                wrkMastService.updateById(mast);
+            }
             // 鍑哄簱
         } else if (wrkMast.getWrkSts() > 10) {
             wrkMast.setWrkSts(14L);
@@ -1445,13 +1448,13 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void backLocOperation(String workNo, Long userId) {
+    public R backLocOperation(String workNo, Long userId) {
         WrkMast wrkMast = wrkMastService.selectById(workNo);
         if (Cools.isEmpty(wrkMast)) {
-            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
+            return R.error(workNo+"宸ヤ綔妗d笉瀛樺湪");
         }
         if (wrkMast.getWrkSts() != 15) {
-            throw new CoolException("褰撳墠浠诲姟鐘舵�佷笉鑳芥墽琛屾鎿嶄綔锛�");
+            return R.error("褰撳墠浠诲姟鐘舵�佷笉鑳芥墽琛屾鎿嶄綔锛�");
         }
 
         Integer ioType = wrkMast.getIoType() - 50;
@@ -1463,7 +1466,7 @@
 //            ioType = 10;
 //        }
         if (Objects.isNull(wrkMast.getIsSuplus())) {
-            throw new CoolException("鍥炲簱绫诲瀷涓嶈兘涓虹┖锛侊紒");
+            return R.error("鍥炲簱绫诲瀷涓嶈兘涓虹┖锛侊紒");
         }
 
         if (wrkMast.getIsSuplus() == 0) {
@@ -1481,12 +1484,12 @@
                 .eq("crn_no", locMast1.getCrnNo()); // 鍫嗗灈鏈哄彿
         StaDesc staDesc = staDescService.selectOne(wrapper);
         if (Cools.isEmpty(staDesc)) {
-            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+            return R.error("鍏ュ簱璺緞涓嶅瓨鍦�");
         }
 
         int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", wrkMast.getBarcode()));
         if (count >= 2) {
-            throw new CoolException("浠诲姟妗e凡鐢熸垚锛屼笉鍙互閲嶅鐢熸垚鐩稿悓鐨勫瓙浠诲姟锛侊紒");
+            return R.error("浠诲姟妗e凡鐢熸垚锛屼笉鍙互閲嶅鐢熸垚鐩稿悓鐨勫瓙浠诲姟锛侊紒");
         }
 
         WrkDetl detl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
@@ -1500,6 +1503,11 @@
         LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
         StartupDto locNo = commonService.getLocNo1(locMast1.getCrnNo());
 
+        if(Cools.isEmpty(locNo)) {
+            return R.error("娌℃湁绌哄簱浣�");
+        }
+//        if()
+
         Date now = new Date();
         // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
         Integer staNo = staDesc.getCrnStn();
@@ -1507,20 +1515,21 @@
         BeanUtils.copyProperties(wrkMast, mast);
         mast.setWrkNo(wokNo);
         // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
-        mast.setIoType(ioType); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
-        mast.setWrkSts(1L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
+        mast.setIoType(ioType); // 1浣欐枡鍥炲簱锛�10绌鸿酱鍥炲簱
+        mast.setWrkSts(1L); // 鐢熸垚鍥炲簱id
         mast.setSourceStaNo(""); // 婧愮珯
         mast.setStaNo(""); // 鐩爣绔�
         mast.setSourceLocNo(wrkMast.getLocNo());
         mast.setLocNo(locNo.getLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
         mast.setModiTime(now);
+        mast.setWrkCode(workNo);
         mast.setModiUser(userId);
         if (!wrkMastService.insert(mast)) {
-            throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+            return R.error("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
         }
         List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
         if (Cools.isEmpty(wrkDetls)) {
-            throw new CoolException("鏁版嵁閿欒锛屼换鍔℃。鏄庣粏涓嶅瓨鍦� 锛侊紒");
+            return R.error("鏁版嵁閿欒锛屼换鍔℃。鏄庣粏涓嶅瓨鍦� 锛侊紒");
         }
 
         // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
@@ -1529,14 +1538,14 @@
         inLoc.setModiTime(now);
         inLoc.setModiUser(userId);
         if (!locMastService.updateById(inLoc)) {
-            throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+            return R.error("淇敼搴撲綅鐘舵�佸け璐�");
         }
 
         LocAroundBind aroundBind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", mast.getSourceLocNo()));
         if (!Objects.isNull(aroundBind)) {
             aroundBind.setLocType(LocStsType.LOC_STS_TYPE_R.type);
             if (!locAroundBindService.updateById(aroundBind)) {
-                throw new CoolException("宸ヤ綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+                return R.error("宸ヤ綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
             }
         }
 
@@ -1559,7 +1568,7 @@
         locMast.setModiTime(now);
         locMast.setModiUser(userId);
         if (!locMastService.updateById(locMast)) {
-            throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+            return R.error("淇敼搴撲綅鐘舵�佸け璐�");
         }
 
 //        wrkMast.setWrkCode(null);
@@ -1567,6 +1576,119 @@
 //        if (!wrkMastService.updateById(wrkMast)) {
 //            throw new CoolException("浠诲姟妗f洿鏂板け璐ワ紒锛�");
 //        }
+        if (Cools.isEmpty(mast)) {
+            return R.error("娌℃湁鐢熸垚浠诲姟");
+        }
+        return R.ok("鐢熸垚鍥炲簱浠诲姟鎴愬姛锛侊紒");
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R backLocOperationV2(String workNo, Long userId) {
+        WrkMast wrkMast = wrkMastService.selectById(workNo);
+        if (Cools.isEmpty(wrkMast)) {
+            return R.error(workNo+"宸ヤ綔妗d笉瀛樺湪");
+        }
+        if (wrkMast.getWrkSts() != 15) {
+            return R.error("褰撳墠浠诲姟鐘舵�佷笉鑳芥墽琛屾鎿嶄綔锛�");
+        }
+
+        Integer ioType = 101;
+        Integer wokNo;
+
+        if (Objects.isNull(wrkMast.getIsSuplus())) {
+            return R.error("鍥炲簱绫诲瀷涓嶈兘涓虹┖锛侊紒");
+        }
+
+        wokNo = commonService.getWorkNo(0);
+        LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getLocNo()));
+
+        // 鑾峰彇鐩爣绔�
+        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+                .eq("type_no", ioType)
+                .eq("stn_no", 1070) // 1070
+                .eq("crn_no", locMast1.getCrnNo()); // 鍫嗗灈鏈哄彿
+        StaDesc staDesc = staDescService.selectOne(wrapper);
+        if (Cools.isEmpty(staDesc)) {
+            return R.error("鍑哄簱璺緞涓嶅瓨鍦�");
+        }
+
+        int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", wrkMast.getBarcode()));
+        if (count >= 2) {
+            return R.error("浠诲姟妗e凡鐢熸垚锛屼笉鍙互閲嶅鐢熸垚鐩稿悓鐨勫瓙浠诲姟锛侊紒");
+        }
+
+        WrkDetl detl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+        LocDetl locDetl = new LocDetl();
+        BeanUtils.copyProperties(detl, locDetl);
+        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(locDetl);
+
+        // 婧愮珯鐐圭姸鎬佹娴�
+        BasDevp sourceStaNo = basDevpService.checkSiteStatus(staDesc.getCrnStn(), false);
+        sourceStaNo.setLocType1((short) 1);
+        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
+        String locNo = wrkMast.getSourceLocNo();
+
+        if(Cools.isEmpty(locNo)) {
+            return R.error("娌℃湁绌哄簱浣�");
+        }
+
+        Date now = new Date();
+        // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
+        Integer staNo = staDesc.getCrnStn();
+        WrkMast mast = new WrkMast();
+        BeanUtils.copyProperties(wrkMast, mast);
+        mast.setWrkNo(wokNo);
+        // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+        mast.setIoType(ioType); // 110鍏堝嚭搴撳埌1070
+        mast.setWrkSts(11L); // 鐢熸垚鍑哄簱id
+        mast.setSourceStaNo(String.valueOf(staDesc.getCrnStn())); // 婧愮珯
+        mast.setStaNo(String.valueOf(staDesc.getStnNo())); // 鐩爣绔�
+        mast.setSourceLocNo(wrkMast.getLocNo()); //鍑哄簱浣�
+        mast.setLocNo(locNo); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣嶏紝鐢ㄤ簬鍒ゆ柇宸烽亾
+        mast.setModiTime(now);
+        mast.setWrkCode(null);
+        mast.setPacked(workNo);
+        mast.setModiUser(userId);
+        if (!wrkMastService.insert(mast)) {
+            return R.error("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+        }
+        List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+        if (Cools.isEmpty(wrkDetls)) {
+            return R.error("鏁版嵁閿欒锛屼换鍔℃。鏄庣粏涓嶅瓨鍦� 锛侊紒");
+        }
+
+        LocAroundBind aroundBind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", mast.getSourceLocNo()));
+        if (!Objects.isNull(aroundBind)) {
+            aroundBind.setLocType(LocStsType.LOC_STS_TYPE_R.type);
+            if (!locAroundBindService.updateById(aroundBind)) {
+                return R.error("宸ヤ綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+            }
+        }
+
+
+        wrkDetls.forEach(wrkDetl -> {
+            WrkDetl wrkDetl1 = new WrkDetl();
+            BeanUtils.copyProperties(wrkDetl, wrkDetl1);
+            wrkDetl1.setAnfme(wrkDetl.getStockQty() - wrkDetl.getAnfme());
+            wrkDetl1.setWrkNo(wokNo);
+            if (!wrkDetlService.insert(wrkDetl1)) {
+                throw new CoolException("浠诲姟妗f槑缁嗕繚瀛樺け璐ワ紒锛�");
+            }
+        });
+
+        //淇敼浣滀笟搴撲綅鐘舵��
+        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+        locMast.setLocSts("R");
+        locMast.setModiTime(now);
+        locMast.setModiUser(userId);
+        if (!locMastService.updateById(locMast)) {
+            return R.error("淇敼搴撲綅鐘舵�佸け璐�");
+        }
+        if (Cools.isEmpty(mast)) {
+            return R.error("娌℃湁鐢熸垚浠诲姟");
+        }
+        return R.ok("鐢熸垚鍥炲簱浠诲姟鎴愬姛锛侊紒");
     }
 
 

--
Gitblit v1.9.1