From 288e45a990a5abf4ab50f820ed4e870e8314468e Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期六, 21 六月 2025 15:14:10 +0800 Subject: [PATCH] 完善 --- src/main/java/com/zy/asrs/task/handler/MoveLocHandler.java | 455 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 427 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/zy/asrs/task/handler/MoveLocHandler.java b/src/main/java/com/zy/asrs/task/handler/MoveLocHandler.java index 82ecdc5..1c42497 100644 --- a/src/main/java/com/zy/asrs/task/handler/MoveLocHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/MoveLocHandler.java @@ -2,16 +2,20 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; 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.service.LocDetlService; -import com.zy.asrs.service.LocMastService; -import com.zy.asrs.service.TestMastService; -import com.zy.asrs.service.WorkService; +import com.zy.asrs.entity.param.CombParam; +import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; +import com.zy.asrs.utils.PostMesDataUtils; +import com.zy.common.model.enums.WorkNoType; +import com.zy.common.service.CommonService; 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 org.springframework.transaction.interceptor.TransactionAspectSupport; @@ -34,50 +38,445 @@ private TestMastService testMastService; @Autowired private WorkService workService; + @Autowired + private WrkMastService wrkMastService; + @Autowired + private CommonService commonService; + @Autowired + private WrkDetlService wrkDetlService; + @Autowired + private BasCrnpService basCrnpService; + + @Value("${channel.equipmentRow}") + private Integer equipmentRow; //娴嬭瘯搴撲綅鎵�鍦ㄦ帓鍙� + @Value("${channel.quietRow}") + private Integer quietRow; //闈欑疆搴撲綅鎵�鍦ㄦ帓鍙� + + @Value("${mes.url}") + private String mesUrl; + + @Value("${mes.inPath}") + private String inpath; @Transactional public ReturnT<String> start() { + //娴嬭瘯鎴愬姛,绉诲簱 try { - List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() + List<LocMast> locMasts2 = locMastService.selectList(new EntityWrapper<LocMast>() .eq("loc_sts", "F") - .eq("pack_status", 3) - .eq("row1", 2) + .eq("pack_status", 3)//娴嬭瘯瀹屾垚 + .eq("row1", equipmentRow) .eq("loc_type1", (short) 1) - .eq("fire_status",0) + .eq("fire_status", 0) + .eq("ctn_kind",1) ); - if (!Cools.isEmpty(locMasts)){ - for (LocMast locMast:locMasts){ + if (!Cools.isEmpty(locMasts2)) { + for (LocMast locMast : locMasts2) { + LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo())); + if (Cools.isEmpty(locDetl)) { + log.error("娴嬭瘯鎴愬姛 鍑哄簱銆佺Щ搴�==>搴撳瓨鏄庣粏鏌ヨ澶辫触锛佸簱浣嶅彿锛�" + locMast.getLocNo()); + continue; + } TestMast testMast = testMastService.selectOne(new EntityWrapper<TestMast>() - .eq("loc_no",locMast.getLocNo()) - .eq("barcode",locMast.getBarcode()) - .eq("status",4) + .eq("loc_no", locMast.getLocNo()) + .eq("barcode", locDetl.getMatnr()) + .eq("status", 3) ); - if (!Cools.isEmpty(testMast)){ - if (testMast.getStatus()==4){ + boolean sign = false; + if (!Cools.isEmpty(testMast)) { + if (testMast.getStatus() == 3) { //绉诲簱寮�濮嬶紝鏌ヨ鐩爣搴撲綅 - LocMast targetLocNo = locMastService.queryFreeLocMast(1,(short)2); - if (Cools.isEmpty(targetLocNo)){ - targetLocNo=locMastService.queryFreeLocMast(2,(short)2); + LocMast targetLocNo = locMastService.queryFreeLocMast(3, (short) 2); + if (Cools.isEmpty(targetLocNo)) { + targetLocNo = locMastService.queryFreeLocMast(2, (short) 2); + if (Cools.isEmpty(targetLocNo)) { + targetLocNo = locMastService.queryFreeLocMast(1, (short) 2); + if (Cools.isEmpty(targetLocNo)) { + return FAIL.setMsg("娌℃湁涓浆搴撲綅"); + } + } } - if (targetLocNo != null){ - workService.locMove(locMast.getLocNo(),targetLocNo.getLocNo(),(long)Integer.parseInt(testMast.getUserId())); - }else { - log.error("娌℃湁绌哄簱浣�"); + if (targetLocNo != null) { + workService.locMove(locMast.getLocNo(), targetLocNo.getLocNo(), (long) 9935); + sign = true; + } else { + log.error("娴嬭瘯瀹屾垚鑷姩绉诲簱--->娌℃湁绌哄簱浣�!"); } - }else if (testMast.getStatus()!=4) { + + } else if (testMast.getStatus() != 4) { log.error("娴嬭瘯鐘舵�佸紓甯�,搴撲綅鍙蜂负锛�" + testMast.getLocNo()); } - }else { - log.error("娴嬭瘯搴撲綅锛�"+locMast.getLocNo()+"鎵�灞炴祴璇曟。涓虹┖"); + + } else { + log.error("娴嬭瘯搴撲綅锛�" + locMast.getLocNo() + "鎵�灞炴祴璇曟。涓虹┖鎴栬�呬笉鐘舵�佷负4"); + } + if (false) { + //4.娴嬭瘯瀹屾垚涓婃姤 + CombParam combParam = new CombParam(); + combParam.setPackNo(locDetl.getMatnr()); + combParam.setLocNo(locMast.getLocNo()); + combParam.setPackSts(1); + combParam.setStepSts(4); + combParam.setRequestTime(DateUtils.convert(new Date())); +// new PostMesDataUtils().postMesData("MES绯荤粺", mesUrl, inpath, combParam); + return SUCCESS; } } } } catch (Exception e) { - e.printStackTrace(); - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - return FAIL.setMsg(e.getMessage()); + log.error("" + e); + } + + //娴嬭瘯澶辫触,绉诲簱 + try { + List<LocMast> locMasts2 = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("loc_sts", "F") + .eq("pack_status", 4)//娴嬭瘯澶辫触 + .eq("row1", equipmentRow) + .eq("loc_type1", (short) 1) + .eq("fire_status", 0) + .eq("ctn_kind",1) + ); + if (!Cools.isEmpty(locMasts2)) { + for (LocMast locMast : locMasts2) { + LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo())); + if (Cools.isEmpty(locDetl)) { + log.error("娴嬭瘯澶辫触 鍑哄簱銆佺Щ搴�==>搴撳瓨鏄庣粏鏌ヨ澶辫触锛佸簱浣嶅彿锛�" + locMast.getLocNo()); + continue; + } + TestMast testMast = testMastService.selectOne(new EntityWrapper<TestMast>() + .eq("loc_no", locMast.getLocNo()) + .eq("barcode", locDetl.getMatnr()) + .eq("status", 4) + ); + boolean sign = false; + if (!Cools.isEmpty(testMast)) { + if (testMast.getStatus() == 4) { + //绉诲簱寮�濮嬶紝鏌ヨ鐩爣搴撲綅 + LocMast targetLocNo = locMastService.queryFreeLocMast(3, (short) 4); + if (Cools.isEmpty(targetLocNo)) { + targetLocNo = locMastService.queryFreeLocMast(2, (short) 4); + if (Cools.isEmpty(targetLocNo)) { + targetLocNo = locMastService.queryFreeLocMast(1, (short) 4); + if (Cools.isEmpty(targetLocNo)) { + return FAIL.setMsg("娌℃湁涓浆搴撲綅"); + } + } + } + if (targetLocNo != null) { + workService.locMove(locMast.getLocNo(), targetLocNo.getLocNo(), (long) 9935); + sign = true; + } else { + log.error("娴嬭瘯澶辫触鑷姩绉诲簱--->娌℃湁绌哄簱浣�!"); + } + + } else if (testMast.getStatus() != 4) { + log.error("娴嬭瘯鐘舵�佸紓甯�,搴撲綅鍙蜂负锛�" + testMast.getLocNo()); + } + + } else { + log.error("娴嬭瘯搴撲綅锛�" + locMast.getLocNo() + "鎵�灞炴祴璇曟。涓虹┖鎴栬�呬笉鐘舵�佷负4"); + } + if (false) { + //4.娴嬭瘯瀹屾垚涓婃姤 + CombParam combParam = new CombParam(); + combParam.setPackNo(locDetl.getMatnr()); + combParam.setLocNo(locMast.getLocNo()); + combParam.setPackSts(1); + combParam.setStepSts(4); + combParam.setRequestTime(DateUtils.convert(new Date())); +// new PostMesDataUtils().postMesData("MES绯荤粺", mesUrl, inpath, combParam); + return SUCCESS; + } + } + } + } catch (Exception e) { + log.error("" + e); + } + + //娴嬭瘯鏈夌┖搴撲綅 绉诲簱 + try { + List<LocMast> locMasts3 = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("loc_sts", "F") + .eq("pack_status", 0) + .eq("loc_type1", (short) 3) + .eq("fire_status", 0) + .orderBy("io_time", true) + ); + if (!Cools.isEmpty(locMasts3)) { + for (LocMast locMast : locMasts3) { + boolean signCrn1 = basCrnpService.checkSiteError(1, true); + if (!signCrn1) { + log.error("鍚戞祴璇曞簱浣嶇Щ搴撳け璐�---->1鍙峰爢鍨涙満涓嶅彲鐢�!"); + break; + } + //绉诲簱寮�濮嬶紝鏌ヨ鐩爣搴撲綅 + LocMast targetLocNo = locMastService.queryFreeLocMast(equipmentRow, (short) 1); + if (targetLocNo != null) { + workService.locMove(locMast.getLocNo(), targetLocNo.getLocNo(), (long) 9999); + } else { +// log.error("鍚戞祴璇曞簱浣嶇Щ搴撳け璐�--->绛夊緟绌哄簱浣�!"); + } + } + } + } catch (Exception e) { + log.error("" + e); } return SUCCESS; } +// @Transactional +// public ReturnT<String> start() { +// //娴嬭瘯澶辫触锛圢G锛夌Щ搴� +// try { +// List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() +// .eq("loc_sts", "F") +// .eq("pack_status", 4)//娴嬭瘯澶辫触 +// .eq("row1", equipmentRow) +// .eq("loc_type1", (short) 1) +// .eq("fire_status", 0) +// ); +// if (!Cools.isEmpty(locMasts)) { +// for (LocMast locMast : locMasts) { +// LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo())); +// if (Cools.isEmpty(locDetl)) { +// log.error("娴嬭瘯澶辫触锛圢G锛夌Щ搴�==>搴撳瓨鏄庣粏鏌ヨ澶辫触锛佸簱浣嶅彿锛�" + locMast.getLocNo()); +// continue; +// } +// TestMast testMast = testMastService.selectOne(new EntityWrapper<TestMast>() +// .eq("loc_no", locMast.getLocNo()) +// .eq("barcode", locDetl.getMatnr()) +// .eq("status", 4)//瀹屾垚娴嬭瘯 +// ); +// if (!Cools.isEmpty(testMast)) { +// if (testMast.getStatus() == 4) { +// //绉诲簱寮�濮嬶紝鏌ヨ鐩爣搴撲綅 +// LocMast targetLocNo = locMastService.queryFreeLocMast(2, (short) 4); +// if (Cools.isEmpty(targetLocNo)) { +// targetLocNo = locMastService.queryFreeLocMast(1, (short) 4); +// } +// if (targetLocNo != null) { +// workService.locMove(locMast.getLocNo(), targetLocNo.getLocNo(), (long) Integer.parseInt("9935")); +// //4.娴嬭瘯瀹屾垚涓婃姤 +// CombParam combParam = new CombParam(); +// combParam.setPackNo(locDetl.getMatnr()); +// combParam.setLocNo(locMast.getLocNo()); +// combParam.setPackSts(2); +// combParam.setStepSts(4); +// combParam.setRequestTime(DateUtils.convert(new Date())); +// new PostMesDataUtils().postMesData("MES绯荤粺", mesUrl, inpath, combParam); +// return SUCCESS; +// } else { +// log.error("娴嬭瘯瀹屾垚鑷姩绉诲簱--->娌℃湁绌哄簱浣�!"); +// } +// } else if (testMast.getStatus() != 4) { +// log.error("娴嬭瘯鐘舵�佸紓甯�,搴撲綅鍙蜂负锛�" + testMast.getLocNo()); +// } +// } else { +// log.error("娴嬭瘯搴撲綅锛�" + locMast.getLocNo() + "鎵�灞炴祴璇曟。涓虹┖鎴栬�呬笉鐘舵�佷负4"); +// } +// } +// } +// } catch (Exception e) { +// log.error("" + e); +//// e.printStackTrace(); +//// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +//// return FAIL.setMsg(e.getMessage()); +// } +// +// //娴嬭瘯鎴愬姛 鍑哄簱銆佺Щ搴� +// try { +// List<LocMast> locMasts2 = locMastService.selectList(new EntityWrapper<LocMast>() +// .eq("loc_sts", "F") +// .eq("pack_status", 3)//娴嬭瘯瀹屾垚 +// .eq("row1", equipmentRow) +// .eq("loc_type1", (short) 1) +// .eq("fire_status", 0) +// ); +// if (!Cools.isEmpty(locMasts2)) { +// for (LocMast locMast : locMasts2) { +// LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo())); +// if (Cools.isEmpty(locDetl)) { +// log.error("娴嬭瘯鎴愬姛 鍑哄簱銆佺Щ搴�==>搴撳瓨鏄庣粏鏌ヨ澶辫触锛佸簱浣嶅彿锛�" + locMast.getLocNo()); +// continue; +// } +// TestMast testMast = testMastService.selectOne(new EntityWrapper<TestMast>() +// .eq("loc_no", locMast.getLocNo()) +// .eq("barcode", locDetl.getMatnr()) +// .eq("status", 4) +// ); +// boolean sign = false; +// if (!Cools.isEmpty(testMast)) { +// if (testMast.getStatus() == 4) { +// boolean signCrn1 = basCrnpService.checkSiteError(1, false); +// if (!signCrn1) { +// log.error("娴嬭瘯瀹屾垚鑷姩绉诲簱--->1鍙峰爢鍨涙満涓嶅彲鍑哄簱!"); +// break; +// } +// //绉诲簱寮�濮嬶紝鏌ヨ鐩爣搴撲綅 +// LocMast targetLocNo = locMastService.queryFreeLocMast(4, (short) 2); +// if (Cools.isEmpty(targetLocNo)) { +// targetLocNo = locMastService.queryFreeLocMast(3, (short) 2); +// } +// boolean signCrn2 = basCrnpService.checkSiteError(2, true); +// if (!signCrn2) { +// targetLocNo = null; +// log.error("娴嬭瘯瀹屾垚鑷姩绉诲簱--->2鍙峰爢鍨涙満涓嶅彲鍏ュ簱! 寮�濮嬫煡鎵�1鍙峰爢鍨涙満"); +// } +// if (targetLocNo != null) { +// //鐢熸垚鍑哄簱浠诲姟 +// if (outLoc(locMast)) { +// sign = true; +// } +// } else { +// signCrn1 = basCrnpService.checkSiteError(1, true); +// if (!signCrn1) { +// log.error("娴嬭瘯瀹屾垚鑷姩绉诲簱--->1鍙峰爢鍨涙満涓嶅彲鍏ュ簱!"); +// break; +// } +// //3\4鎺掓弧 鍚�2鎺掔Щ搴擄紝鏌ヨ鐩爣搴撲綅 +// targetLocNo = locMastService.queryFreeLocMast(2, (short) 2); +// if (Cools.isEmpty(targetLocNo)) { +// targetLocNo = locMastService.queryFreeLocMast(1, (short) 2); +// } +// if (targetLocNo != null) { +// workService.locMove(locMast.getLocNo(), targetLocNo.getLocNo(), (long) 9935); +// sign = true; +// } else { +// log.error("娴嬭瘯瀹屾垚鑷姩绉诲簱--->娌℃湁绌哄簱浣�!"); +// } +// } +// } else if (testMast.getStatus() != 4) { +// log.error("娴嬭瘯鐘舵�佸紓甯�,搴撲綅鍙蜂负锛�" + testMast.getLocNo()); +// } +// +// } else { +// log.error("娴嬭瘯搴撲綅锛�" + locMast.getLocNo() + "鎵�灞炴祴璇曟。涓虹┖鎴栬�呬笉鐘舵�佷负4"); +// } +// if (sign) { +// //4.娴嬭瘯瀹屾垚涓婃姤 +// CombParam combParam = new CombParam(); +// combParam.setPackNo(locDetl.getMatnr()); +// combParam.setLocNo(locMast.getLocNo()); +// combParam.setPackSts(1); +// combParam.setStepSts(4); +// combParam.setRequestTime(DateUtils.convert(new Date())); +// new PostMesDataUtils().postMesData("MES绯荤粺", mesUrl, inpath, combParam); +// return SUCCESS; +// } +// } +// } +// } catch (Exception e) { +// log.error("" + e); +//// e.printStackTrace(); +//// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +//// return FAIL.setMsg(e.getMessage()); +// } +// +// //娴嬭瘯鏈夌┖搴撲綅 绉诲簱 +// try { +// List<LocMast> locMasts3 = locMastService.selectList(new EntityWrapper<LocMast>() +// .eq("loc_sts", "F") +// .eq("pack_status", 0) +// .eq("loc_type1", (short) 3) +// .eq("fire_status", 0) +// .orderBy("io_time", true) +// ); +// if (!Cools.isEmpty(locMasts3)) { +// for (LocMast locMast : locMasts3) { +// boolean signCrn1 = basCrnpService.checkSiteError(1, true); +// if (!signCrn1) { +// log.error("鍚戞祴璇曞簱浣嶇Щ搴撳け璐�---->1鍙峰爢鍨涙満涓嶅彲鐢�!"); +// break; +// } +// //绉诲簱寮�濮嬶紝鏌ヨ鐩爣搴撲綅 +// LocMast targetLocNo = locMastService.queryFreeLocMast(equipmentRow, (short) 1); +// if (targetLocNo != null) { +// workService.locMove(locMast.getLocNo(), targetLocNo.getLocNo(), (long) 9999); +// } else { +//// log.error("鍚戞祴璇曞簱浣嶇Щ搴撳け璐�--->绛夊緟绌哄簱浣�!"); +// } +// } +// } +// } catch (Exception e) { +// log.error("" + e); +//// e.printStackTrace(); +//// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +//// return FAIL.setMsg(e.getMessage()); +// } +// return SUCCESS; +// } +// +// public boolean outLoc(LocMast locMast) { +// try { +// Date now = new Date(); +// Integer ioType = 101; //鍏ュ嚭搴撶被鍨� +// LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo())); +// if (Cools.isEmpty(locDetl)) { +// log.error("搴撲綅:" + locMast.getLocNo() + "娌℃湁鏄庣粏"); +// } else if (Cools.isEmpty(locDetl.getDeadWarn())) { +// log.error("搴撲綅:" + locMast.getLocNo() + "娌℃湁闈欑疆鏃堕棿"); +// } else if (Cools.isEmpty(locMast.getModiTime())) { +// log.error("搴撲綅:" + locMast.getLocNo() + "modiTime涓虹┖"); +// } else if (Cools.isEmpty(locMast.getBarcode())) { +// log.error("搴撲綅:" + locMast.getLocNo() + "鎵樼洏鐮佷负绌�"); +// } else { +// // 鐢熸垚宸ヤ綔鍙� +// int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); +// // 鐢熸垚宸ヤ綔妗� +// WrkMast wrkMast = new WrkMast(); +// wrkMast.setWrkNo(workNo); +// wrkMast.setIoTime(now); +// wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID +// wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬� +// wrkMast.setIoPri(13D); // 浼樺厛绾э細13 +// wrkMast.setCrnNo(1); +// wrkMast.setSourceStaNo(203); // 婧愮珯 +// wrkMast.setStaNo(206); // 鐩爣绔� 2鍙峰爢鍨涙満鍏ュ簱绔� +// wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣� +// wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 +// wrkMast.setPicking("N"); // 鎷f枡 +// wrkMast.setExitMk("N"); // 閫�鍑� +// wrkMast.setEmptyMk("N"); // 绌烘澘 +// wrkMast.setLinkMis("N"); +// wrkMast.setBarcode(locMast.getBarcode()); +// wrkMast.setAppeTime(now); +// wrkMast.setModiTime(now); +// if (!wrkMastService.insert(wrkMast)) { +// log.error("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + locMast.getLocNo()); +// return false; +// } +// // 鐢熸垚宸ヤ綔妗f槑缁� +// WrkDetl wrkDetl = new WrkDetl(); +// wrkDetl.sync(locDetl); +// wrkDetl.setWrkNo(workNo); +// wrkDetl.setIoTime(now); +// wrkDetl.setAnfme(1.0); // 鏁伴噺 +// wrkDetl.setAppeTime(now); +// wrkDetl.setModiTime(now); +// if (!wrkDetlService.insert(wrkDetl)) { +// log.error("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); +// return false; +// } +// // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害 +// if (locMast.getLocSts().equals("F")) { +// locMast.setLocSts("R"); +// locMast.setModiTime(now); +//// locMast.setPackStatus(5); //5:寮�濮嬮潤缃� +// if (!locMastService.updateById(locMast)) { +// log.error("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + locMast.getLocNo()); +// return false; +// } else { +// return true; +// } +// } else { +// log.error(locMast.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��"); +// } +// } +// return false; +// } catch (Exception e) { +// return false; +// } +// } + } -- Gitblit v1.9.1