From c30b7afab5660fc30e041345a2b63580643668d8 Mon Sep 17 00:00:00 2001 From: lsymicc Date: Thu, 7 May 2026 16:15:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A5=E5=8F=A3=E8=BE=93=E9=80=81=E6=9C=BA?= =?UTF-8?q?=E9=87=8D=E4=B8=8B=E4=BB=BB=E5=8A=A1=E5=8A=9F=E8=83=BD=E5=92=8C?= =?UTF-8?q?=E9=83=A8=E5=88=86=E7=95=8C=E9=9D=A2=E5=8A=9F=E8=83=BD=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/common/TaskStatusCode.java | 7 +- .../job/controller/MydoJobController.java | 12 + .../ruoyi/job/service/IMydoJobService.java | 4 +- .../job/service/impl/MydoJobServiceImpl.java | 55 ++- .../schedule/scheduleTask/TaskHandler.java | 61 +++- .../scheduleTask/ssj/PortConvThread.java | 3 + .../mapper/job/JobCallBackMapper.xml | 2 +- ruoyi-ui/src/api/job/mydoJob.js | 9 + ruoyi-ui/src/views/job/mydoJob/index.vue | 321 ++++++++---------- 9 files changed, 254 insertions(+), 220 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/TaskStatusCode.java b/ruoyi-admin/src/main/java/com/ruoyi/common/TaskStatusCode.java index def6716..2170a75 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/common/TaskStatusCode.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/TaskStatusCode.java @@ -27,10 +27,15 @@ public class TaskStatusCode { */ public static final String TASK_STATUS_FINISH = "4"; + /** + * 任务状态-手动完成 + */ + public static final String TASK_STATUS_FINISH_MANUAL = "5"; + /** * 任务状态-作废 */ - public static final String TASK_STATUS_INVALID = "5"; + public static final String TASK_STATUS_INVALID = "6"; //>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 【执行阶段】 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/controller/MydoJobController.java b/ruoyi-admin/src/main/java/com/ruoyi/job/controller/MydoJobController.java index 6ff36e4..13a2cbf 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/controller/MydoJobController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/controller/MydoJobController.java @@ -120,5 +120,17 @@ public class MydoJobController extends BaseController return mydoJobService.OuthandFinish(jobIds); } + @PreAuthorize("@ss.hasAnyPermi('job:mydoJob:resendTaskToEntrance')") + @Log(title = "入口输送机重新下发", businessType = BusinessType.OTHER) + @PutMapping("/resendTaskToEntrance") + public AjaxResult resendTaskToEntrance(@RequestParam("jobId") String jobId){ + + if (jobId == null || jobId == "") return AjaxResult.error("未选择任务或选择任务异常"); + + MydoJob job = mydoJobService.selectMydoJobByJobId(jobId); + job.setExecutionPhase("0"); + job.setStatus("1"); + return toAjax(mydoJobService.updateMydoJob(job)); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/service/IMydoJobService.java b/ruoyi-admin/src/main/java/com/ruoyi/job/service/IMydoJobService.java index 453e18a..cf02874 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/service/IMydoJobService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/service/IMydoJobService.java @@ -94,7 +94,7 @@ public interface IMydoJobService AjaxResult OuthandFinish(String[] jobIds); - public AjaxResult ManuelTaskFinish(String[] taskNos); + AjaxResult ManuelTaskFinish(String taskNo); List getInJobByEntranceId(String exitId); @@ -102,6 +102,8 @@ public interface IMydoJobService MydoJob selectMydoJobByWmsTaskNo(String wmsTaskNo); + + /** * 获取本地生成作业号 * @param type RK-入库 CK-出库 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java index a2d1cbf..76012c0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java @@ -142,8 +142,6 @@ public class MydoJobServiceImpl implements IMydoJobService deleteMydoJobByJobId(task.getJobId()); ddjDeviceExecutionQueueService.deleteDdjDeviceExecutionQueueByTaskNo(task.getTaskNo()); - log.info("【堆垛机入库】堆垛机:"+ task.getRoadwayId() +"任务完成,任务号:"+ rwh); - JobCallBack jobCallBack = new JobCallBack(); jobCallBack.setType(Integer.valueOf(task.getInOrOut()) < 20 ? "1" : "2"); jobCallBack.setMydoJobId(task.getJobId()); @@ -211,21 +209,14 @@ public class MydoJobServiceImpl implements IMydoJobService //获取所有符合【任务单号】的作业 for (String jobId : jobIds) { - //todo 是否需要校验响应成功后再执行历史表操作 - //插入历史表 mydoJobMapper.insertHistory(jobId); //生成回传记录 MydoJob mydoJob = mydoJobMapper.selectMydoJobByJobId(jobId); JobCallBack jobCallBack = new JobCallBack(); - long jobIdNum = Long.parseLong(mydoJob.getInOrOut()); - if (jobIdNum > 20){ - jobCallBack.setType("2"); - }else{ - jobCallBack.setType("1"); - } - jobCallBack.setTaskTypeCode(WMS_TASK_TYPE_FINISH);//todo wms下发的任务类型 + jobCallBack.setType(mydoJob.getInOrOut()); + jobCallBack.setTaskTypeCode(WMS_TASK_TYPE_FINISH);// wms自定义的任务类型 jobCallBack.setMydoJobId(mydoJob.getJobId()); jobCallBack.setStatus("0"); jobCallBack.setTaskNo(Convert.toLong(mydoJob.getTaskNo())); @@ -244,34 +235,30 @@ public class MydoJobServiceImpl implements IMydoJobService } /** - * 手动处理指定批量【任务号】的作业 - * >>需要确定【jobid】是否由wms下发 - * >>如果【jobid】和【taskno】是一对多的情况,使用上一个方法手动完成作业会导致整个【jobid】单据完成回传 - * >>如果【jobid】和【taskno】是一对一的情况,则直接使用 方法手动完成即可 - * @param taskNos + * 手动处理指定【任务号】的作业 + * @param taskNo * @return */ @Override - public AjaxResult ManuelTaskFinish(String[] taskNos) { + public AjaxResult ManuelTaskFinish(String taskNo) { //获取所有符合【任务号】的作业 - for (String taskNo : taskNos) { - MydoJob mydoJob = mydoJobMapper.selectMydoJobByTaskNo(taskNo); - mydoJobMapper.insertHistory(mydoJob.getInOrOut()); - JobCallBack jobCallBack = new JobCallBack(); - long jobIdNum = Long.parseLong(mydoJob.getInOrOut()); - if (jobIdNum > 20) { - jobCallBack.setType("2"); - } else { - jobCallBack.setType("1"); - } - jobCallBack.setMydoJobId(mydoJob.getJobId()); - jobCallBack.setStatus("0"); - jobCallBack.setTaskNo(Convert.toLong(taskNo)); - jobCallBack.setCreateTime(new Date()); - jobCallBackService.insertJobCallBack(jobCallBack); - mydoJobMapper.deleteMydoJobByTaskNo(taskNo); - } + MydoJob mydoJob = mydoJobMapper.selectMydoJobByTaskNo(taskNo); + mydoJobMapper.insertHistory(mydoJob.getInOrOut()); + JobCallBack jobCallBack = new JobCallBack(); + jobCallBack.setType(mydoJob.getInOrOut()); + jobCallBack.setTaskTypeCode(WMS_TASK_TYPE_FINISH);// wms下发的任务类型 + jobCallBack.setMydoJobId(mydoJob.getJobId()); + jobCallBack.setStatus("0"); + jobCallBack.setTaskNo(Convert.toLong(mydoJob.getTaskNo())); + jobCallBack.setCreateTime(new Date()); + jobCallBack.setTaskCode(mydoJob.getWmsTaskNo()); + jobCallBack.setRetry(0); + jobCallBack.setReqCode(UUID.randomUUID().toString()); + jobCallBackService.insertJobCallBack(jobCallBack); + + mydoJobMapper.deleteMydoJobByTaskNo(taskNo); + return AjaxResult.success("操作成功"); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/TaskHandler.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/TaskHandler.java index 5ff536d..3315a85 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/TaskHandler.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/TaskHandler.java @@ -24,6 +24,9 @@ import static com.ruoyi.common.TaskExceptionType.TASK_EXCEPTION_STOCKIN_OCCUPIED import static com.ruoyi.common.TaskStatusCode.*; import static com.ruoyi.common.WmsTaskTypeCode.WMS_TASK_TYPE_EXCEPTION; +/** + * 处理wcs执行作业的定时任务类 + */ @Component @Slf4j public class TaskHandler { @@ -39,13 +42,16 @@ public class TaskHandler { @Autowired private IDdjDeviceExecutionQueueService ddjDeviceExecutionQueueService; + + private static final int DEFAULTTIMEINTERVAL = 2000; + + /** * 处理未正常移除的【堆垛机执行完成】或【出库到位】的遗留任务 */ // @Scheduled(fixedDelay = 3000) public void mydoJobHandler() { - //此处 - 堆垛机执行完成【TASK_EP_DDJ_FINISH】和出库到位【TASK_EP_SSJ_STOCKOUT_FINISH】的常量值相同,均可表示任务【已完成】 - //用任意一种状态查询所有标记为【已完成】的任务 + //查询所有标记为【已完成】的任务 List jobs = mydoJobService.selectMydoJobList( new MydoJob().builder().executionPhase(TASK_EP_FINISH).build() ); @@ -57,23 +63,58 @@ public class TaskHandler { } + /** + * 【手动作废】 - 查询并处理标记为已经作废的任务 + */ + //@Scheduled(fixedDelay = 3000) + public void cancelMydoJob(){ + List jobs = mydoJobService.selectInOrOutMydoJobList( + new MydoJob().builder().status(TASK_STATUS_INVALID).build() + ); + + if (!jobs.isEmpty()) { + for (MydoJob job : jobs) { + mydoJobService.ManuelTaskFinish(job.getTaskNo()); + } + } + } + + + /** + * 【手动完成】 - 查询并处理标记为已经手动完成的任务 + */ + //@Scheduled(fixedDelay = 3000) + public void finishMydoJob(){ + List jobs = mydoJobService.selectInOrOutMydoJobList( + new MydoJob().builder().status(TASK_STATUS_FINISH_MANUAL).build() + ); + + if (!jobs.isEmpty()) { + for (MydoJob job : jobs) { + mydoJobService.ManuelTaskFinish(job.getTaskNo()); + } + } + } + + /** * 定时扫描未回传或回传异常的任务记录 */ - @Scheduled(fixedDelay=3000) + @Scheduled(fixedDelay = 3000) public void jobCallBack() { jobCallBackService.jobCallBack(); } /** - * 入库异常 - 【放货有货】处理方法 + * 【入库异常-请求重分】 - 【放货有货】处理方法 */ - @Scheduled(fixedDelay = 2000) + @Scheduled(fixedDelay = DEFAULTTIMEINTERVAL) public void stockinExceptionHandler() { List jobs = mydoJobService.selectInOrOutMydoJobList( new MydoJob().builder().executionPhase(TASK_EXCEPTION_PUT).build() ); + if (!jobs.isEmpty()) { for (MydoJob job : jobs) { //上报异常 - 向wms请求重分接口 @@ -112,10 +153,11 @@ public class TaskHandler { } + /** - * 出库异常 - 【取货无货】处理方法 + * 【出库异常】 - 【取货无货】处理方法 */ - @Scheduled(fixedDelay = 2000) + @Scheduled(fixedDelay = DEFAULTTIMEINTERVAL) public void stockoutExceptionHandler() { List jobs = mydoJobService.selectInOrOutMydoJobList( new MydoJob().builder().executionPhase(TASK_EXCEPTION_PICK).build() @@ -146,10 +188,11 @@ public class TaskHandler { } + /** - * 入库重分完成 - 堆垛机重新下发 + * 【入库异常-重分完成】 - 堆垛机重新下发 */ - @Scheduled(fixedDelay = 2000) + @Scheduled(fixedDelay = DEFAULTTIMEINTERVAL) public void sendTaskForStacker(){ List jobs = mydoJobService.selectInOrOutMydoJobList( new MydoJob().builder().executionPhase(TASK_EXCEPTION_PUT_REASSIGN).build() diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/PortConvThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/PortConvThread.java index 56ee963..6a2d54c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/PortConvThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/PortConvThread.java @@ -300,6 +300,9 @@ public class PortConvThread implements Runnable { /** * 从 MOXA NPort 5110(TCP Server 模式)读取单次称重值 + * ************测试方法************ + * ************测试方法************ + * ************测试方法************ * * @param moxaIp MOXA 设备 IP(如 "192.168.1.200") * @param moxaPort MOXA 配置的 TCP 端口(如 4001) diff --git a/ruoyi-admin/src/main/resources/mapper/job/JobCallBackMapper.xml b/ruoyi-admin/src/main/resources/mapper/job/JobCallBackMapper.xml index 93b9051..a695e70 100644 --- a/ruoyi-admin/src/main/resources/mapper/job/JobCallBackMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/job/JobCallBackMapper.xml @@ -45,7 +45,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where status != '1' and retry < 10 - + insert into job_call_back type, diff --git a/ruoyi-ui/src/api/job/mydoJob.js b/ruoyi-ui/src/api/job/mydoJob.js index 9f49b16..3f738c4 100644 --- a/ruoyi-ui/src/api/job/mydoJob.js +++ b/ruoyi-ui/src/api/job/mydoJob.js @@ -52,6 +52,7 @@ export function delMydoJob(jobId) { }) } +// 手动完成作业 export function handFinish(jobIds) { return request({ url: '/job/mydoJob/OuthandFinish', @@ -61,3 +62,11 @@ export function handFinish(jobIds) { } +// 重新向入口输送机下发任务 +export function resendTaskToEntrance(jobId) { + return request({ + url: '/job/mydoJob/resendTaskToEntrance' + '?jobId=' + jobId, + method: 'put', + }) +} + diff --git a/ruoyi-ui/src/views/job/mydoJob/index.vue b/ruoyi-ui/src/views/job/mydoJob/index.vue index 3df76ec..0ed4e62 100644 --- a/ruoyi-ui/src/views/job/mydoJob/index.vue +++ b/ruoyi-ui/src/views/job/mydoJob/index.vue @@ -2,127 +2,112 @@
- + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 重置 @@ -131,15 +116,12 @@ - 手动完成 + 手动完成 + + + 入库重新下发 @@ -147,9 +129,9 @@ - + @@ -157,74 +139,49 @@ - + - + - - + + - + - + - - + + - + - +