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

View File

@@ -180,7 +180,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
}
GroupPlate groupPlate = iMdPbGroupplateService.getOne(new LambdaQueryWrapper<GroupPlate>()
.eq(GroupPlate::getStoragevehicle_code, outStructAttr.getStoragevehicle_code())
.eq(GroupPlate::getStatus, "01"));
.eq(GroupPlate::getStatus, "02"));
if (ObjectUtil.isEmpty(groupPlate)) {
throw new BadRequestException("托盘[" + outStructAttr.getStoragevehicle_code() + "]组盘信息不存在!");
}
@@ -300,7 +300,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
}
GroupPlate groupPlate = iMdPbGroupplateService.getOne(new LambdaQueryWrapper<GroupPlate>()
.eq(GroupPlate::getStoragevehicle_code, outStructAttr.getStoragevehicle_code())
.eq(GroupPlate::getStatus, "01"));
.eq(GroupPlate::getStatus, "02"));
if (ObjectUtil.isEmpty(groupPlate)) {
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);
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.setTotal(page.getTotal());
dtoPage.setSize(page.getPageSize());
dtoPage.setCurrent(pageQuery.getPage());
return dtoPage;
}

View File

@@ -28,7 +28,8 @@ public enum StatusEnum {
* 出入库单据类型退货出库
*/
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",
"拣选出库", "23", "conveyorOutStorageTask", "盘点出库", "24", "outStorageTask", "出库拣选", "25", "toPickPlatformTask",
"退货出库", "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 org.nl.common.utils.SecurityUtils;
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.warehouse_manage.service.dao.GroupPlate;
/**
* @Author: lyd
@@ -51,4 +53,55 @@ public class TaskUtils {
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.wms.sch_manage.enums.TaskFinishedTypeEnum;
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.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.SchBaseTaskconfig;
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.dao.IOStorInvDis;
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 javax.annotation.Resource;
import java.util.Arrays;
/**
* 解包退料AGV任务
@@ -41,6 +46,10 @@ public class JbBackAgvTask extends AbstractTask {
private IInBillService inBillService;
@Resource
private IOStorInvDisMapper ioStorInvDisMapper;
@Resource
private ISchBasePointService pointService;
@Resource
private IMdPbGroupplateService groupplateService;
@Override
public String create(JSONObject json) {
// 获取任务配置的优先级
@@ -147,6 +156,16 @@ public class JbBackAgvTask extends AbstractTask {
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
taskService.updateById(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) {
@@ -163,6 +182,13 @@ public class JbBackAgvTask extends AbstractTask {
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("未生成"))
.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

View File

@@ -660,7 +660,7 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
}
IOStorInv invObj = this.getById(map.get("iostorinv_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");
if (ObjectUtil.isEmpty(structCode)) {
throw new BadRequestException("仓位未分配!");
@@ -744,12 +744,13 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
JSONObject requestTaskParam = new JSONObject();
requestTaskParam.put("tasks", jsonObjects);
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");
if (ObjectUtil.isEmpty(structCode)) {
throw new BadRequestException("仓位未分配!");
}
Structattr structattr = iStructattrService.findByCode(structCode);
// 获取组盘信息
GroupPlate groupPlate = mdPbGroupplateService.getOne(new LambdaQueryWrapper<GroupPlate>()
.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 emptyPoint = pointService.getNotTaskByRegionAndType(parentPoint.getRegion_code(), "4");
JSONObject task = new JSONObject();
task.put("task_type", "JbDownAgvTask");
task.put("task_type", "JbBackAgvTask");
task.put("group_id", groupPlate.getGroup_id());
task.put("workorder_id", whereJson.get("workorder_id"));
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_code4", structCode);
task.put("vehicle_code", fullPoint.getVehicle_code());
task.put("vehicle_code2", emptyPoint.getStoragevehicle_code());
jbBackAgvTask.create(task);
task.put("vehicle_code2", structattr.getStoragevehicle_code());
task_id = jbBackAgvTask.create(task);
} else if (StatusEnum.IOBILL_TYPE_IN.code("来料入库").equals(invObj.getBill_type())) {
// 获取组盘信息
GroupPlate groupPlate = mdPbGroupplateService.getOne(new LambdaQueryWrapper<GroupPlate>()

View File

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

View File

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

View File

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

View File

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