From 8dc960dd9fda130ff19faaafed6b1234e622610b Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期五, 19 十二月 2025 15:23:05 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/common/service/CommonService.java | 88 ++++++++++++++++++++++++++++++--------------
1 files changed, 60 insertions(+), 28 deletions(-)
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index dc6ca52..85cdae0 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -1,6 +1,7 @@
package com.zy.common.service;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
@@ -10,7 +11,9 @@
import com.zy.asrs.utils.Utils;
import com.zy.common.model.NavigateNode;
import com.zy.common.utils.NavigateUtils;
+import com.zy.common.utils.RedisUtil;
import com.zy.core.News;
+import com.zy.core.enums.RedisKeyType;
import com.zy.core.enums.WrkIoType;
import com.zy.core.enums.WrkStsType;
import com.zy.core.model.StationObjModel;
@@ -36,7 +39,7 @@
@Autowired
private NavigateUtils navigateUtils;
@Autowired
- private CommonService commonService;
+ private RedisUtil redisUtil;
/**
* 鐢熸垚宸ヤ綔鍙�
@@ -87,10 +90,6 @@
wrkMast.setWrkSts(WrkStsType.COMPLETE_INBOUND.sts);
}else if (wrkMast.getIoType() == WrkIoType.OUT.id) {
wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts);
- } else if (wrkMast.getIoType() == WrkIoType.SHUTTLE_MOVE.id) {
- wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);
- } else if (wrkMast.getIoType() == WrkIoType.SHUTTLE_CHARGE.id) {
- wrkMast.setWrkSts(WrkStsType.COMPLETE_CHARGE.sts);
} else if (wrkMast.getIoType() == WrkIoType.LOC_MOVE.id) {
wrkMast.setWrkSts(WrkStsType.COMPLETE_LOC_MOVE.sts);
}
@@ -118,25 +117,39 @@
Date now = new Date();
LocMast sourceLocMast = locMastService.queryByLoc(param.getSourceLocNo());
if (null == sourceLocMast) {
- throw new CoolException("婧愬簱浣嶄笉瀛樺湪");
+ throw new CoolException(param.getSourceLocNo() + "婧愬簱浣嶄笉瀛樺湪");
}
if (!sourceLocMast.getLocSts().equals("F")) {
- throw new CoolException("婧愬簱浣嶄笉澶勪簬鍦ㄥ簱鐘舵��");
+ throw new CoolException(sourceLocMast.getLocNo() + "婧愬簱浣嶄笉澶勪簬鍦ㄥ簱鐘舵��");
}
LocMast locMast = locMastService.queryByLoc(param.getLocNo());
if (null == locMast) {
- throw new CoolException("鐩爣搴撲綅涓嶅瓨鍦�");
+ throw new CoolException(param.getLocNo() + "鐩爣搴撲綅涓嶅瓨鍦�");
}
if (!locMast.getLocSts().equals("O")) {
- throw new CoolException("鐩爣搴撲綅涓嶅浜庣┖搴撶姸鎬�");
+ throw new CoolException(locMast.getLocNo() + "鐩爣搴撲綅涓嶅浜庣┖搴撶姸鎬�");
}
double ioPri = 800D;
if (param.getTaskPri() != null) {
ioPri = param.getTaskPri().doubleValue();
+ }
+
+ Integer sourceCrnNo = this.findCrnNoByLocNo(sourceLocMast.getLocNo());
+ if (sourceCrnNo == null) {
+ throw new CoolException("鏈壘鍒板搴斿爢鍨涙満");
+ }
+
+ Integer crnNo = this.findCrnNoByLocNo(locMast.getLocNo());
+ if (crnNo == null) {
+ throw new CoolException("鏈壘鍒板搴斿爢鍨涙満");
+ }
+
+ if (!sourceCrnNo.equals(crnNo)) {
+ throw new CoolException("婧愬簱浣嶅拰鐩爣搴撲綅涓嶅湪鍚屼竴宸烽亾");
}
// 鑾峰彇宸ヤ綔鍙�
@@ -150,7 +163,9 @@
wrkMast.setIoPri(ioPri);
wrkMast.setSourceLocNo(param.getSourceLocNo());
wrkMast.setLocNo(param.getLocNo()); // 鐩爣搴撲綅
+ wrkMast.setCrnNo(crnNo);
wrkMast.setWmsWrkNo(param.getTaskNo());
+ wrkMast.setBarcode(sourceLocMast.getBarcode());
wrkMast.setAppeTime(now);
wrkMast.setModiTime(now);
boolean res = wrkMastService.insert(wrkMast);
@@ -171,15 +186,15 @@
}
//鍏ュ簱浠诲姟
- public boolean createInTask(CreateInTaskParam param) {
+ public WrkMast createInTask(CreateInTaskParam param) {
Date now = new Date();
LocMast locMast = locMastService.queryByLoc(param.getLocNo());
if (null == locMast) {
- throw new CoolException("鐩爣搴撲綅涓嶅瓨鍦�");
+ throw new CoolException(param.getLocNo() + "鐩爣搴撲綅涓嶅瓨鍦�");
}
if (!locMast.getLocSts().equals("O")) {
- throw new CoolException("鐩爣搴撲綅涓嶅浜庣┖搴撶姸鎬�");
+ throw new CoolException(locMast.getLocNo() + "鐩爣搴撲綅涓嶅浜庣┖搴撶姸鎬�");
}
double ioPri = 100D;
@@ -187,7 +202,7 @@
ioPri = param.getTaskPri().doubleValue();
}
- Integer crnNo = commonService.findCrnNoByLocNo(locMast.getLocNo());
+ Integer crnNo = this.findCrnNoByLocNo(locMast.getLocNo());
if (crnNo == null) {
throw new CoolException("鏈壘鍒板搴斿爢鍨涙満");
}
@@ -219,13 +234,15 @@
locMast.setModiTime(new Date());
locMastService.updateById(locMast);
- return true;
+ //缂撳瓨璁板綍褰撳墠鍛戒护鍫嗗灈鏈虹紪鍙�
+ redisUtil.set(RedisKeyType.CURRENT_CIRCLE_TASK_CRN_NO.key, crnNo, 60 * 60 * 24);
+ return wrkMast;
}
//鍑哄簱浠诲姟
public boolean createOutTask(CreateOutTaskParam param) {
Date now = new Date();
- LocMast locMast = locMastService.queryByLoc(param.getSourceLocNo());
+ LocMast locMast = locMastService.queryByLoc(param.getLocNo());
if (null == locMast) {
throw new CoolException("婧愬簱浣嶄笉瀛樺湪");
}
@@ -239,9 +256,28 @@
ioPri = param.getTaskPri().doubleValue();
}
- Integer crnNo = commonService.findCrnNoByLocNo(locMast.getLocNo());
+ Integer crnNo = this.findCrnNoByLocNo(locMast.getLocNo());
if (crnNo == null) {
throw new CoolException("鏈壘鍒板搴斿爢鍨涙満");
+ }
+
+ Integer sourceStationId = this.findOutStationId(crnNo, param.getStaNo());
+ if (sourceStationId == null) {
+ throw new CoolException("鏈壘鍒拌緭閫佺洰鏍囩珯鐐瑰彲璧拌璺緞");
+ }
+
+ BasCrnp basCrnp = basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no", crnNo));
+ if(basCrnp == null) {
+ throw new CoolException("鏈壘鍒板搴斿爢鍨涙満鏁版嵁");
+ }
+ List<WrkMast> outWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+ .eq("crn_no", crnNo)
+ .eq("io_type", WrkIoType.OUT.id)
+ );
+ // 妫�鏌ユ槸鍚﹁秴杩囨渶澶у嚭搴撲换鍔℃暟
+ if(outWrkMasts.size() >= basCrnp.getMaxOutTask()){
+ News.info("鍫嗗灈鏈�:{} 宸茶揪鏈�澶у嚭搴撲换鍔℃暟锛屽綋鍓嶄换鍔℃暟:{}", basCrnp.getCrnNo(), outWrkMasts.size());
+ throw new CoolException("鍫嗗灈鏈�:" + basCrnp.getCrnNo() + "宸茶揪鏈�澶у嚭搴撲换鍔℃暟锛屽綋鍓嶄换鍔℃暟:" + outWrkMasts.size());
}
// 鑾峰彇宸ヤ綔鍙�
@@ -253,11 +289,11 @@
wrkMast.setWrkSts(WrkStsType.NEW_OUTBOUND.sts); // 宸ヤ綔鐘舵�侊細101.鐢熸垚鍑哄簱浠诲姟
wrkMast.setIoType(WrkIoType.OUT.id); // 鍏ュ嚭搴撶姸鎬侊細 101.鍑哄簱
wrkMast.setIoPri(ioPri);
- wrkMast.setSourceLocNo(param.getSourceLocNo()); // 婧愬簱浣�
- wrkMast.setSourceStaNo(param.getSourceStaNo());//婧愮珯
+ wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣�
+ wrkMast.setSourceStaNo(sourceStationId);//婧愮珯
wrkMast.setStaNo(param.getStaNo());//鐩爣绔�
wrkMast.setWmsWrkNo(param.getTaskNo());
- wrkMast.setBarcode(param.getBarcode());
+ wrkMast.setBarcode(locMast.getBarcode());
wrkMast.setCrnNo(crnNo);
wrkMast.setAppeTime(now);
wrkMast.setModiTime(now);
@@ -270,21 +306,17 @@
locMast.setLocSts("R");
locMast.setModiTime(new Date());
locMastService.updateById(locMast);
-
return true;
}
public Integer findCrnNoByLocNo(String locNo) {
List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>());
for (BasCrnp basCrnp : basCrnps) {
- String controlRows = basCrnp.getControlRows();
- if (Cools.isEmpty(controlRows)) {
- continue;
- }
-
- List<Integer> rowList = JSON.parseArray(controlRows, Integer.class);
- if(rowList.contains(Utils.getRow(locNo))) {
- return basCrnp.getCrnNo();
+ List<List<Integer>> rowList = basCrnp.getControlRows$();
+ for (List<Integer> rows : rowList) {
+ if(rows.contains(Utils.getRow(locNo))) {
+ return basCrnp.getCrnNo();
+ }
}
}
return null;
--
Gitblit v1.9.1