From cb98548ecc0fa2d4388eb67528b98be39670bc0c Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期四, 20 七月 2023 10:05:02 +0800
Subject: [PATCH] agv 有单入库功能

---
 src/main/webapp/static/js/agvLocDetl/locDetl.js                   |    2 
 src/main/webapp/static/js/agvLocRule/locRule.js                   |    2 
 src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java  |  214 +++++++++++++++++------------
 src/main/java/com/zy/asrs/controller/AgvOpenController.java       |   47 -----
 src/main/java/com/zy/asrs/service/AgvWrkDetlService.java          |    3 
 src/main/java/com/zy/asrs/controller/AgvWorkController.java       |    4 
 src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java  |    9 +
 src/main/webapp/static/js/orderDetl/orderDetl.js                  |    2 
 src/main/webapp/static/js/locDetl/locDetl.js                      |    2 
 src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java     |   11 +
 src/main/java/com/zy/asrs/utils/AppAuthUtil.java                  |   23 +++
 src/main/webapp/static/js/locRule/locRule.js                      |    2 
 src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java |   10 -
 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java      |   11 +
 src/main/java/com/zy/asrs/controller/AgvMobileController.java     |   12 +
 src/main/webapp/static/js/agvBasDevp/basDevp.js                   |    2 
 src/main/webapp/static/js/order/out.js                            |    2 
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java    |   41 ++++-
 src/main/webapp/static/js/common.js                               |    6 
 19 files changed, 244 insertions(+), 161 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/AgvMobileController.java b/src/main/java/com/zy/asrs/controller/AgvMobileController.java
index 2ee810a..90e71b5 100644
--- a/src/main/java/com/zy/asrs/controller/AgvMobileController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvMobileController.java
@@ -34,12 +34,18 @@
     private AgvWorkService workService;
 
 
+    /*
+    locno锛熺粍鎵�+缁戝畾鏆傚瓨浣� 锛� 缁勬墭
+     */
     @PostMapping("/comb/auth")
     public R comb(@RequestBody CombParam combParam){
         String message = agvMobileService.comb(combParam, 1l);
         return R.ok(message);
     }
 
+    /*
+    缁戝畾鎵樼洏鏉$爜涓庢殏瀛樹綅
+     */
     @PostMapping("/combBinging/auth")
     public R combBinding(@RequestBody Map<String,Object> map){
         String barcode = map.get("barcode").toString();
@@ -48,6 +54,9 @@
         return R.ok("鎵樼洏缁戝畾绔欑偣鎴愬姛");
     }
 
+    /*
+    鑾峰彇褰撳墠宸茬粦瀹氱殑杩樻病鐢熸垚宸ヤ綔妗g殑鏆傚瓨浣�
+     */
     @PostMapping("/getBasDevp/auth")
     public R getBasDevpByFloor(@RequestBody Map<String,Object> map){
         String floor = map.get("floor").toString();
@@ -57,6 +66,9 @@
         return R.error("鍙傛暟閿欒");
     }
 
+    /*
+    鍚姩鍏ュ簱锛岀敓鎴愬伐浣滄。
+     */
     @PostMapping("/pakin/auth")
     public R pakin(@RequestBody Map<String,Object> map){
         List<String> devNos = (List<String>) map.get("devNo");
diff --git a/src/main/java/com/zy/asrs/controller/AgvOpenController.java b/src/main/java/com/zy/asrs/controller/AgvOpenController.java
index e825c78..d922dfe 100644
--- a/src/main/java/com/zy/asrs/controller/AgvOpenController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvOpenController.java
@@ -1,14 +1,13 @@
 package com.zy.asrs.controller;
 
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.annotations.AppAuth;
 import com.core.common.Cools;
 import com.core.common.R;
 import com.zy.asrs.entity.AgvWrkMast;
-import com.zy.asrs.entity.ApiLog;
 import com.zy.asrs.entity.param.AgvTaskCallBackParam;
 import com.zy.asrs.service.*;
+import com.zy.asrs.utils.AppAuthUtil;
 import com.zy.common.web.BaseController;
 import lombok.Setter;
 import lombok.extern.slf4j.Slf4j;
@@ -21,9 +20,9 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.PostConstruct;
+import javax.servlet.http.HttpServletRequest;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
-import java.util.Date;
 import java.util.EnumSet;
 
 /**
@@ -54,10 +53,10 @@
 
     @PostMapping("/task/event/status")
     @AppAuth(memo = "ESS浠诲姟鍥炶皟")
-    public R taskEventStaus(@RequestBody AgvTaskCallBackParam param){
+    public R taskEventStaus(@RequestBody AgvTaskCallBackParam param, HttpServletRequest request){
 
-        //淇濆瓨姣忔璋冪敤璇ユ帴鍙g殑鍙傛暟锛屼綔涓哄巻鍙插彲鏌ヨ
-        //saveApiLog(param);
+        //save api log (appkey 鍚庣画娣诲姞)
+        AppAuthUtil.auth("test-appkey",param, request);
 
         AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", param.getTaskCode()));
         if(Cools.isEmpty(agvWrkMast)){
@@ -95,15 +94,6 @@
         return true;
     }
 
-    private void saveApiLog(AgvTaskCallBackParam param){
-        ApiLog apiLog = new ApiLog();
-        apiLog.setNamespace("ESS浠诲姟鍥炶皟");
-        apiLog.setUrl("/agv/task/event/status");
-        apiLog.setRequest(JSONObject.toJSONString(param));
-        apiLog.setCreateTime(new Date());
-        apiLogService.insert(apiLog);
-    }
-
 }
 
 enum AgvTask{
@@ -114,27 +104,8 @@
     task{
         @Transactional
         public void success(AgvTaskCallBackParam param) {
-
             //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚
             agvWrkMastService.updateWrkStsByWrkNo(Integer.valueOf(param.getTaskCode()),205);
-
-            /*
-            int wrkNo = Integer.valueOf(param.getTaskCode());
-            String barcode = agvWrkMastService.selectById(wrkNo).getBarcode();
-            //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
-            agvWrkMastLogService.save(wrkNo);
-            //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗�
-            agvWrkDetlLogService.save(wrkNo);
-            //鍒犻櫎AGV宸ヤ綔妗�
-            agvWrkMastService.deleteById(wrkNo);
-            //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
-            agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
-            //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗�
-            agvWaitPakinLogService.save(barcode);
-            //鍒犻櫎鍏ュ簱閫氱煡妗�
-            agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("zpallet",barcode));
-             */
-
         }
 
         public void fail(AgvTaskCallBackParam param) {
@@ -203,14 +174,8 @@
     tote_unload{
         @Transactional
         public void success(AgvTaskCallBackParam param) {
-            int wrkNo = Integer.valueOf(param.getTaskCode());
-            String barcode = agvWrkMastService.selectById(wrkNo).getBarcode();
-            //淇敼鐩爣搴撲綅鐘舵�佷负F.鍦ㄥ簱
-            //agvLocMastService.updateLocStsByLocNo(param.getLocationCode(),"F");
-            //鏇存柊鐩爣搴撲綅鏄庣粏
-            //agvLocDetlService.addLocDetlInfo(param.getLocationCode(),wrkNo);
             //淇敼宸ヤ綔妗g姸鎬佷负204.鏀捐揣瀹屾垚
-            agvWrkMastService.updateWrkStsByWrkNo(wrkNo,204);
+            agvWrkMastService.updateWrkStsByWrkNo(Integer.valueOf(param.getTaskCode()),204);
         }
 
         public void fail(AgvTaskCallBackParam param) {
diff --git a/src/main/java/com/zy/asrs/controller/AgvWorkController.java b/src/main/java/com/zy/asrs/controller/AgvWorkController.java
index e176b34..67dcb26 100644
--- a/src/main/java/com/zy/asrs/controller/AgvWorkController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvWorkController.java
@@ -5,7 +5,6 @@
 import com.core.common.R;
 import com.zy.asrs.entity.AgvBasDevp;
 import com.zy.asrs.service.AgvWorkService;
-import com.zy.common.model.StartupDto;
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -21,13 +20,14 @@
     @Autowired
     private AgvWorkService workService;
 
+    //TODO 绉诲姩鍒癆gvBasDevpController涓嬮潰
     @RequestMapping("/create/waitPain/wrkMast/start")
     @ManagerAuth(memo = "鐢熸垚浠诲姟")
     public R createWaitPainWrkMastStart(@RequestParam String param) {
 
         List<AgvBasDevp> agvBasDevpList = JSONArray.parseArray(param, AgvBasDevp.class);
 
-        StartupDto startupDto = workService.createWaitPainWrkMastStart(agvBasDevpList, getUserId());
+        workService.createWaitPainWrkMastStart(agvBasDevpList, getUserId());
         //return R.ok("浠诲姟鍙凤細" + startupDto.getWorkNo() + ";鐩爣搴撲綅锛�" + startupDto.getLocNo());
         return R.ok("鐢熸垚鍏ュ簱宸ヤ綔妗f垚鍔�");
 
diff --git a/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java b/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java
index 78747a6..d9522c0 100644
--- a/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java
+++ b/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java
@@ -3,13 +3,12 @@
 import com.baomidou.mybatisplus.service.IService;
 import com.zy.asrs.entity.AgvWrkDetl;
 import com.zy.asrs.entity.WrkDetl;
-import com.zy.common.model.DetlDto;
 
 import java.util.List;
 
 public interface AgvWrkDetlService extends IService<AgvWrkDetl> {
 
-    void createWorkDetail(Integer workNo, List<DetlDto> detlDtos, String barcode, Long userId);
+    //void createWorkDetail(Integer workNo, List<DetlDto> detlDtos, String barcode, Long userId);
 
     List<WrkDetl> selectByWrkNo(Integer wrkNo);
 
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
index 60f20e7..bf873fb 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -39,6 +39,9 @@
     private AgvBasDevpService agvBasDevpService;
 
 
+    /*
+    缁勬墭 + 缁戝畾鏆傚瓨浣�
+     */
     @Override
     @Transactional
     public String comb(CombParam param, Long userId) {
@@ -46,98 +49,18 @@
             throw new CoolException(BaseRes.PARAM);
         }
 
+        //妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓鐨勬墭鐩樻潯鐮侊紝瀛樺湪鍒欐姏鍑哄紓甯�
         if (agvWaitPakinService.selectCount(new EntityWrapper<AgvWaitPakin>().
                 eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) {
             throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱");
         }
 
-        Date now = new Date();
-        //鏃犲崟缁勬墭
         if (Cools.isEmpty(param.getOrderNo())) {
-            List<DetlDto> detlDtos = new ArrayList<>();
-            param.getCombMats().forEach(elem -> {
-                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
-                if (DetlDto.has(detlDtos, detlDto)) {
-                    DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
-                    assert one != null;
-                    one.setAnfme(one.getAnfme() + detlDto.getAnfme());
-                } else {
-                    detlDtos.add(detlDto);
-                }
-            });
-
-            detlDtos.forEach(detlDto -> {
-                Mat mat = matService.selectByMatnr(detlDto.getMatnr());
-                if (Cools.isEmpty(mat)) {
-                    throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
-                }
-                AgvWaitPakin waitPakin = new AgvWaitPakin();
-                waitPakin.setBatch(detlDto.getBatch());//鎵瑰彿
-
-                waitPakin.sync(mat);
-                waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
-                waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
-                waitPakin.setAnfme(detlDto.getAnfme());  // 鏁伴噺
-                waitPakin.setStatus("Y");    // 鐘舵��
-                waitPakin.setAppeUser(userId);
-                waitPakin.setAppeTime(now);
-                waitPakin.setModiUser(userId);
-                waitPakin.setModiTime(now);
-                if (!agvWaitPakinService.insert(waitPakin)) {
-                    throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
-                }
-            });
+            //鏃犲崟缁勬墭
+            NoOrderComb(param,userId);
         }else {
-            //鍏宠仈缁勬墭
-            Order order = orderService.selectByNo(param.getOrderNo());
-            if (order.getSettle() > 2) {
-                throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
-            }
-            // 鐢熸垚鍏ュ簱閫氱煡妗�
-            List<DetlDto> detlDtos = new ArrayList<>();
-            param.getCombMats().forEach(elem -> {
-
-                // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
-                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch());
-                if (elem.getAnfme() > orderDetl.getEnableQty()) {
-                    throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
-                }
-                // 淇敼璁㈠崟鏄庣粏鏁伴噺
-                if (!orderDetlService.increase(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
-                    throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
-                }
-
-                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
-                if (DetlDto.has(detlDtos, detlDto)) {
-                    DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
-                    assert one != null;
-                    one.setAnfme(one.getAnfme() + detlDto.getAnfme());
-                } else {
-                    detlDtos.add(detlDto);
-                }
-            });
-            for (DetlDto detlDto : detlDtos) {
-                Mat mat = matService.selectByMatnr(detlDto.getMatnr());
-                if (Cools.isEmpty(mat)) {
-                    throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
-                }
-                AgvWaitPakin waitPakin = new AgvWaitPakin();
-                waitPakin.sync(mat);
-                waitPakin.setOrderNo(order.getOrderNo());   // 鍗曟嵁缂栧彿
-                waitPakin.setBatch(detlDto.getBatch());     // 搴忓垪鐮�
-                waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
-                waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
-                waitPakin.setAnfme(detlDto.getAnfme());  // 鏁伴噺
-                waitPakin.setStatus("Y");    // 鐘舵��
-                waitPakin.setAppeUser(userId);
-                waitPakin.setAppeTime(now);
-                waitPakin.setModiUser(userId);
-                waitPakin.setModiTime(now);
-                if (!agvWaitPakinService.insert(waitPakin)) {
-                    throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
-                }
-            }
-            orderService.updateSettle(order.getId(), 2L, userId);
+            //鏈夊崟缁勬墭
+            OrderComb(param,userId);
         }
 
         if(StringUtils.isEmpty(param.getLocno())){
@@ -148,6 +71,114 @@
         }
 
     }
+
+    /*
+    AGV鏃犲崟缁勬墭
+     */
+    private void NoOrderComb(CombParam param, Long userId){
+        List<DetlDto> detlDtos = mappingDetlDtoByCombMat(param,null);
+
+        //鐢ㄤ簬缁熶竴涓�涓墭鐩樹笅鐨勫叆搴撻�氱煡妗g殑鐢熸垚鏃堕棿
+        Date now = new Date();
+        detlDtos.forEach(detlDto -> {
+            syncWaitPakin(detlDto,"",param.getBarcode(),userId,now);
+        });
+    }
+
+    /*
+    AGV鏈夊崟缁勬墭
+     */
+    private void OrderComb(CombParam param, Long userId){
+        //鍏宠仈缁勬墭
+        Order order = orderService.selectByNo(param.getOrderNo());
+        if(Cools.isEmpty(order)){
+            throw new CoolException("鍗曟嵁缂栧彿涓嶅瓨鍦�");
+        }
+        //璁㈠崟鐘舵��2浠ヤ笂涓哄畬鎴愭垨鑰呭彇娑堢殑璁㈠崟
+        if (order.getSettle() > 2) {
+            throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
+        }
+        // 鐢ㄤ簬鐢熸垚鍏ュ簱閫氱煡妗f墍闇�鍙傛暟
+        List<DetlDto> detlDtos = mappingDetlDtoByCombMat(param,order);
+        //鐢ㄤ簬缁熶竴涓�涓墭鐩樹笅鐨勫叆搴撻�氱煡妗g殑鐢熸垚鏃堕棿
+        Date now = new Date();
+        for (DetlDto detlDto : detlDtos) {
+            //鍚屾鐢熸垚鍏ュ簱閫氱煡妗�
+            syncWaitPakin(detlDto,order.getOrderNo(),param.getBarcode(),userId,now);
+        }
+        //淇敼鍗曟嵁鐘舵�佷负2.浣滀笟涓�
+        orderService.updateSettle(order.getId(), 2L, userId);
+    }
+
+    /*
+    鏍规嵁PDA鎵爜鎵�浼犵殑鐗╂枡淇℃伅鍙傛暟鏄犲皠涓篋etlDto
+     */
+    private List<DetlDto> mappingDetlDtoByCombMat(CombParam param, Order order){
+        List<DetlDto> detlDtos = new ArrayList<>();
+        param.getCombMats().forEach(combMat -> {
+
+            if(!Cools.isEmpty(order)){
+                //妫�鏌ュ叆搴撴暟閲�
+                checkOrderQty(order,combMat);
+            }
+
+            DetlDto detlDto = new DetlDto(combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme());
+            //鍚屼竴鎵樼洏涓嬬浉鍚岀墿鏂欎俊鎭拰鎵瑰彿杞负涓�涓叆搴撻�氱煡妗�
+            if (DetlDto.has(detlDtos, detlDto)) {
+                DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+                assert one != null;
+                one.setAnfme(one.getAnfme() + detlDto.getAnfme());
+            } else {
+                detlDtos.add(detlDto);
+            }
+        });
+
+        return detlDtos;
+    }
+
+    /*
+    妫�鏌ュ叆搴撴暟閲忔槸鍚﹀皬浜庣瓑浜庡崟鎹暟閲忥紝鍚堢悊鍒欎慨鏀筄rderDetl浣滀笟鏁伴噺淇℃伅锛屽惁鍒欐姏鍑哄紓甯�
+     */
+    private void checkOrderQty(Order order, CombParam.CombMat combMat){
+        // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙锛屽鏋滀綔涓氭暟閲忓ぇ浜庡崟鎹暟閲忓垯鎶涘嚭寮傚父
+        OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch());
+        if(Cools.isEmpty(orderDetl)){
+            throw new CoolException("鏈尮閰嶅埌璇ュ崟鎹笅鐨勭墿鏂�");
+        }
+        if (combMat.getAnfme() > orderDetl.getEnableQty()) {
+            throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
+        }
+        // 淇敼璁㈠崟鏄庣粏鏁伴噺
+        if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) {
+            throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
+        }
+    }
+
+    /*
+    鍚屾鐢熸垚AGV鍏ュ簱閫氱煡妗f暟鎹�
+     */
+    private void syncWaitPakin(DetlDto detlDto, String orderNo, String zpallet, Long userId, Date now ){
+        Mat mat = matService.selectByMatnr(detlDto.getMatnr());
+        if (Cools.isEmpty(mat)) {
+            throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+        }
+        AgvWaitPakin waitPakin = new AgvWaitPakin();
+        waitPakin.sync(mat);
+        waitPakin.setOrderNo(orderNo);   // 鍗曟嵁缂栧彿
+        waitPakin.setBatch(detlDto.getBatch());     // 搴忓垪鐮�
+        waitPakin.setZpallet(zpallet);   // 鎵樼洏鐮�
+        waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
+        waitPakin.setAnfme(detlDto.getAnfme());  // 鏁伴噺
+        waitPakin.setStatus("Y");    // 鐘舵��
+        waitPakin.setAppeUser(userId);
+        waitPakin.setAppeTime(now);
+        waitPakin.setModiUser(userId);
+        waitPakin.setModiTime(now);
+        if (!agvWaitPakinService.insert(waitPakin)) {
+            throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+        }
+    }
+
 
     @Override
     @Transactional
@@ -163,9 +194,14 @@
 
     @Override
     public void combBinding(String barcode, String stationCode) {
-        EntityWrapper<AgvBasDevp> wrapper = new EntityWrapper<>();
-        wrapper.eq("dev_no",stationCode);
-        AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(wrapper);
+
+        AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", barcode));
+
+        if(!Cools.isEmpty(agvBasDevp)){
+            throw new CoolException(barcode + "宸茬粡缁戝畾鍦�"+ agvBasDevp.getDevNo() +"绔欑偣");
+        }
+
+        agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no",stationCode));
         if(agvBasDevp == null){
             throw new CoolException(stationCode + "绔欑偣淇℃伅閿欒");
         }
@@ -175,7 +211,7 @@
 
         agvBasDevp.setBarcode(barcode);
         agvBasDevp.setLocSts("F");
-        agvBasDevpService.update(agvBasDevp,wrapper);
+        agvBasDevpService.update(agvBasDevp,(new EntityWrapper<AgvBasDevp>().eq("dev_no",stationCode)));
     }
 
     public List<AgvBasDevp> getAgvBasDevpByFloor(int floor) {
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 059d889..4d06510 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -3,12 +3,8 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
-import com.zy.asrs.entity.AgvBasDevp;
-import com.zy.asrs.entity.AgvLocMast;
-import com.zy.asrs.entity.AgvWaitPakin;
-import com.zy.asrs.entity.AgvWrkMast;
+import com.zy.asrs.entity.*;
 import com.zy.asrs.service.*;
-import com.zy.common.model.DetlDto;
 import com.zy.common.model.StartupDto;
 import com.zy.common.service.AgvCommonService;
 import lombok.extern.slf4j.Slf4j;
@@ -16,7 +12,6 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -44,6 +39,8 @@
     private AgvWrkMastService agvWrkMastService;
     @Autowired
     private AgvWrkDetlService agvWrkDetlService;
+    @Autowired
+    private MatService matService;
 
     @Override
     public StartupDto createWaitPainWrkMastStart(List<AgvBasDevp> agvBasDevpList, Long userId) {
@@ -66,7 +63,7 @@
             //鐢熸垚宸ヤ綔妗�
             AgvWrkMast wrkMast = createWrkMast(agvBasDevp, agvLocMast, now, userId);
             //鐢熸垚宸ヤ綔妗f槑缁�
-            createWrkDetl(agvWaitPakinList,wrkMast,userId);
+            createWrkDetlReWrite(agvWaitPakinList,wrkMast,userId);
             //鏇存柊婧愮珯鐐逛俊鎭�
             updateAgvBasDevp(agvBasDevp);
             //鏇存柊鐩爣搴撲綅鐘舵��
@@ -96,7 +93,7 @@
     /*
     鐢熸垚宸ヤ綔妗f槑缁�
      */
-    private void createWrkDetl(List<AgvWaitPakin> agvWaitPakinList, AgvWrkMast wrkMast, Long userId){
+  /*  private void createWrkDetl(List<AgvWaitPakin> agvWaitPakinList, AgvWrkMast wrkMast, Long userId){
         List<DetlDto> detlDtos = new ArrayList<>();
         agvWaitPakinList.forEach(agvWaitPakin -> {
             DetlDto detlDto = new DetlDto(agvWaitPakin.getMatnr(), agvWaitPakin.getBatch(), agvWaitPakin.getAnfme());
@@ -109,7 +106,33 @@
             }
         });
         agvWrkDetlService.createWorkDetail(wrkMast.getWrkNo(), detlDtos, wrkMast.getBarcode(), userId);
-
+    }*/
+    /*
+    鐢熸垚宸ヤ綔妗f槑缁�
+     */
+    private void createWrkDetlReWrite(List<AgvWaitPakin> agvWaitPakinList, AgvWrkMast wrkMast, Long userId){
+        Date now = new Date();
+        agvWaitPakinList.stream().forEach(agvWaitPakin -> {
+            Mat mat = matService.selectByMatnr(agvWaitPakin.getMatnr());
+            if (Cools.isEmpty(mat)) {
+                throw new CoolException(agvWaitPakin.getMatnr() + "鍟嗗搧缁存姢澶辫触");
+            }
+            AgvWrkDetl wrkDetl = new AgvWrkDetl();
+            wrkDetl.sync(mat);
+            wrkDetl.setWrkNo(wrkMast.getWrkNo());
+            wrkDetl.setOrderNo(agvWaitPakin.getOrderNo());
+            wrkDetl.setIoTime(now);
+            wrkDetl.setBatch(agvWaitPakin.getBatch());
+            wrkDetl.setAnfme(agvWaitPakin.getAnfme()); // 鏁伴噺
+            wrkDetl.setZpallet(agvWaitPakin.getZpallet()); // 鎵樼洏鏉$爜
+            wrkDetl.setAppeUser(userId);
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setModiUser(userId);
+            wrkDetl.setModiTime(now);
+            if (!agvWrkDetlService.insert(wrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+            }
+        });
     }
 
     /*
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java
index 3e8fd7e..647b9b3 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java
@@ -1,20 +1,14 @@
 package com.zy.asrs.service.impl;
 
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import com.core.common.Cools;
-import com.core.exception.CoolException;
 import com.zy.asrs.entity.AgvWrkDetl;
-import com.zy.asrs.entity.Mat;
 import com.zy.asrs.entity.WrkDetl;
 import com.zy.asrs.mapper.AgvWrkDetlMapper;
 import com.zy.asrs.service.AgvWrkDetlService;
 import com.zy.asrs.service.MatService;
-import com.zy.common.model.DetlDto;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Date;
 import java.util.List;
 
 @Service
@@ -23,6 +17,7 @@
     @Autowired
     private MatService matService;
 
+    /*
     @Override
     @Transactional
     public void createWorkDetail(Integer workNo, List<DetlDto> detlDtos, String barcode, Long userId) {
@@ -39,6 +34,7 @@
             AgvWrkDetl wrkDetl = new AgvWrkDetl();
             wrkDetl.sync(mat);
             wrkDetl.setWrkNo(workNo);
+            wrkDetl.setOrderNo(dto.getOrderNo());
             wrkDetl.setIoTime(now);
             wrkDetl.setBatch(dto.getBatch());
             wrkDetl.setAnfme(dto.getAnfme()); // 鏁伴噺
@@ -52,7 +48,7 @@
             }
         }
     }
-
+    */
     @Override
     public List<WrkDetl> selectByWrkNo(Integer wrkNo) {
         return this.baseMapper.selectByWrkNo(wrkNo);
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
index eb6fc70..b23a41c 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
@@ -44,10 +44,19 @@
 
     public void updateWrkStsByWrkNo(int wrkNo, long wrkSts) {
         AgvWrkMast agvWrkMast = this.selectById(wrkNo);
+        //鍒ゆ柇瑕佷慨鏀圭殑宸ヤ綔妗g姸鎬佹槸鍚﹀悎鐞嗭紝濡傛灉涓嶅悎鐞嗗垯鎶涘嚭寮傚父
+        checkWrkSts(agvWrkMast,wrkSts);
         agvWrkMast.setWrkSts(wrkSts);
         this.updateById(agvWrkMast);
     }
 
+    private boolean checkWrkSts(AgvWrkMast agvWrkMast,long wrkSts){
+
+        // 鍒ゆ柇瑙勫垯TODO
+
+        return true;
+    }
+
     public Map<String,List<Map<String,String>>> startWrk(List<AgvWrkMast> agvWrkMastList) throws IOException {
 
         AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam();
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index 0bf3dcb..6d9e534 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -40,6 +40,8 @@
     @Autowired
     private WrkDetlService wrkDetlService;
     @Autowired
+    private AgvWrkDetlService agvWrkDetlService;
+    @Autowired
     private MatService matService;
     @Autowired
     private ErpService erpService;
@@ -66,10 +68,14 @@
     @Override
     public void checkComplete(String orderNo) {
         Order order = this.selectByNo(orderNo);
+        if(Cools.isEmpty(order)){
+            return;
+        }
         if (order.getSettle() >= 4L) {
             return;
         }
         List<OrderDetl> orderDetls = orderDetlMapper.selectList(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()));
+        // 浣滀笟鏁伴噺鏄惁绛変簬鏁伴噺
         boolean complete = true;
         for (OrderDetl orderDetl : orderDetls) {
             if (orderDetl.getAnfme() > orderDetl.getQty()) {
@@ -77,7 +83,10 @@
                 break;
             }
         }
-        if (complete && wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().like("order_no", orderNo)) == 0) {
+        // 濡傛灉 浣滀笟鏁伴噺绛変簬鍗曟嵁鎬绘暟閲� && 宸ヤ綔鏄庣粏妗d腑鏃犺鍗曟嵁鐨勬暟鎹� && AGV宸ヤ綔鏄庣粏妗d腑鏃犺鍗曟嵁鐨勬暟鎹�
+        if (complete
+                && wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("order_no", orderNo)) < 1
+                && agvWrkDetlService.selectCount(new EntityWrapper<AgvWrkDetl>().eq("order_no",orderNo)) < 1) {
             // 鍑哄簱璁㈠崟閲嶆柊鏁寸悊鏄庣粏
             DocType docType = docTypeService.selectById(order.getDocType());
             if (null != docType && docType.getPakout() == 1) {
diff --git a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
index b09c2b6..a0c3d12 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -34,11 +34,14 @@
     AgvWaitPakinService agvWaitPakinService;
     @Autowired
     AgvWaitPakinLogService agvWaitPakinLogService;
+    @Autowired
+    OrderService orderService;
 
     @Transactional
     public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) {
         int wrkNo = agvWrkMast.getWrkNo();
         String barcode = agvWrkMast.getBarcode();
+        String orderNo = getOrderNoByWrkNo(wrkNo);
 
         //淇敼宸ヤ綔妗g姸鎬佷负206.搴撳瓨鏇存柊瀹屾垚
         agvWrkMast.setWrkSts(206L);
@@ -59,6 +62,9 @@
         agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
         //鍒犻櫎鍏ュ簱閫氱煡妗�
         agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("zpallet",barcode));
+
+        //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
+        orderService.checkComplete(orderNo);
 
         return SUCCESS;
     }
@@ -84,4 +90,9 @@
 
         return FAIL;
     }
+
+    private String getOrderNoByWrkNo(int wrkNo){
+        AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
+        return agvWrkDetl.getOrderNo();
+    }
 }
diff --git a/src/main/java/com/zy/asrs/utils/AppAuthUtil.java b/src/main/java/com/zy/asrs/utils/AppAuthUtil.java
new file mode 100644
index 0000000..b2a3128
--- /dev/null
+++ b/src/main/java/com/zy/asrs/utils/AppAuthUtil.java
@@ -0,0 +1,23 @@
+package com.zy.asrs.utils;
+
+import com.core.common.Cools;
+import com.core.exception.CoolException;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.servlet.http.HttpServletRequest;
+
+@Slf4j
+public class AppAuthUtil {
+    private static final boolean auth = true;
+
+    public static void auth(String appkey, Object obj, HttpServletRequest request) {
+        request.setAttribute("cache", obj);
+
+        if (Cools.isEmpty(appkey)) {
+            throw new CoolException("璁よ瘉澶辫触锛岃纭appkey鏃犺锛�");
+        }
+//        if (!APP_KEY_LIST.contains(appkey)) {
+//            throw new CoolException("璁よ瘉澶辫触锛岃纭appkey鏃犺锛�");
+//        }
+    }
+}
diff --git a/src/main/webapp/static/js/agvBasDevp/basDevp.js b/src/main/webapp/static/js/agvBasDevp/basDevp.js
index 8bbafbf..75c55ac 100644
--- a/src/main/webapp/static/js/agvBasDevp/basDevp.js
+++ b/src/main/webapp/static/js/agvBasDevp/basDevp.js
@@ -77,7 +77,7 @@
                     return html;
                 }}
             ,{field: 'locSts$', align: 'center',title: '璐т綅鐘舵��'}
-            ,{field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�', edit:true,  style:'color: blue;font-weight: bold'}
+            //,{field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�', edit:true,  style:'color: blue;font-weight: bold'}
             ,{field: 'floor', align: 'center',title: '妤�'}
             //,{field: 'locType1$', align: 'center',title: '楂樹綆'}
             ,{field: 'barcode', align: 'center',title: '鏉″舰鐮�'}
diff --git a/src/main/webapp/static/js/agvLocDetl/locDetl.js b/src/main/webapp/static/js/agvLocDetl/locDetl.js
index d315d9e..6892802 100644
--- a/src/main/webapp/static/js/agvLocDetl/locDetl.js
+++ b/src/main/webapp/static/js/agvLocDetl/locDetl.js
@@ -11,7 +11,7 @@
         ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜'}
 
         ,{field: 'specs', align: 'center',title: '瑙勬牸'}
-        ,{field: 'model', align: 'center',title: '浠g爜', hide: true}
+        ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: true}
         ,{field: 'color', align: 'center',title: '棰滆壊', hide: true}
         ,{field: 'brand', align: 'center',title: '鍝佺墝', hide: true}
         ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true}
diff --git a/src/main/webapp/static/js/agvLocRule/locRule.js b/src/main/webapp/static/js/agvLocRule/locRule.js
index 25d6898..2a9dd5e 100644
--- a/src/main/webapp/static/js/agvLocRule/locRule.js
+++ b/src/main/webapp/static/js/agvLocRule/locRule.js
@@ -25,7 +25,7 @@
             // ,{field: 'id', align: 'center',title: 'ID'}
             ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿'}
             ,{field: 'specs', align: 'center',title: '瑙勬牸', hide: true}
-            ,{field: 'model', align: 'center',title: '鍨嬪彿', hide: true}
+            ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: true}
             ,{field: 'cstmr', align: 'center',title: '瀹㈡埛', hide: true}
             ,{field: 'batch', align: 'center',title: '鎵瑰彿'}
             ,{field: 'other', align: 'center',title: '鍏朵粬', hide: true}
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index 5639590..b719bce 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -185,7 +185,7 @@
     ,{field: 'name', align: 'center',title: '绉诲姩绫诲瀷', hide: true}
     ,{field: 'maktx', align: 'center',title: '鐗╂枡鍚嶇О', width: 150}
     ,{field: 'specs', align: 'center',title: '瑙勬牸', hide: false}
-    ,{field: 'model', align: 'center',title: '鎵规', hide: true}
+    ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: true}
     ,{field: 'manuDate', align: 'center',title: '鍗曟嵁鏃堕棿', hide: false}
     ,{field: 'weight', align: 'center',title: '閲嶉噺', hide: false}
     ,{field: 'units', align: 'center',title: '鏀暟', hide: false}
@@ -222,13 +222,13 @@
 var detlCols = [
     ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜', width: 110}
     ,{field: 'matnr', align: 'center',title: '鐗╂枡鍙�'}
-    ,{field: 'model', align: 'center',title: '鎵瑰彿'}
+    ,{field: 'batch', align: 'center',title: '搴忓垪鐮�', width: 300, sort:true, hide: false}
     ,{field: 'maktx', align: 'center',title: '鐗╂枡鍚嶇О'}
     ,{field: 'specs', align: 'center',title: '瑙勬牸'}
     ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
     ,{field: 'name', align: 'center',title: '绉诲姩绫诲瀷', hide: true}
     ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', hide: false}
-    ,{field: 'batch', align: 'center',title: '搴忓垪鐮�', width: 300, sort:true, hide: true}
+    ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: true}
     ,{field: 'manuDate', align: 'center',title: '鍗曟嵁鏃堕棿', hide: true}
     ,{field: 'weight', align: 'center',title: '閲嶉噺', hide: true}
     ,{field: 'units', align: 'center',title: '鏀暟', hide: true}
diff --git a/src/main/webapp/static/js/locDetl/locDetl.js b/src/main/webapp/static/js/locDetl/locDetl.js
index 4b7432f..dda89c0 100644
--- a/src/main/webapp/static/js/locDetl/locDetl.js
+++ b/src/main/webapp/static/js/locDetl/locDetl.js
@@ -11,7 +11,7 @@
         ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜'}
 
         ,{field: 'specs', align: 'center',title: '瑙勬牸'}
-        ,{field: 'model', align: 'center',title: '浠g爜', hide: true}
+        ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: true}
         ,{field: 'color', align: 'center',title: '棰滆壊', hide: true}
         ,{field: 'brand', align: 'center',title: '鍝佺墝', hide: true}
         ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true}
diff --git a/src/main/webapp/static/js/locRule/locRule.js b/src/main/webapp/static/js/locRule/locRule.js
index 62df390..1089ff5 100644
--- a/src/main/webapp/static/js/locRule/locRule.js
+++ b/src/main/webapp/static/js/locRule/locRule.js
@@ -25,7 +25,7 @@
             // ,{field: 'id', align: 'center',title: 'ID'}
             ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿'}
             ,{field: 'specs', align: 'center',title: '瑙勬牸', hide: true}
-            ,{field: 'model', align: 'center',title: '鍨嬪彿', hide: true}
+            ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: true}
             ,{field: 'cstmr', align: 'center',title: '瀹㈡埛', hide: true}
             ,{field: 'batch', align: 'center',title: '鎵瑰彿'}
             ,{field: 'other', align: 'center',title: '鍏朵粬', hide: true}
diff --git a/src/main/webapp/static/js/order/out.js b/src/main/webapp/static/js/order/out.js
index dbb2dad..c053d55 100644
--- a/src/main/webapp/static/js/order/out.js
+++ b/src/main/webapp/static/js/order/out.js
@@ -40,7 +40,7 @@
             // ,{field: 'qty', align: 'center',title: '浣滀笟鏁伴噺', style: 'font-weight: bold'}
             ,{field: 'enableQty', align: 'center',title: '寰呭嚭鏁伴噺', style: 'font-weight: bold'}
             // ,{field: 'name', align: 'center',title: '鍚嶇О'}
-            // ,{field: 'model', align: 'center',title: '鎵规'}
+            // ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿'}
             ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true}
             ,{field: 'barcode', align: 'center',title: '鍟嗗搧鏉$爜', hide: true}
             // ,{field: 'supplier', align: 'center',title: '渚涘簲鍟�'}
diff --git a/src/main/webapp/static/js/orderDetl/orderDetl.js b/src/main/webapp/static/js/orderDetl/orderDetl.js
index 1a0cb04..9ab257f 100644
--- a/src/main/webapp/static/js/orderDetl/orderDetl.js
+++ b/src/main/webapp/static/js/orderDetl/orderDetl.js
@@ -29,7 +29,7 @@
             ,{field: 'maktx', align: 'center',title: '鐗╂枡鍙�'}
             ,{field: 'name', align: 'center',title: '鍚嶇О'}
             ,{field: 'specs', align: 'center',title: '瑙勬牸'}
-            ,{field: 'model', align: 'center',title: '鎵规'}
+            ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿'}
             ,{field: 'batch', align: 'center',title: '搴忓垪鐮�'}
             ,{field: 'unit', align: 'center',title: '鍗曚綅'}
             ,{field: 'barcode', align: 'center',title: '鍟嗗搧鏉$爜'}

--
Gitblit v1.9.1