wms出库流程测试修改

This commit is contained in:
liuhanqing
2025-07-17 17:16:31 +08:00
parent 1cbb1a12a8
commit 230d8ea118
15 changed files with 123 additions and 59 deletions

View File

@@ -4,6 +4,7 @@ import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.scheduling.annotation.EnableScheduling;
/** /**
* 启动程序 * 启动程序
@@ -12,6 +13,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
*/ */
@MapperScan("com.**.mapper") @MapperScan("com.**.mapper")
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
@EnableScheduling
public class RuoYiApplication public class RuoYiApplication
{ {
public static void main(String[] args) public static void main(String[] args)

View File

@@ -3,13 +3,10 @@ package com.ruoyi.api.controller;
import com.ruoyi.api.domain.GenAgvSchedulingTaskRequest; import com.ruoyi.api.domain.GenAgvSchedulingTaskRequest;
import com.ruoyi.api.service.IToWcsService; import com.ruoyi.api.service.IToWcsService;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.job.mydojob.domain.MydoJob;
import com.ruoyi.job.mydojob.service.IMydoJobService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* 作业统计 Controller * 作业统计 Controller
*/ */
@@ -22,12 +19,12 @@ public class ToWcsApiController {
private IToWcsService toWcsService; private IToWcsService toWcsService;
/** /**
* 推送AGV任务 * 推送CTU出库任务
* @return
*/ */
@PostMapping("/pushOutMydoJob") //@PostMapping("/pushOutMydoJob")
public AjaxResult pushOutMydoJob(@RequestBody MydoJob mydoJob) { @Scheduled(fixedDelay=10000)
return toWcsService.pushOutMydoJob(mydoJob); public void pushOutMydoJob() {
toWcsService.pushOutMydoJob();
} }
/** /**

View File

@@ -11,7 +11,7 @@ import com.ruoyi.job.mydojob.domain.MydoJob;
public interface IToWcsService { public interface IToWcsService {
AjaxResult pushOutMydoJob(MydoJob mydoJob); void pushOutMydoJob();
AjaxResult pushAgvMoveJob(GenAgvSchedulingTaskRequest genAgvSchedulingTaskRequest); AjaxResult pushAgvMoveJob(GenAgvSchedulingTaskRequest genAgvSchedulingTaskRequest);
} }

View File

@@ -24,6 +24,7 @@ import com.ruoyi.out.tagTask.service.ITagTaskService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@@ -33,20 +34,30 @@ import java.util.List;
public class ToWcsServiceImpl implements IToWcsService { public class ToWcsServiceImpl implements IToWcsService {
@Autowired @Autowired
private IRequestLogService requestLogService; private IRequestLogService requestLogService;
public static final String PUSH_OUT_MYDO_JOB = "pushOutMydoJob";
public static final String PUSH_AGV_MOVE_JOB = "pushOutMydoJob";
@Autowired @Autowired
private IMydoJobService mydoJobService; private IMydoJobService mydoJobService;
public static final String PUSH_OUT_MYDO_JOB = "http://localhost:8081/agv/api/receiveOutMydoJob";
public static final String PUSH_AGV_MOVE_JOB = "http://localhost:8081/agv/api/receiveAgvMoveJob";
@Override @Override
public AjaxResult pushOutMydoJob(MydoJob mydoJob) { public void pushOutMydoJob() {
RequestLog requestLog = requestLogService.getRequestLog(PUSH_OUT_MYDO_JOB, JSONUtil.toJsonStr(mydoJob), "推送出库任务"); //查询所有未推送的料箱出库作业
if ("1".equals(requestLog.getIsSuccessful())){ MydoJob mydoJobParam = new MydoJob();
return AjaxResult.success(); mydoJobParam.setStatus("1");
List<String> list = new ArrayList<>();
list.add("21");
list.add("23");
mydoJobParam.setInOutIds(list);
List<MydoJob> outMydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
for (MydoJob outMydoJob : outMydoJobs) {
RequestLog requestLog = requestLogService.getRequestLog(PUSH_OUT_MYDO_JOB, JSONUtil.toJsonStr(outMydoJob), "推送出库任务");
if ("1".equals(requestLog.getIsSuccessful())){
outMydoJob.setStatus("3");
mydoJobService.updateMydoJob(outMydoJob);
}
} }
return AjaxResult.error(requestLog.getDuration());
} }
@Override @Override

View File

@@ -110,9 +110,6 @@ public class ToWmsServiceImpl implements IToWmsService {
mydoJobService.manualCompleted(inMydoJob); mydoJobService.manualCompleted(inMydoJob);
break; break;
case "2": case "2":
if (StrUtil.isEmpty(wmsJobRequest.getTrayCode())){
return AjaxResult.error("托盘码不能为空");
}
if (StrUtil.isEmpty(wmsJobRequest.getPickSsj())){ if (StrUtil.isEmpty(wmsJobRequest.getPickSsj())){
return AjaxResult.error("拣选工位不能为空"); return AjaxResult.error("拣选工位不能为空");
} }
@@ -121,12 +118,12 @@ public class ToWmsServiceImpl implements IToWmsService {
} }
//出库 //出库
mydoJobParam.setTaskNo(wmsJobRequest.getTaskNo()); mydoJobParam.setTaskNo(wmsJobRequest.getTaskNo());
mydoJobParam.setTrayCode(wmsJobRequest.getTrayCode()); //mydoJobParam.setTrayCode(wmsJobRequest.getTrayCode());
List<MydoJob> outMydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam); List<MydoJob> outMydoJobs = mydoJobService.selectMydoJobListApi(mydoJobParam);
if (outMydoJobs.isEmpty()){ if (outMydoJobs.isEmpty()){
return AjaxResult.error("没有该作业 taskNo: {}", wmsJobRequest.getTaskNo()); return AjaxResult.error("没有该作业 taskNo: {}", wmsJobRequest.getTaskNo());
} }
//mydoJobService.OuthandFinish(outMydoJobs.stream().map(MydoJob::getJobId).toArray(String[]::new)); MydoJob outJob = outMydoJobs.get(0);
//查询拣选工位绑定的电子标签 //查询拣选工位绑定的电子标签
BasTag tagParam = new BasTag(); BasTag tagParam = new BasTag();
tagParam.setPickAdd(wmsJobRequest.getPickSsj()); tagParam.setPickAdd(wmsJobRequest.getPickSsj());
@@ -135,7 +132,7 @@ public class ToWmsServiceImpl implements IToWmsService {
return AjaxResult.error("没有该拣选工位绑定的电子标签"); return AjaxResult.error("没有该拣选工位绑定的电子标签");
} }
BasTag basTag = tags.get(0); BasTag basTag = tags.get(0);
basTag.setTrayCode(wmsJobRequest.getTrayCode()); basTag.setTrayCode(outJob.getTrayCode());
iBasTagService.updateBasTag(basTag); iBasTagService.updateBasTag(basTag);
//同步电子标签 //同步电子标签
MydoJobDetail param = new MydoJobDetail(); MydoJobDetail param = new MydoJobDetail();

View File

@@ -58,4 +58,6 @@ public interface BasTagMapper
* @return 结果 * @return 结果
*/ */
public int deleteBasTagByIds(Long[] ids); public int deleteBasTagByIds(Long[] ids);
BasTag selectBasTagByTrayCode(String trayCode);
} }

View File

@@ -58,4 +58,11 @@ public interface IBasTagService
* @return 结果 * @return 结果
*/ */
public int deleteBasTagById(Long id); public int deleteBasTagById(Long id);
/**
* 根据托盘码查询电子标签
* @param trayCode
* @return
*/
BasTag selectBasTagByTrayCode(String trayCode);
} }

