From cf074430480e44eba1e6ddce09ccce9f28067120 Mon Sep 17 00:00:00 2001
From: yxFwq <1>
Date: 星期三, 17 九月 2025 08:56:24 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java | 200 ++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 192 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java b/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
index f7ed8a3..bf0bab6 100644
--- a/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
@@ -8,12 +8,12 @@
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.StaDesc;
import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.BasCrnpService;
-import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.service.StaDescService;
-import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.entity.param.EmptyPlateOutParam;
+import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.utils.CodeDetectionUtil;
+import com.zy.asrs.utils.Utils;
import com.zy.common.model.enums.WorkNoType;
import com.zy.common.service.CommonService;
import lombok.extern.slf4j.Slf4j;
@@ -44,10 +44,16 @@
private StaDescService staDescService;
@Autowired
private BasCrnpService basCrnpService;
+ @Autowired
+ private WorkService workService;
- public ReturnT<String> start() {
+ public ReturnT<String> start(Integer staNo,Integer count) {
try {
- if (!Cools.isEmpty(wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("sta_no", 213)))){
+// if (!Cools.isEmpty(wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("sta_no", staNo)))){
+// return null;
+// }
+ int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("sta_no", staNo));
+ if (wrkCount>count){
return null;
}
// 鑾峰彇宸ヤ綔鍙�
@@ -63,8 +69,13 @@
crns.add(4);
crns.add(5);
crns.add(6);
+ crns.add(7);
boolean sign = true;
for (Integer crnNo : crns){
+ BasCrnp basCrnp = basCrnpService.selectById(crnNo);
+ if (basCrnp.getCrnSts()!=3 || !basCrnp.getOutEnable().equals("Y")){
+ continue;
+ }
sign = true;
// 鑾峰彇搴撲綅
LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts","D").eq("crn_no",crnNo));
@@ -81,9 +92,14 @@
// 鑾峰彇婧愮珯
Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
.eq("type_no", 110)
- .eq("stn_no", 213)
+ .eq("stn_no", staNo)
.eq("crn_no", locMast.getCrnNo());
StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+// throw new CoolException("鍑哄簱璺緞涓嶅瓨鍦�");
+ sign = false;
+ continue;
+ }
Integer sourceStaNo = staDesc.getCrnStn();
if (Cools.isEmpty(sourceStaNo)) {
// throw new CoolException("妫�绱㈡簮绔欏け璐�");
@@ -99,7 +115,7 @@
wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
wrkMast.setIoPri(10D);
wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
- wrkMast.setStaNo(213); // 鐩爣绔�
+ wrkMast.setStaNo(staNo); // 鐩爣绔�
wrkMast.setCrnNo(locMast.getCrnNo());
wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣�
wrkMast.setFullPlt("N"); // 婊℃澘锛歒
@@ -139,4 +155,172 @@
}
return SUCCESS;
}
+
+ public ReturnT<String> startYx(Integer staNo,Integer count) {
+ try {
+// if (!Cools.isEmpty(wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("sta_no", staNo)))){
+// return null;
+// }
+ int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("sta_no", staNo));
+ if (wrkCount>count){
+ return null;
+ }
+ ArrayList<Integer> crns =new ArrayList<>();
+ ArrayList<Integer> crnList =new ArrayList<>();
+ int[] crnCount = new int[7];
+ crns.add(1);
+ crns.add(2);
+ crns.add(3);
+ crns.add(4);
+ crns.add(5);
+ crns.add(6);
+ crns.add(7);
+ boolean sign = true;
+ for (Integer crnNo : crns){
+ int crnCountD = locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", "D").eq("crn_no", crnNo));
+ crnCount[crnNo-1] = crnCountD;
+ }
+ crnList.add(CodeDetectionUtil.crnCodeDetectionMax(new int[]{crnCount[0],crnCount[1]})[0]+1);
+ crnList.add(CodeDetectionUtil.crnCodeDetectionMax(new int[]{crnCount[2],crnCount[3],crnCount[4]})[0]+3);
+ crnList.add(CodeDetectionUtil.crnCodeDetectionMaxT(new int[]{crnCount[2],crnCount[3],crnCount[4]},crnList.get(1)-3)[0]+3);
+ crnList.add(CodeDetectionUtil.crnCodeDetectionMax(new int[]{crnCount[5],crnCount[6]})[0]+6);
+ crnList.add(1);
+ crnList.add(2);
+ crnList.add(3);
+ crnList.add(4);
+ crnList.add(5);
+ crnList.add(6);
+ crnList.add(7);
+ for (Integer crnNo : crnList){
+ // 妫�娴嬭矾寰�
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", 110)
+ .eq("stn_no", staNo)
+ .eq("crn_no", crnNo);
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)){
+ continue;
+ }
+ BasCrnp basCrnp = basCrnpService.selectById(crnNo);
+ if (basCrnp.getCrnSts()!=3 || !basCrnp.getOutEnable().equals("Y")){
+ continue;
+ }
+ if (!basCrnpService.checkSiteError(crnNo, false)){
+ continue;
+ }
+ // 鑾峰彇搴撲綅
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").eq("crn_no", crnNo).orderBy("lev1",true).orderBy("bay1",true));
+ for (LocMast locMastS : locMasts){
+ List<String> locNoList = new ArrayList<>();
+ sign = true;
+
+ if (Cools.isEmpty(locMastS)) {
+// throw new CoolException("搴撲腑鏃犵┖鏉匡紒锛侊紒");
+ log.error(crnNo+"鍙峰爢鍨涙満鏃犵┖鏉匡紒");
+ sign=false;
+ break;
+ }
+ if (sign && !locMastS.getLocSts().equals("D")){
+// throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
+ log.error(crnNo+"鍙峰爢鍨涙満"+"鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMastS.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMastS.getLocSts()+"-"+locMastS.getLocSts$());
+ sign=false;
+ }
+ locNoList.add(locMastS.getLocNo());
+
+ //灏忔枡绠变即鐢熷嚭搴�
+ if (sign && Utils.getRow(locMastS.getLocNo())<=8){
+ String locNoOther = staNoOther(locMastS.getLocNo());
+ LocMast locMastOther = locMastService.selectById(locNoOther);
+ if (locMastOther.getLocSts().equals("D") || locMastOther.getLocSts().equals("F") || locMastOther.getLocSts().equals("R")){
+ if (locMastOther.getLocSts().equals("D")){
+ locNoList.add(locNoOther);
+ }
+ }else {
+ sign=false;
+ }
+ }else if (sign && Utils.getRow(locMastS.getLocNo())>=21 && Utils.getRow(locMastS.getLocNo())<=27){
+ String locNoOther = staNoOther(locMastS.getLocNo());
+ LocMast locMastOther = locMastService.selectById(locNoOther);
+ if (locMastOther.getLocSts().equals("D") || locMastOther.getLocSts().equals("F") || locMastOther.getLocSts().equals("R")){
+ if (locMastOther.getLocSts().equals("D")){
+ locNoList.add(locNoOther);
+ }
+ }else {
+ sign=false;
+ }
+ }
+ ArrayList<String> locArrayList = new ArrayList<>();
+ for (String locNo : locNoList){
+ if (!locArrayList.contains(locNo)){
+ locArrayList.add(locNo);
+ }
+ }
+ if (sign) {
+ EmptyPlateOutParam param = new EmptyPlateOutParam();
+ param.setOutSite(staNo);
+ param.setLocNos(locArrayList);
+ try{
+ workService.emptyPlateOut(param, 9999L);
+ }catch (Exception e){
+ log.error(staNo+"鑷姩琛ョ┖鏉垮け璐ワ紒锛佸紓甯稿師鍥狅細"+e);
+ }
+ return SUCCESS;
+ }
+ }
+ }
+ if (!sign){
+ log.error("鏈煡鍒板彲鍑哄簱鐨勭┖鏉匡紒锛侊紒");
+ return null;
+ }
+ }catch (Exception e){
+ log.error("寮傚父锛侊紒锛�"+e);
+ return null;
+ }
+ return SUCCESS;
+ }
+
+ public String staNoOther(String locNo){
+ int row = Utils.getRow(locNo);
+ if (row<=8){
+ if (row%4==0 || row%4==1){
+ return getDeepLoc2(locNo,row);
+ }else {
+ return getDeepLoc(locNo,row);
+ }
+ }else if (row>=21 && row<=27){
+ if (row==21 || row==24 || row==27){
+ return getDeepLoc2(locNo,row);
+ }else {
+ return locNo;
+ }
+ }else {
+ return locNo;
+ }
+ }
+
+ /**
+ * 鑾峰彇 娣卞簱浣嶅搴旂殑娴呭簱浣嶅彿
+ */
+ public static String getDeepLoc2(String shallowLoc,int row) {
+ if (row == 1 || row == 5 || row==21) {
+ return Utils.zerofill(String.valueOf(row+1), 2) + shallowLoc.substring(2);
+ } else if (row == 4 || row == 8 || row == 24 || row == 27) {
+ return Utils.zerofill(String.valueOf(row-1), 2) + shallowLoc.substring(2);
+ }else {
+ return null;
+ }
+ }
+
+ /**
+ * 鑾峰彇 娴呭簱浣嶅搴旂殑娣卞簱浣嶅彿
+ */
+ public static String getDeepLoc(String shallowLoc,int row) {
+ if (row == 2 || row == 6) {
+ return Utils.zerofill(String.valueOf(row-1), 2) + shallowLoc.substring(2);
+ } else if (row == 3 || row == 7) {
+ return Utils.zerofill(String.valueOf(row+1), 2) + shallowLoc.substring(2);
+ }else {
+ return shallowLoc;
+ }
+ }
}
--
Gitblit v1.9.1