opt: 任务完成取消逻辑

This commit is contained in:
2025-08-07 16:53:50 +08:00
parent 3e55f8b6aa
commit e46e4193a2
11 changed files with 104 additions and 15 deletions

View File

@@ -1,16 +1,16 @@
package org.nl; package org.nl;
import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.annotation.SaIgnore;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
import com.github.pagehelper.PageInterceptor;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.nl.config.SpringContextHolder; import org.nl.config.SpringContextHolder;
import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner; import org.springframework.boot.ApplicationRunner;
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.quartz.QuartzAutoConfiguration;
import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@@ -31,6 +31,10 @@ public class AppRun implements ApplicationRunner {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(AppRun.class, args); SpringApplication.run(AppRun.class, args);
} }
@Bean
ConfigurationCustomizer mybatisConfigurationCustomizer() {
return configuration -> configuration.addInterceptor(new PageInterceptor());
}
@Bean @Bean
public SpringContextHolder springContextHolder() { public SpringContextHolder springContextHolder() {

View File

@@ -180,7 +180,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
} }
GroupPlate groupPlate = iMdPbGroupplateService.getOne(new LambdaQueryWrapper<GroupPlate>() GroupPlate groupPlate = iMdPbGroupplateService.getOne(new LambdaQueryWrapper<GroupPlate>()
.eq(GroupPlate::getStoragevehicle_code, outStructAttr.getStoragevehicle_code()) .eq(GroupPlate::getStoragevehicle_code, outStructAttr.getStoragevehicle_code())
.eq(GroupPlate::getStatus, "01")); .eq(GroupPlate::getStatus, "02"));
if (ObjectUtil.isEmpty(groupPlate)) { if (ObjectUtil.isEmpty(groupPlate)) {
throw new BadRequestException("托盘[" + outStructAttr.getStoragevehicle_code() + "]组盘信息不存在!"); throw new BadRequestException("托盘[" + outStructAttr.getStoragevehicle_code() + "]组盘信息不存在!");
} }
@@ -300,7 +300,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
} }
GroupPlate groupPlate = iMdPbGroupplateService.getOne(new LambdaQueryWrapper<GroupPlate>() GroupPlate groupPlate = iMdPbGroupplateService.getOne(new LambdaQueryWrapper<GroupPlate>()
.eq(GroupPlate::getStoragevehicle_code, outStructAttr.getStoragevehicle_code()) .eq(GroupPlate::getStoragevehicle_code, outStructAttr.getStoragevehicle_code())
.eq(GroupPlate::getStatus, "01")); .eq(GroupPlate::getStatus, "02"));
if (ObjectUtil.isEmpty(groupPlate)) { if (ObjectUtil.isEmpty(groupPlate)) {
throw new BadRequestException("托盘[" + outStructAttr.getStoragevehicle_code() + "]组盘信息不存在!"); throw new BadRequestException("托盘[" + outStructAttr.getStoragevehicle_code() + "]组盘信息不存在!");
} }

View File

@@ -172,6 +172,9 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
List<PmFormDataDto> pmFormDataList = this.baseMapper.queryTree2(query); List<PmFormDataDto> pmFormDataList = this.baseMapper.queryTree2(query);
com.baomidou.mybatisplus.extension.plugins.pagination.Page<PmFormDataDto> dtoPage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPages(), page.getPageSize(), page.getTotal()); com.baomidou.mybatisplus.extension.plugins.pagination.Page<PmFormDataDto> dtoPage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPages(), page.getPageSize(), page.getTotal());
dtoPage.setRecords(pmFormDataList); dtoPage.setRecords(pmFormDataList);
dtoPage.setTotal(page.getTotal());
dtoPage.setSize(page.getPageSize());
dtoPage.setCurrent(pageQuery.getPage());
return dtoPage; return dtoPage;
} }

View File