View File

@@ -90,4 +90,9 @@ public class BasTagServiceImpl implements IBasTagService
{ {
return basTagMapper.deleteBasTagById(id); return basTagMapper.deleteBasTagById(id);
} }
@Override
public BasTag selectBasTagByTrayCode(String trayCode) {
return basTagMapper.selectBasTagByTrayCode(trayCode);
}
} }

View File

@@ -5,6 +5,8 @@ import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
import java.util.List;
/** /**
* 任务表对象 mydo_job * 任务表对象 mydo_job
* *
@@ -127,6 +129,15 @@ public class MydoJob extends BaseEntity
private String inOut; private String inOut;
private List<String> inOutIds;
public List<String> getInOutIds() {
return inOutIds;
}
public void setInOutIds(List<String> inOutIds) {
this.inOutIds = inOutIds;
}
public String getDepartmentName() { public String getDepartmentName() {
return departmentName; return departmentName;

View File

@@ -122,7 +122,7 @@ public class RequestLogServiceImpl implements IRequestLogService
String resStr = HttpUtil.post(url, param); String resStr = HttpUtil.post(url, param);
requestLog.setResponseBody(resStr); requestLog.setResponseBody(resStr);
AjaxResult bean = JSONUtil.toBean(resStr, AjaxResult.class); AjaxResult bean = JSONUtil.toBean(resStr, AjaxResult.class);
if (Convert.toInt(bean.get("code")) == 0) { if (Convert.toInt(bean.get("code")) == 200) {
requestLog.setResponseTime(DateUtil.formatDateTime(new Date())); requestLog.setResponseTime(DateUtil.formatDateTime(new Date()));
requestLog.setResponseStatus("1"); requestLog.setResponseStatus("1");
requestLog.setDuration(Convert.toStr(DateUtil.between(Convert.toDate(requestLog.getRequestTime()), Convert.toDate(requestLog.getResponseTime()), DateUnit.MS))); requestLog.setDuration(Convert.toStr(DateUtil.between(Convert.toDate(requestLog.getRequestTime()), Convert.toDate(requestLog.getResponseTime()), DateUnit.MS)));

View File

@@ -107,7 +107,7 @@ public class TagTaskController extends BaseController
/** /**
* 传入电子标签信息 * 传入电子标签信息
*/ */
@Scheduled(fixedDelay = 2000) //@Scheduled(fixedDelay = 2000)
public void tagManager(){ public void tagManager(){
tagTaskService.tagManager(); tagTaskService.tagManager();
} }

