From ece092e4c5d4e968b424421c6f78b065bbb0bd73 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期六, 24 八月 2024 15:13:10 +0800
Subject: [PATCH] #修复目标站显示错误问题

---
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java |  138 +++++++++++++++++++++++++++++----------------
 1 files changed, 89 insertions(+), 49 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
index 7e48d42..8d1e0dd 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -1,6 +1,8 @@
 package com.zy.asrs.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
@@ -71,8 +73,7 @@
     鍏ュ簱
      */
     @Transactional
-    @Synchronized
-    public StartupDto createWaitPainWrkMastStart(List<AgvBasDevp> agvBasDevpList, Long userId, boolean isConveyor) {
+    public synchronized StartupDto createWaitPainWrkMastStart(List<AgvBasDevp> agvBasDevpList, Long userId, boolean isConveyor) {
 
         Date now = new Date();
 
@@ -136,17 +137,34 @@
             AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,containerCode,now,userId,false);
             //鐢熸垚宸ヤ綔妗f槑缁�
             taskDto.getLocDtos().forEach(locDto -> {
-                //鏄庣粏妗f墍闇�鍙傛暟
-                createWrkDetlReWrite(locDto.getMatnr(),
-                        wrkMast.getWrkNo(),
-                        locDto.getOrderNo(),
-                        locDto.getBatch(),
-                        locDto.getAnfme(),
-                        locDto.getContainerCode(),
-                        now,
-                        userId,
-                        locDto.getCsocode(),
-                        locDto.getIsoseq());
+                if (!BaseController.isJSON(locDto.getOrderNo())) {
+                    //鏄庣粏妗f墍闇�鍙傛暟
+                    createWrkDetlReWrite(locDto.getMatnr(),
+                            wrkMast.getWrkNo(),
+                            locDto.getOrderNo(),
+                            locDto.getBatch(),
+                            locDto.getAnfme(),
+                            locDto.getContainerCode(),
+                            now,
+                            userId,
+                            locDto.getCsocode(),
+                            locDto.getIsoseq());
+                }else {
+                    List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
+                    orderDtoList.forEach(orderDto -> {
+                        //鏄庣粏妗f墍闇�鍙傛暟
+                        createWrkDetlReWrite(locDto.getMatnr(),
+                                wrkMast.getWrkNo(),
+                                orderDto.getOrderNo(),
+                                locDto.getBatch(),
+                                orderDto.getAnfme(),
+                                locDto.getContainerCode(),
+                                now,
+                                userId,
+                                locDto.getCsocode(),
+                                locDto.getIsoseq());
+                    });
+                }
 
                 //淇敼璁㈠崟淇℃伅
                 modifyOrderDetl(locDto, userId);
@@ -198,9 +216,14 @@
                 //agvWrkDetlService.update(agvWrkDetl,new EntityWrapper<AgvWrkDetl>().eq("wrk_no",agvWrkDetl.getWrkNo()));
                 //淇敼搴撳瓨淇℃伅
                 agvWrkDetlList.forEach(agvWrkDetl -> {
+                    if(agvWrkDetl.getAnfme() <= 0){
+                        return;
+                    }
+
                     AgvLocDetl agvLocDetl = agvLocDetlService.selectByMatnrAndBatchAndCsocodeAndisoCode(agvWrkMast.getLocNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime());
 
                     //AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
+
                     double updateAnfme = agvLocDetl.getAnfme() - agvWrkDetl.getAnfme();
                     agvLocDetlService.updateAnfme(updateAnfme,agvLocDetl.getLocNo(),agvLocDetl.getMatnr(),agvLocDetl.getBatch(),agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime());
                 });
@@ -219,13 +242,6 @@
     @Transactional
     public void locCheckOut(StockOutParam param, Long userId) {
         String station = param.getStation();
-//        List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>()
-//                .eq("station_code", station)
-//                .eq("loc_sts","O"));
-//
-//        if(param.getLocDetls().size() > agvBasDevpList.size()){
-//            throw new CoolException("褰撳墠绔欑偣鍙敤缂撳瓨璐ф灦鏁伴噺涓�" + agvBasDevpList.size() + ",灏戜簬闇�瑕佺洏鐐瑰嚭搴撳簱浣嶆暟閲忥紝璇烽噸鏂伴�夋嫨鐩樼偣搴撲綅");
-//        }
 
         List<TaskDto> taskDtos = new ArrayList<>();
         param.getLocDetls().forEach(locDetl -> {
@@ -240,6 +256,13 @@
 
         Date now = new Date();
         taskDtos.forEach(taskDto -> {
+
+            //鍒ゆ柇鏄惁鏈夐噸澶嶆枡鎯崇殑宸ヤ綔褰�
+            AgvWrkMast agvWrkMastList = agvWrkMastService.selectByContainerCode(taskDto.getLocDtos().get(0).getContainerCode());
+            if(!Cools.isEmpty(agvWrkMastList)){
+                return;
+            }
+
             //鐢熸垚宸ヤ綔妗�
             AgvWrkMast wrkMast = createWrkMast(107, 21L,taskDto.getLocNo(),taskDto.getAgvStaNo(),taskDto.getLocDtos().get(0).getContainerCode(),now,userId,false);
             //鐢熸垚宸ヤ綔妗f槑缁�
@@ -261,26 +284,6 @@
             //locSts = ioType == 101 ? "S" : "Q";
             updateAgvBasDevp(agvBasDevpService.selectById(wrkMast.getLocNo()),"S");
         });
-
-
-//        param.getLocDetls().forEach(locDetl -> {
-//            AgvLocMast agvLocMast = agvLocMastService.selectById(locDetl.getLocNo());
-//            AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locDetl.getLocNo()));
-//            AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>()
-//                    .eq("station_code", station)
-//                    .eq("loc_sts","O"));
-//            Date now = new Date();
-//
-//            //鐢熸垚宸ヤ綔鍏�
-//            AgvWrkMast wrkMast = createWrkMast(107, 21L, locDetl.getLocNo(), agvBasDevp.getDevNo(), agvLocDetl.getSuppCode(), now, userId,false);
-//            //鐢熸垚宸ヤ綔鏄庣粏妗�
-//            createWrkDetlReWrite(locDetl.getMatnr(),wrkMast.getWrkNo(),null,locDetl.getBatch(),locDetl.getCount(),wrkMast.getBarcode(),now,userId,agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime());
-//            //淇敼搴撲綅淇℃伅
-//            updateAgvLocMast(agvLocMast,"P");
-//            //淇敼绔欑偣淇℃伅
-//            updateAgvBasDevp(agvBasDevp,"S");
-//
-//        });
 
     }
 
@@ -389,7 +392,7 @@
             while (iterator1.hasNext()) {
                 LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next();
                 if (adjust.getCount() == 0) { continue; }
-                if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) {
+                if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch()) && Cools.eq(locDetl.getSuppCode(),adjust.getSuppCode()) && Cools.eq(locDetl.getThreeCode(),adjust.getThreeCode()) && Cools.eq(locDetl.getDeadTime(),adjust.getDeadTime())) {
                     if (!locDetl.getAnfme().equals(adjust.getCount())) {
                         // todo 鐩樼偣璁板綍
                         // 淇敼搴撳瓨
@@ -403,6 +406,7 @@
                         adjDetl.setBatch(locDetl.getBatch());
                         adjDetl.setOriQty(locDetl.getAnfme());
                         adjDetl.setAdjQty(adjust.getCount());
+                        adjDetl.setMemo(locDetl.getSuppCode());
                         adjDetl.setModiTime(now);
                         adjDetl.setModiUser(userId);
                         adjDetl.setAppeTime(now);
@@ -506,7 +510,9 @@
         if (Cools.isEmpty(wrkMast)){
             throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
         }
-
+        if(!wrkMast.getLocNo().contains("@") || !wrkMast.getSourceLocNo().contains("@")){
+            throw new CoolException("鐩爣搴撲綅鎴栬�呮簮搴撲綅鏆傛湭鍒嗛厤锛屾棤娉曞彇娑�");
+        }
         //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚
         agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),205);
 
@@ -530,11 +536,13 @@
         }
         //鎷f枡鍏ュ簱 鐩樼偣鍏ュ簱涓嶅彲鍙栨秷
         if(wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57){
-            throw new CoolException("褰撳墠浠诲姟涓嶅彲鍙栨秷");
+            if (userId != 9527) {
+                throw new CoolException("褰撳墠浠诲姟涓嶅彲鍙栨秷");
+            }
         }
 
         //鍏ュ簱鍙栨秷
-        if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10){
+        if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10 || wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57){
             //婧愮珯鐐�
             String devNo = wrkMast.getSourceLocNo();
             //鐩爣搴撲綅
@@ -561,9 +569,21 @@
         agvWrkDetlList1.forEach(agvWrkDetl -> {
 
             if(!Cools.isEmpty(agvWrkDetl.getOrderNo())){
-                OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
-                orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
-                orderDetlService.updateById(orderDetl);
+                String orderNo = agvWrkDetl.getOrderNo();
+                if(orderNo.contains("{")){
+                    JSONArray orderArray = JSON.parseArray(orderNo);
+                    for (Object o : orderArray){
+                        JSONObject jsonobject = (JSONObject) o;
+                        OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(jsonobject.get("orderNo").toString(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
+                        orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
+                        orderDetlService.updateById(orderDetl);
+                    }
+
+                }else {
+                    OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
+                    orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
+                    orderDetlService.updateById(orderDetl);
+                }
             }
         });
 
@@ -576,6 +596,25 @@
         if(!agvWrkMastService.deleteByWrkNo(wrkMast.getWrkNo()) || !agvWrkDetlService.deleteByWrkNo(wrkMast.getWrkNo())){
             throw new CoolException("鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛�");
         }
+
+    }
+
+    @Override
+    public void changeToOutWrkMast(String workNo, Long userId) {
+        AgvWrkMast agvWrkMast = agvWrkMastService.selectById(workNo);
+        if (Cools.isEmpty(agvWrkMast)){
+            throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+        }
+        if (agvWrkMast.getIoType() == 1 || agvWrkMast.getIoType() == 53){
+            throw new CoolException(workNo+"鍏ュ簱浠诲姟鏃犳硶杞嚭搴�");
+        }
+
+        agvWrkMast.setIoType(101);
+        agvWrkMast.setWrkSts(206L);
+        agvWrkMast.setModiTime(new Date());
+        agvWrkMast.setModiUser(userId);
+
+        agvWrkMastService.updateById(agvWrkMast);
 
     }
 
@@ -735,8 +774,9 @@
                     orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
                 }
 
-                if(locAnfme > orderDetl.getAnfme()){
-                    orderAnfme = orderDetl.getAnfme();
+                orderAnfme = orderDetl.getAnfme() - orderDetl.getQty();
+
+                if(locAnfme > orderAnfme){
                     locAnfme -= orderAnfme;
                 }else {
                     orderAnfme = locAnfme;

--
Gitblit v1.9.1