修改出库完成 插入回传中间表

This commit is contained in:
liuhanqing
2025-09-25 15:39:28 +08:00
parent 7febdddcb3
commit 535ef2fd6b
8 changed files with 596 additions and 36 deletions

View File

@@ -0,0 +1,104 @@
package com.ruoyi.job.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.job.domain.JobCallBack;
import com.ruoyi.job.service.IJobCallBackService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 任务完成回传Controller
*
* @author ruoyi
* @date 2025-09-25
*/
@RestController
@RequestMapping("/job/callBack")
public class JobCallBackController extends BaseController
{
@Autowired
private IJobCallBackService jobCallBackService;
/**
* 查询任务完成回传列表
*/
@PreAuthorize("@ss.hasPermi('job:callBack:list')")
@GetMapping("/list")
public TableDataInfo list(JobCallBack jobCallBack)
{
startPage();
List<JobCallBack> list = jobCallBackService.selectJobCallBackList(jobCallBack);
return getDataTable(list);
}
/**
* 导出任务完成回传列表
*/
@PreAuthorize("@ss.hasPermi('job:callBack:export')")
@Log(title = "任务完成回传", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, JobCallBack jobCallBack)
{
List<JobCallBack> list = jobCallBackService.selectJobCallBackList(jobCallBack);
ExcelUtil<JobCallBack> util = new ExcelUtil<JobCallBack>(JobCallBack.class);
util.exportExcel(response, list, "任务完成回传数据");
}
/**
* 获取任务完成回传详细信息
*/
@PreAuthorize("@ss.hasPermi('job:callBack:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return success(jobCallBackService.selectJobCallBackById(id));
}
/**
* 新增任务完成回传
*/
@PreAuthorize("@ss.hasPermi('job:callBack:add')")
@Log(title = "任务完成回传", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody JobCallBack jobCallBack)
{
return toAjax(jobCallBackService.insertJobCallBack(jobCallBack));
}
/**
* 修改任务完成回传
*/
@PreAuthorize("@ss.hasPermi('job:callBack:edit')")
@Log(title = "任务完成回传", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody JobCallBack jobCallBack)
{
return toAjax(jobCallBackService.updateJobCallBack(jobCallBack));
}
/**
* 删除任务完成回传
*/
@PreAuthorize("@ss.hasPermi('job:callBack:remove')")
@Log(title = "任务完成回传", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(jobCallBackService.deleteJobCallBackByIds(ids));
}
}

View File

