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
+
+
+ where rwh = #{taskNo}
+
+
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}
+
+
+
+ where rwh = #{taskNo}
+
+
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index fb10ebb..2a66c43 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -129,6 +129,12 @@
org.projectlombok
lombok
+
+ com.baomidou
+ mybatis-plus-annotation
+ 3.5.14
+ compile
+
diff --git a/ruoyi-ui/src/views/job/jobCallBack/index.vue b/ruoyi-ui/src/views/job/jobCallBack/index.vue
index a727027..26e66cd 100644
--- a/ruoyi-ui/src/views/job/jobCallBack/index.vue
+++ b/ruoyi-ui/src/views/job/jobCallBack/index.vue
@@ -88,7 +88,7 @@
-
+
@@ -139,7 +139,7 @@
-
+