From fbe04d16ac7027bc794f2196108be7080ed57d90 Mon Sep 17 00:00:00 2001
From: 王佳豪 <g675230687@126.com>
Date: 星期六, 19 六月 2021 10:57:06 +0800
Subject: [PATCH] 1.平仓原单入库

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |  236 +++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 181 insertions(+), 55 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 bbe5cd4..b664639 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -6,6 +6,7 @@
 import com.core.common.BaseRes;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
+import com.core.common.R;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.*;
@@ -15,13 +16,18 @@
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.OutLocDto;
 import com.zy.common.model.StartupDto;
+import com.zy.common.model.agv.AgvCommand;
+import com.zy.common.model.agv.AgvResult;
 import com.zy.common.service.CommonService;
 import com.zy.common.service.erp.ErpSqlServer;
+import com.zy.common.utils.HttpHandler;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.io.IOException;
 import java.text.MessageFormat;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -39,6 +45,8 @@
     // 搴撲綅鎺掑彿鍒嗛厤榛樿绫诲埆
     private static final int DEFAULT_ROW_NO_TYPE = 1;
 
+    @Value("${agv.url}")
+    private String agvUrl;
     @Autowired
     private WrkMastService wrkMastService;
     @Autowired
@@ -63,6 +71,8 @@
     private WrkDetlLogService wrkDetlLogService;
     @Autowired
     private ErpSqlServer erpSqlServer;
+    @Autowired
+    private BasAgvService basAgvService;
 
     @Override
     @Transactional
@@ -185,6 +195,11 @@
     public void startupFullTakeStore(StockOutParam param, Long userId) {
         // 鐩爣绔欑偣鐘舵�佹娴�
         BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
+        int agvSite = 0;
+        if (!Cools.isEmpty(staNo.getFronting()) && staNo.getFronting().equals("Y")) {
+            agvSite = staNo.getDevNo();
+            staNo = basDevpService.checkSiteStatus(201);
+        }
         // 鑾峰彇搴撲綅鏄庣粏
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
         for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
@@ -198,7 +213,7 @@
         }
         if (!locDetlDtos.isEmpty()) {
             // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱
-            stockOut(staNo, locDetlDtos, null, userId);
+            stockOut(staNo, locDetlDtos, null, userId, agvSite);
         } else {
             throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�");
         }
@@ -206,7 +221,7 @@
 
     @Override
     @Transactional
