wms取消任务接口,程序便利性优化

This commit is contained in:
lsymicc
2026-06-12 13:22:04 +08:00
parent 6f60580268
commit d6372ccc0c
7 changed files with 105 additions and 61 deletions

View File

@@ -55,6 +55,17 @@ public class Wcs2WmsController {
return apiService.cancelMydoJob(jobParam); return apiService.cancelMydoJob(jobParam);
} }
/**
* @@@ FT568 - wms取消任务
* @param wmsTaskCode
* @return
*/
@DeleteMapping("/cancelJob/{wmsTaskCode}")
public AjaxResult cancelMydoJob(@PathVariable String wmsTaskCode)
{
return apiService.cancelMydoJob(wmsTaskCode);
}
/** /**
* 查询缓存点 * 查询缓存点

View File

@@ -111,6 +111,8 @@ public interface IApiService
*/ */
AjaxResult cancelMydoJob(JobParam jobParam); AjaxResult cancelMydoJob(JobParam jobParam);
AjaxResult cancelMydoJob(String wmsTaskCode);
AjaxResult selectWcsPort(WcsPort wcsPort); AjaxResult selectWcsPort(WcsPort wcsPort);
AjaxResult updateWcsPort(WcsPort wcsPort); AjaxResult updateWcsPort(WcsPort wcsPort);

View File

@@ -252,6 +252,28 @@ public class ApiServiceImpl implements IApiService {
} }
} }
/**
* wms删除任务(单选)
*
* @param wmsTaskCode
* @return
*/
@Override
public AjaxResult cancelMydoJob(String wmsTaskCode) {
if (wmsTaskCode == null || wmsTaskCode.equals("")) {
return AjaxResult.error("查不到执行wms任务号的作业");
}
MydoJob mydoJob = mydoJobService.selectMydoJobByWmsTaskNo(wmsTaskCode);
if (mydoJob == null) {
return AjaxResult.error("查不到该wms任务号正在执行中的作业,可能是已经取消或完成,请检查wcs任务状态");
}
return AjaxResult.success(mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId()));
}
@@ -575,10 +597,10 @@ public class ApiServiceImpl implements IApiService {
return AjaxResult.error("【警告】生成作业失败,已存在的作业号:{}" + mydoJob.getJobId() + "(仅提示)"); return AjaxResult.error("【警告】生成作业失败,已存在的作业号:{}" + mydoJob.getJobId() + "(仅提示)");
} }
if (mydoJobService.selectMydoJobByWmsTaskNo(mydoJob.getWmsTaskNo()) != null){ // if (mydoJobService.selectMydoJobByWmsTaskNo(mydoJob.getWmsTaskNo()) != null){
log.info("【警告】生成作业失败,已存在的作业号:{}", mydoJob.getJobId() + "(此条可忽略)"); // log.info("【警告】生成作业失败,已存在的作业号:{}", mydoJob.getJobId() + "(此条可忽略)");
return AjaxResult.error("【警告】生成作业失败,已存在的wms任务号:{}" + mydoJob.getJobId() + "(仅提示)"); // return AjaxResult.error("【警告】生成作业失败,已存在的wms任务号:{}" + mydoJob.getJobId() + "(仅提示)");
} // }
int i = mydoJobService.insertMydoJob(mydoJob); int i = mydoJobService.insertMydoJob(mydoJob);
// boolean success = mydoJobService.saveOrUpdate(mydoJob); // boolean success = mydoJobService.saveOrUpdate(mydoJob);

View File