View File

@@ -10,6 +10,8 @@ import com.ruoyi.bas.containerDetails.domain.BasContainerDetails;
import com.ruoyi.bas.containerDetails.service.IBasContainerDetailsService; import com.ruoyi.bas.containerDetails.service.IBasContainerDetailsService;
import com.ruoyi.bas.port.domain.BasProductPort; import com.ruoyi.bas.port.domain.BasProductPort;
import com.ruoyi.bas.port.mapper.BasProductPortMapper; import com.ruoyi.bas.port.mapper.BasProductPortMapper;
import com.ruoyi.bas.tag.domain.BasTag;
import com.ruoyi.bas.tag.service.IBasTagService;
import com.ruoyi.check.commit.domain.CheckCommitRecord; import com.ruoyi.check.commit.domain.CheckCommitRecord;
import com.ruoyi.check.commit.service.ICheckCommitRecordService; import com.ruoyi.check.commit.service.ICheckCommitRecordService;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
@@ -85,6 +87,8 @@ public class PdaServiceImp implements PdaService {
private IOutPickSubmitService outPickSubmitService; private IOutPickSubmitService outPickSubmitService;
@Autowired @Autowired
private ITagTaskService tagTaskService; private ITagTaskService tagTaskService;
@Autowired
private IBasTagService basTagService;
/** /**
* 空托盘入库 * 空托盘入库
@@ -373,6 +377,18 @@ public class PdaServiceImp implements PdaService {
List<MydoJobDetail> currentMydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(mydoJobDetailParam); List<MydoJobDetail> currentMydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(mydoJobDetailParam);
boolean flag = currentMydoJobDetails.stream().allMatch(mydoJobDetail -> mydoJobDetail.getPickQuantity().equals(mydoJobDetail.getOutQuantity())); boolean flag = currentMydoJobDetails.stream().allMatch(mydoJobDetail -> mydoJobDetail.getPickQuantity().equals(mydoJobDetail.getOutQuantity()));
if (flag) { if (flag) {
BasTag basTag = basTagService.selectBasTagByTrayCode(trayCodeMakeSure.getTrayCode());
//删除电子标签
TagTask param = new TagTask();
param.setTagId(basTag.getId());
List<TagTask> tagTasks = tagTaskService.selectTagTaskList(param);
if (CollUtil.isNotEmpty(tagTasks)) {
tagTaskService.deleteTagTaskByIds(tagTasks.stream()
.map(TagTask::getId)
.toArray(Long[]::new));
}
HashMap<String, Object> map = new HashMap<>(); HashMap<String, Object> map = new HashMap<>();
map.put("v_tray_code", trayCodeMakeSure.getTrayCode()); map.put("v_tray_code", trayCodeMakeSure.getTrayCode());
map.put("v_type", "1"); map.put("v_type", "1");

View File

@@ -38,6 +38,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectBasTagVo"/> <include refid="selectBasTagVo"/>
where id = #{id} where id = #{id}
</select> </select>
<select id="selectBasTagByTrayCode" resultMap="BasTagResult">
<include refid="selectBasTagVo"/>
where tray_code = #{trayCode}
</select>
<insert id="insertBasTag" parameterType="BasTag" useGeneratedKeys="true" keyProperty="id"> <insert id="insertBasTag" parameterType="BasTag" useGeneratedKeys="true" keyProperty="id">
insert into bas_tag insert into bas_tag

View File

@@ -88,6 +88,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="inOut != null and inOut != '' and inOut =='1'.toString "> and mj.in_or_out &lt; 20</if> <if test="inOut != null and inOut != '' and inOut =='1'.toString "> and mj.in_or_out &lt; 20</if>
<if test="inOut != null and inOut != '' and inOut =='3'.toString "> and mj.in_or_out in (5,6)</if> <if test="inOut != null and inOut != '' and inOut =='3'.toString "> and mj.in_or_out in (5,6)</if>
<if test="inOut != null and inOut != '' and inOut =='4'.toString "> and mj.in_or_out in (25,26)</if> <if test="inOut != null and inOut != '' and inOut =='4'.toString "> and mj.in_or_out in (25,26)</if>
<if test = "inOutIds !=null and inOutIds.size() > 0">
and mj.in_or_out in
<foreach item="item" index="index" collection="inOutIds" separator="," open="(" close=")">
#{item}
</foreach>
</if>
<if test="params.warehouseDataScope != null and params.warehouseDataScope !=''"> <if test="params.warehouseDataScope != null and params.warehouseDataScope !=''">
${params.warehouseDataScope} ${params.warehouseDataScope}
</if> </if>

View File

@@ -440,15 +440,19 @@ export default {
//手动作废 //手动作废
manualInvalidation(data).then(response => { manualInvalidation(data).then(response => {
this.$modal.msgSuccess("操作成功"); this.$modal.msgSuccess("操作成功");
getList(); this.getList();
}) })
}else if (row.type === 'completed'){ }else if (row.type === 'completed'){
//手动完成 //手动完成
manualCompleted(data).then(response => { manualCompleted(data).then(response => {
this.$modal.msgSuccess("操作成功"); this.$modal.msgSuccess("操作成功");
getList(); this.getList();
}) })
} }
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {