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