From 7aef672d9920e76f2a22bb03d08eafc64e075536 Mon Sep 17 00:00:00 2001
From: Administrator <pjb>
Date: 星期三, 22 十月 2025 20:45:55 +0800
Subject: [PATCH] 码盘完成+需要码盘才上报wms
---
src/main/java/com/zy/asrs/task/TaskReportScheduler.java | 319 ++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 303 insertions(+), 16 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/TaskReportScheduler.java b/src/main/java/com/zy/asrs/task/TaskReportScheduler.java
index 50461f8..d4e7297 100644
--- a/src/main/java/com/zy/asrs/task/TaskReportScheduler.java
+++ b/src/main/java/com/zy/asrs/task/TaskReportScheduler.java
@@ -4,24 +4,41 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
+import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.exception.CoolException;
+import com.zy.asrs.domain.enums.TaskStatusType;
+import com.zy.asrs.domain.enums.WorkNoType;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.TaskWrk;
import com.zy.asrs.entity.TaskWrkReport;
import com.zy.asrs.entity.TaskWrkReportLog;
+import com.zy.asrs.entity.param.TaskCreateParam;
import com.zy.asrs.entity.wms.WmsFeedback;
-import com.zy.asrs.service.ApiLogService;
-import com.zy.asrs.service.TaskWrkReportLogService;
-import com.zy.asrs.service.TaskWrkReportService;
+import com.zy.asrs.mapper.TaskWrkMapper;
+import com.zy.asrs.service.*;
+import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import com.zy.common.utils.Synchro;
+import com.zy.core.DevpThread;
+import com.zy.core.cache.MessageQueue;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.model.Task;
+import com.zy.core.model.protocol.StaProtocol;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+import javax.annotation.Resource;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.List;
+import java.util.Map;
/**
* 瀹氭椂灏嗕换鍔�(瀹屾垚銆佸彇娑�)杞垚鏃ュ織
@@ -46,16 +63,152 @@
@Value("${wms.taskExecCallback}")
private String TaskExecCallback;
+ @Value("${wms.completeDevpTask}")
+ private String completeDevpTask;
+ @Value("${wms.reportPalletizingCompleted}")
+ private String reportPalletizingCompleted;
+
+ @Resource
+ private TaskWrkMapper taskWrkMapper;
+
+ @Resource
+ private LocMastService locMastService;
+
+ @Resource
+ private CommonService commonService;
+
+ @Resource
+ private OpenService openService;
+
+ // 鐩戝惉澶栫疆杈撻�佺嚎
+ public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{
+ add(301);add(302);add(303);add(304);add(305);add(306);add(307);add(308);
+ }};
+
+ // 渚ч潰鐮佺洏瀹屾垚涓婃姤wms
@Scheduled(cron = "0/3 * * * * ? ")
- public void execute() throws IOException {
- Page<TaskWrkReport> taskWrkReportPage = taskWrkReportService.selectPage(new Page<>(0, 100), new EntityWrapper<TaskWrkReport>().orderBy("createTime", true));
+ public synchronized void reportPalletizingCompleted() {
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+ if (devpThread != null) {
+ Map<Integer, StaProtocol> staProtocolMap = devpThread.getStation();
+ int[] siteArray = new int[]{203, 207, 212};
+ for (int site : siteArray) {
+ StaProtocol staProtocol = staProtocolMap.get(site);
+ if (staProtocol != null) {
+ short mpCompletedFlag = staProtocol.getMpCompletedFlag();
+ if (mpCompletedFlag == 1) {
+ TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(staProtocol.getWorkNo()));
+ if (taskWrk != null && taskWrk.getMp() == 1) {
+
+ // 璇锋眰浣�
+ JSONObject request = new JSONObject();
+ request.put("site", site);
+
+ String response = "";
+ boolean bool = false;
+ try {
+ response = new HttpHandler.Builder()
+ // .setHeaders(headParam)
+ .setUri(wmsUrl)
+ .setPath(reportPalletizingCompleted)
+ .setJson(JSON.toJSONString(request))
+ .build()
+ .doPost();
+ if (!Cools.isEmpty(response)) {
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (Integer.parseInt(String.valueOf(jsonObject.get("code"))) == 200) {
+ bool = true;
+ // 鎺ㄩ�侀槦鍒�
+ boolean offer = MessageQueue.offer(SlaveType.Devp, 4, new Task(1, staProtocol));
+ if (offer) {
+ // 鏇存柊鏁版嵁搴�
+ taskWrk.setMpCompletedReport(1);
+ taskWrkMapper.updateById(taskWrk);
+ } else {
+ log.error("渚ч潰鐮佺洏瀹屾垚涓婃姤wms鎺ㄩ�侀槦鍒楀け璐ワ紝绔欑偣锛歿}锛屼换鍔″彿锛歿}", site, staProtocol.getWorkNo());
+ }
+ }
+ }
+ } catch (Exception e) {
+ log.error("渚ч潰鐮佺洏瀹屾垚涓婃姤wms澶辫触{},杩斿洖鍊�={}", taskWrk, response);
+ } finally {
+ apiLogService.save("渚ч潰鐮佺洏瀹屾垚涓婃姤wms"
+ , wmsUrl + reportPalletizingCompleted
+ , null
+ , "127.0.0.1"
+ , JSON.toJSONString(request)
+ , response
+ , bool
+ );
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // WMS鍒嗛厤鍏ュ簱搴撲綅寮傚父涓婃姤
+ @Scheduled(cron = "0/5 * * * * ? ")
+ @Transactional
+ public synchronized void locationAssignmentExceptionEscalation() {
+ List<TaskWrk> taskWrkList = taskWrkMapper.selectList(new EntityWrapper<TaskWrk>().eq("wrk_sts", 5));
+
+ for(TaskWrk taskWrk : taskWrkList) {
+ Date now = new Date();
+ WmsFeedback wmsFeedback = new WmsFeedback();
+ wmsFeedback.setTaskNo(taskWrk.getTaskNo());
+ wmsFeedback.setIoType(taskWrk.getIoType());
+ wmsFeedback.setBarcode(taskWrk.getBarcode());
+ wmsFeedback.setStatus(-1); // 鍏ュ簱搴撲綅鍒嗛厤寮傚父
+ wmsFeedback.setReportTime(DateUtils.convert(now));
+
+ String response = "";
+ boolean bool = false;
+ try {
+ log.info("鍏ュ簱wms鍒嗛厤搴撲綅鏈夎涓婃姤wms={}", taskWrk);
+ response = new HttpHandler.Builder()
+ // .setHeaders(headParam)
+ .setUri(wmsUrl)
+ .setPath(TaskExecCallback)
+ .setJson(JSON.toJSONString(wmsFeedback))
+ .build()
+ .doPost();
+ if (!Cools.isEmpty(response)) {
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (Integer.parseInt(String.valueOf(jsonObject.get("code"))) == 200) {
+ bool = true;
+ taskWrk.setWrkSts(6);
+ taskWrk.setModiTime(now);
+ taskWrkMapper.updateById(taskWrk);
+ }
+ }
+
+ } catch (Exception e) {
+ log.error("鍏ュ簱wms鍒嗛厤搴撲綅鏈夎涓婃姤wms澶辫触{},杩斿洖鍊�={}", taskWrk, response);
+ } finally {
+ apiLogService.save("wms鍒嗛厤搴撲綅鏈夎涓婃姤"
+ , wmsUrl + TaskExecCallback
+ , null
+ , "127.0.0.1"
+ , JSON.toJSONString(wmsFeedback)
+ , response
+ , bool
+ );
+ }
+ }
+ }
+
+ @Scheduled(cron = "0/5 * * * * ? ")
+ public synchronized void execute() throws IOException {
+ Page<TaskWrkReport> taskWrkReportPage = taskWrkReportService.selectPage(new Page<>(0, 100), new EntityWrapper<TaskWrkReport>().orderBy("create_time", true));
if (taskWrkReportPage.getRecords() != null) {
//鏂板涓�涓繃婊ゆ満鍒�
for (TaskWrkReport taskWrk : taskWrkReportPage.getRecords()) {
WmsFeedback wmsFeedback = getWmsFeedback(taskWrk);
String response = "";
- Boolean bool = false;
+ boolean bool = false;
try {
log.info("wcs鎵嬪姩瀹屾垚浠诲姟涓婃姤wms={}", taskWrk);
response = new HttpHandler.Builder()
@@ -65,17 +218,22 @@
.setJson(JSON.toJSONString(wmsFeedback))
.build()
.doPost();
- JSONObject jsonObject = JSON.parseObject(response);
- TaskWrkReportLog taskWrkLog = new TaskWrkReportLog();
- Synchro.Copy(taskWrk, taskWrkLog);
- taskWrkLog.setId(null);
- if (!taskWrkReportLogService.insert(taskWrkLog)) {
- throw new CoolException("杞巻鍙叉。澶辫触" + taskWrkLog);
+ if (!Cools.isEmpty(response)) {
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (Integer.parseInt(String.valueOf(jsonObject.get("code"))) == 200) {
+ TaskWrkReportLog taskWrkLog = new TaskWrkReportLog();
+ Synchro.Copy(taskWrk, taskWrkLog);
+ taskWrkLog.setId(null);
+ if (!taskWrkReportLogService.insert(taskWrkLog)) {
+ throw new CoolException("杞巻鍙叉。澶辫触" + taskWrkLog);
+ }
+ if (!taskWrkReportService.deleteById(taskWrk)) {
+ throw new CoolException("浠诲姟妗e垹闄ゅけ璐�" + taskWrkLog);
+ }
+ bool = true;
+ }
}
- if (!taskWrkReportService.deleteById(taskWrk)) {
- throw new CoolException("浠诲姟妗e垹闄ゅけ璐�" + taskWrkLog);
- }
- bool = true;
+
} catch (Exception e) {
log.error("wcs鎵嬪姩瀹屾垚浠诲姟涓婃姤wms澶辫触{},杩斿洖鍊�={}", taskWrk, response);
} finally {
@@ -93,6 +251,135 @@
}
+ // 绔嬩綋搴撹窇搴撶▼搴忥紝鐢熶骇鍕跨敤
+// @Scheduled(cron = "0/5 * * * * ? ")
+ public synchronized void autoMoveLoc() {
+ int flag = 1; // 1.璺�23鍙峰爢鍨涙満鍓�7鍒楋紝1鍙峰爢鍨涙満1锛�9灞� 2.璺�23鍙峰爢鍨涙満鍚�8-12鍒楋紝1鍙峰爢鍨涙満2-8灞�
+ for(int i = 1; i <= 3; i++ ){
+ // 鑾峰彇鍫嗗灈鏈哄搴斾换鍔�
+ Integer count = taskWrkMapper.selectCount(new EntityWrapper<TaskWrk>().eq("crn_no", i));
+ if (count == 0) {
+ // 鑾峰彇鍫嗗灈鏈哄贩閬撳湪搴撳簱浣�
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "F").eq("crn_no", i));
+ if (locMast != null) {
+ // 50娆″嚭涓�娆″簱
+ int count1 = locMastService.selectCount(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", 1));
+ if (count1 % 25 == 0) {
+ TaskCreateParam taskCreateParam = new TaskCreateParam();
+ taskCreateParam.setTaskNo(locMast.getLocNo()+"0");
+ taskCreateParam.setStartPoint(locMast.getLocNo());
+ taskCreateParam.setIoType(2);
+ taskCreateParam.setTaskPriority(11);
+ taskCreateParam.setBarcode(locMast.getBarcode());
+ taskCreateParam.setTargetPoint(i == 1 ? "114" : i == 2 ? "111" : "105");
+ openService.taskCreate(taskCreateParam);
+ return;
+ }
+ // 鑾峰彇涓�涓Щ鍔ㄧ殑鐩爣搴撲綅
+ LocMast locMast1;
+ if (flag == 1) {
+ if (i == 1) {
+ locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0")
+ .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1"));
+ } else if(i==2) {
+ locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0")
+ .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1").gt("bay1",7));
+ }else {
+ locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0")
+ .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1").gt("bay1",7));
+ }
+
+ } else {
+ if (i == 1) {
+ locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0")
+ .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1").in("lev1",2,3,4,5,6,7,8));
+ } else {
+ locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0")
+ .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1").gt("bay1",7));
+ }
+
+ }
+
+ if (locMast1 != null) {
+ // 鍒涘缓绉诲簱浠诲姟
+ TaskWrk taskWrk = new TaskWrk();
+ Date now = new Date();
+ taskWrk.setTaskNo(locMast1.getLocNo());//浠诲姟鍙�
+ taskWrk.setWrkNo(commonService.getWorkNo(WorkNoType.PAKIN.type));
+ taskWrk.setStatus(TaskStatusType.RECEIVE.id);//浠诲姟鐘舵�侊細鎺ユ敹
+ taskWrk.setCreateTime(now);
+ taskWrk.setAssignTime(now);
+ taskWrk.setIoType(3);//浠诲姟绫诲瀷
+ taskWrk.setIoPri(11);//浼樺厛绾�
+ taskWrk.setBarcode(locMast.getBarcode());//鏉$爜
+ taskWrk.setCrnNo(locMast.getCrnNo());
+ taskWrk.setWrkSts(11);
+ taskWrk.setStartPoint(locMast.getLocNo());//璧风偣
+ taskWrk.setTargetPoint(locMast1.getLocNo());
+ taskWrkMapper.insert(taskWrk);
+ locMast1.setStatus("1");
+ locMastService.updateById(locMast1);
+ }
+ }
+ }
+ }
+ }
+
+ // 鐩戝惉澶栫疆杈撻�佺嚎锛屾湁浠诲姟鍙峰拰鍙嚭淇″彿锛屼笂鎶ユ垚鍔熸竻闄や换鍔″彿鐩爣绔�
+ @Scheduled(cron = "0/3 * * * * ? ")
+ public synchronized void completeDevpTask() {
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2);
+ if (devpThread != null) {
+ for(Integer site : staNos) {
+ StaProtocol staProtocol = devpThread.getStation().get(site);
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol.isOutEnable() && staProtocol.getWorkNo() != 0 && staProtocol.isAutoing() && staProtocol.isLoading()) {
+ String response = "";
+ boolean bool = false;
+ JSONObject request = new JSONObject();
+ request.put("site",site);
+ try {
+ log.info("澶栫疆杈撻�佺嚎娴佸姩鍒颁綅涓婃姤wms={}", site);
+ response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath(completeDevpTask)
+ .setJson(request.toJSONString())
+ .build()
+ .doPost();
+ if (!Cools.isEmpty(response)) {
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (Integer.parseInt(String.valueOf(jsonObject.get("code"))) == 200) {
+ bool = true;
+ staProtocol.setWorkNo((short) 0);
+ staProtocol.setStaNo((short) 0);
+ boolean result = MessageQueue.offer(SlaveType.Devp, 2, new Task(2, staProtocol));
+ if (result) {
+ log.info("澶栫疆杈撻�佺嚎娴佸姩鍒颁綅涓婃姤wms,娓呴櫎杈撻�佺嚎绔欑偣{}鍛戒护涓嬪彂鎴愬姛锛�",site);
+ } else {
+ log.error("澶栫疆杈撻�佺嚎娴佸姩鍒颁綅涓婃姤wms,娓呴櫎杈撻�佺嚎绔欑偣{}鍛戒护涓嬪彂澶辫触锛�" ,site);
+ }
+ }
+ }
+ } catch (Exception e) {
+ log.error("澶栫疆杈撻�佺嚎娴佸姩鍒颁綅涓婃姤wms寮傚父{},杩斿洖鍊�={}", request, response);
+ } finally {
+ apiLogService.save("澶栫疆杈撻�佺嚎娴佸姩鍒颁綅涓婃姤wms"
+ , wmsUrl + completeDevpTask
+ , null
+ , "127.0.0.1"
+ , request.toJSONString()
+ , response
+ , bool
+ );
+ }
+ }
+ }
+ }
+ }
private WmsFeedback getWmsFeedback(TaskWrkReport taskWrk) {
WmsFeedback feedback = new WmsFeedback();
--
Gitblit v1.9.1