From 15c8f00ab3a1e3d2d96b56bae0ec11efedd60231 Mon Sep 17 00:00:00 2001 From: 18516761980 <4761516tqsxp> Date: 星期三, 29 九月 2021 11:14:15 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 235 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 180 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 ecc5f75..07e58bd 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 @@ -169,11 +179,11 @@ List<FullStoreParam.MatCodeStore> erpMatList = param.getList(); for (FullStoreParam.MatCodeStore es : erpMatList) { if (Cools.isEmpty(es.getStr6())) { - String maxKeySql = "select max(FInterID) as num from CPICMO"; + String maxKeySql = "select min(FInterID) as num from CPICMO"; List<ERPselectParam> maxKeyList = erpSqlServer.select(maxKeySql, ERPselectParam.class); Integer maxKey = maxKeyList.get(0).getNum(); - String ErpSql = "insert into CPICMO(FBrNo, FSourceBillNo, FBillNo, FTranType, FStatus, FMRP, FItemID, FQty, FCommitQty, FSourceEntryID, FClosed, FUnitID, FAuxCommitQty, FCancellation, FQtyFinish, FQtyScrap, FQtyLost, FAuxQtyFinish, FAuxQtyScrap, FAuxQtyLost, FMrpClosed, FBomInterID, FQtyPass, FAuxQtyPass, FQtyBack, FAuxQtyBack, FFinishTime, FReadyTIme, FPowerCutTime, FFixTime, FWaitItemTime, FWaitToolTime, FTaskID, FWorkTypeID, FCostObjID, FStockQty, FAuxStockQty, FSuspend, FReleasedQty, FReleasedAuxQty, FUnScheduledQty, FUnScheduledAuxQty, FSubEntryID, FScheduleID, FPlanOrderInterID, FProcessPrice, FProcessFee, FGMPBatchNo, FGMPCollectRate, FGMPItemBalance, FGMPBulkQty, FCustID, FMRPLockFlag, FHandworkClose, FInHighLimit, FInHighLimitQty, FInLowLimit, FInLowLimitQty, FChangeTimes, FCheckCommitQty, FAuxCheckCommitQty, FPlanConfirmed, FPlanMode, FMTONo, FPrintCount, FFinClosed, FStockFlag, FStartFlag, FVchBillNo, FVchInterID, FCardClosed, FHRReadyTime, FSourceTranType, FSourceInterId, FInterID, FAuxQty, FAuxInHighLimitQty, FAuxInLowLimitQty, Fnumber, FWorkShop) values (0, 0, '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14036, '0', 0, 0, 14215, 0, '0', 0, 1059, 0, 0, 0, 0, {0,number,#}, {1,number,#}, {2,number,#}, {3,number,#}, ''{4}'', 11378)"; - ErpSql = MessageFormat.format(ErpSql, maxKey + 1, es.getCount(), es.getCount(), es.getCount(), es.getMatNo()); + String ErpSql = "insert into CPICMO(FBrNo, FSourceBillNo, FBillNo, FTranType, FStatus, FMRP, FItemID, FQty, FCommitQty, FSourceEntryID, FClosed, FUnitID, FAuxCommitQty, FCancellation, FQtyFinish, FQtyScrap, FQtyLost, FAuxQtyFinish, FAuxQtyScrap, FAuxQtyLost, FMrpClosed, FBomInterID, FQtyPass, FAuxQtyPass, FQtyBack, FAuxQtyBack, FFinishTime, FReadyTIme, FPowerCutTime, FFixTime, FWaitItemTime, FWaitToolTime, FTaskID, FWorkTypeID, FCostObjID, FStockQty, FAuxStockQty, FSuspend, FReleasedQty, FReleasedAuxQty, FUnScheduledQty, FUnScheduledAuxQty, FSubEntryID, FScheduleID, FPlanOrderInterID, FProcessPrice, FProcessFee, FGMPBatchNo, FGMPCollectRate, FGMPItemBalance, FGMPBulkQty, FCustID, FMRPLockFlag, FHandworkClose, FInHighLimit, FInHighLimitQty, FInLowLimit, FInLowLimitQty, FChangeTimes, FCheckCommitQty, FAuxCheckCommitQty, FPlanConfirmed, FPlanMode, FMTONo, FPrintCount, FFinClosed, FStockFlag, FStartFlag, FVchBillNo, FVchInterID, FCardClosed, FHRReadyTime, FSourceTranType, FSourceInterId, FInterID, FAuxQty, FAuxInHighLimitQty, FAuxInLowLimitQty, Fnumber, FWorkShop, Fflag_rw) values (0, ''{6}'', '0', 85, 0, 1052, 0, 0, 0, 0, 0, 250, {5,number,#}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14036, '0', 0, 0, 14215, 0, '0', 0, 1059, 0, 0, 0, 0, {0,number,#}, {1,number,#}, {2,number,#}, {3,number,#}, ''{4}'', 11378, 1)"; + ErpSql = MessageFormat.format(ErpSql, maxKey - 1, es.getCount(), es.getCount(), es.getCount(), es.getMatNo(), es.getCount(), es.getStr5()); erpSqlServer.update(ErpSql); } } @@ -265,6 +275,7 @@ wrkMast.setEmptyMk("N"); // 绌烘澘 wrkMast.setLinkMis("N"); wrkMast.setCtnKind(agvSite); // 鍑哄簱涓嬬殑灏忚溅宸ヤ綔鍖虹珯濂� + wrkMast.setExitMk("N"); // 灏忚溅鏄惁鎼繍 wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁 wrkMast.setAppeTime(new Date()); wrkMast.setModiUser(userId); @@ -274,6 +285,13 @@ } // 鐢熸垚宸ヤ綔妗f槑缁� for (LocDetlDto detlDto : dto.getLocDetlDtos()) { + // 濡傛灉涓烘崱鏂欏嚭搴撻渶瑕佸垽鏂墭鐩樼爜鏄惁涓虹┖ + if (ioType == 103) { + String zpallet = detlDto.getLocDetl().getZpallet(); + if (Cools.isEmpty(zpallet)) { + throw new CoolException("鎷f枡鍑哄簱蹇呴』鍚湁鎵樼洏鐮�"); + } + } // 鍑哄簱鏃讹紝鏁伴噺涓�0鐨勭洿鎺ュ拷鐣� if (detlDto.getCount() == null || detlDto.getCount() <= 0.0D) { continue; @@ -312,66 +330,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()) { // 鑾峰彇宸ヤ綔鍙� @@ -381,10 +501,13 @@ if (Cools.isEmpty(locMast)) { throw new CoolException(locNo + "搴撲綅涓嶅瓨鍦�"); } + if(!locMast.getLocSts().equals("D")){ //闈炲湪搴撶姸鎬� + continue; + } // 鑾峰彇婧愮珯 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(); @@ -399,7 +522,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"); // 婊℃澘锛歒 @@ -407,6 +530,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); -- Gitblit v1.9.1