From 8c262eac44a583236561bf34d67dea9569200855 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期二, 06 五月 2025 13:12:09 +0800
Subject: [PATCH] 许可证更新
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 239 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 228 insertions(+), 11 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 1d11194..4f9173a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -7,6 +7,7 @@
import com.core.exception.CoolException;
import com.zy.asrs.controller.CrnController;
import com.zy.asrs.domain.enums.TaskStatusType;
+import com.zy.asrs.domain.enums.WorkNoType;
import com.zy.asrs.domain.param.CrnOperatorParam;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.wms.StorageEscalationParam;
@@ -15,7 +16,6 @@
import com.zy.asrs.mapper.TaskWrkMapper;
import com.zy.asrs.mapper.WrkMastMapper;
import com.zy.asrs.service.*;
-import com.zy.asrs.utils.CommandUtils;
import com.zy.asrs.utils.Utils;
import com.zy.common.service.CommonService;
import com.zy.core.CrnThread;
@@ -32,9 +32,9 @@
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.BarcodeThread;
import com.zy.core.thread.SiemensDevpThread;
-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;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
@@ -42,6 +42,7 @@
import java.io.IOException;
import java.util.Date;
import java.util.List;
+import java.util.Random;
/**
* 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
@@ -61,6 +62,8 @@
@Autowired
private LocMastService locMastService;
@Autowired
+ private LocDetlService locDetlService;
+ @Autowired
private BasCrnpService basCrnpService;
@Autowired
private BasDevpService basDevpService;
@@ -70,9 +73,11 @@
private BasCrnErrorMapper basCrnErrorMapper;
@Autowired
private TaskWrkMapper taskWrkMapper;
+
@Autowired
private TaskWrkService taskWrkService;
-
+ @Autowired
+ private CommonService commonService;
@Autowired
private StaDescMapper staDescMapper;
@@ -82,9 +87,6 @@
@Autowired
- private CommonService commonService;
-
- @Autowired
private ToWmsService toWmsService;
@@ -92,9 +94,25 @@
private CrnController crnController;
@Autowired
- private ConfigService configService;
+ private TransferTaskService transferTaskService;
- public void generateStoreWrkFile1() throws IOException, InterruptedException {
+ @Autowired
+ private WrkMastService wrkMastService;
+
+ @Autowired
+ private WrkDetlService wrkDetlService;
+
+ @Value("${loc-move.enable}")
+ private boolean enable;
+ @Value("${loc-move.crn1}")
+ private boolean crn1;
+ @Value("${loc-move.crn2}")
+ private boolean crn2;
+ @Value("${loc-move.crn3}")
+ private boolean crn3;
+
+
+ public void generateStoreWrkFile() throws IOException, InterruptedException {
try {
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
for (DevpSlave devp : slaveProperties.getDevp()) {
@@ -375,7 +393,7 @@
crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鎺�
crnCommand.setCommand((short) 1);
log.info("鍫嗗灈鏈哄叆搴撲换鍔′笅鍙�={}", crnCommand);
- if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand), false)) {
+ if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) {
log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
} else {
@@ -425,6 +443,15 @@
if (flag) {
LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
.eq("row1", (locMast.getRow1() - 1))
+ .eq("bay1", locMast.getBay1())
+ .eq("lev1", locMast.getLev1()).eq("loc_sts", "F"));
+ if (!Cools.isEmpty(locMast1)) {
+ log.info(locMast.getLocNo() + "鍑烘繁搴撲綅锛屾祬搴撲綅鏈夎揣");
+ continue;
+ }
+ } else {
+ LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .eq("row1", (locMast.getRow1() + 1))
.eq("bay1", locMast.getBay1())
.eq("lev1", locMast.getLev1()).eq("loc_sts", "F"));
if (!Cools.isEmpty(locMast1)) {
@@ -482,7 +509,7 @@
taskWrk.setMarkStart(1);
}
- if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, command), false)) {
+ if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, command))) {
log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(command));
throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
} else {
@@ -555,7 +582,7 @@
crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鍒�
crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅灞�
crnCommand.setCommand((short) 1);
- if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand), false)) {
+ if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) {
log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
} else {
// 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
@@ -835,6 +862,9 @@
try {
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
for (DevpSlave devp : slaveProperties.getDevp()) {
+ if (devp.getId() == 2) {
+ continue;
+ }
SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
for (DevpSlave.Sta inSta : devp.getInSta()) {
WrkMast pakout = wrkMastMapper.selectWorkingPakout(inSta.getBackSta());
@@ -993,4 +1023,191 @@
}
}
+
+ /**
+ * 璺戝簱绋嬪簭
+ */
+ public void debug(String sts, Long modiUser, Integer loc_type1) {
+ if (!enable) {
+ return;
+ }
+ List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>());
+ if (basCrnps.isEmpty()) {
+ return;
+ }
+ for (BasCrnp basCrnp : basCrnps) {
+ if (!basCrnp.getInEnable().equals("N") || !basCrnp.getOutEnable().equals("Y")) {
+ continue;
+ }
+ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", basCrnp.getCrnNo()).eq("io_type", 11));
+ if (Cools.isEmpty(wrkMasts) || wrkMasts.isEmpty()) {
+ int i = locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", sts).eq("loc_type1", loc_type1).ne("modi_user", modiUser));
+ LocMast locMastStart = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", sts).eq("loc_type1", loc_type1).ne("modi_user", modiUser));
+ if (locMastStart == null || i > 1) {
+ continue;
+ }
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+ .eq("loc_sts", "O")
+ .eq("crn_no", basCrnp.getCrnNo())
+ .eq("loc_type1", locMastStart.getLocType1())
+ .ne("modi_user", 77));
+ if (Cools.isEmpty(locMasts)) {
+ continue;
+ }
+ Random random = new Random();
+ LocMast locMastEnd = locMasts.get(random.nextInt(locMasts.size()));
+ locMove(locMastStart, locMastEnd, Long.parseLong(basCrnp.getCrnNo().toString()));
+ }
+ }
+ }
+
+
+ public void locMove(LocMast sourceLoc, LocMast locNo, Long userId) {
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLoc.getLocNo()));
+ LocMast loc = locMastService.selectById(locNo);
+ if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) {
+ throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�");
+ }
+ Date now = new Date();
+ // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
+ // 淇濆瓨宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+ wrkMast.setIoPri(10D);
+ wrkMast.setCrnNo(sourceLoc.getCrnNo());
+ wrkMast.setSourceLocNo(sourceLoc.getLocNo()); // 婧愬簱浣�
+ wrkMast.setLocNo(locNo.getLocNo()); // 鐩爣搴撲綅
+ wrkMast.setFullPlt(Cools.isEmpty(locDetls) ? "N" : "Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
+ wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setLinkMis("N");
+ wrkMast.setAppeUser(userId);
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 宸ヤ綔妗f槑缁嗕繚瀛�
+ for (LocDetl locDetl : locDetls) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(locDetl);
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAnfme(locDetl.getAnfme());
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(userId);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ }
+ // 淇敼婧愬簱浣嶇姸鎬�
+ if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) {
+ sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+ sourceLoc.setModiUser(userId);
+ sourceLoc.setModiTime(now);
+ if (!locMastService.updateById(sourceLoc)) {
+ throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+ }
+ } else {
+ throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細" + sourceLoc.getLocSts$());
+ }
+ // 淇敼鐩爣搴撲綅鐘舵��
+ if (loc.getLocSts().equals("O")) {
+ loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+ loc.setModiTime(now);
+ loc.setModiUser(userId);
+ if (!locMastService.updateById(loc)) {
+ throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + loc.getLocSts$());
+ }
+ }
+
+ /**
+ * 杞Щ浠诲姟涓嬪彂
+ */
+ public void transferTaskStart() {
+ for (DevpSlave.Sta sta : slaveProperties.getDevp().get(1).getInSta()) {
+ try {
+ // 鑾峰彇鍏ュ簱绔欎俊鎭�
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2);
+ StaProtocol staProtocol = devpThread.getStation().get(sta.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) {
+ // 鏌ヨ宸ヤ綔妗�
+ TransferTask transferTask = transferTaskService.selectByStartPoint(sta.getStaNo());
+ if (transferTask == null) {
+ continue;
+ }
+ log.info("涓嬪彂杈撻�佺嚎杞Щ浠诲姟锛歵askWrk:" + JSON.toJSONString(transferTask));
+ staProtocol.setWorkNo(transferTask.getWrkNo().shortValue());
+ staProtocol.setStaNo(transferTask.getTargetPoint().shortValue());
+ boolean offer = false;
+ try {
+ offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+ } catch (Exception e) {
+ log.error("涓嬪彂杈撻�佺嚎杞Щ浠诲姟锛氬紓甯�:" + e);
+ log.error("涓嬪彂杈撻�佺嚎杞Щ浠诲姟锛氬紓甯�:offer:" + offer);
+ }
+ if (offer) {
+ log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(transferTask));
+ transferTask.setStatus(2);
+ transferTaskService.updateById(transferTask);
+ } else {
+ log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:" + JSON.toJSONString(transferTask));
+ }
+ }
+ } catch (Exception e) {
+ log.error("杞Щ浠诲姟寮傚父:寮傚父淇℃伅锛�" + e);
+ }
+ }
+
+ }
+
+ /**
+ * 杞Щ浠诲姟瀹屾垚
+ */
+ public void transferTaskEnd() {
+ for (DevpSlave.Sta sta : slaveProperties.getDevp().get(1).getInSta()) {
+ try {
+ // 鑾峰彇缁堢偣绔�
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2);
+ StaProtocol staProtocol = devpThread.getStation().get(sta.getOverSta());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) {
+ // 鏌ヨ宸ヤ綔妗�
+ TransferTask transferTask = transferTaskService.selectByEndPoint(sta.getStaNo());
+ if (transferTask == null) {
+ continue;
+ }
+ log.info("杞Щ浠诲姟瀹屾垚锛歵ransferTask:" + JSON.toJSONString(transferTask));
+ transferTask.setStatus(3);
+ transferTaskService.updateById(transferTask);
+ }
+ } catch (Exception e) {
+ log.error("杞Щ浠诲姟寮傚父:寮傚父淇℃伅锛�" + e);
+ }
+ }
+
+ }
+
}
--
Gitblit v1.9.1