料架搬运任务处理

This commit is contained in:
liuhanqing
2025-08-08 15:09:41 +08:00
parent 766eb3be1f
commit 390c17c9e8
12 changed files with 783 additions and 112 deletions

View File

@@ -1,20 +1,20 @@
package com.ruoyi.api.controller;
import cn.hutool.json.JSONUtil;
import com.ruoyi.api.domain.RequestEnter;
import com.ruoyi.api.domain.WmsJobRequest;
import com.ruoyi.api.service.IToWmsService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.job.mydojob.domain.MydoJob;
import com.ruoyi.job.mydojob.service.IMydoJobService;
import com.ruoyi.log.domain.RequestLog;
import com.ruoyi.log.service.IRequestLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* 作业统计 Controller
@@ -32,9 +32,9 @@ public class ToWmsApiController {
* 入库任务请求
*/
@PostMapping("/requestEnterByTrayCode")
public AjaxResult requestEnterByTrayCode(@RequestBody MydoJob mydoJob) {
AjaxResult ajaxResult = toWmsService.requestEnterByTrayCode(mydoJob);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(mydoJob), "InJobByTrayCode",ajaxResult);
public AjaxResult requestEnterByTrayCode(@RequestBody RequestEnter requestEnter) {
AjaxResult ajaxResult = toWmsService.requestEnterByTrayCode(requestEnter);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(requestEnter), "InJobByTrayCode",ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
@@ -42,20 +42,20 @@ public class ToWmsApiController {
* 入库任务请求
*/
@PostMapping("/requestEnterByEnterId")
public AjaxResult requestEnterByEnterId(@RequestBody MydoJob mydoJob) {
AjaxResult ajaxResult = toWmsService.requestEnterByEnterId(mydoJob);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(mydoJob), "InJobByEnterId",ajaxResult);
public AjaxResult requestEnterByEnterId(@RequestBody RequestEnter requestEnter) {
AjaxResult ajaxResult = toWmsService.requestEnterByEnterId(requestEnter);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(requestEnter), "InJobByEnterId",ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 接收开始信号
* 小车接收开始信号
*/
@PostMapping("/startSignal")
public AjaxResult startSignal(@RequestBody MydoJob mydoJob) {
AjaxResult ajaxResult = toWmsService.startSignal(mydoJob);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(mydoJob), "startSignal",ajaxResult);
public AjaxResult startSignal(@RequestBody RequestEnter requestEnter) {
AjaxResult ajaxResult = toWmsService.startSignal(requestEnter);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(requestEnter), "startSignal",ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
@@ -101,18 +101,6 @@ public class ToWmsApiController {
return ajaxResult;
}
/**
* 获取任务
* @param mydoJob
* @return
*/
@PostMapping("/getJob")
public AjaxResult getJob(@RequestBody MydoJob mydoJob) {
AjaxResult ajaxResult = toWmsService.getJob(mydoJob);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(mydoJob), "getJob",ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* ctu取完箱子反馈
@@ -121,7 +109,6 @@ public class ToWmsApiController {
* }
* @return
*/
@PostMapping("/takeCompleted")
public AjaxResult takeCompleted(@RequestBody Map<String, Object> map) {
AjaxResult ajaxResult = toWmsService.takeCompleted(map);

View File

@@ -0,0 +1,15 @@
package com.ruoyi.api.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RequestEnter {
private String entranceId;
private String trayCode;
private String taskNo;
private String wmsType;
}

View File

@@ -1,5 +1,6 @@
package com.ruoyi.api.service;
import com.ruoyi.api.domain.RequestEnter;
import com.ruoyi.api.domain.WmsJobRequest;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.job.mydojob.domain.MydoJob;
@@ -10,19 +11,44 @@ import java.util.Map;
* 作业统计 Service 接口
*/
public interface IToWmsService {
AjaxResult requestEnterByTrayCode(MydoJob mydoJob);
AjaxResult requestEnterByEnterId(MydoJob mydoJob);
/**
* 入库任务请求根据托盘码
*/
AjaxResult requestEnterByTrayCode(RequestEnter requestEnter);
/**
* 入库任务请求
*/
AjaxResult requestEnterByEnterId(RequestEnter requestEnter);
/**
* 入库、出库 任务完成回传
* Map<String, String>
* "wmsType": "任务类型" 1-入库 2-出库 3-agv搬运,
* taskNo:出库 入库任务号
* trayCode:托盘码
* positionCode1:起点
* positionCode2:终点
* containerCode:容器编码
*
*/
AjaxResult jobFinish(WmsJobRequest wmsJobRequest);
/**
* 放货有货,重新分配货位
*/
AjaxResult reAssign(MydoJob mydoJob);
/**
* 取货无货,重新分配物料
*/
AjaxResult reMaterial(MydoJob mydoJob);
AjaxResult getJob(MydoJob mydoJob);
AjaxResult startSignal(MydoJob mydoJob);
/**
* 小车接收开始信号
*/
AjaxResult startSignal(RequestEnter requestEnter);
/**
* ctu取完箱子反馈
* @param map{
* "lljCode"
* }
* @return
*/
AjaxResult takeCompleted(Map<String, Object> map);
}

View File

@@ -1,8 +1,10 @@
package com.ruoyi.api.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.api.domain.RequestEnter;
import com.ruoyi.api.domain.WmsJobRequest;
import com.ruoyi.api.service.IToWmsService;
import com.ruoyi.bas.cargoSpace.domain.BasCargoSpace;
@@ -14,6 +16,8 @@ import com.ruoyi.bas.tag.service.IBasTagService;
import com.ruoyi.bas.taskNo.service.IBasTaskNoService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.MessageUtils;
import com.ruoyi.device.agv.domain.AgvContainerTask;
import com.ruoyi.device.agv.service.IAgvContainerTaskService;
import com.ruoyi.job.mydojob.domain.MydoJob;
import com.ruoyi.job.mydojob.service.IMydoJobService;
import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail;
@@ -27,6 +31,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -55,13 +60,15 @@ public class ToWmsServiceImpl implements IToWmsService {
private IOutStockoutDetailService outStockoutDetailService;
@Autowired
private IOutStockoutService outStockoutService;
@Autowired
private IAgvContainerTaskService agvContainerTaskService;
@Override
public AjaxResult requestEnterByTrayCode(MydoJob param) {
public AjaxResult requestEnterByTrayCode(RequestEnter requestEnter) {
MydoJob mydoJobParam = new MydoJob();
mydoJobParam.setTrayCode(param.getTrayCode());
mydoJobParam.setTrayCode(requestEnter.getTrayCode());
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
if(mydoJobs.isEmpty()){
return AjaxResult.warn(MessageUtils.message("warn.message"));
@@ -69,7 +76,7 @@ public class ToWmsServiceImpl implements IToWmsService {
MydoJob mydoJob = mydoJobs.get(0);
if ("1".equals(mydoJob.getExecutionPhase())){
mydoJob.setExecutionPhase("2");
mydoJob.setEntranceId(param.getEntranceId());
mydoJob.setEntranceId(requestEnter.getEntranceId());
mydoJob.setStatus("2");
mydoJobService.updateMydoJob(mydoJob);
}
@@ -77,9 +84,9 @@ public class ToWmsServiceImpl implements IToWmsService {
}
@Override
public AjaxResult requestEnterByEnterId(MydoJob param) {
public AjaxResult requestEnterByEnterId(RequestEnter requestEnter) {
MydoJob mydoJobParam = new MydoJob();
mydoJobParam.setEntranceId(param.getEntranceId());
mydoJobParam.setEntranceId(requestEnter.getEntranceId());
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
if(mydoJobs.isEmpty()){
return AjaxResult.warn(MessageUtils.message("warn.message"));
@@ -88,7 +95,7 @@ public class ToWmsServiceImpl implements IToWmsService {
for (MydoJob mydoJob : mydoJobs) {
if ("1".equals(mydoJob.getExecutionPhase())){
mydoJob.setExecutionPhase("2");
mydoJob.setTrayCode(param.getTrayCode());
mydoJob.setTrayCode(requestEnter.getTrayCode());
mydoJob.setStatus("2");
mydoJobService.updateMydoJob(mydoJob);
}
@@ -188,6 +195,20 @@ public class ToWmsServiceImpl implements IToWmsService {
BasContainer basContainer = basContainers.get(0);
basContainer.setPortName(wmsJobRequest.getPositionCode2());
basContainerService.updateBasContainer(basContainer);
//删除agv任务
AgvContainerTask agvContainerTaskParam = new AgvContainerTask();
agvContainerTaskParam.setContainer(basContainer.getContainerId());
List<AgvContainerTask> agvContainerTasks = agvContainerTaskService.selectAgvContainerTaskList(agvContainerTaskParam);
if (CollUtil.isNotEmpty(agvContainerTasks)){
for (AgvContainerTask agvContainerTask : agvContainerTasks) {
agvContainerTask.setStatus("3");
agvContainerTask.setFinishTime(DateUtil.formatDateTime(new Date()));
agvContainerTaskService.updateAgvContainerTask(agvContainerTask);
agvContainerTaskService.insertHistory(agvContainerTask.getId());
agvContainerTaskService.deleteAgvContainerTaskById(agvContainerTask.getId());
}
}
break;
default:
log.error("作业类型错误");
@@ -227,33 +248,51 @@ public class ToWmsServiceImpl implements IToWmsService {
return outStockoutService.autoAllot(stockOutId);
}
/**
* 小车接收开始信号
*/
@Override
public AjaxResult getJob(MydoJob mydoJob) {
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobListApi(mydoJob);
if (mydoJobs.isEmpty()){
return AjaxResult.error();
}else {
return AjaxResult.success(mydoJobs);
public AjaxResult startSignal(RequestEnter requestEnter) {
switch (requestEnter.getWmsType()){
case "1":
case "2":
MydoJob mydoJobParam = new MydoJob();
mydoJobParam.setTaskNo(requestEnter.getTaskNo());
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
if (mydoJobs.isEmpty()){
return AjaxResult.error();
}
for (MydoJob mydoJob1 : mydoJobs) {
mydoJob1.setStatus("3");
mydoJob1.setStartTime(DateUtil.formatDateTime(DateUtil.date()));
mydoJobService.updateMydoJob(mydoJob1);
}
return AjaxResult.success();
case "3":
AgvContainerTask agvContainerTaskParam = new AgvContainerTask();
agvContainerTaskParam.setTaskNo(requestEnter.getTaskNo());
List<AgvContainerTask> agvContainerTasks = agvContainerTaskService.selectAgvContainerTaskList(agvContainerTaskParam);
if (CollUtil.isEmpty(agvContainerTasks)){
return AjaxResult.error();
}
for (AgvContainerTask agvContainerTask : agvContainerTasks) {
agvContainerTask.setStatus("2");
agvContainerTask.setStartTime(DateUtil.formatDateTime(DateUtil.date()));
agvContainerTaskService.updateAgvContainerTask(agvContainerTask);
}
return AjaxResult.success();
default:
return AjaxResult.error();
}
}
@Override
public AjaxResult startSignal(MydoJob mydoJob) {
MydoJob mydoJobParam = new MydoJob();
mydoJobParam.setTaskNo(mydoJob.getTaskNo());
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
if (mydoJobs.isEmpty()){
return AjaxResult.error();
}else {
for (MydoJob mydoJob1 : mydoJobs) {
mydoJob1.setStatus("3");
mydoJob1.setStartTime(DateUtil.formatDateTime(DateUtil.date()));
mydoJobService.updateMydoJob(mydoJob1);
}
return AjaxResult.success();
}
}
/**
* ctu取完箱子反馈
* @param map{
* "lljCode"
* }
* @return
*/
@Override
public AjaxResult takeCompleted(Map<String, Object> map) {
String lljCode = Convert.toStr(map.get("lljCode"));