From aa33e56e37cd19b88ae8eea69c5ebc7c6da8b1d2 Mon Sep 17 00:00:00 2001 From: Administrator <pjb> Date: 星期四, 05 六月 2025 17:59:47 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/glccwcs' into glccwcs --- src/main/java/com/zy/asrs/task/TaskReportScheduler.java | 251 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 235 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 4e81506..7cffabb 100644 --- a/src/main/java/com/zy/asrs/task/TaskReportScheduler.java +++ b/src/main/java/com/zy/asrs/task/TaskReportScheduler.java @@ -4,23 +4,39 @@ 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 javax.annotation.Resource; import java.io.IOException; +import java.util.ArrayList; import java.util.Date; +import java.util.List; /** * 瀹氭椂灏嗕换鍔�(瀹屾垚銆佸彇娑�)杞垚鏃ュ織 @@ -45,16 +61,85 @@ @Value("${wms.taskExecCallback}") private String TaskExecCallback; + @Value("${wms.completeDevpTask}") + private String completeDevpTask; - //@Scheduled(cron = "0/3 * * * * ? ") - public void execute() throws IOException { + @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/5 * * * * ? ") + 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() @@ -64,17 +149,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 { @@ -92,6 +182,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