diff --git a/pom.xml b/pom.xml
index 589d24f..950dfb5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,7 +37,7 @@
5.3.39
5.8.27
1.18.30
- 3.7.0
+ 2.0.0
3.5.2
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/MyStartupRunner.java b/ruoyi-admin/src/main/java/com/ruoyi/MyStartupRunner.java
new file mode 100644
index 0000000..6ecbdd8
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/MyStartupRunner.java
@@ -0,0 +1,21 @@
+package com.ruoyi;
+
+import com.ruoyi.schedule.ScheduleThread;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+@Component
+public class MyStartupRunner implements CommandLineRunner {
+
+ @Autowired
+ private ScheduleThread scheduleThread;
+
+ @Override
+ public void run(String... args) throws Exception {
+ // 这里编写项目启动后要执行的方法逻辑
+ //System.out.println("项目启动成功后自动执行此方法");
+// scheduleThread.startAllThread();
+// scheduleThread.startAllThread2();
+ }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
index e95a574..5bcd40a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
@@ -1,5 +1,6 @@
package com.ruoyi;
+import com.ruoyi.schedule.ScheduleThread;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -7,6 +8,8 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
+import javax.annotation.Resource;
+
/**
* 启动程序
*
@@ -17,6 +20,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@EnableAsync
public class RuoYiApplication
{
+
public static void main(String[] args)
{
// System.setProperty("spring.devtools.restart.enabled", "false");
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/AgvController.java b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/AgvController.java
index 5c8f84c..6590360 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/AgvController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/AgvController.java
@@ -1,30 +1,43 @@
package com.ruoyi.api.controller;
+import cn.hutool.json.JSONObject;
+import com.mchange.v2.lang.ObjectUtils;
import com.ruoyi.api.domain.agv.agvCallback.AgvCallbackRequest;
import com.ruoyi.api.domain.agv.agvCallback.AgvCallbackResponse;
import com.ruoyi.api.service.IApiService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.queue.agv.service.impl.AgvQueueServiceImpl;
+import com.ruoyi.system.domain.AgvContainerTask;
+import com.ruoyi.system.mapper.AgvContainerTaskMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.*;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
/**
* Agv操作请求
*/
@RestController
-@RequestMapping("/agv/api")
+@RequestMapping("/api/agv")
@Slf4j
public class AgvController extends BaseController {
@Autowired
private IApiService apiService;
+ @Autowired
+ private AgvQueueServiceImpl agvQueueService;
+ @Autowired
+ private AgvContainerTaskMapper agvContainerTaskMapper;
/**
* agv执行状态返回接口
+ *
* @param request
* @return
*/
@@ -34,15 +47,14 @@ public class AgvController extends BaseController {
}
-
/**
* agv搬运作业
- * @param param{
- * startPoint:起始点
- * endPoint:结束点
- * containerCode:容器编号
- * taskNo:任务号
- * }
+ *
+ * @param param{ startPoint:起始点
+ * endPoint:结束点
+ * containerCode:容器编号
+ * taskNo:任务号
+ * }
* @return
*/
@PostMapping("/receiveAgvMoveJob")
@@ -50,4 +62,98 @@ public class AgvController extends BaseController {
return apiService.receiveAgvMoveJob(param);
}
+
+ /**
+ * 获取AGV任务定时器
+ */
+
+ @Scheduled(fixedDelay = 5000)
+ public void queryAgvMoveJob() {
+ apiService.sendContarTask();
+ }
+
+ @Scheduled(fixedDelay = 5000)
+ public void finishAgvMoveJob() {
+ AgvContainerTask agvContainerTask= agvContainerTaskMapper.selectAgvContainerFinishOne();
+ if (agvContainerTask!=null){
+ apiService.finishAgvJob(agvContainerTask.getContainer());
+ }
+
+ }
+
+
+ /**任务下发
+ *
+ */
+ @Scheduled(fixedDelay = 1000)
+ public void sendAgvMoveJob() {
+ AgvContainerTask agvContainerTask = new AgvContainerTask();
+ agvContainerTask.setStatus("0");
+ List agvContainerTasks = agvContainerTaskMapper.selectAgvContainerTaskList(agvContainerTask);
+ if (agvContainerTasks.size() > 0) {
+ AgvContainerTask agvContainerTask1 = agvContainerTasks.get(0);
+ Map param = new HashMap<>();
+ param.put("FromStation", agvContainerTask1.getStartPoint());
+ param.put("ToStation", agvContainerTask1.getEndPoint());
+ param.put("Type", agvContainerTask1.getSpare1());
+ param.put("OrderId", agvContainerTask1.getContainer());
+// param.put("TaskGuideId", agvContainerTask1.getTaskNo());
+ AjaxResult ajaxResult = apiService.sendAgvCar(param);
+ Integer code = (Integer) ajaxResult.get("code");
+ if (200 == code) {
+ agvContainerTask1.setStatus("1");
+ agvContainerTaskMapper.updateAgvContainerTask(agvContainerTask1);
+ }
+ }
+ }
+
+
+ /***
+ * 请求取货放货接口
+ * @param jsonObject
+ * @return
+ */
+ @RequestMapping("/checkAllow")
+ public AjaxResult checkAllow(@RequestBody JSONObject jsonObject) {
+ // 取放货站点
+ String requestStation = String.valueOf(jsonObject.get("requestStation"));
+ // 表内主键
+ String orderId = String.valueOf(jsonObject.get("orderId"));
+ String Type = String.valueOf(jsonObject.get("type"));
+
+ HashMap map = new HashMap<>();
+ map.put("v_position", requestStation);
+ map.put("v_orderId", orderId);
+ map.put("v_type", Type);
+ agvQueueService.selectKx(map);
+ Integer vResult = (Integer) map.get("v_result");
+ if (vResult == 1) {
+ return new AjaxResult(1, Type.equals("1") ? "允许取货" : "允许放货");
+ } else {
+ return new AjaxResult(0, Type.equals("1") ? "不允许取货,请等待" : "不允许放货,请等待");
+ }
+ }
+
+
+ /**
+ * 取货放货完成返回接口
+ *
+ * @param jsonObject
+ * @return
+ */
+ @RequestMapping("/completionSignal")
+ public AjaxResult completionSignal(@RequestBody JSONObject jsonObject) {
+
+ String orderId = String.valueOf(jsonObject.get("orderId"));
+ String Type = String.valueOf(jsonObject.get("type"));
+
+
+ agvContainerTaskMapper.updateAgvContainerTaskByOrder(orderId);
+// agvContainerTaskMapper.insertAgvContainerTaskFinish(orderId);
+// agvContainerTaskMapper.deleteAgvContainerTaskByContainer(orderId);
+
+ return new AjaxResult(1, "返回成功");
+ }
+
+
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/Wcs2WmsController.java b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/Wcs2WmsController.java
index e7c86d0..c5871cb 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/Wcs2WmsController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/Wcs2WmsController.java
@@ -1,10 +1,12 @@
package com.ruoyi.api.controller;
+import cn.hutool.json.JSONObject;
import com.ruoyi.api.domain.wcs2wms.JobParam;
import com.ruoyi.api.domain.wcs2wms.ReceiveJob;
import com.ruoyi.api.service.IApiService;
import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -53,4 +55,5 @@ public class Wcs2WmsController {
+
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/wcs2wms/ReceiveJob.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/wcs2wms/ReceiveJob.java
index a8d968a..879b0a2 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/wcs2wms/ReceiveJob.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/wcs2wms/ReceiveJob.java
@@ -10,11 +10,14 @@ import lombok.NoArgsConstructor;
public class ReceiveJob {
private String taskNo;
private String cargoSpaceId;
+ private String targetCargoSpaceId;
private String exitId;
private String trayCode;
private String entranceId;
private String inOrOut;
private String jobId;
private String roadwayId;
+ private String classId;
+ private Long priority;
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java
index 6f13e91..109b5c5 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java
@@ -121,6 +121,10 @@ public interface IApiService
*/
public AjaxResult createInMydoJob(Map param);
+ public AjaxResult sendCargoSpace(Map param);
+
+
+
public AjaxResult selectMydoJobByNoTrayCode(Map param);
AjaxResult receiveOutMydoJob(ReceiveJob receiveOutJob);
@@ -132,4 +136,18 @@ public interface IApiService
AjaxResult allotSpace(JobParam jobParam);
AjaxResult JobFinish(Map param);
+
+ AjaxResult OutMakeSure(HashMap map);
+
+ void updateLed(HashMap objectObjectHashMap);
+
+ void updateLedError(HashMap objectObjectHashMap);
+
+ void sendContarTask();
+
+ AjaxResult sendAgvCar(Map param);
+
+ AjaxResult insertAgvQuene(HashMap objectObjectHashMap);
+
+ void finishAgvJob(String container);
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IRequestLogService.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IRequestLogService.java
index 25062d0..49d4047 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IRequestLogService.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IRequestLogService.java
@@ -75,4 +75,6 @@ public interface IRequestLogService
* @return
*/
public RequestLog getRequestLog(String url, String param);
+
+ public RequestLog getRequestLogs(String url, String param, String endPoint);
}
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 87e90ea..6e76e54 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
@@ -24,6 +24,8 @@ import com.ruoyi.job.domain.MydoJob;
import com.ruoyi.job.service.IMydoJobService;
import com.ruoyi.queue.agv.domain.AgvQueue;
import com.ruoyi.queue.agv.service.IAgvQueueService;
+import com.ruoyi.system.domain.AgvContainerTask;
+import com.ruoyi.system.service.IAgvContainerTaskService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -51,7 +53,8 @@ public class ApiServiceImpl implements IApiService {
private IAgvQueueService agvQueueService;
@Autowired
private IMydoJobService mydoJobService;
-
+ @Autowired
+ private IAgvContainerTaskService agvContainerTaskService;
/**
@@ -138,10 +141,6 @@ public class ApiServiceImpl implements IApiService {
}
-
-
-
-
/**
* 处理agv状态返回
*
@@ -196,26 +195,24 @@ public class ApiServiceImpl implements IApiService {
public AjaxResult cancelMydoJob(JobParam jobParam) {
MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(jobParam.getTaskNo()));
- if(mydoJob==null){
+ if (mydoJob == null) {
return AjaxResult.error("任务不存在");
}
- if("1".equals(mydoJob.getStatus())){
+ if ("1".equals(mydoJob.getStatus())) {
mydoJob.setStatus("5");
mydoJobService.insertHistory(mydoJob.getJobId());
mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId());
return AjaxResult.success();
- }else{
+ } else {
return AjaxResult.error("任务已开始");
}
}
-
-
@Override
public AjaxResult reAssign(JobParam jobParam) {
RequestLog requestLog = requestLogService.getRequestLog(RE_ASSIGN_URL, "重新分配货位", JSONUtil.toJsonStr(jobParam));
- if ("1".equals(requestLog.getIsSuccessful())){
+ if ("1".equals(requestLog.getIsSuccessful())) {
InterfaceReceive bean = JSONUtil.toBean(requestLog.getResponseBody(), InterfaceReceive.class);
MydoJob wmsMydoJob = BeanUtil.toBean(bean.getData(), MydoJob.class);
MydoJob mydoJob = mydoJobService.selectMydoJobByJobId(wmsMydoJob.getJobId());
@@ -229,7 +226,7 @@ public class ApiServiceImpl implements IApiService {
@Override
public AjaxResult reMaterial(JobParam jobParam) {
RequestLog requestLog = requestLogService.getRequestLog(RE_MATERIAL_URL, "重新分配物料", JSONUtil.toJsonStr(jobParam));
- if ("1".equals(requestLog.getIsSuccessful())){
+ if ("1".equals(requestLog.getIsSuccessful())) {
return AjaxResult.success();
}
return AjaxResult.error();
@@ -347,12 +344,26 @@ public class ApiServiceImpl implements IApiService {
}
+ @Override
+ public AjaxResult sendCargoSpace(Map param) {
+ // 访问请求路径,生成入库作业 ,如果生成返回信息
+ RequestLog requestLog = requestLogService.getRequestLog(SEND_CARGOSPACE, "请求分配货位", JSONUtil.toJsonStr(param));
+ if ("1".equals(requestLog.getIsSuccessful())) {
+ InterfaceReceive bean = JSONUtil.toBean(requestLog.getResponseBody(), InterfaceReceive.class);
+ return AjaxResult.success(bean.getData());
+ } else {
+ return AjaxResult.error();
+ }
+ }
+
+
@Override
public AjaxResult receiveOutMydoJob(ReceiveJob receiveOutJob) {
MydoJob mydoJob = new MydoJob();
mydoJob.setJobId(receiveOutJob.getJobId());
mydoJob.setTaskNo(receiveOutJob.getTaskNo());
mydoJob.setCargoSpaceId(receiveOutJob.getCargoSpaceId());
+ mydoJob.setTargetCargoSpaceId(receiveOutJob.getTargetCargoSpaceId());
mydoJob.setExitId(receiveOutJob.getExitId());
mydoJob.setInOrOut(receiveOutJob.getInOrOut());
mydoJob.setStatus("1");
@@ -360,10 +371,12 @@ public class ApiServiceImpl implements IApiService {
mydoJob.setRoadwayId(receiveOutJob.getRoadwayId());
mydoJob.setCreateTime(DateUtils.getNowDate());
mydoJob.setExecutionPhase("0");
+ mydoJob.setTheFloor(receiveOutJob.getClassId());
+ mydoJob.setPriority(receiveOutJob.getPriority());
int i = mydoJobService.insertMydoJob(mydoJob);
if (i > 0) {
return AjaxResult.success();
- }else{
+ } else {
return AjaxResult.error();
}
@@ -385,7 +398,7 @@ public class ApiServiceImpl implements IApiService {
int i = mydoJobService.insertMydoJob(mydoJob);
if (i > 0) {
return AjaxResult.success();
- }else{
+ } else {
return AjaxResult.error();
}
}
@@ -430,4 +443,74 @@ public class ApiServiceImpl implements IApiService {
}
+
+ @Override
+ public AjaxResult OutMakeSure(HashMap map) {
+ RequestLog requestLog = requestLogService.getRequestLog(OUT_MAKE_SURE, "线边直出请求过账", JSONUtil.toJsonStr(map));
+ if ("1".equals(requestLog.getIsSuccessful())) {
+ InterfaceReceive bean = JSONUtil.toBean(requestLog.getResponseBody(), InterfaceReceive.class);
+ return AjaxResult.success(bean.getData());
+ } else {
+ return AjaxResult.error();
+ }
+ }
+
+ @Override
+ public void updateLed(HashMap map) {
+ RequestLog requestLog = requestLogService.getRequestLog(UPDATE_LED, "出库到位更新LED", JSONUtil.toJsonStr(map));
+
+
+ }
+
+ @Override
+ public void updateLedError(HashMap map) {
+ RequestLog requestLog = requestLogService.getRequestLog(UPDATE_LED_ERROR, "更新线体报错信息", JSONUtil.toJsonStr(map));
+
+
+ }
+
+ @Override
+ public void sendContarTask() {
+ RequestLog requestLog = requestLogService.getRequestLog(QUERY_AGV_QUENE, "请求获取AGV执行队列", JSONUtil.toJsonStr(""));
+ if ("1".equals(requestLog.getIsSuccessful())) {
+ InterfaceReceive bean = JSONUtil.toBean(requestLog.getResponseBody(), InterfaceReceive.class);
+ AgvContainerTask bean1 = BeanUtil.toBean(bean.getData(), AgvContainerTask.class);
+ bean1.setStatus("0");
+ agvContainerTaskService.insertAgvContainerTask(bean1);
+ }
+ }
+
+ @Override
+ public AjaxResult sendAgvCar(Map param) {
+ RequestLog requestLog = requestLogService.getRequestLogs(SEND_AGV_CAR, "下发AGV执行对列", JSONUtil.toJsonStr(param));
+ if ("1".equals(requestLog.getIsSuccessful())) {
+ return AjaxResult.success();
+ }
+ {
+ return AjaxResult.error();
+ }
+ }
+
+ @Override
+ public AjaxResult insertAgvQuene(HashMap param) {
+ RequestLog requestLog = requestLogService.getRequestLog(INSERT_AGV_QUENE, "请求自动生成AGV执行队列", JSONUtil.toJsonStr(param));
+ if ("1".equals(requestLog.getIsSuccessful())) {
+ return AjaxResult.success();
+ }
+ {
+ return AjaxResult.error();
+ }
+ }
+
+ @Override
+ public void finishAgvJob(String container) {
+ HashMap