diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index c6a5179..c89b6d9 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -103,9 +103,35 @@ + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + 1.9.0 + + + + + org.jetbrains.kotlin + kotlin-reflect + 1.9.0 + + + + + org.jetbrains.kotlinx + kotlinx-coroutines-core + 1.9.0 + + + + + ${project.basedir}/src/main/kotlin + + org.springframework.boot @@ -131,6 +157,48 @@ ${project.artifactId} + + + + org.jetbrains.kotlin + kotlin-maven-plugin + 1.9.0 + + + compile + + compile + + + + ${project.basedir}/src/main/kotlin + ${project.basedir}/src/main/java + + + + + test-compile + + test-compile + + + + ${project.basedir}/src/test/kotlin + ${project.basedir}/src/test/java + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 16 + 16 + + + ${project.artifactId} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java index c94f131..e66d817 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java @@ -6,6 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.context.annotation.ComponentScan; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; @@ -20,6 +21,10 @@ import javax.annotation.PostConstruct; @EnableScheduling @EnableAsync @MapperScan("com.**.mapper") +@ComponentScan(basePackages = { + "com.ruoyi", + "kotlin" +}) public class RuoYiApplication { public static void main(String[] args) @@ -27,6 +32,5 @@ public class RuoYiApplication // System.setProperty("spring.devtools.restart.enabled", "false"); SpringApplication.run(RuoYiApplication.class, args); System.out.println("(♥◠‿◠)ノ゙ 福来瑞达WCS系统启动成功 ლ(´ڡ`ლ)゙ "); - } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/wcs2wms/taskFinish/taskFinishReceive.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/wcs2wms/taskFinish/TaskFinishReceive.java similarity index 95% rename from ruoyi-admin/src/main/java/com/ruoyi/api/domain/wcs2wms/taskFinish/taskFinishReceive.java rename to ruoyi-admin/src/main/java/com/ruoyi/api/domain/wcs2wms/taskFinish/TaskFinishReceive.java index c466593..2d64400 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/wcs2wms/taskFinish/taskFinishReceive.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/wcs2wms/taskFinish/TaskFinishReceive.java @@ -16,7 +16,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -public class taskFinishReceive { +public class TaskFinishReceive { /** * 任务类型(必填) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java index 0c862b5..740e500 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java @@ -19,7 +19,6 @@ import com.ruoyi.api.domain.agv.genAgvSchedulingTask.PositionCodeData; import com.ruoyi.api.domain.wcs2wms.JobParam; import com.ruoyi.api.domain.wcs2wms.ReceiveJob; import com.ruoyi.api.domain.wcs2wms.ResponseResult; -import com.ruoyi.api.domain.wcs2wms.exception.TaskExceptionReceive; import com.ruoyi.api.domain.wcs2wms.exception.TaskExceptionRequest; import com.ruoyi.api.domain.wcs2wms.stockout.StockoutReceive; import com.ruoyi.api.service.IApiService; @@ -45,7 +44,6 @@ import java.util.Map; import static com.ruoyi.common.Constant.*; import static com.ruoyi.common.TaskStatusCode.TASK_EP_CREATE; -import static com.ruoyi.common.TaskStatusCode.TASK_EP_ROADWAY_SSJ; /** * 接口记录Service业务层处理 @@ -65,8 +63,6 @@ public class ApiServiceImpl implements IApiService { private IMydoJobService mydoJobService; @Autowired private IWcsPortService wcsPortService; - @Autowired - private IBasCargoSpaceService basCargoSpaceService; @@ -448,6 +444,7 @@ public class ApiServiceImpl implements IApiService { } } + /** * @@@ FT568 请求wms获取入库任务参数 - 适应wms的自定义请求响应格式 * @param param @@ -607,38 +604,21 @@ public class ApiServiceImpl implements IApiService { @Override public AjaxResult updateWcsPort(WcsPort wcsPort) { int i = wcsPortService.updateWcsPort(wcsPort); - if(i>0){ + if(i > 0){ return AjaxResult.success(); }else{ return AjaxResult.error(); } } -//// @PostConstruct -// void qwe() { -// HashMap map = new HashMap<>(); -// map.put("v_param", "RK"); -// mydoJobService.getJobId(map); -// String s = map.get("v_serial").toString(); -// System.out.println(s); -// -// -// map.put("v_param", "CK"); -// mydoJobService.getJobId(map); -// s = map.get("v_serial").toString(); -// System.out.println(s); -// -// map.put("v_param", "2"); -// mydoJobService.getTaskNo(map); -// s = map.get("v_serial").toString(); -// System.out.println(s); -// -// map.put("v_param", "3"); -// mydoJobService.getTaskNo(map); -// s = map.get("v_serial").toString(); -// System.out.println(s); -// -// } + @PostConstruct + void qwe() { +// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); +// queryWrapper.eq(MydoJob::getTaskNo,"6666"); +// MydoJob mydoJob = mydoJobMapper.selectOne(queryWrapper); + + + } } 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 300794c..07cacc0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/common/TaskStatusCode.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/TaskStatusCode.java @@ -5,6 +5,8 @@ package com.ruoyi.common; */ public class TaskStatusCode { + //>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 【任务状态】 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + /** * 任务状态-待执行 */ @@ -30,36 +32,59 @@ public class TaskStatusCode { */ public static final String TASK_STATUS_INVALID = "5"; + + //>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 【执行阶段】 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + /** - * 任务执行阶段 创建 + * 任务执行阶段 任务已生成 */ public static final String TASK_EP_CREATE = "0"; /** - * 任务执行阶段 产线 + * 任务执行阶段 产线输送到位 */ public static final String TASK_EP_LINE_SSJ = "1"; + /** * 任务执行阶段 AGV */ public static final String TASK_EP_AGV = "2"; + /** * 任务执行阶段 入口输送机 */ public static final String TASK_EP_SSJ = "3"; + /** - * 任务执行阶段 巷道口 + * 任务执行阶段 巷道口入库到位 */ public static final String TASK_EP_ROADWAY_SSJ = "4"; + /** - * 任务执行阶段 堆垛机 + * 任务执行阶段 堆垛机执行 */ public static final String TASK_EP_DDJ = "5"; + /** + * 任务执行阶段 堆垛机放货完成 + */ + public static final String TASK_EP_DDJ_FINISH = "6"; + + /** + * 任务执行阶段 输送机出库到位-出库完成 + */ + public static final String TASK_EP_SSJ_STOCKOUT_FINISH = "6"; + + /** + * 任务执行阶段 任务超时-自动结束当前任务 + */ + public static final String TASK_EP_DDJ_FINISH_TIMEOUT = "6_TIMEOUT_FINISH"; + /** * 任务执行阶段 回传wms完成 */ - public static final String TASK_EP_WMS_FINISH = "6"; + public static final String TASK_EP_WMS_FINISH = "9"; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/TaskType.java b/ruoyi-admin/src/main/java/com/ruoyi/common/TaskType.java index 5f7bd76..60367bc 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/common/TaskType.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/TaskType.java @@ -1,15 +1,22 @@ package com.ruoyi.common; +/** + * 堆垛机任务类型 + */ public class TaskType { + /** - * 堆垛机任务类型 + * 1-二楼入出 */ - //1-二楼入出 public static final int DDJ_RWLX_1 = 1; - //2-一楼出库 + /** + * 2-一楼出库 + */ public static final int DDJ_RWLX_2 = 2; - //3-一楼入库 + /** + * 3-一楼入库 + */ public static final int DDJ_RWLX_3 = 3; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/WmsTaskTypeCode.java b/ruoyi-admin/src/main/java/com/ruoyi/common/WmsTaskTypeCode.java new file mode 100644 index 0000000..e229aed --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/WmsTaskTypeCode.java @@ -0,0 +1,18 @@ +package com.ruoyi.common; + +/** + * wms自定义的任务类型 + */ +public class WmsTaskTypeCode { + + /** + * 外部wms定义的入库类型 + */ + public static final String WMS_TASK_TYPE_STOCKIN = "1"; + + /** + * 外部wms定义的出库类型 + */ + public static final String WMS_TASK_TYPE_STOCKOUT = "2"; + +} 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 c7fc39a..49fd0ba 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 @@ -2,6 +2,8 @@ package com.ruoyi.job.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; + +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -14,6 +16,9 @@ import com.ruoyi.job.service.IMydoJobService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; +import static com.ruoyi.common.TaskStatusCode.TASK_EP_DDJ_FINISH; +import static com.ruoyi.common.TaskStatusCode.TASK_EP_SSJ_STOCKOUT_FINISH; + /** * 作业信息Controller * @@ -114,4 +119,23 @@ public class MydoJobController extends BaseController { return mydoJobService.OuthandFinish(jobIds); } + + + /** + * 处理未正常移除的【堆垛机执行完成】或【出库到位】的遗留任务 + */ + @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_DDJ_FINISH).build() + ); + if (!jobs.isEmpty()) { + for (MydoJob job : jobs) { + mydoJobService.taskFinish(Long.valueOf(job.getTaskNo())); + } + } + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/domain/JobCallBack.java b/ruoyi-admin/src/main/java/com/ruoyi/job/domain/JobCallBack.java index a0c3b5c..87e567c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/domain/JobCallBack.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/domain/JobCallBack.java @@ -1,11 +1,6 @@ package com.ruoyi.job.domain; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.ToString; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; +import lombok.*; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; @@ -19,6 +14,7 @@ import com.ruoyi.common.core.domain.BaseEntity; @AllArgsConstructor @NoArgsConstructor @ToString +@Builder public class JobCallBack extends BaseEntity { private static final long serialVersionUID = 1L; @@ -36,7 +32,7 @@ public class JobCallBack extends BaseEntity /** mydojob作业号 */ @Excel(name = "mydojob作业号") - private String mydojobId; + private String mydoJobId; /** 状态 */ @Excel(name = "状态") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/domain/MydoJob.java b/ruoyi-admin/src/main/java/com/ruoyi/job/domain/MydoJob.java index 9778f3a..ca18d28 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/domain/MydoJob.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/domain/MydoJob.java @@ -2,10 +2,7 @@ package com.ruoyi.job.domain; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.ToString; +import lombok.*; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.common.annotation.Excel; @@ -23,6 +20,7 @@ import java.util.List; @AllArgsConstructor @NoArgsConstructor @ToString +@Builder //@TableName("mydo_job_wcs") public class MydoJob extends BaseEntity { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mapper/MydoJobMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mapper/MydoJobMapper.java index eb21f1b..49b1d15 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mapper/MydoJobMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mapper/MydoJobMapper.java @@ -13,7 +13,7 @@ import org.apache.ibatis.annotations.Param; * @author ruoyi * @date 2025-09-22 */ -public interface MydoJobMapper extends BaseMapper +public interface MydoJobMapper { /** * 查询作业信息 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 2346a21..dd12ef0 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 @@ -15,7 +15,7 @@ import org.apache.ibatis.annotations.Param; * @author ruoyi * @date 2025-09-22 */ -public interface IMydoJobService extends IService +public interface IMydoJobService { /** * 查询作业信息 @@ -69,6 +69,8 @@ public interface IMydoJobService extends IService boolean ddjTaskFinish(Long rwh, Integer id); + boolean taskFinish(Long rwh); + boolean InvalidMydoJob(Long rwh, Integer id); MydoJob selectMydoJobByExitList(List exitList); 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 689ce06..c15f746 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 @@ -1,26 +1,24 @@ package com.ruoyi.job.service.impl; -import java.io.Serializable; -import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.UUID; -import com.baomidou.mybatisplus.extension.service.IService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.job.domain.JobCallBack; import com.ruoyi.job.service.IJobCallBackService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import com.ruoyi.job.mapper.MydoJobMapper; import com.ruoyi.job.domain.MydoJob; import com.ruoyi.job.service.IMydoJobService; -import javax.annotation.PostConstruct; +import static com.ruoyi.common.WmsTaskTypeCode.WMS_TASK_TYPE_STOCKIN; +import static com.ruoyi.common.WmsTaskTypeCode.WMS_TASK_TYPE_STOCKOUT; /** * 作业信息Service业务层处理 @@ -29,7 +27,7 @@ import javax.annotation.PostConstruct; * @date 2025-09-22 */ @Service -public class MydoJobServiceImpl extends ServiceImpl implements IMydoJobService +public class MydoJobServiceImpl implements IMydoJobService { @Autowired private MydoJobMapper mydoJobMapper; @@ -132,6 +130,24 @@ public class MydoJobServiceImpl extends ServiceImpl impl throw new RuntimeException(map.get("v_result").toString()); } } + + @Override + public boolean taskFinish(Long rwh) { + MydoJob task = selectMydoJobByTaskNo(rwh); + insertHistory(task.getJobId()); + deleteMydoJobByJobId(task.getJobId()); + JobCallBack jobCallBack = new JobCallBack(); + jobCallBack.setType("2"); + jobCallBack.setMydoJobId(task.getJobId()); + jobCallBack.setStatus("0"); + jobCallBack.setTaskNo(Convert.toLong(task.getTaskNo())); + jobCallBack.setCreateTime(new Date()); + jobCallBack.setTaskTypeCode(Integer.valueOf(task.getInOrOut()) < 20 ? WMS_TASK_TYPE_STOCKIN : WMS_TASK_TYPE_STOCKOUT);//todo ??? + jobCallBack.setReqCode(UUID.randomUUID().toString().replace("-", "")); + jobCallBack.setTaskCode(task.getWmsTaskNo()); + jobCallBackService.insertJobCallBack(jobCallBack); + return true; + } @Override public boolean InvalidMydoJob(Long rwh, Integer id) { @@ -198,18 +214,19 @@ public class MydoJobServiceImpl extends ServiceImpl impl long jobIdNum = Long.parseLong(mydoJob.getInOrOut()); if (jobIdNum > 20){ jobCallBack.setType("2"); + jobCallBack.setTaskTypeCode(WMS_TASK_TYPE_STOCKOUT);//todo wms下发的任务类型 }else{ jobCallBack.setType("1"); + jobCallBack.setTaskTypeCode(WMS_TASK_TYPE_STOCKIN);//todo wms下发的任务类型 } - jobCallBack.setMydojobId(mydoJob.getJobId()); + jobCallBack.setMydoJobId(mydoJob.getJobId()); jobCallBack.setStatus("0"); jobCallBack.setTaskNo(Convert.toLong(mydoJob.getTaskNo())); jobCallBack.setCreateTime(new Date()); jobCallBack.setTaskCode(mydoJob.getWmsTaskNo()); - jobCallBack.setTaskTypeCode("");//todo wms下发的任务类型 + jobCallBack.setReqCode(UUID.randomUUID().toString()); - // jobCallBack.setSpare1("0"); jobCallBackService.insertJobCallBack(jobCallBack); //移除实时任务 @@ -241,12 +258,10 @@ public class MydoJobServiceImpl extends ServiceImpl impl } else { jobCallBack.setType("1"); } - jobCallBack.setMydojobId(mydoJob.getJobId()); + jobCallBack.setMydoJobId(mydoJob.getJobId()); jobCallBack.setStatus("0"); jobCallBack.setTaskNo(Convert.toLong(taskNo)); jobCallBack.setCreateTime(new Date()); - -// jobCallBack.setSpare1("0"); jobCallBackService.insertJobCallBack(jobCallBack); mydoJobMapper.deleteMydoJobByTaskNo(taskNo); } @@ -254,6 +269,7 @@ public class MydoJobServiceImpl extends ServiceImpl impl return AjaxResult.success("操作成功"); } + @Override public List getInJobByEntranceId(String exitId) { return mydoJobMapper.getInJobByEntranceId(exitId); @@ -312,5 +328,4 @@ public class MydoJobServiceImpl extends ServiceImpl impl } - } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/mapper/DdjDeviceExecutionQueueFinishMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/mapper/DdjDeviceExecutionQueueFinishMapper.java index 98acf99..80530be 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/mapper/DdjDeviceExecutionQueueFinishMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/mapper/DdjDeviceExecutionQueueFinishMapper.java @@ -9,7 +9,7 @@ import com.ruoyi.queue.ddj.domain.DdjDeviceExecutionQueueFinish; * @author ruoyi * @date 2025-09-22 */ -public interface DdjDeviceExecutionQueueFinishMapper +public interface DdjDeviceExecutionQueueFinishMapper { /** * 查询堆垛机完成队列 @@ -19,6 +19,14 @@ public interface DdjDeviceExecutionQueueFinishMapper */ public DdjDeviceExecutionQueueFinish selectDdjDeviceExecutionQueueFinishByUuid(String uuid); + /** + * 查询堆垛机完成队列 + * + * @param taskNo 堆垛机完成队列任务号 + * @return 堆垛机完成队列 + */ + public DdjDeviceExecutionQueueFinish selectDdjDeviceExecutionQueueFinishByTaskNo(String taskNo); + /** * 查询堆垛机完成队列列表 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/mapper/DdjDeviceExecutionQueueMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/mapper/DdjDeviceExecutionQueueMapper.java index 1f6cffe..9243a2e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/mapper/DdjDeviceExecutionQueueMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/mapper/DdjDeviceExecutionQueueMapper.java @@ -20,6 +20,14 @@ public interface DdjDeviceExecutionQueueMapper */ public DdjDeviceExecutionQueue selectDdjDeviceExecutionQueueByUuid(String uuid); + /** + * 查询堆垛机执行队列 + * + * @param taskNo 堆垛机执行队列主键 + * @return 堆垛机执行队列 + */ + public DdjDeviceExecutionQueue selectDdjDeviceExecutionQueueByTaskNo(String taskNo); + /** * 查询堆垛机执行队列列表 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/service/IDdjDeviceExecutionQueueFinishService.java b/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/service/IDdjDeviceExecutionQueueFinishService.java index e50a3ad..63f40a9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/service/IDdjDeviceExecutionQueueFinishService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/service/IDdjDeviceExecutionQueueFinishService.java @@ -19,6 +19,8 @@ public interface IDdjDeviceExecutionQueueFinishService */ public DdjDeviceExecutionQueueFinish selectDdjDeviceExecutionQueueFinishByUuid(String uuid); + public DdjDeviceExecutionQueueFinish selectDdjDeviceExecutionQueueFinishByTaskNo(String taskNo); + /** * 查询堆垛机完成队列列表 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/service/IDdjDeviceExecutionQueueService.java b/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/service/IDdjDeviceExecutionQueueService.java index 667b76b..a5a1763 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/service/IDdjDeviceExecutionQueueService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/service/IDdjDeviceExecutionQueueService.java @@ -19,6 +19,14 @@ public interface IDdjDeviceExecutionQueueService */ public DdjDeviceExecutionQueue selectDdjDeviceExecutionQueueByUuid(String uuid); + /** + * 查询堆垛机执行队列 + * + * @param TaskNo 堆垛机执行队列任务号 + * @return 堆垛机执行队列 + */ + public DdjDeviceExecutionQueue selectDdjDeviceExecutionQueueByTaskNo(String TaskNo); + /** * 查询堆垛机执行队列列表 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/service/impl/DdjDeviceExecutionQueueFinishServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/service/impl/DdjDeviceExecutionQueueFinishServiceImpl.java index 7bdc6a5..e938964 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/service/impl/DdjDeviceExecutionQueueFinishServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/service/impl/DdjDeviceExecutionQueueFinishServiceImpl.java @@ -31,6 +31,10 @@ public class DdjDeviceExecutionQueueFinishServiceImpl implements IDdjDeviceExecu return ddjDeviceExecutionQueueFinishMapper.selectDdjDeviceExecutionQueueFinishByUuid(uuid); } + public DdjDeviceExecutionQueueFinish selectDdjDeviceExecutionQueueFinishByTaskNo(String taskNo){ + return ddjDeviceExecutionQueueFinishMapper.selectDdjDeviceExecutionQueueFinishByTaskNo(taskNo); + } + /** * 查询堆垛机完成队列列表 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/service/impl/DdjDeviceExecutionQueueServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/service/impl/DdjDeviceExecutionQueueServiceImpl.java index 7d71db9..2810c26 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/service/impl/DdjDeviceExecutionQueueServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/queue/ddj/service/impl/DdjDeviceExecutionQueueServiceImpl.java @@ -31,6 +31,18 @@ public class DdjDeviceExecutionQueueServiceImpl implements IDdjDeviceExecutionQu return ddjDeviceExecutionQueueMapper.selectDdjDeviceExecutionQueueByUuid(uuid); } + /** + * 查询堆垛机执行队列 + * + * @param taskNo 堆垛机执行队列主键 + * @return 堆垛机执行队列 + */ + @Override + public DdjDeviceExecutionQueue selectDdjDeviceExecutionQueueByTaskNo(String taskNo) + { + return ddjDeviceExecutionQueueMapper.selectDdjDeviceExecutionQueueByTaskNo(taskNo); + } + /** * 查询堆垛机执行队列列表 * diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/DdjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/DdjThread.java index 7be77f1..7767deb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/DdjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/DdjThread.java @@ -31,7 +31,7 @@ import java.util.HashMap; import java.util.List; import static com.ruoyi.common.TaskExceptionType.TASK_EXCEPTION_STOCKIN_OCCUPIED; -import static com.ruoyi.common.TaskExceptionType.TASK_EXCEPTION_STOCKOUT_EMPTY; +import static com.ruoyi.common.TaskStatusCode.TASK_EP_DDJ_FINISH; @Slf4j @@ -114,9 +114,12 @@ public class DdjThread implements Runnable { //满足上述条件,表示该任务已完成-执行任务回传 if (mydoJob != null && ddjDeviceExecutionQueue != null) { - //回传完成信号 + //标记为堆垛机执行完成 + mydoJob.setExecutionPhase(TASK_EP_DDJ_FINISH); + mydoJobService.updateMydoJob(mydoJob); + //回传完成信号 - 方法在存储过程【proc_mydojob_finish】中 ddjTaskFinish(rwh, ddj.getId()); - log.info("堆垛机:"+ddj.getId()+"任务完成,任务号:"+ddj.getRwh()); + log.info("【堆垛机入库】堆垛机:"+ddj.getId()+"任务完成,任务号:"+ddj.getRwh()); } } @@ -171,7 +174,7 @@ public class DdjThread implements Runnable { MydoJob wmsJob = new MydoJob(); wmsJob.setInOrOut(mydoJobReAssign.getTaskCode()); if (mydoJobService.selectMydoJobList(wmsJob).size() == 0) { - log.warn("该任务不存在,任务号:{}", mydoJobReAssign.getTaskCode()); + log.warn("【响应异常】该任务不存在,任务号:{}", mydoJobReAssign.getTaskCode()); return; } @@ -257,9 +260,9 @@ public class DdjThread implements Runnable { ddjDeviceExecutionQueueService.updateDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); mydoJob.setFaultFlag("0"); mydoJobService.updateMydoJob(mydoJob); - log.info("堆垛机放货目标有货,重分货位下发任务成功 rwh:{}", rwh); + log.info("【入库异常】堆垛机放货目标有货,重分货位下发任务成功 rwh:{}", rwh); } else { - log.error("堆垛机放货目标有货,重分货位下发任务失败!!!!!!!"); + log.error("【出库异常】堆垛机放货目标有货,重分货位下发任务失败!!!!!!!"); } } } @@ -275,7 +278,7 @@ public class DdjThread implements Runnable { ddjDeviceExecutionQueueRunningParam.setDevId(ddj.getId()); List ddjDeviceExecutionRunningQueues = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueList(ddjDeviceExecutionQueueRunningParam); if (CollUtil.isNotEmpty(ddjDeviceExecutionRunningQueues)) { - log.error("堆垛机有正在执行的任务 {}" , ddjDeviceExecutionRunningQueues.get(0).getRwh()); + log.error("【提示】堆垛机有正在执行的任务 {}" , ddjDeviceExecutionRunningQueues.get(0).getRwh()); return; } @@ -294,9 +297,9 @@ public class DdjThread implements Runnable { ddjDeviceExecutionQueue.setXfsj(DateUtil.formatDateTime(DateUtil.date())); ddjDeviceExecutionQueue.setDdjxf("1"); ddjDeviceExecutionQueueService.updateDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); - log.info("堆垛机下发任务成功 rwh:{}", ddjDeviceExecutionQueue.getRwh()); + log.info("【执行成功】堆垛机下发任务成功 rwh:{}", ddjDeviceExecutionQueue.getRwh()); } else { - log.error("堆垛机下发任务失败!!!!!!!"); + log.error("【执行异常】堆垛机下发任务失败!!!!!!!"); } } } @@ -339,9 +342,9 @@ public class DdjThread implements Runnable { int mbch = Convert.toInt(queue.getMbch()); int mlfs = 5; int xfwc = 1; - int hwlx = Convert.toInt(queue.getSpare1()); - int jym = Tools.getJYM(taskNo, yph, ylh, ych, mbph, mblh, mbch, mlfs, hwlx); - byte[] sendData = Tools.sendDataToDevice(taskNo, null, yph, ylh, ych, mbph, mblh, mbch, mlfs, hwlx, xfwc, jym); + int rwlx = Convert.toInt(queue.getSpare1()); + int jym = Tools.getJYM(taskNo, yph, ylh, ych, mbph, mblh, mbch, mlfs, rwlx); + byte[] sendData = Tools.sendDataToDevice(taskNo, null, yph, ylh, ych, mbph, mblh, mbch, mlfs, rwlx, xfwc, jym); if (devId==1){ return PlcDdj1Read.WriteToDDJ("DB61.0", sendData); }else { 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 667fea4..c384465 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 @@ -3,7 +3,6 @@ package com.ruoyi.schedule.scheduleTask.ssj; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.UUID; -import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; import com.ruoyi.api.domain.wcs2wms.stockin.StockinReceive; import com.ruoyi.api.service.IApiService; @@ -17,20 +16,23 @@ import com.ruoyi.job.domain.JobCallBack; import com.ruoyi.job.domain.MydoJob; import com.ruoyi.job.service.IJobCallBackService; import com.ruoyi.job.service.IMydoJobService; -import com.ruoyi.queue.agv.domain.AgvQueue; -import com.ruoyi.queue.agv.service.IAgvQueueService; import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; +import java.io.IOException; +import java.io.InputStream; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import static com.ruoyi.common.TaskStatusCode.*; +import static com.ruoyi.common.WmsTaskTypeCode.WMS_TASK_TYPE_STOCKIN; +import static com.ruoyi.common.WmsTaskTypeCode.WMS_TASK_TYPE_STOCKOUT; import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.writeToSsj; -import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.writeToSsjQH; /** * 出入口输送线线程 @@ -137,6 +139,7 @@ public class PortConvThread implements Runnable { } + /** * 请求wms获取wcs任务参数 * @param inSsjDevice @@ -152,12 +155,12 @@ public class PortConvThread implements Runnable { //请求参数 HashMap paramMap = new HashMap<>(); - paramMap.put("taskTypeCode", "inBound");//任务类型编号 + paramMap.put("taskTypeCode", WMS_TASK_TYPE_STOCKIN);//todo wms自定义的任务类型编号 paramMap.put("reqCode", UUID.randomUUID().toString());//请求码 paramMap.put("cntCode", inSsjDevice.getTrayCode());//容器编号 String height = inSsjDevice.getHeight(); - String weight = inSsjDevice.getWeight(); - paramMap.put("weight", weight);//重量 +// String weight = inSsjDevice.getWeight();//todo 需要直读重量或从plc读值? + paramMap.put("weight", getWeight(MOXA_IP, MOXA_PORT, SO_TIMEOUT_MS));//重量 paramMap.put("altimetry", height);//高度 String errorMessage = ""; @@ -221,14 +224,14 @@ public class PortConvThread implements Runnable { mydoJob.setWmsTaskNo(result.getTaskCode()); mydoJob.setJobId(mydoJobService.getJobId("RK")); mydoJob.setTaskNo(mydoJobService.getTaskNo("1")); - // mydoJob.setTaskNo(result.getTaskCode());//todo 确定是否用获取的任务号作为wcs的任务号 + // mydoJob.setTaskNo(result.getTaskCode());//需要确定是否用获取的任务号作为wcs的任务号 //校验:wms分配的货位(排列层)是否合法 if (result.getSiteCode() == null || result.getSiteCode().isEmpty()) { log.info("【请求参数异常】分配货位:null,无法生成作业,托盘条码:{}",inSsjDevice.getTrayCode()); return; }else { - mydoJob.setRoadwayId(basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId()).getRoadwayId()); +// mydoJob.setRoadwayId(basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId()).getRoadwayId()); } mydoJob.setStatus("1"); @@ -291,30 +294,87 @@ public class PortConvThread implements Runnable { * @param inSsjDevice */ private void finishStockoutMydoJob(DeviceSsj inSsjDevice){ -//出库到位 + //出库到位 if (inSsjDevice.getDw() == 1 && inSsjDevice.getTaskNo() > 0) { //查询该出库任务 MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(inSsjDevice.getTaskNo())); if (mydoJob != null && Integer.parseInt(mydoJob.getInOrOut()) > 20) { log.info("【出库到位】设备:{},位置:{},任务号:{},出库到位", "输送线:", inSsjDevice.getDeviceCode(), mydoJob.getTaskNo()); - mydoJobService.insertHistory(mydoJob.getJobId()); - mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId()); - JobCallBack jobCallBack = new JobCallBack(); - jobCallBack.setType("2"); - jobCallBack.setMydojobId(mydoJob.getJobId()); - jobCallBack.setStatus("0"); - jobCallBack.setTaskNo(Convert.toLong(mydoJob.getTaskNo())); - jobCallBack.setCreateTime(new Date()); - jobCallBack.setTaskTypeCode("");//todo ??? - jobCallBack.setReqCode(UUID.randomUUID().toString().replace("-", "")); - jobCallBack.setTaskCode(mydoJob.getWmsTaskNo()); -// jobCallBack.setSpare1("0"); - jobCallBackService.insertJobCallBack(jobCallBack); + mydoJob.setExecutionPhase(TASK_EP_SSJ_STOCKOUT_FINISH); + mydoJobService.updateMydoJob(mydoJob); + mydoJobService.taskFinish(Long.valueOf(mydoJob.getTaskNo())); } } } + // ====== 【请按实际修改】====== + private static final String MOXA_IP = "192.168.1.200"; // NPort 5110 的 IP + private static final int MOXA_PORT = 4001; // NPort 配置的 Local Port + private static final int RECONNECT_DELAY_SEC = 3; // 断线后重试间隔(秒) + private static final int SO_TIMEOUT_MS = 5000; // Socket 读超时(防卡死) + private static final Pattern WEIGHT_PATTERN = Pattern.compile( + "[+-]?\\d+\\.\\d{1,3}(?=[\\s\\r\\n]|kg|g|lb|$)"); // 匹配如 +12.34、-5.678、345.0kg + + + /** + * 从 MOXA NPort 5110(TCP Server 模式)读取单次称重值 + * + * @param moxaIp MOXA 设备 IP(如 "192.168.1.200") + * @param moxaPort MOXA 配置的 TCP 端口(如 4001) + * @param timeout 最大等待时间(单位:毫秒),建议 2000~5000 + * @return 重量(kg),成功时为非 NaN 的 Double;失败(超时/断连/解析失败)返回 null + */ + public static Double getWeight(String moxaIp, int moxaPort, long timeout) { + Socket socket = null; + try { + // 1️⃣ - 建立连接(带连接超时) + socket = new Socket(); + socket.connect(new InetSocketAddress(moxaIp, moxaPort), 3000); // 连接超时 3s + socket.setSoTimeout((int) Math.min(timeout, Integer.MAX_VALUE)); // 读超时 + + // 2 - 发送请求指令(可选:仅当秤需指令才启用) + // OutputStream out = socket.getOutputStream(); + // out.write("\r\n".getBytes(StandardCharsets.US_ASCII)); // 或 "\r", "W\r\n" + // out.flush(); + + // 3 - 读响应(使用 BufferedInputStream + 手动读字节,更健壮于无换行场景) + InputStream in = socket.getInputStream(); + byte[] buffer = new byte[128]; + int len = in.read(buffer); + if (len <= 0) return null; + + String response = new String(buffer, 0, len, StandardCharsets.US_ASCII).trim(); + if (response.isEmpty()) return null; + + // 4 - 解析重量(兼容常见格式:+12.34、-5.678、00012.34kg、123.45\r\n) + Pattern p = Pattern.compile("[+-]?\\d*\\.?\\d+(?=[\\s\\r\\n]|kg|g|lb|$)"); + java.util.regex.Matcher m = p.matcher(response); + if (m.find()) { + try { + double w = Double.parseDouble(m.group()); + // 过滤明显异常值(可选) + if (Double.isFinite(w) && Math.abs(w) < 1e6) { + return w; + } + } catch (NumberFormatException ignored) {} + } + + return null; + + } catch (IOException e) { + return null; // 连接失败、读超时、解析异常等均返回 null + } finally { + if (socket != null && !socket.isClosed()) { + try { socket.close(); } catch (IOException ignored) {} + } + } + } + + + + + public void inDispatch1(DeviceSsj ssjDevice) { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/RoadConvThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/RoadConvThread.java index 2cf4e0f..5733061 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/RoadConvThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/RoadConvThread.java @@ -23,7 +23,7 @@ import lombok.extern.slf4j.Slf4j; import java.util.*; import static com.ruoyi.common.TaskStatusCode.*; -import static com.ruoyi.common.TaskType.DDJ_RWLX_1; +import static com.ruoyi.common.TaskType.*; /** * 巷道口输送机(堆垛机取放位)线程 检测当前巷道有没有入库作业,没有作业,生成堆垛机出库队列 @@ -106,30 +106,29 @@ public class RoadConvThread implements Runnable { */ private void sendStackerIn(DeviceSsj roadSsjDevice){ //模拟数据 - roadSsjDevice.setDw(1); - roadSsjDevice.setTaskNo(85012); +// roadSsjDevice.setDw(1); +// roadSsjDevice.setTaskNo(85012); + //---------------------------入库任务--------------------------- //巷道口输送机到位,且任务号大于1000 if (roadSsjDevice.getDw()==1 && roadSsjDevice.getTaskNo()>1000) { - //查找当前执行的入库任务 + //根据输送机【任务号】查找当前执行的入库任务 MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(roadSsjDevice.getTaskNo())); if(ObjUtil.isNotNull(mydoJob)){ - //更新任务阶段: 入口输送机 → 巷道口入库到位 + //如果任务存在 - 表示该任务已经巷道口输送到位 + //更新任务阶段【巷道口入库到位】 if(mydoJob.getExecutionPhase().equals(TASK_EP_SSJ)){ mydoJob.setExecutionPhase(TASK_EP_ROADWAY_SSJ); mydoJobService.updateMydoJob(mydoJob); } - // 检查任务属性:【任务已存在】、执行阶段-【巷道口输送机到位】、任务类型-【入库】 - // 下发堆垛机执行队列 - if (ObjUtil.isNotNull(mydoJob) - && mydoJob.getExecutionPhase().equals(TASK_EP_ROADWAY_SSJ) - && Convert.toInt(mydoJob.getInOrOut()) < 20) { + // 检查任务属性:【任务已存在】、执行阶段-【巷道口输送机到位】、任务类型-【入库】 → 下发堆垛机执行队列 + if (mydoJob.getExecutionPhase().equals(TASK_EP_ROADWAY_SSJ) && Convert.toInt(mydoJob.getInOrOut()) < 20) { - //检查堆垛机是否在正在执行中 - List ddjDeviceExecutionQueues = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueListByRwlx(DDJ_RWLX_1, Convert.toInt(mydoJob.getRoadwayId())); + //检查堆垛机是否在正在执行中/已经有执行队列 + List ddjDeviceExecutionQueues = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueListByRwlx(DDJ_RWLX_3, Convert.toInt(mydoJob.getRoadwayId())); BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId()); List pclList = roadwayMap.get(roadSsjDevice.getDeviceCode()); @@ -149,9 +148,9 @@ public class RoadConvThread implements Runnable { ddjDeviceExecutionQueue.setMbch(Convert.toInt(basCargoSpace.getTheFloor())); ddjDeviceExecutionQueue.setDdjxf("0"); ddjDeviceExecutionQueue.setMlfs(5); - ddjDeviceExecutionQueue.setSpare1(mydoJob.getTraySize()); +// ddjDeviceExecutionQueue.setSpare1(mydoJob.getTraySize()); ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date())); - ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_1); + ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_3); ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); //下发后更新任务阶段 @@ -188,7 +187,7 @@ public class RoadConvThread implements Runnable { log.error("【任务异常】货位不存在 cargoSpaceId{}", mydoJob.getCargoSpaceId()); } else { //生成队列 - List list = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueListByRwlx(DDJ_RWLX_1, Convert.toInt(mydoJob.getRoadwayId())); + List list = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueListByRwlx(DDJ_RWLX_2, Convert.toInt(mydoJob.getRoadwayId())); List pclList = roadwayMap.get(roadSsjDevice.getDeviceCode()); if (CollUtil.isEmpty(list) && CollUtil.isNotEmpty(pclList)) { DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue(); @@ -207,7 +206,7 @@ public class RoadConvThread implements Runnable { ddjDeviceExecutionQueue.setMlfs(5); ddjDeviceExecutionQueue.setSpare1(mydoJob.getTraySize()); ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date())); - ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_1); + ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_2); ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); //修改作业状态 diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index dd6d7c6..22b4d14 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -41,7 +41,7 @@ logging: user: password: # 密码最大错误次数 - maxRetryCount: 5 + maxRetryCount: 10 # 密码锁定时间(默认10分钟) lockTime: 10 @@ -107,6 +107,18 @@ mybatis: # 加载全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml +#MybatisPlus +#mybatis-plus: +# # Mapper XML 扫描路径(若你用了 XML) +# mapper-locations: classpath*:mapper/**/*Mapper.xml +# # 实体类别名包(让 XML 中能用 User 而非全限定名) +# type-aliases-package: com.ruoyi.**.domain +# configuration: +# map-underscore-to-camel-case: true +# cache-enabled: false +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl +# interceptor: com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor + # PageHelper分页插件 pagehelper: helperDialect: sqlserver @@ -128,3 +140,4 @@ xss: excludes: /system/notice # 匹配链接 urlPatterns: /system/*,/monitor/*,/tool/* + diff --git a/ruoyi-admin/src/main/resources/mapper/job/JobCallBackMapper.xml b/ruoyi-admin/src/main/resources/mapper/job/JobCallBackMapper.xml index 72da884..04e93bb 100644 --- a/ruoyi-admin/src/main/resources/mapper/job/JobCallBackMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/job/JobCallBackMapper.xml @@ -8,7 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + @@ -17,7 +17,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, type, task_no, mydojob_id, status, create_time,req_code,task_type_code,task_code from job_call_back + select id, type, task_no, mydoJob_Id, status, create_time,req_code,task_type_code,task_code from job_call_back - select top(1) id, type, task_no, mydojob_id, status, create_time,req_code,task_type_code,task_code from job_call_back + select top(1) id, type, task_no, mydoJob_Id, status, create_time,req_code,task_type_code,task_code from job_call_back where status = '0' and spare1 in ('0','1','2') order by create_time asc diff --git a/ruoyi-admin/src/main/resources/mapper/queue/DdjDeviceExecutionQueueFinishMapper.xml b/ruoyi-admin/src/main/resources/mapper/queue/DdjDeviceExecutionQueueFinishMapper.xml index 97f49a9..f9e089f 100644 --- a/ruoyi-admin/src/main/resources/mapper/queue/DdjDeviceExecutionQueueFinishMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/queue/DdjDeviceExecutionQueueFinishMapper.xml @@ -61,6 +61,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where uuid = #{uuid} + + insert into ddj_device_execution_queue_finish diff --git a/ruoyi-admin/src/main/resources/mapper/queue/DdjDeviceExecutionQueueMapper.xml b/ruoyi-admin/src/main/resources/mapper/queue/DdjDeviceExecutionQueueMapper.xml index 8557a0c..b004532 100644 --- a/ruoyi-admin/src/main/resources/mapper/queue/DdjDeviceExecutionQueueMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/queue/DdjDeviceExecutionQueueMapper.xml @@ -61,6 +61,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where uuid = #{uuid} + + +