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

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());
}
}
}

View File

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.job.mapper.JobCallBackMapper">
<resultMap type="JobCallBack" id="JobCallBackResult">
<result property="id" column="id" />
<result property="type" column="type" />
<result property="taskNo" column="task_no" />
<result property="mydojobId" column="mydojob_id" />
<result property="status" column="status" />
<result property="createTime" column="create_time" />
<result property="spare1" column="spare1" />
<result property="spare2" column="spare2" />
<result property="spare3" column="spare3" />
</resultMap>
<sql id="selectJobCallBackVo">
select id, type, task_no, mydojob_id, status, create_time, spare1, spare2, spare3 from job_call_back
</sql>
<select id="selectJobCallBackList" parameterType="JobCallBack" resultMap="JobCallBackResult">
<include refid="selectJobCallBackVo"/>
<where>
<if test="type != null and type != ''"> and type = #{type}</if>
<if test="taskNo != null "> and task_no = #{taskNo}</if>
<if test="mydojobId != null and mydojobId != ''"> and mydojob_id = #{mydojobId}</if>
<if test="status != null and status != ''"> and status = #{status}</if>
<if test="spare1 != null and spare1 != ''"> and spare1 = #{spare1}</if>
<if test="spare2 != null and spare2 != ''"> and spare2 = #{spare2}</if>
<if test="spare3 != null and spare3 != ''"> and spare3 = #{spare3}</if>
</where>
</select>
<select id="selectJobCallBackById" parameterType="Long" resultMap="JobCallBackResult">
<include refid="selectJobCallBackVo"/>
where id = #{id}
</select>
<insert id="insertJobCallBack" parameterType="JobCallBack" useGeneratedKeys="true" keyProperty="id">
insert into job_call_back
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="type != null">type,</if>
<if test="taskNo != null">task_no,</if>
<if test="mydojobId != null">mydojob_id,</if>
<if test="status != null">status,</if>
<if test="createTime != null">create_time,</if>
<if test="spare1 != null">spare1,</if>
<if test="spare2 != null">spare2,</if>
<if test="spare3 != null">spare3,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="type != null">#{type},</if>
<if test="taskNo != null">#{taskNo},</if>
<if test="mydojobId != null">#{mydojobId},</if>
<if test="status != null">#{status},</if>
<if test="createTime != null">#{createTime},</if>
<if test="spare1 != null">#{spare1},</if>
<if test="spare2 != null">#{spare2},</if>
<if test="spare3 != null">#{spare3},</if>
</trim>
</insert>
<update id="updateJobCallBack" parameterType="JobCallBack">
update job_call_back
<trim prefix="SET" suffixOverrides=",">
<if test="type != null">type = #{type},</if>
<if test="taskNo != null">task_no = #{taskNo},</if>
<if test="mydojobId != null">mydojob_id = #{mydojobId},</if>
<if test="status != null">status = #{status},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="spare1 != null">spare1 = #{spare1},</if>
<if test="spare2 != null">spare2 = #{spare2},</if>
<if test="spare3 != null">spare3 = #{spare3},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteJobCallBackById" parameterType="Long">
delete from job_call_back where id = #{id}
</delete>
<delete id="deleteJobCallBackByIds" parameterType="String">
delete from job_call_back where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>