From bc20e7dc43b97367b7b70b678e71140a33846ff0 Mon Sep 17 00:00:00 2001
From: tzsk <Administrator@qq.com>
Date: 星期三, 30 七月 2025 22:36:49 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java |   59 ++++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 46 insertions(+), 13 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 2f10937..0697692 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -73,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();
 
@@ -97,7 +96,7 @@
             wrkMast.setMk(isConveyor ? "Y" : "N");
             //鐢熸垚宸ヤ綔妗f槑缁�
             agvWaitPakinList.forEach(wp -> {
-                createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime());
+                createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime(),wp.getProddate(),wp.getDeadline());
             });
             //鏇存柊婧愮珯鐐逛俊鎭�
             updateAgvBasDevp(agvBasDevp,"R");
@@ -149,7 +148,9 @@
                             now,
                             userId,
                             locDto.getCsocode(),
-                            locDto.getIsoseq());
+                            locDto.getIsoseq(),
+                            locDto.getProddate(),
+                            locDto.getDeadline());
                 }else {
                     List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
                     orderDtoList.forEach(orderDto -> {
@@ -163,7 +164,9 @@
                                 now,
                                 userId,
                                 locDto.getCsocode(),
-                                locDto.getIsoseq());
+                                locDto.getIsoseq(),
+                                locDto.getProddate(),
+                                locDto.getDeadline());
                     });
                 }
 
@@ -217,9 +220,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());
                 });
@@ -241,7 +249,7 @@
 
         List<TaskDto> taskDtos = new ArrayList<>();
         param.getLocDetls().forEach(locDetl -> {
-            LocDto locDto = new LocDto(locDetl.getLocNo(),locDetl.getCount(),locDetl.getMatnr(),locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),locDetl.getSuppCode());
+            LocDto locDto = new LocDto(locDetl.getLocNo(),locDetl.getCount(),locDetl.getMatnr(),locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),locDetl.getSuppCode(),locDetl.getProddate(),locDetl.getDeadline());
             TaskDto taskDto = new TaskDto(locDetl.getLocNo(),station,locDto);
             if(TaskDto.has(taskDtos,taskDto)){
                 TaskDto.find(taskDtos,taskDto).getLocDtos().add(locDto);
@@ -254,7 +262,7 @@
         taskDtos.forEach(taskDto -> {
 
             //鍒ゆ柇鏄惁鏈夐噸澶嶆枡鎯崇殑宸ヤ綔褰�
-            List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectByContainerCode(taskDto.getLocDtos().get(0).getContainerCode());
+            AgvWrkMast agvWrkMastList = agvWrkMastService.selectByContainerCode(taskDto.getLocDtos().get(0).getContainerCode());
             if(!Cools.isEmpty(agvWrkMastList)){
                 return;
             }
@@ -273,7 +281,9 @@
                         now,
                         userId,
                         locDto.getCsocode(),
-                        locDto.getIsoseq());
+                        locDto.getIsoseq(),
+                        locDto.getProddate(),
+                        locDto.getDeadline());
             });
             updateAgvLocMast(agvLocMastService.selectById(wrkMast.getSourceLocNo()),"P");
             //鏇存柊鐩爣绔欑偣鐘舵��
@@ -303,7 +313,7 @@
         //鐢熸垚绉诲簱宸ヤ綔妗�
         AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getSuppCode(), now, userId,false);
         //鐢熸垚宸ヤ綔鍏氭槑缁�
-        createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime());
+        createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime(),sourceLocDetl.getProddate(),sourceLocDetl.getDeadline());
         //淇敼鐩爣搴撲綅鐘舵��
         updateAgvLocMast(targetLocMast,"S");
         //淇敼鍘熷簱浣嶇姸鎬�
@@ -402,6 +412,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);
@@ -531,11 +542,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();
             //鐩爣搴撲綅
@@ -592,6 +605,25 @@
 
     }
 
+    @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);
+
+    }
+
     /*
     鏇存柊鐩爣搴撲綅淇℃伅
      */
@@ -613,7 +645,7 @@
     /*
     鐢熸垚宸ヤ綔妗f槑缁�
      */
-    private void createWrkDetlReWrite(String matnr, int wrkNo, String orderNo,String batch, double anfme, String zpallet, Date now, Long userId, String csocode, String isoseq){
+    private void createWrkDetlReWrite(String matnr, int wrkNo, String orderNo,String batch, double anfme, String zpallet, Date now, Long userId, String csocode, String isoseq,Date proddate,Date deadline){
         Mat mat = matService.selectByMatnr(matnr);
         if (Cools.isEmpty(mat)) {
             throw new CoolException(matnr + "鍟嗗搧缁存姢澶辫触");
@@ -630,7 +662,8 @@
         wrkDetl.setAppeTime(now);
         wrkDetl.setModiUser(userId);
         wrkDetl.setModiTime(now);
-
+        wrkDetl.setProddate(proddate);
+        wrkDetl.setDeadline(deadline);
         wrkDetl.setThreeCode(csocode);
         wrkDetl.setDeadTime(isoseq);
         if (!agvWrkDetlService.insert(wrkDetl)) {

--
Gitblit v1.9.1