@@ -30,12 +30,12 @@ public class TaskStatusCode {
/** /**
* 任务状态-手动完成 * 任务状态-手动完成
*/ */
public static final String TASK_STATUS_FINISH_MANUAL = "5"; public static final String TASK_STATUS_FINISH_MANUAL = "4";
/** /**
* 任务状态-作废 * 任务状态-作废
*/ */
public static final String TASK_STATUS_INVALID = "6"; public static final String TASK_STATUS_INVALID = "5";
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 【执行阶段】 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< //>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 【执行阶段】 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

View File

@@ -24,6 +24,7 @@ import com.ruoyi.job.domain.MydoJob;
import com.ruoyi.job.service.IMydoJobService; import com.ruoyi.job.service.IMydoJobService;
import static com.ruoyi.common.TaskStatusCode.TASK_STATUS_FINISH_MANUAL; import static com.ruoyi.common.TaskStatusCode.TASK_STATUS_FINISH_MANUAL;
import static com.ruoyi.common.TaskStatusCode.TASK_STATUS_INVALID;
import static com.ruoyi.common.WmsTaskTypeCode.*; import static com.ruoyi.common.WmsTaskTypeCode.*;
/** /**
@@ -106,14 +107,18 @@ public class MydoJobServiceImpl implements IMydoJobService
public int deleteMydoJobByJobIds(String[] jobIds) public int deleteMydoJobByJobIds(String[] jobIds)
{ {
for (String jobId : jobIds) { for (String jobId : jobIds) {
if (selectMydoJobByJobId(jobId) == null) continue;
MydoJob mydoJob = selectMydoJobByJobId(jobId);
selectMydoJobByJobId(jobId).setStatus(TASK_STATUS_INVALID);
updateMydoJob(mydoJob);
mydoJobMapper.insertHistory(jobId); mydoJobMapper.insertHistory(jobId);
//当执行任务的【删除】操作时(特殊场景需要手动处理异常导致不需要入库时,此时不需要向回传异常) //当执行任务的【删除】操作时(特殊场景需要手动处理异常导致不需要入库时,此时不需要向回传异常)
// 此处顺便处理对应任务号生成的堆垛机执行队列,省去sql直接表中删记录的操作 // 此处顺便处理对应任务号生成的堆垛机执行队列,省去sql直接表中删记录的操作
if (selectMydoJobByJobId(jobId) != null){ String taskNo = selectMydoJobByJobId(jobId).getTaskNo();
String taskNo = selectMydoJobByJobId(jobId).getTaskNo(); if (ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByTaskNo(taskNo) != null) {
if (ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByTaskNo(taskNo) != null) { ddjDeviceExecutionQueueService.deleteDdjDeviceExecutionQueueByTaskNo(taskNo);
ddjDeviceExecutionQueueService.deleteDdjDeviceExecutionQueueByTaskNo(taskNo);
}
} }
} }
@@ -187,6 +192,7 @@ public class MydoJobServiceImpl implements IMydoJobService
} }
} }
@Override @Override
public MydoJob selectMydoJobByExitList(List<String> exitList ) { public MydoJob selectMydoJobByExitList(List<String> exitList ) {
return mydoJobMapper.selectMydoJobByExitList(exitList); return mydoJobMapper.selectMydoJobByExitList(exitList);

View File

@@ -174,62 +174,66 @@ public class RoadConvThread implements Runnable {
private void sendStackerOut(DeviceSsj roadSsjDevice){ private void sendStackerOut(DeviceSsj roadSsjDevice){
//---------------------------出库任务--------------------------- //---------------------------出库任务---------------------------
//检查巷道口输送机是否空闲 //检查巷道口输送机是否空闲
if(roadSsjDevice.getKx()==1 && roadSsjDevice.getTaskNo() == 0){ if(roadSsjDevice.getKx()!=1 || roadSsjDevice.getTaskNo() != 0) return;
//检查是否有入口是【TD1001-出库到位输送机】的入库任务 - 此处查询作用:如果已经有入库任务,则只可生成出库作业,不可生成堆垛机队列 //检查是否有入口是【TD1001-出库到位输送机】的入库任务 - 此处查询作用:如果已经有入库任务,则只可生成出库作业,不可生成堆垛机队列
String exitId = CONV_STOCKOUT; String exitId = CONV_STOCKOUT;
List<MydoJob> jobs = mydoJobService.selectMydoJobList(
new MydoJob().builder().inOrOut(STOCKIN).build()
);
List<MydoJob> jobs = mydoJobService.selectMydoJobList( if(jobs.size() != 0) {
new MydoJob().builder().inOrOut(STOCKIN).build() log.info("【提示】当前出口"+ exitId +"有正在执行的任务,无法执行堆垛机出库,请等待执行的入库任务结束");
); return;
}
if(jobs.size() == 0){ //检查是否有出库任务
MydoJob mydoJob = mydoJobService.selectMydoJobByExitId(exitId);
if (ObjUtil.isNotNull(mydoJob)) {
//检查是否有出库任务 //如果有出库任务 - 检查货位编码是否合法
MydoJob mydoJob = mydoJobService.selectMydoJobByExitId(exitId); BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId());
if (ObjUtil.isNotNull(mydoJob)) { if (ObjUtil.isNull(basCargoSpace)) {
log.error("【任务异常】货位不存在 cargoSpaceId{}", mydoJob.getCargoSpaceId());
return;
}
//如果有出库任务 - 检查货位编码是否合法 //生成队列
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId()); List<DdjDeviceExecutionQueue> list = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueListByRwlx(DDJ_RWLX_2, Convert.toInt(mydoJob.getRoadwayId()));
if (ObjUtil.isNull(basCargoSpace)) { List<Integer> pclList = roadwayMap.get(roadSsjDevice.getDeviceCode());
log.error("【任务异常】货位不存在 cargoSpaceId{}", mydoJob.getCargoSpaceId()); if (CollUtil.isEmpty(list) && CollUtil.isNotEmpty(pclList)) {
} else { DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue();
//生成队列 ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID());
List<DdjDeviceExecutionQueue> list = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueListByRwlx(DDJ_RWLX_2, Convert.toInt(mydoJob.getRoadwayId())); ddjDeviceExecutionQueue.setRwh(Convert.toLong(mydoJob.getTaskNo()));
List<Integer> pclList = roadwayMap.get(roadSsjDevice.getDeviceCode()); ddjDeviceExecutionQueue.setDevName(mydoJob.getRoadwayId());
if (CollUtil.isEmpty(list) && CollUtil.isNotEmpty(pclList)) { ddjDeviceExecutionQueue.setDevId(Convert.toInt(mydoJob.getRoadwayId()));
DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue(); ddjDeviceExecutionQueue.setRwzt(0);
ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID()); ddjDeviceExecutionQueue.setYph(Convert.toInt(basCargoSpace.getThePlatoon()));
ddjDeviceExecutionQueue.setRwh(Convert.toLong(mydoJob.getTaskNo())); ddjDeviceExecutionQueue.setYlh(Convert.toInt(basCargoSpace.getTheColumn()));
ddjDeviceExecutionQueue.setDevName(mydoJob.getRoadwayId()); ddjDeviceExecutionQueue.setYch(Convert.toInt(basCargoSpace.getTheFloor()));
ddjDeviceExecutionQueue.setDevId(Convert.toInt(mydoJob.getRoadwayId())); ddjDeviceExecutionQueue.setMbph(pclList.get(0));
ddjDeviceExecutionQueue.setRwzt(0); ddjDeviceExecutionQueue.setMblh(pclList.get(1));
ddjDeviceExecutionQueue.setYph(Convert.toInt(basCargoSpace.getThePlatoon())); ddjDeviceExecutionQueue.setMbch(pclList.get(2));
ddjDeviceExecutionQueue.setYlh(Convert.toInt(basCargoSpace.getTheColumn())); ddjDeviceExecutionQueue.setDdjxf("0");
ddjDeviceExecutionQueue.setYch(Convert.toInt(basCargoSpace.getTheFloor())); ddjDeviceExecutionQueue.setMlfs(5);
ddjDeviceExecutionQueue.setMbph(pclList.get(0)); ddjDeviceExecutionQueue.setSpare1(mydoJob.getTraySize());//货物高度
ddjDeviceExecutionQueue.setMblh(pclList.get(1)); ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date()));
ddjDeviceExecutionQueue.setMbch(pclList.get(2)); ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_2);
ddjDeviceExecutionQueue.setDdjxf("0"); ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue);
ddjDeviceExecutionQueue.setMlfs(5); //修改作业状态
ddjDeviceExecutionQueue.setSpare1(mydoJob.getTraySize());//货物高度 mydoJob.setStatus(TASK_STATUS_RUNNING);
ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date())); mydoJob.setExecutionPhase(TASK_EP_DDJ);
ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_2); mydoJob.setStartTime(DateUtil.formatDateTime(DateUtil.date()));
ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); mydoJobService.updateMydoJob(mydoJob);
//修改作业状态
mydoJob.setStatus(TASK_STATUS_RUNNING);
mydoJob.setExecutionPhase(TASK_EP_DDJ);
mydoJob.setStartTime(DateUtil.formatDateTime(DateUtil.date()));
mydoJobService.updateMydoJob(mydoJob);
}
}
}
}else{
log.info("【警告】当前出口"+ exitId +"有正在执行的任务,无法出库,请等待执行的任务结束");
} }
} }
} }
} }

View File

@@ -49,7 +49,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
FROM mydo_job_wcs_finish FROM mydo_job_wcs_finish
) )
AS combined_jobs AS combined_jobs
ORDER BY create_time DESC; -- 按创建时间倒序(最新在前)
</sql> </sql>
<select id="selectMydoJobUnionList" parameterType="MydoJob" resultMap="MydoJobResult"> <select id="selectMydoJobUnionList" parameterType="MydoJob" resultMap="MydoJobResult">
@@ -84,7 +83,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</if> </if>
<if test="wmsTaskNo != null and wmsTaskNo != ''">and wms_task_no = #{wmsTaskNo}</if> <if test="wmsTaskNo != null and wmsTaskNo != ''">and wms_task_no = #{wmsTaskNo}</if>
</where> </where>
ORDER BY create_time DESC,finish_time DESC; ORDER BY create_time DESC,finish_time DESC
</select> </select>
<select id="selectMydoJobList" parameterType="MydoJob" resultMap="MydoJobResult"> <select id="selectMydoJobList" parameterType="MydoJob" resultMap="MydoJobResult">