@@ -0,0 +1,143 @@
package com.ruoyi.job.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 任务完成回传对象 job_call_back
*
* @author ruoyi
* @date 2025-09-25
*/
public class JobCallBack extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 类型 */
@Excel(name = "类型")
private String type;
/** 任务号 */
@Excel(name = "任务号")
private Long taskNo;
/** mydojob作业号 */
@Excel(name = "mydojob作业号")
private String mydojobId;
/** 状态 */
@Excel(name = "状态")
private String status;
/** 备用字段1 */
@Excel(name = "备用字段1")
private String spare1;
/** 备用字段2 */
@Excel(name = "备用字段2")
private String spare2;
/** 备用字段3 */
@Excel(name = "备用字段3")
private String spare3;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setType(String type)
{
this.type = type;
}
public String getType()
{
return type;
}
public void setTaskNo(Long taskNo)
{
this.taskNo = taskNo;
}
public Long getTaskNo()
{
return taskNo;
}
public void setMydojobId(String mydojobId)
{
this.mydojobId = mydojobId;
}
public String getMydojobId()
{
return mydojobId;
}
public void setStatus(String status)
{
this.status = status;
}
public String getStatus()
{
return status;
}
public void setSpare1(String spare1)
{
this.spare1 = spare1;
}
public String getSpare1()
{
return spare1;
}
public void setSpare2(String spare2)
{
this.spare2 = spare2;
}
public String getSpare2()
{
return spare2;
}
public void setSpare3(String spare3)
{
this.spare3 = spare3;
}
public String getSpare3()
{
return spare3;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("type", getType())
.append("taskNo", getTaskNo())
.append("mydojobId", getMydojobId())
.append("status", getStatus())
.append("createTime", getCreateTime())
.append("spare1", getSpare1())
.append("spare2", getSpare2())
.append("spare3", getSpare3())
.toString();
}
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.job.mapper;
import java.util.List;
import com.ruoyi.job.domain.JobCallBack;
/**
* 任务完成回传Mapper接口
*
* @author ruoyi
* @date 2025-09-25
*/
public interface JobCallBackMapper
{
/**
* 查询任务完成回传
*
* @param id 任务完成回传主键
* @return 任务完成回传
*/
public JobCallBack selectJobCallBackById(Long id);
/**
* 查询任务完成回传列表
*
* @param jobCallBack 任务完成回传
* @return 任务完成回传集合
*/
public List<JobCallBack> selectJobCallBackList(JobCallBack jobCallBack);
/**
* 新增任务完成回传
*
* @param jobCallBack 任务完成回传
* @return 结果
*/
public int insertJobCallBack(JobCallBack jobCallBack);
/**
* 修改任务完成回传
*
* @param jobCallBack 任务完成回传
* @return 结果
*/
public int updateJobCallBack(JobCallBack jobCallBack);
/**
* 删除任务完成回传
*
* @param id 任务完成回传主键
* @return 结果
*/
public int deleteJobCallBackById(Long id);
/**
* 批量删除任务完成回传
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteJobCallBackByIds(Long[] ids);
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.job.service;
import java.util.List;
import com.ruoyi.job.domain.JobCallBack;
/**
* 任务完成回传Service接口
*
* @author ruoyi
* @date 2025-09-25
*/
public interface IJobCallBackService
{
/**
* 查询任务完成回传
*
* @param id 任务完成回传主键
* @return 任务完成回传
*/
public JobCallBack selectJobCallBackById(Long id);
/**
* 查询任务完成回传列表
*
* @param jobCallBack 任务完成回传
* @return 任务完成回传集合
*/
public List<JobCallBack> selectJobCallBackList(JobCallBack jobCallBack);
/**
* 新增任务完成回传
*
* @param jobCallBack 任务完成回传
* @return 结果
*/
public int insertJobCallBack(JobCallBack jobCallBack);
/**
* 修改任务完成回传
*
* @param jobCallBack 任务完成回传
* @return 结果
*/
public int updateJobCallBack(JobCallBack jobCallBack);
/**
* 批量删除任务完成回传
*
* @param ids 需要删除的任务完成回传主键集合
* @return 结果
*/
public int deleteJobCallBackByIds(Long[] ids);
/**
* 删除任务完成回传信息
*
* @param id 任务完成回传主键
* @return 结果
*/
public int deleteJobCallBackById(Long id);
}

View File

@@ -0,0 +1,95 @@
package com.ruoyi.job.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.job.mapper.JobCallBackMapper;
import com.ruoyi.job.domain.JobCallBack;
import com.ruoyi.job.service.IJobCallBackService;
/**
* 任务完成回传Service业务层处理
*
* @author ruoyi
* @date 2025-09-25
*/
@Service
public class JobCallBackServiceImpl implements IJobCallBackService
{
@Autowired
private JobCallBackMapper jobCallBackMapper;
/**
* 查询任务完成回传
*
* @param id 任务完成回传主键
* @return 任务完成回传
*/
@Override
public JobCallBack selectJobCallBackById(Long id)
{
return jobCallBackMapper.selectJobCallBackById(id);
}
/**
* 查询任务完成回传列表
*
* @param jobCallBack 任务完成回传
* @return 任务完成回传
*/
@Override
public List<JobCallBack> selectJobCallBackList(JobCallBack jobCallBack)
{
return jobCallBackMapper.selectJobCallBackList(jobCallBack);
}
/**
* 新增任务完成回传
*
* @param jobCallBack 任务完成回传
* @return 结果
*/
@Override
public int insertJobCallBack(JobCallBack jobCallBack)
{
jobCallBack.setCreateTime(DateUtils.getNowDate());
return jobCallBackMapper.insertJobCallBack(jobCallBack);
}
/**
* 修改任务完成回传
*
* @param jobCallBack 任务完成回传
* @return 结果
*/
@Override
public int updateJobCallBack(JobCallBack jobCallBack)
{
return jobCallBackMapper.updateJobCallBack(jobCallBack);
}
/**
* 批量删除任务完成回传
*
* @param ids 需要删除的任务完成回传主键
* @return 结果
*/
@Override
public int deleteJobCallBackByIds(Long[] ids)
{
return jobCallBackMapper.deleteJobCallBackByIds(ids);
}
/**
* 删除任务完成回传信息
*
* @param id 任务完成回传主键
* @return 结果
*/
@Override
public int deleteJobCallBackById(Long id)
{
return jobCallBackMapper.deleteJobCallBackById(id);
}
}

View File

@@ -5,17 +5,15 @@ import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.api.domain.RequestLog;
import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskResponse;
import com.ruoyi.api.service.IApiService;
import com.ruoyi.bas.cargospace.domain.BasCargoSpace;
import com.ruoyi.bas.cargospace.service.IBasCargoSpaceService;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.device.ssj.domain.DeviceSsj;
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.queue.ddj.domain.DdjDeviceExecutionQueue;
import com.ruoyi.queue.ddj.service.IDdjDeviceExecutionQueueService;
@@ -25,7 +23,6 @@ import lombok.extern.slf4j.Slf4j;
import java.util.*;
import static com.ruoyi.common.TaskStatusCode.*;
import static com.ruoyi.common.TaskType.DDJ_RWLX_2;
import static com.ruoyi.common.TaskType.DDJ_RWLX_3;
/**
@@ -43,6 +40,7 @@ public class Floor1BothWayOutSsjThread implements Runnable {
private IBasCargoSpaceService basCargoSpaceService;
private IDdjDeviceExecutionQueueService ddjDeviceExecutionQueueService;
private final Map<String,List<Integer>> roadwayMap = new HashMap<>();
private IJobCallBackService jobCallBackService;
public boolean isRun = true;
@@ -74,6 +72,7 @@ public class Floor1BothWayOutSsjThread implements Runnable {
mydoJobService = SpringUtils.getBean(IMydoJobService.class);
basCargoSpaceService = SpringUtils.getBean(IBasCargoSpaceService.class);
ddjDeviceExecutionQueueService = SpringUtils.getBean(IDdjDeviceExecutionQueueService.class);
jobCallBackService = SpringUtils.getBean(IJobCallBackService.class);
//初始化巷道口 排 列 层
@@ -117,19 +116,22 @@ public class Floor1BothWayOutSsjThread implements Runnable {
mydoJobService.updateMydoJob(mydoJob);
}
if (ObjUtil.isNotNull(mydoJob) && mydoJob.getExecutionPhase().equals(TASK_EP_SSJ)) {
HashMap<String,Object> param = new HashMap<>();
param.put("taskNo",mydoJob.getTaskNo());
param.put("jobId",mydoJob.getJobId());
RequestLog result = apiService.finishMydoJob(param);
if ("1".equals(result.getIsSuccessful())){
log.info("完成任务 taskNo{} ",mydoJob.getTaskNo());
mydoJob.setStatus(TASK_STATUS_FINISH);
mydoJob.setExecutionPhase(TASK_EP_WMS_FINISH);
mydoJob.setFinishTime(DateUtil.formatDateTime(new Date()));
mydoJobService.updateMydoJob(mydoJob);
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());
jobCallBackService.insertJobCallBack(jobCallBack);
log.info("完成任务 taskNo{} ", mydoJob.getTaskNo());
mydoJob.setStatus(TASK_STATUS_FINISH);
mydoJob.setExecutionPhase(TASK_EP_WMS_FINISH);
mydoJob.setFinishTime(DateUtil.formatDateTime(new Date()));
mydoJobService.updateMydoJob(mydoJob);
mydoJobService.insertHistory(mydoJob.getJobId());
mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId());
}
}
}

View File

@@ -3,18 +3,17 @@ package com.ruoyi.schedule.scheduleTask.ssj.floor1;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjUtil;
import com.ruoyi.api.domain.RequestLog;
import com.ruoyi.api.service.IApiService;
import com.ruoyi.bas.cargospace.domain.BasCargoSpace;
import com.ruoyi.bas.cargospace.service.IBasCargoSpaceService;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.job.domain.MydoJob;
import com.ruoyi.job.service.IMydoJobService;
import com.ruoyi.queue.agv.service.IAgvQueueService;
import com.ruoyi.device.ssj.domain.DeviceSsj;
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.ddj.domain.DdjDeviceExecutionQueue;
import com.ruoyi.queue.ddj.service.IDdjDeviceExecutionQueueService;
import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead;
@@ -39,6 +38,8 @@ public class Floor1SingleSsjThread implements Runnable {
private IDdjDeviceExecutionQueueService ddjDeviceExecutionQueueService;
private IBasCargoSpaceService basCargoSpaceService;
private final Map<String, List<Integer>> roadwayMap = new HashMap<>();
private IJobCallBackService jobCallBackService;
public void init() {
@@ -59,6 +60,8 @@ public class Floor1SingleSsjThread implements Runnable {
mydoJobService = SpringUtils.getBean(IMydoJobService.class);
ddjDeviceExecutionQueueService = SpringUtils.getBean(IDdjDeviceExecutionQueueService.class);
basCargoSpaceService = SpringUtils.getBean(IBasCargoSpaceService.class);
jobCallBackService = SpringUtils.getBean(IJobCallBackService.class);
//初始化出口和巷道口映射关系
exitRoadwayMap.put("L2001", "L2002");
@@ -123,19 +126,20 @@ public class Floor1SingleSsjThread implements Runnable {
if (ObjUtil.isNotNull(mydoJob)) {
mydoJob.setExecutionPhase(TASK_EP_SSJ);
mydoJobService.updateMydoJob(mydoJob);
HashMap<String, Object> param = new HashMap<>();
param.put("taskNo", mydoJob.getTaskNo());
param.put("jobId", mydoJob.getJobId());
RequestLog result = apiService.finishMydoJob(param);
if ("1".equals(result.getIsSuccessful())) {
log.info("完成任务 taskNo{} ", mydoJob.getTaskNo());
mydoJob.setStatus(TASK_STATUS_FINISH);
mydoJob.setFinishTime(DateUtil.formatDateTime(new Date()));
mydoJob.setExecutionPhase(TASK_EP_WMS_FINISH);
mydoJobService.updateMydoJob(mydoJob);
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());
jobCallBackService.insertJobCallBack(jobCallBack);
log.info("完成任务 taskNo{} ", mydoJob.getTaskNo());
mydoJob.setStatus(TASK_STATUS_FINISH);
mydoJob.setFinishTime(DateUtil.formatDateTime(new Date()));
mydoJob.setExecutionPhase(TASK_EP_WMS_FINISH);
mydoJobService.updateMydoJob(mydoJob);
mydoJobService.insertHistory(mydoJob.getJobId());
mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId());
}
}
}