-    public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, Integer ioType, Long userId) {
+    public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, Integer ioType, Long userId, Integer agvSite) {
         // 鍚堝苟鍚岀被椤�
         Set<String> locNos = new HashSet<>();
         locDetlDtos.forEach(dto -> locNos.add(dto.getLocDetl().getLocNo()));
@@ -259,6 +274,8 @@
             wrkMast.setExitMk("N"); // 閫�鍑�
             wrkMast.setEmptyMk("N"); // 绌烘澘
             wrkMast.setLinkMis("N");
+            wrkMast.setCtnKind(agvSite); // 鍑哄簱涓嬬殑灏忚溅宸ヤ綔鍖虹珯濂�
+            wrkMast.setExitMk("N"); // 灏忚溅鏄惁鎼繍
             wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
             wrkMast.setAppeTime(new Date());
             wrkMast.setModiUser(userId);
@@ -306,66 +323,168 @@
     @Override
     @Transactional
     public String emptyPlateIn(Integer devpNo, Long userId) {
-        // 婧愮珯鐐圭姸鎬佹娴�
-        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
-        // 妫�绱㈠簱浣�
-        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
-        StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, true, null, locTypeDto, 0);
-        // 宸ヤ綔鍙�
-        int workNo = dto.getWorkNo();
-        // 鐢熸垚宸ヤ綔妗�
-        WrkMast wrkMast = new WrkMast();
-        wrkMast.setWrkNo(workNo);
-        wrkMast.setIoTime(new Date());
-        wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
-        wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
-        wrkMast.setIoPri(13D); // 浼樺厛绾э細10
-        wrkMast.setCrnNo(dto.getCrnNo());
-        wrkMast.setSourceStaNo(dto.getSourceStaNo());
-        wrkMast.setStaNo(dto.getStaNo());
-        wrkMast.setLocNo(dto.getLocNo());
-        wrkMast.setFullPlt("N"); // 婊℃澘锛歒
-        wrkMast.setPicking("N"); // 鎷f枡
-        wrkMast.setExitMk("N"); // 閫�鍑�
-        wrkMast.setEmptyMk("Y"); // 绌烘澘
-        wrkMast.setLinkMis("N");
-        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
-        // 鎿嶄綔浜哄憳鏁版嵁
-        wrkMast.setAppeUser(userId);
-        wrkMast.setAppeTime(new Date());
-        wrkMast.setModiUser(userId);
-        wrkMast.setModiTime(new Date());
-        boolean res = wrkMastService.insert(wrkMast);
-        if (!res) {
-            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-        }
-        // 鏇存柊婧愮珯鐐逛俊鎭�
-        sourceStaNo.setWrkNo(workNo);
-        sourceStaNo.setModiUser(userId);
-        sourceStaNo.setModiTime(new Date());
-        if (!basDevpService.updateById(sourceStaNo)) {
-            throw new CoolException("鏇存柊婧愮珯澶辫触");
-        }
-        // 鏇存柊鐩爣搴撲綅鐘舵��
-        LocMast locMast = locMastService.selectById(dto.getLocNo());
-        if (locMast.getLocSts().equals("O")) {
-            locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
-            locMast.setModiUser(userId);
-            locMast.setModiTime(new Date());
-            if (!locMastService.updateById(locMast)) {
-                throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+        // 鐩爣绔欑偣鐘舵�佹娴�
+        BasDevp staNo = basDevpService.checkSiteStatus(devpNo);
+        if (!Cools.isEmpty(staNo.getFronting()) && staNo.getFronting().equals("Y")) {
+            // 灏忚溅鍏ュ簱鎼繍鍛戒护 ----------------------------------------------------
+            // 鍒ゆ柇鏄惁鏈夌┖闂插皬杞�
+            if (basAgvService.haveIdleAgv()) {
+                AgvCommand command = new AgvCommand();
+                command.setAgvId(0);
+                command.setInterCode(basAgvService.getEmptyAgvWorkNo());
+                command.setBeginLoc(String.valueOf(devpNo));
+                command.setEndLoc("1088");
+                log.info(JSON.toJSONString(command));
+                String result;
+                try {
+                    result = new HttpHandler.Builder()
+                            .setUri(agvUrl + "/api/interfaceTask/SendTaskByThirdParty")
+                            .setJson(JSON.toJSONString(command))
+                            .build()
+                            .doPost();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                    throw new CoolException("璁块棶AGV鎺ュ彛澶辫触");
+                }
+                AgvResult agvResult = JSON.parseObject(result, AgvResult.class);
+                log.info(JSON.toJSONString(agvResult));
+                if (!agvResult.getResult()) {
+                    log.error("agv鍛戒护鍙戦�佸け璐agvId={}]锛岄敊璇俊鎭�={}", command.getAgvId(), agvResult.getExplain());
+                    throw new CoolException("agv鍛戒护鍙戦�佸け璐agvId=" + command.getAgvId() + "]锛岄敊璇俊鎭�=" + agvResult.getExplain());
+                }
+            } else {
+                throw new CoolException("娌℃湁绌洪棽灏忚溅");
             }
+
+            return "寰呭畾";
         } else {
-            throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+            // 婧愮珯鐐圭姸鎬佹娴�
+            BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
+            // 妫�绱㈠簱浣�
+            LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
+            StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, true, null, locTypeDto, 0);
+            // 宸ヤ綔鍙�
+            int workNo = dto.getWorkNo();
+            // 鐢熸垚宸ヤ綔妗�
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(workNo);
+            wrkMast.setIoTime(new Date());
+            wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+            wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
+            wrkMast.setIoPri(13D); // 浼樺厛绾э細10
+            wrkMast.setCrnNo(dto.getCrnNo());
+            wrkMast.setSourceStaNo(dto.getSourceStaNo());
+            wrkMast.setStaNo(dto.getStaNo());
+            wrkMast.setLocNo(dto.getLocNo());
+            wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+            wrkMast.setPicking("N"); // 鎷f枡
+            wrkMast.setExitMk("N"); // 閫�鍑�
+            wrkMast.setEmptyMk("Y"); // 绌烘澘
+            wrkMast.setLinkMis("N");
+            wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+            // 鎿嶄綔浜哄憳鏁版嵁
+            wrkMast.setAppeUser(userId);
+            wrkMast.setAppeTime(new Date());
+            wrkMast.setModiUser(userId);
+            wrkMast.setModiTime(new Date());
+            boolean res = wrkMastService.insert(wrkMast);
+            if (!res) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+            }
+            // 鏇存柊婧愮珯鐐逛俊鎭�
+            sourceStaNo.setWrkNo(workNo);
+            sourceStaNo.setModiUser(userId);
+            sourceStaNo.setModiTime(new Date());
+            if (!basDevpService.updateById(sourceStaNo)) {
+                throw new CoolException("鏇存柊婧愮珯澶辫触");
+            }
+            // 鏇存柊鐩爣搴撲綅鐘舵��
+            LocMast locMast = locMastService.selectById(dto.getLocNo());
+            if (locMast.getLocSts().equals("O")) {
+                locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+                locMast.setModiUser(userId);
+                locMast.setModiTime(new Date());
+                if (!locMastService.updateById(locMast)) {
+                    throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+                }
+            } else {
+                throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+            }
+            return dto.getLocNo();
         }
-        return dto.getLocNo();
+
     }
+
+//    @Override
+//    @Transactional
+//    public String emptyPlateIn(Integer devpNo, Long userId) {
+//        // 婧愮珯鐐圭姸鎬佹娴�
+//        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
+//        // 妫�绱㈠簱浣�
+//        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
+//        StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, true, null, locTypeDto, 0);
+//        // 宸ヤ綔鍙�
+//        int workNo = dto.getWorkNo();
+//        // 鐢熸垚宸ヤ綔妗�
+//        WrkMast wrkMast = new WrkMast();
+//        wrkMast.setWrkNo(workNo);
+//        wrkMast.setIoTime(new Date());
+//        wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+//        wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
+//        wrkMast.setIoPri(13D); // 浼樺厛绾э細10
+//        wrkMast.setCrnNo(dto.getCrnNo());
+//        wrkMast.setSourceStaNo(dto.getSourceStaNo());
+//        wrkMast.setStaNo(dto.getStaNo());
+//        wrkMast.setLocNo(dto.getLocNo());
+//        wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+//        wrkMast.setPicking("N"); // 鎷f枡
+//        wrkMast.setExitMk("N"); // 閫�鍑�
+//        wrkMast.setEmptyMk("Y"); // 绌烘澘
+//        wrkMast.setLinkMis("N");
+//        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+//        // 鎿嶄綔浜哄憳鏁版嵁
+//        wrkMast.setAppeUser(userId);
+//        wrkMast.setAppeTime(new Date());
+//        wrkMast.setModiUser(userId);
+//        wrkMast.setModiTime(new Date());
+//        boolean res = wrkMastService.insert(wrkMast);
+//        if (!res) {
+//            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+//        }
+//        // 鏇存柊婧愮珯鐐逛俊鎭�
+//        sourceStaNo.setWrkNo(workNo);
+//        sourceStaNo.setModiUser(userId);
+//        sourceStaNo.setModiTime(new Date());
+//        if (!basDevpService.updateById(sourceStaNo)) {
+//            throw new CoolException("鏇存柊婧愮珯澶辫触");
+//        }
+//        // 鏇存柊鐩爣搴撲綅鐘舵��
+//        LocMast locMast = locMastService.selectById(dto.getLocNo());
+//        if (locMast.getLocSts().equals("O")) {
+//            locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+//            locMast.setModiUser(userId);
+//            locMast.setModiTime(new Date());
+//            if (!locMastService.updateById(locMast)) {
+//                throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+//            }
+//        } else {
+//            throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+//        }
+//        return dto.getLocNo();
+//    }
 
     @Override
     @Transactional
     public void emptyPlateOut(EmptyPlateOutParam param, Long userId) {
         if (Cools.isEmpty(param.getOutSite())) {
             throw new CoolException("绔欑偣涓嶅瓨鍦�");
+        }
+        // 鐩爣绔欑偣鐘舵�佹娴�
+        BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
+        int agvSite = 0;
+        if (!Cools.isEmpty(staNo.getFronting()) && staNo.getFronting().equals("Y")) {
+            agvSite = staNo.getDevNo();
+            staNo = basDevpService.checkSiteStatus(201);
         }
         for (String locNo : param.getLocNos()) {
             // 鑾峰彇宸ヤ綔鍙�
@@ -378,7 +497,7 @@
             // 鑾峰彇婧愮珯
             Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                     .eq("type_no", 110)
-                    .eq("stn_no", param.getOutSite())
+                    .eq("stn_no", staNo.getDevNo())
                     .eq("crn_no", locMast.getCrnNo());
             StaDesc staDesc = staDescService.selectOne(wrapper);
             Integer sourceStaNo = staDesc.getCrnStn();
@@ -393,7 +512,7 @@
             wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
             wrkMast.setIoPri(10D);
             wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
-            wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔�
+            wrkMast.setStaNo(staNo.getDevNo()); // 鐩爣绔�
             wrkMast.setCrnNo(locMast.getCrnNo());
             wrkMast.setSourceLocNo(locNo); // 婧愬簱浣�
             wrkMast.setFullPlt("N"); // 婊℃澘锛歒
@@ -401,6 +520,8 @@
             wrkMast.setExitMk("N"); // 閫�鍑�
             wrkMast.setEmptyMk("Y"); // 绌烘澘
             wrkMast.setLinkMis("N");
+            wrkMast.setCtnKind(agvSite); // 鍑哄簱涓嬬殑灏忚溅宸ヤ綔鍖虹珯濂�
+            wrkMast.setExitMk("N"); // 灏忚溅鏄惁鎼繍
             wrkMast.setAppeUser(userId);
             wrkMast.setAppeTime(new Date());
             wrkMast.setModiUser(userId);
@@ -427,6 +548,11 @@
     public void locCheckOut(StockOutParam param, Long userId) {
         // 鐩爣绔欑偣鐘舵�佹娴�
         BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
+        int agvSite = 0;
+        if (!Cools.isEmpty(staNo.getFronting()) && staNo.getFronting().equals("Y")) {
+            agvSite = staNo.getDevNo();
+            staNo = basDevpService.checkSiteStatus(201);
+        }
         // 鑾峰彇搴撲綅鏄庣粏
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
         for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
@@ -445,7 +571,7 @@
         }
         if (!locDetlDtos.isEmpty()) {
             // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱
-            stockOut(staNo, locDetlDtos, 107, userId);
+            stockOut(staNo, locDetlDtos, 107, userId, agvSite);
         } else {
             throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�");
         }

--
Gitblit v1.9.1