From af782f28728ef6dd73257edb4bbe2f3594dede20 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期六, 21 六月 2025 15:46:42 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 142 ++++++++++++++++++++++++++++++----------------
1 files changed, 92 insertions(+), 50 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 497f6c2..9702348 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -14,6 +14,7 @@
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
import com.zy.asrs.utils.VersionUtils;
+import com.zy.common.constant.RedisConstantType;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.MatDto;
import com.zy.common.model.SearchLocParam;
@@ -22,6 +23,7 @@
import com.zy.common.utils.CollectionUtils;
import com.zy.common.utils.HttpHandler;
import com.zy.common.utils.News;
+import com.zy.common.utils.RedisUtil;
import com.zy.core.CrnThread;
import com.zy.core.DevpThread;
import com.zy.core.cache.MessageQueue;
@@ -39,6 +41,8 @@
import com.zy.core.thread.LedThread;
import com.zy.core.thread.RgvThread;
import com.zy.core.thread.SiemensDevpThread;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -91,6 +95,10 @@
private WrkMastService wrkMastService;
@Autowired
private WrkMastLogService wrkMastLogService;
+ @Autowired
+ private ConfigService configService;
+ @Autowired
+ private RedisUtil redisUtil;
@Value("${wms.url}")
private String wmsUrl;
@@ -627,59 +635,71 @@
}
/**
- * 鍥炲師鐐癸紝鍫嗗灈鏈烘病鏈夋墽琛屼腑浠诲姟锛岃澶囧瓨鍦ㄥ叆搴撲换鍔℃椂鍙洖鍘熺偣
+ * 鍫嗗灈鏈烘棤浠诲姟涓ゅ垎閽燂紝鍥炲叆搴撳彛寰呮満
*/
- public synchronized void crnRebackHp(CrnProtocol crnProtocol, CrnThread crnThread) {
-// for (CrnSlave crn : slaveProperties.getCrn()) {
-// // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-// CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-// CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-// if (crnProtocol == null) {
-// continue;
-// }
-// BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
-// if (basCrnp == null) {
-// log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
-// continue;
-// }
- if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
- if (crnProtocol.getBay() == 1 && crnProtocol.getLevel() == 1) {
- return;
+ public synchronized void crnMove() {
+ for (CrnSlave crn : slaveProperties.getCrn()) {
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol == null) {
+ continue;
+ }
+ BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
+ if (basCrnp == null) {
+ log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
+ continue;
}
- // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�3,12
- if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) {
- return;
- }
+ if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
+ if (crnProtocol.getBay() == 1 && crnProtocol.getLevel() == 1) {
+ continue;
+ }
- //鍫嗗灈鏈烘湁鎵ц涓换鍔★紝杩囨护3,4,11,12
- if (wrkMastMapper.selectCrnWorking(crnProtocol.getCrnNo()) != null) {
- return;
- }
+ if (System.currentTimeMillis() - crnProtocol.getLastCommandTime() < 1000 * 60 * 2) {
+ continue;
+ }
- //杈撻�佺嚎娌℃湁鍏ュ簱浠诲姟锛岃繃婊�2
- if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) == null) {
- return;
+ Object object = redisUtil.get(RedisConstantType.CRN_MOVE_LOCK);
+ if (object != null) {
+ continue;
+ }
+
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+ .eq("crn_no", crn.getId())
+ .notIn("wrk_sts", 5, 14, 15)
+ );
+ if (!wrkMasts.isEmpty()) {
+ continue;
+ }
+
+ CrnSlave.CrnStn crnStn = crn.getCrnInStn().get(0);
+
+ News.info("鍫嗗灈鏈烘棤浠诲姟鑷姩鍥炲叆搴撳彛寰呮満==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満");
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ CrnCommand crnCommand = new CrnCommand();
+ crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙�
+ crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+ crnCommand.setTaskMode(CrnTaskModeType.CRN_MOVE); // 浠诲姟妯″紡: 鍫嗗灈鏈虹Щ鍔�
+ crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY((short) 1); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ((short) 1); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX((short) 0); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ((short) 0); // 鐩爣搴撲綅灞�
+ if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) {
+ News.error("鍫嗗灈鏈虹Щ鍔ㄥ懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand));
+ }
+ crnThread.setBackHpFlag(true);
+ redisUtil.set(RedisConstantType.CRN_MOVE_LOCK + crn.getId(), "lock", 60);
+ try {
+ Thread.sleep(500);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
- News.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣");
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- CrnCommand crnCommand = new CrnCommand();
- crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
- crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙�
- crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
- crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡: 鍥炲師鐐�
- crnCommand.setSourcePosX((short) 0); // 婧愬簱浣嶆帓
- crnCommand.setSourcePosY((short) 0); // 婧愬簱浣嶅垪
- crnCommand.setSourcePosZ((short) 0); // 婧愬簱浣嶅眰
- crnCommand.setDestinationPosX((short) 0); // 鐩爣搴撲綅鎺�
- crnCommand.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒�
- crnCommand.setDestinationPosZ((short) 0); // 鐩爣搴撲綅灞�
- if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) {
- News.error("鍫嗗灈鏈哄洖鍘熺偣鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand));
- }
- crnThread.setBackHpFlag(true);
}
-// }
}
/**
@@ -911,7 +931,23 @@
}
// 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
- && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
+ && staProtocol.getWorkNo() == 0) {
+
+ //鏍规嵁鍙傛暟鍒ゆ柇鏄惁鏍¢獙鍙嚭淇″彿
+ String crnOutVerifyOut = "Y";
+ Config crnOutVerifyOutEnableConfig = configService.selectOne(new EntityWrapper<Config>()
+ .eq("code", "crnOutVerifyOutEnable"));
+ if(crnOutVerifyOutEnableConfig != null) {
+ crnOutVerifyOut = crnOutVerifyOutEnableConfig.getValue();
+ }
+
+ if (crnOutVerifyOut.equals("Y")) {
+ if (!staProtocol.isOutEnable()) {
+ continue;
+ }
+ }
+
+
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
// 鍫嗗灈鏈烘帶鍒惰繃婊�
@@ -1651,6 +1687,7 @@
ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
ledCommand.setLocNo(wrkMast.getLocNo());
ledCommand.setStaNo(wrkMast.getStaNo());
+ ledCommand.setBarcode(wrkMast.getBarcode());
// ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
@@ -1674,11 +1711,14 @@
, wrkDetl.getAnfme()
, wrkDetl.getWeight()
, wrkDetl.getStockNum()
+ , wrkDetl.getStockNum2()
, wrkDetl.getSpecs()
, wrkDetl.getSku()
- , wrkDetl.getBarcode()
+ , wrkDetl.getZpallet()
, wrkDetl.getModel()
, wrkDetl.getSupp()
+ , wrkDetl.getKpCstmrName()
+ , wrkDetl.getOrderNo()
)));
}
commands.add(ledCommand);
@@ -1819,10 +1859,11 @@
List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
for (LocDetl locDetl : locDetls) {
WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(locDetl);
wrkDetl.setWrkNo(workNo);
wrkDetl.setIoTime(now);
wrkDetl.setAnfme(locDetl.getAnfme());
- VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
+// VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
wrkDetl.setAppeTime(now);
wrkDetl.setModiTime(now);
if (!wrkDetlService.insert(wrkDetl)) {
@@ -1943,10 +1984,11 @@
for (LocDetl locDetl : locDetls) {
WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(locDetl);
wrkDetl.setWrkNo(workNo);
wrkDetl.setIoTime(new Date());
wrkDetl.setAnfme(locDetl.getAnfme());
- VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
+// VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
wrkDetl.setAppeTime(new Date());
wrkDetl.setModiTime(new Date());
if (!wrkDetlService.insert(wrkDetl)) {
--
Gitblit v1.9.1