@@ -28,7 +28,8 @@ public enum StatusEnum {
* 出入库单据类型退货出库 * 出入库单据类型退货出库
*/ */
IOBILL_TYPE_IN(ForkMap.of("生产入库", "10", "inStorageTask", "调拨入库", "11", "inStorageTask", "退货入库", "12", "inStorageTask", "拣选回库", IOBILL_TYPE_IN(ForkMap.of("生产入库", "10", "inStorageTask", "调拨入库", "11", "inStorageTask", "退货入库", "12", "inStorageTask", "拣选回库",
"13", "inStorageTask", "盘点入库", "14", "inStorageTask", "托盘入库", "30", "inStorageTask", "二楼CTU入库", "80", "inStorageTask","来料入库", "1013", "inStorageTask")), "13", "inStorageTask", "盘点入库", "14", "inStorageTask", "托盘入库", "30", "inStorageTask", "二楼CTU入库", "80", "inStorageTask","来料入库",
"1013", "inStorageTask", "解包退回", "0012", "inStorageTask" , "解包入库", "0011", "inStorageTask")),
IOBILL_TYPE_OUT(ForkMap.of("销售出库", "20", "outStorageTask", "生产出库", "21", "outStorageTask", "调拨出库", "22", "outStorageTask", IOBILL_TYPE_OUT(ForkMap.of("销售出库", "20", "outStorageTask", "生产出库", "21", "outStorageTask", "调拨出库", "22", "outStorageTask",
"拣选出库", "23", "conveyorOutStorageTask", "盘点出库", "24", "outStorageTask", "出库拣选", "25", "toPickPlatformTask", "拣选出库", "23", "conveyorOutStorageTask", "盘点出库", "24", "outStorageTask", "出库拣选", "25", "toPickPlatformTask",
"退货出库", "26", "outStorageTask", "托盘出库", "40", "outStorageTask", "二楼CTU出库", "81", "inStorageTask", "二楼出库AGV搬运", "退货出库", "26", "outStorageTask", "托盘出库", "40", "outStorageTask", "二楼CTU出库", "81", "inStorageTask", "二楼出库AGV搬运",

View File

@@ -6,7 +6,9 @@ import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.wms.sch_manage.enums.TaskFinishedTypeEnum; import org.nl.wms.sch_manage.enums.TaskFinishedTypeEnum;
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
/** /**
* @Author: lyd * @Author: lyd
@@ -51,4 +53,55 @@ public class TaskUtils {
setUpdateByPC(taskObj); setUpdateByPC(taskObj);
} }
} }
/**
* 点位修改更新信息
**/
public static void setUpdateByAcs(SchBasePoint pointObj) {
pointObj.setUpdate_id(GeneralDefinition.ACS_ID);
pointObj.setUpdate_name(GeneralDefinition.ACS_NAME);
pointObj.setUpdate_time(DateUtil.now());
}
/**
* 点位修改更新信息
**/
public static void setUpdateByPC(SchBasePoint pointObj) {
pointObj.setUpdate_id(SecurityUtils.getCurrentUserId());
pointObj.setUpdate_name(SecurityUtils.getCurrentNickName());
pointObj.setUpdate_time(DateUtil.now());
}
public static void setUpdateByType(SchBasePoint pointObj, TaskFinishedTypeEnum taskFinishedType) {
if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) {
setUpdateByAcs(pointObj);
} else {
setUpdateByPC(pointObj);
}
}
/**
* 组盘修改更新信息
**/
public static void setUpdateByAcs(GroupPlate groupPlate) {
groupPlate.setUpdate_id(GeneralDefinition.ACS_ID);
groupPlate.setUpdate_name(GeneralDefinition.ACS_NAME);
groupPlate.setUpdate_time(DateUtil.now());
}
/**
* 组盘修改更新信息
**/
public static void setUpdateByPC(GroupPlate groupPlate) {
groupPlate.setUpdate_id(SecurityUtils.getCurrentUserId());
groupPlate.setUpdate_name(SecurityUtils.getCurrentNickName());
groupPlate.setUpdate_time(DateUtil.now());
}
public static void setUpdateByType(GroupPlate groupPlate, TaskFinishedTypeEnum taskFinishedType) {
if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) {
setUpdateByAcs(groupPlate);
} else {
setUpdateByPC(groupPlate);
}
}
} }

View File

@@ -10,8 +10,10 @@ import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.wms.sch_manage.enums.TaskFinishedTypeEnum; import org.nl.wms.sch_manage.enums.TaskFinishedTypeEnum;
import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBasePointService;
import org.nl.wms.sch_manage.service.ISchBaseTaskService; import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.ISchBaseTaskconfigService; import org.nl.wms.sch_manage.service.ISchBaseTaskconfigService;
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.dao.SchBaseTaskconfig; import org.nl.wms.sch_manage.service.dao.SchBaseTaskconfig;
import org.nl.wms.sch_manage.service.util.AbstractTask; import org.nl.wms.sch_manage.service.util.AbstractTask;
@@ -21,9 +23,12 @@ import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService; import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis; import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMapper; import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMapper;
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Arrays;
/** /**
* 解包退料AGV任务 * 解包退料AGV任务
@@ -41,6 +46,10 @@ public class JbBackAgvTask extends AbstractTask {
private IInBillService inBillService; private IInBillService inBillService;
@Resource @Resource
private IOStorInvDisMapper ioStorInvDisMapper; private IOStorInvDisMapper ioStorInvDisMapper;
@Resource
private ISchBasePointService pointService;
@Resource
private IMdPbGroupplateService groupplateService;
@Override @Override
public String create(JSONObject json) { public String create(JSONObject json) {
// 获取任务配置的优先级 // 获取任务配置的优先级
@@ -147,6 +156,16 @@ public class JbBackAgvTask extends AbstractTask {
TaskUtils.setUpdateByType(taskObj, taskFinishedType); TaskUtils.setUpdateByType(taskObj, taskFinishedType);
taskService.updateById(taskObj); taskService.updateById(taskObj);
inBillService.taskFinish(taskObj); inBillService.taskFinish(taskObj);
// 点位绑定
SchBasePoint emptyPoint = pointService.getById(taskObj.getPoint_code2());
SchBasePoint materialPoint = pointService.getById(taskObj.getPoint_code3());
emptyPoint.setPoint_status("2");
emptyPoint.setVehicle_code(taskObj.getVehicle_code2());
TaskUtils.setUpdateByType(emptyPoint, taskFinishedType);
materialPoint.setPoint_status("1");
materialPoint.setVehicle_code("");
TaskUtils.setUpdateByType(materialPoint, taskFinishedType);
pointService.updateBatchById(Arrays.asList(emptyPoint, materialPoint));
} }
private void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { private void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
@@ -163,6 +182,13 @@ public class JbBackAgvTask extends AbstractTask {
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("未生成")) .set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("未生成"))
.eq(IOStorInvDis::getTask_id,taskObj.getTask_id()) .eq(IOStorInvDis::getTask_id,taskObj.getTask_id())
); );
// 组盘状态改为组盘
JSONObject request = JSONObject.parseObject(taskObj.getRequest_param());
String groupId = request.getString("group_id");
GroupPlate group = groupplateService.getById(groupId);
group.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("组盘"));
TaskUtils.setUpdateByType(group, taskFinishedType);
groupplateService.getById(group);
} }
@Override @Override

View File

@@ -660,7 +660,7 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
} }
IOStorInv invObj = this.getById(map.get("iostorinv_id")); IOStorInv invObj = this.getById(map.get("iostorinv_id"));
String task_id = ""; String task_id = "";
if ("0011".equals(invObj.getBill_type())) { if (StatusEnum.IOBILL_TYPE_IN.code("解包入库").equals(invObj.getBill_type())) {
String structCode = map.get("struct_code"); String structCode = map.get("struct_code");
if (ObjectUtil.isEmpty(structCode)) { if (ObjectUtil.isEmpty(structCode)) {
throw new BadRequestException("仓位未分配!"); throw new BadRequestException("仓位未分配!");
@@ -744,12 +744,13 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
JSONObject requestTaskParam = new JSONObject(); JSONObject requestTaskParam = new JSONObject();
requestTaskParam.put("tasks", jsonObjects); requestTaskParam.put("tasks", jsonObjects);
task_id = jbDownAgvTask.create(requestTaskParam); task_id = jbDownAgvTask.create(requestTaskParam);
} else if ("0012".equals(invObj.getBill_type())) { } else if (StatusEnum.IOBILL_TYPE_IN.code("解包退回").equals(invObj.getBill_type())) {
// 解包退料入库 // 解包退料入库
String structCode = map.get("struct_code"); String structCode = map.get("struct_code");
if (ObjectUtil.isEmpty(structCode)) { if (ObjectUtil.isEmpty(structCode)) {
throw new BadRequestException("仓位未分配!"); throw new BadRequestException("仓位未分配!");
} }
Structattr structattr = iStructattrService.findByCode(structCode);
// 获取组盘信息 // 获取组盘信息
GroupPlate groupPlate = mdPbGroupplateService.getOne(new LambdaQueryWrapper<GroupPlate>() GroupPlate groupPlate = mdPbGroupplateService.getOne(new LambdaQueryWrapper<GroupPlate>()
.eq(GroupPlate::getStoragevehicle_code, ioStorInvDis.getStoragevehicle_code()) .eq(GroupPlate::getStoragevehicle_code, ioStorInvDis.getStoragevehicle_code())
@@ -761,7 +762,7 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
SchBasePoint fullPoint = pointService.getNotTaskByRegionAndType(parentPoint.getRegion_code(), "3"); SchBasePoint fullPoint = pointService.getNotTaskByRegionAndType(parentPoint.getRegion_code(), "3");
SchBasePoint emptyPoint = pointService.getNotTaskByRegionAndType(parentPoint.getRegion_code(), "4"); SchBasePoint emptyPoint = pointService.getNotTaskByRegionAndType(parentPoint.getRegion_code(), "4");
JSONObject task = new JSONObject(); JSONObject task = new JSONObject();
task.put("task_type", "JbDownAgvTask"); task.put("task_type", "JbBackAgvTask");
task.put("group_id", groupPlate.getGroup_id()); task.put("group_id", groupPlate.getGroup_id());
task.put("workorder_id", whereJson.get("workorder_id")); task.put("workorder_id", whereJson.get("workorder_id"));
task.put("TaskCode", CodeUtil.getNewCode("TASK_CODE")); task.put("TaskCode", CodeUtil.getNewCode("TASK_CODE"));
@@ -770,8 +771,8 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
task.put("point_code3", fullPoint.getPoint_code()); task.put("point_code3", fullPoint.getPoint_code());
task.put("point_code4", structCode); task.put("point_code4", structCode);
task.put("vehicle_code", fullPoint.getVehicle_code()); task.put("vehicle_code", fullPoint.getVehicle_code());
task.put("vehicle_code2", emptyPoint.getStoragevehicle_code()); task.put("vehicle_code2", structattr.getStoragevehicle_code());
jbBackAgvTask.create(task); task_id = jbBackAgvTask.create(task);
} else if (StatusEnum.IOBILL_TYPE_IN.code("来料入库").equals(invObj.getBill_type())) { } else if (StatusEnum.IOBILL_TYPE_IN.code("来料入库").equals(invObj.getBill_type())) {
// 获取组盘信息 // 获取组盘信息
GroupPlate groupPlate = mdPbGroupplateService.getOne(new LambdaQueryWrapper<GroupPlate>() GroupPlate groupPlate = mdPbGroupplateService.getOne(new LambdaQueryWrapper<GroupPlate>()

View File

@@ -2,7 +2,7 @@ export default {
'lang': 'English', 'lang': 'English',
// 平台 // 平台
'platform': { 'platform': {
'title': 'NOBLELIFT Platform', 'title': 'LMS Platform',
'tip1': 'The user name cannot be empty', 'tip1': 'The user name cannot be empty',
'tip2': 'The password cannot be empty', 'tip2': 'The password cannot be empty',
'tip3': 'The verification code cannot be empty' 'tip3': 'The verification code cannot be empty'

View File

@@ -2,7 +2,7 @@ export default {
'lang': 'in', 'lang': 'in',
// 平台 // 平台
'platform': { 'platform': {
'title': 'NOBLELIFT Platform', 'title': 'LMS Platform',
'tip1': 'Nama pengguna tidak dapat kosong', 'tip1': 'Nama pengguna tidak dapat kosong',
'tip2': 'Kata sandi tidak dapat kosong', 'tip2': 'Kata sandi tidak dapat kosong',
'tip3': 'Kode verifikasi tidak dapat kosong' 'tip3': 'Kode verifikasi tidak dapat kosong'

View File

@@ -2,7 +2,7 @@ export default {
'lang': 'zh', 'lang': 'zh',
// 平台 // 平台
'platform': { 'platform': {
'title': 'WMS仓储系统', 'title': '株洲中钨LMS系统',
'tip1': '用户名不能为空', 'tip1': '用户名不能为空',
'tip2': '密码不能为空', 'tip2': '密码不能为空',
'tip3': '验证码不能为空' 'tip3': '验证码不能为空'

View File

@@ -83,12 +83,13 @@
<el-select <el-select
v-model="form.point_code" v-model="form.point_code"
clearable clearable
filterable
placeholder="请选择" placeholder="请选择"
class="filter-item" class="filter-item"
style="width: 200px;" style="width: 200px;"
> >
<el-option <el-option
v-for="item in pointlist" v-for="item in pointList"
:key="item.point_code" :key="item.point_code"
:label="item.point_name" :label="item.point_name"
:value="item.point_code" :value="item.point_code"
@@ -242,7 +243,7 @@ export default {
tableMater: [] tableMater: []
}, },
storlist: [], storlist: [],
pointlist: [], pointList: [],
rules: {} rules: {}
} }
}, },