From 18c973dd8ca2e586acf6d55ba9457c5be9f6576f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=97=AD=E6=98=8E=5C73939?= <739390650@QQ.COM> Date: Tue, 11 Nov 2025 10:28:28 +0800 Subject: [PATCH] =?UTF-8?q?opt:=E8=B6=8A=E5=8D=97=E5=AF=8C=E4=BD=B3?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AcsToWmsController.java | 7 + .../ext_manage/service/AcsToWmsService.java | 2 + .../service/impl/AcsToWmsServiceImpl.java | 118 ++++++++++- .../service/util/tasks/AcsErrorTask.java | 173 ++++++++++++++++ .../service/util/tasks/MovePointTask.java | 189 ++++++++++++++++++ .../service/util/tasks/PdaPointTask.java | 18 +- .../warehouse_manage/enums/IOSConstant.java | 6 + .../src/main/resources/language/i18n/zh.js | 114 ++++++++++- 8 files changed, 602 insertions(+), 25 deletions(-) create mode 100644 nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/AcsErrorTask.java create mode 100644 nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/MovePointTask.java diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/controller/AcsToWmsController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/controller/AcsToWmsController.java index c0fa19d..6cdc9be 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/controller/AcsToWmsController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/controller/AcsToWmsController.java @@ -43,6 +43,13 @@ public class AcsToWmsController { return new ResponseEntity<>(acsToWmsService.acsApply(param), HttpStatus.OK); } + @PostMapping("/applyInBillError") + @Log("ACS向LMS入库异常任务") + @SaIgnore + public ResponseEntity applyInBillError(@RequestBody JSONObject param) { + return new ResponseEntity<>(acsToWmsService.applyInBillError(param), HttpStatus.OK); + } + @PostMapping("/getExecutingTask") @Log("ACS向LMS查询正在执行的任务数据") @SaIgnore diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/AcsToWmsService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/AcsToWmsService.java index 1ac7a0a..6fec374 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/AcsToWmsService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/AcsToWmsService.java @@ -26,5 +26,7 @@ public interface AcsToWmsService { /** ACS请求接口 */ Map acsApply(JSONObject param); + Map applyInBillError(JSONObject param); + Map getExecutingTask(); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/AcsToWmsServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/AcsToWmsServiceImpl.java index 3def7e6..88ef434 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/AcsToWmsServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/AcsToWmsServiceImpl.java @@ -5,22 +5,28 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.nl.common.exception.BadRequestException; +import org.nl.language.LangBehavior; +import org.nl.wms.basedata_manage.service.IStructattrService; +import org.nl.wms.basedata_manage.service.dao.Structattr; import org.nl.wms.ext_manage.enums.ResultAcsStatus; import org.nl.wms.ext_manage.service.AcsToWmsService; import org.nl.wms.pm_manage.service.dao.PmFormData; import org.nl.wms.pm_manage.service.dao.mapper.PmFormDataMapper; +import org.nl.wms.sch_manage.enums.TaskEnum; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBaseTaskService; import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.sch_manage.service.util.AbstractTask; import org.nl.wms.sch_manage.service.util.TaskFactory; +import org.nl.wms.sch_manage.service.util.tasks.AcsErrorTask; +import org.nl.wms.warehouse_manage.enums.IOSConstant; import org.nl.wms.warehouse_manage.enums.IOSEnum; import org.nl.wms.warehouse_manage.service.IRawAssistIStorService; -import org.nl.wms.warehouse_manage.service.dao.GroupPlate; -import org.nl.wms.warehouse_manage.service.dao.mapper.MdPbGroupplateMapper; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; @@ -29,7 +35,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -51,6 +56,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { */ @Autowired private RedissonClient redissonClient; + + @Resource + private IStructattrService iStructattrService; /* * 任务服务 */ @@ -62,6 +70,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Resource private PmFormDataMapper pmFormDataMapper; + + @Resource + private AcsErrorTask acsErrorTask; /** * 任务工厂服务 */ @@ -157,6 +168,23 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return result; } + @Override + public Map applyInBillError(JSONObject param) { + JSONObject result = new JSONObject(); + param.put("user_id", "3"); + param.put("person_name","ACS"); + try { + this.applyInBillErrorTask(param); + result.put("status", HttpStatus.OK.value()); + result.put("message", "申请任务成功!"); + } catch (Exception e) { + log.error("ACS请求LMS出现错误: {}{}", e,e.getMessage()); + result.put("status", HttpStatus.BAD_REQUEST.value()); + result.put("message", "申请任务失败!"); + } + return result; + } + @Override public Map getExecutingTask() { //查询正在执行的任务 @@ -211,4 +239,88 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { iRawAssistIStorService.AutoCreateBill(param); } + /** + * 异常流程申请入库任务 + * + * @param param + * @throws BadRequestException + */ + public void applyInBillErrorTask(JSONObject param) throws BadRequestException { + log.info("ACS请求异常流程申请入库任务参数: {}", param); + //起点 + String vehicle_code = param.getString("vehicle_code");//子托盘 + if(ObjectUtil.isNotEmpty(vehicle_code)) { + vehicle_code = vehicle_code.trim(); + } + //子托盘非空 + if(ObjectUtil.isNotEmpty(vehicle_code)) { + Assert.isFalse(vehicle_code.contains(";"), + "该任务申请托盘["+vehicle_code+"]存在串读,无法申请任务!"); + }else{ + Assert.isFalse(ObjectUtil.isEmpty(vehicle_code), + "该任务申请托盘["+vehicle_code+"]为空,无法申请任务!"); + } + //判断该子托盘是否存在未完成任务 + Integer sub_tray_lists = iSchBaseTaskService.findUnFinishTasksBySub_tray(vehicle_code); + Assert.isFalse(sub_tray_lists>0, + "该任务申请托盘["+vehicle_code+"]已存在未完成的任务,无法申请任务!"); + + //todo 仅生成任务,不生成单据 + // 校验数据 + String start_point_code = param.getString("device_code"); + + // 校验起点 + Structattr start_point = iStructattrService.getByCode(start_point_code); + if (ObjectUtil.isEmpty(start_point)) { + throw new BadRequestException(LangBehavior.language("pda_manage.start_point_not_exist")); + } + + //计算终点点位 + List end_point_code_list = iStructattrService.list(new LambdaUpdateWrapper() + .eq(Structattr::getSect_code,"FJError") + .eq(Structattr::getIs_used, 1) + .isNull(Structattr::getStoragevehicle_code) + .eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .orderByDesc(Structattr::getUpdate_time)); + + if(CollectionUtils.isEmpty(end_point_code_list)){ + throw new BadRequestException(LangBehavior.language("pda_manage.end_point_not_exist")); + } + + + // 校验终点 + Structattr end_point = end_point_code_list.get(0); + + //查询是否有执行中的点位 + //找到空点位正在执行的任务 + List taskingSchBaseTaskList = iSchBaseTaskService.list(new LambdaQueryWrapper() + .eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO) + .and(wp -> wp + .eq(SchBaseTask::getPoint_code1, end_point.getStruct_code()) + .or() + .eq(SchBaseTask::getPoint_code2, end_point.getStruct_code()) + .or() + .eq(SchBaseTask::getPoint_code1, start_point.getStruct_code()) + .or() + .eq(SchBaseTask::getPoint_code2, start_point.getStruct_code()) + ) + .le(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode())); + + if (CollectionUtils.isNotEmpty(taskingSchBaseTaskList)) { + throw new BadRequestException(LangBehavior.language("pda_manage.ongoing_task_at_point")); + } + start_point.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁")); + iStructattrService.updateById(start_point); + end_point.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁")); + iStructattrService.updateById(end_point); + // 创建任务 + JSONObject task = new JSONObject(); + task.put("config_code", IOSConstant.ACS_ERROR_TASK); + task.put("point_code1",start_point.getStruct_code()); + task.put("point_code2", end_point.getStruct_code()); + task.put("vehicle_code", vehicle_code); + task.put("Priority", TaskEnum.ACS_PRIORITY.code("1")); + acsErrorTask.create(task); + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/AcsErrorTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/AcsErrorTask.java new file mode 100644 index 0000000..1e87b79 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/AcsErrorTask.java @@ -0,0 +1,173 @@ +package org.nl.wms.sch_manage.service.util.tasks; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.IdUtil; +import org.nl.language.LangBehavior; +import org.nl.wms.basedata_manage.service.IStructattrService; +import org.nl.wms.basedata_manage.service.dao.Structattr; +import org.nl.wms.sch_manage.enums.TaskStatus; +import org.nl.wms.sch_manage.service.ISchBaseTaskService; +import org.nl.wms.sch_manage.service.dao.SchBaseTask; +import org.nl.wms.sch_manage.service.util.AbstractTask; +import org.nl.wms.sch_manage.service.util.AcsTaskDto; +import org.nl.wms.sch_manage.service.util.TaskType; +import org.nl.wms.warehouse_manage.enums.IOSEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * @Author: Liuxy + * @Description: 入库异常情况流程 + * @Date: 2025/6/6 + */ +@Component(value = "AcsErrorTask") +@TaskType("AcsErrorTask") +public class AcsErrorTask extends AbstractTask { + + /** + * 任务服务类 + */ + @Autowired + private ISchBaseTaskService taskService; + + /** + * 仓位服务 + */ + @Autowired + private IStructattrService iStructattrService; + + @Override + public String create(JSONObject json) { + SchBaseTask task = new SchBaseTask(); + task.setTask_id(IdUtil.getStringId()); + task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); + task.setTask_status(TaskStatus.CREATE.getCode()); + task.setConfig_code(json.getString("config_code")); + task.setPoint_code1(json.getString("point_code1")); + task.setPoint_code2(json.getString("point_code2")); + task.setVehicle_code(json.getString("vehicle_code")); + task.setRequest_param(json.toString()); + task.setPriority(json.getString("Priority")); + task.setCreate_id("ACS"); + task.setCreate_name("ACS"); + task.setCreate_time(DateUtil.now()); + taskService.save(task); + return task.getTask_id(); + } + + @Override + public AcsTaskDto sendAcsParam(String taskId) { + SchBaseTask taskDao = taskService.getById(taskId); + + // 组织下发给acs的数据 + AcsTaskDto acsTaskDto = new AcsTaskDto(); + acsTaskDto.setExt_task_uuid(taskDao.getTask_id()); + acsTaskDto.setTask_code(taskDao.getTask_code()); + acsTaskDto.setStart_device_code(taskDao.getPoint_code1()); + acsTaskDto.setNext_device_code(taskDao.getPoint_code2()); + acsTaskDto.setPriority(taskDao.getPriority()); + acsTaskDto.setTask_type("1"); + acsTaskDto.setVehicle_code(taskDao.getVehicle_code()); + + return acsTaskDto; + } + + @Override + protected void updateStatus(String task_code, TaskStatus status) { + // 校验任务 + SchBaseTask taskObj = taskService.getByCode(task_code); + if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { + throw new BadRequestException(LangBehavior.language("sch_manage.task_already_completed")); + } + if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { + throw new BadRequestException(LangBehavior.language("sch_manage.task_already_cancelled")); + } + // 根据传来的类型去对任务进行操作 + if (status.equals(TaskStatus.EXECUTING)) { + // 更新明细状态 + taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); + taskObj.setRemark("执行中"); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { + this.finishTask(taskObj); + } + if (status.equals(TaskStatus.CANCELED)) { + this.cancelTask(taskObj); + } + } + + @Override + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException(LangBehavior.language("sch_manage.task_not_exists")); + } + this.finishTask(taskObj); + } + + @Override + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException(LangBehavior.language("sch_manage.task_not_exists")); + } + if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) { + throw new BadRequestException(LangBehavior.language("sch_manage.only_cancel_generating_tasks")); + } + this.cancelTask(taskObj); + } + + @Override + public void backMes(String task_code) { + } + + @Transactional + public void finishTask(SchBaseTask taskObj) { + // 更新起点 + iStructattrService.update( + new UpdateWrapper().lambda() + .eq(Structattr::getStruct_code, taskObj.getPoint_code1()) + .set(Structattr::getStoragevehicle_code, null) + .set(Structattr::getTask_code, null) + .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + ); + // 更新终点 + iStructattrService.update( + new UpdateWrapper().lambda() + .eq(Structattr::getStruct_code, taskObj.getPoint_code2()) + .set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code()) + .set(Structattr::getTask_code, null) + .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + ); + // 更新任务 + taskObj.setRemark("已完成"); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskService.updateById(taskObj); + } + + @Transactional + public void cancelTask(SchBaseTask taskObj) { + // 更新起点 + iStructattrService.update( + new UpdateWrapper().lambda() + .eq(Structattr::getStruct_code, taskObj.getPoint_code1()) + .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + ); + iStructattrService.update( + new UpdateWrapper().lambda() + .eq(Structattr::getStruct_code, taskObj.getPoint_code2()) + .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + ); + // 更新任务 + taskObj.setRemark("已取消"); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskService.updateById(taskObj); + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/MovePointTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/MovePointTask.java new file mode 100644 index 0000000..40388c2 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/MovePointTask.java @@ -0,0 +1,189 @@ +package org.nl.wms.sch_manage.service.util.tasks; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.language.LangBehavior; +import org.nl.wms.basedata_manage.service.IStructattrService; +import org.nl.wms.basedata_manage.service.dao.Structattr; +import org.nl.wms.sch_manage.enums.TaskStatus; +import org.nl.wms.sch_manage.service.ISchBaseTaskService; +import org.nl.wms.sch_manage.service.dao.SchBaseTask; +import org.nl.wms.sch_manage.service.util.AbstractTask; +import org.nl.wms.sch_manage.service.util.AcsTaskDto; +import org.nl.wms.sch_manage.service.util.TaskType; +import org.nl.wms.warehouse_manage.enums.IOSEnum; +import org.nl.wms.warehouse_manage.service.IStIvtMoveinvService; +import org.nl.wms.warehouse_manage.service.IStIvtMoveinvdtlService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * @Author: zhengxuming + * @Description: 移库任务类无单据 + * @Date: 2025年11月11日09:38:11 + */ +@Component(value = "MovePointTask") +@TaskType("MovePointTask") +public class MovePointTask extends AbstractTask { + + /** + * 任务服务类 + */ + @Autowired + private ISchBaseTaskService taskService; + + /** + * 移库主表服务类 + */ + @Autowired + private IStIvtMoveinvService iStIvtMoveinvService; + + /** + * 仓位服务 + */ + @Autowired + private IStructattrService iStructattrService; + + /** + * 移库明细服务类 + */ + @Autowired + private IStIvtMoveinvdtlService iStIvtMoveinvdtlService; + + @Override + public String create(JSONObject json) { + SchBaseTask task = new SchBaseTask(); + task.setTask_id(IdUtil.getStringId()); + task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); + task.setTask_status(TaskStatus.CREATE.getCode()); + task.setConfig_code(json.getString("config_code")); + task.setPoint_code1(json.getString("point_code1")); + task.setPoint_code2(json.getString("point_code2")); + task.setVehicle_code(json.getString("vehicle_code")); + task.setRequest_param(json.toString()); + task.setPriority(json.getString("Priority")); + task.setCreate_id(SecurityUtils.getCurrentUserId()); + task.setCreate_name(SecurityUtils.getCurrentNickName()); + task.setCreate_time(DateUtil.now()); + taskService.save(task); + return task.getTask_id(); + } + + @Override + public AcsTaskDto sendAcsParam(String taskId) { + SchBaseTask taskDao = taskService.getById(taskId); + + // 组织下发给acs的数据 + AcsTaskDto acsTaskDto = new AcsTaskDto(); + acsTaskDto.setExt_task_uuid(taskDao.getTask_id()); + acsTaskDto.setTask_code(taskDao.getTask_code()); + acsTaskDto.setStart_device_code(taskDao.getPoint_code1()); + acsTaskDto.setNext_device_code(taskDao.getPoint_code2()); + acsTaskDto.setPriority(taskDao.getPriority()); + acsTaskDto.setTask_type("1"); + acsTaskDto.setVehicle_code(taskDao.getVehicle_code()); + + return acsTaskDto; + } + + @Override + protected void updateStatus(String task_code, TaskStatus status) { + // 校验任务 + SchBaseTask taskObj = taskService.getByCode(task_code); + if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { + throw new BadRequestException(LangBehavior.language("sch_manage.task_already_completed")); + } + if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { + throw new BadRequestException(LangBehavior.language("sch_manage.task_already_cancelled")); + } + // 根据传来的类型去对任务进行操作 + if (status.equals(TaskStatus.EXECUTING)) { + // 更新明细状态 + iStIvtMoveinvService.executing(taskObj); + taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); + taskObj.setRemark("执行中"); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { + this.finishTask(taskObj); + } + if (status.equals(TaskStatus.CANCELED)) { + this.cancelTask(taskObj); + } + } + + @Override + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException(LangBehavior.language("sch_manage.task_not_exists")); + } + this.finishTask(taskObj); + } + + @Override + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException(LangBehavior.language("sch_manage.task_not_exists")); + } + if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) { + throw new BadRequestException(LangBehavior.language("sch_manage.only_cancel_generating_tasks")); + } + this.cancelTask(taskObj); + } + + @Override + public void backMes(String task_code) { + } + + @Transactional + public void finishTask(SchBaseTask taskObj) { + // 更新起点 + iStructattrService.update( + new UpdateWrapper().lambda() + .eq(Structattr::getStruct_code, taskObj.getPoint_code1()) + .set(Structattr::getStoragevehicle_code, null) + .set(Structattr::getTask_code, null) + .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + ); + // 更新终点 + iStructattrService.update( + new UpdateWrapper().lambda() + .eq(Structattr::getStruct_code, taskObj.getPoint_code2()) + .set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code()) + .set(Structattr::getTask_code, null) + .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + ); + // 更新任务 + taskObj.setRemark("已完成"); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskService.updateById(taskObj); + } + + @Transactional + public void cancelTask(SchBaseTask taskObj) { + // 更新起点 + iStructattrService.update( + new UpdateWrapper().lambda() + .eq(Structattr::getStruct_code, taskObj.getPoint_code1()) + .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + ); + iStructattrService.update( + new UpdateWrapper().lambda() + .eq(Structattr::getStruct_code, taskObj.getPoint_code2()) + .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + ); + // 更新任务 + taskObj.setRemark("已取消"); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskService.updateById(taskObj); + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PdaPointTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PdaPointTask.java index 303d2e8..816ae9b 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PdaPointTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PdaPointTask.java @@ -3,22 +3,18 @@ package org.nl.wms.sch_manage.service.util.tasks; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import org.nl.common.exception.BadRequestException; -import org.nl.config.language.LangProcess; import org.nl.common.utils.CodeUtil; -import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; import org.nl.language.LangBehavior; import org.nl.wms.basedata_manage.service.IStructattrService; -import org.nl.wms.basedata_manage.service.dao.Structattr; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBaseTaskService; import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.sch_manage.service.util.AbstractTask; import org.nl.wms.sch_manage.service.util.AcsTaskDto; import org.nl.wms.sch_manage.service.util.TaskType; -import org.nl.wms.warehouse_manage.enums.IOSEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -149,9 +145,9 @@ public class PdaPointTask extends AbstractTask { // .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) // ); // // 更新任务 - // taskObj.setRemark("已完成"); - // taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - // taskService.updateById(taskObj); + taskObj.setRemark("已完成"); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskService.updateById(taskObj); } @Transactional @@ -168,8 +164,8 @@ public class PdaPointTask extends AbstractTask { // .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) // ); // // 更新任务 - // taskObj.setRemark("已取消"); - // taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - // taskService.updateById(taskObj); + taskObj.setRemark("已取消"); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskService.updateById(taskObj); } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/enums/IOSConstant.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/enums/IOSConstant.java index 02e606c..36cef80 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/enums/IOSConstant.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/enums/IOSConstant.java @@ -67,6 +67,12 @@ public class IOSConstant { */ public final static String PDA_POINT_TASK = "PdaPointTask"; + + /** + * 手持定点任务 + */ + public final static String ACS_ERROR_TASK = "AcsErrorTask"; + /** * 空载具入库任务 */ diff --git a/nladmin-system/nlsso-server/src/main/resources/language/i18n/zh.js b/nladmin-system/nlsso-server/src/main/resources/language/i18n/zh.js index 0605267..6603e3b 100644 --- a/nladmin-system/nlsso-server/src/main/resources/language/i18n/zh.js +++ b/nladmin-system/nlsso-server/src/main/resources/language/i18n/zh.js @@ -478,6 +478,7 @@ var config = { "strategy": { "title": "策略管理", "strategy_name": "策略名称", + "class_type": "处理类型", "strategy_type": "策略类型", "system_strategy": "系统策略", "custom_strategy": "自定义策略", @@ -506,6 +507,9 @@ var config = { "confirm_close": "确定要关闭吗?" }, "sectStrategy": { + "title":"策略管理", + "sect":"库区", + "strategy":"策略", "select_sect": "请选择分区", "select_strategy_type": "请选择策略类型", "select_strategy": "请选择策略", @@ -855,6 +859,17 @@ var config = { "end_date": "结束日期" }, "inbill": { + "inventory_allocation":"入库分配", + "inventory_details":"入库明细项", + "inventory_point":"入库点", + "vehicle_material_details":"载具物料明细", + "warehouse_area":"库区", + "auto_allocate_location":"自动分配货位", + "allocate_location":"分配货位", + "cancel_allocation":"取消分配", + "set_start_point":"设置起点", + "location":"货位", + "business_type":"业务类型", "title": "入库单管理", "start_date": "开始日期", "end_date": "结束日期", @@ -913,22 +928,33 @@ var config = { "task_code": "任务号" }, "outbill": { - "title": "出库单管理", + "vehicle_material_details":"载具物料明细", + "warehouse_area":"库区", + "auto_allocate_location":"自动分配货位", + "allocate_location":"分配货位", + "cancel_allocation":"取消分配", + "set_start_point":"设置起点", + "location":"货位", + "business_type":"业务类型", + "title": "入库单管理", "start_date": "开始日期", "end_date": "结束日期", "blurry_query": "模糊查询", "bill_code": "单据号", - "warehouse": "仓库", - "bill_status": "单据状态", + "warehouse": "所属仓库", "create_time": "创建时间", + "create_mode": "生成方式", + "bill_status": "单据状态", "bill_type": "业务类型", "pcsn": "批次号", - "is_upload": "是否回传", + "allocate": "分配", + "force_confirm": "强制确认", "operation": "操作", + "warehouse_location": "库位", + "vehicle_code": "载具编码", + "material_qrcode": "物料二维码", "business_date": "业务日期", - "detail_count": "明细数", - "plan_weight": "计划重量", - "create_mode": "生成方式", + "total_weight": "总重量", "remark": "备注", "created_by": "制单人", "created_time": "制单时间", @@ -938,8 +964,36 @@ var config = { "allocated_time": "分配时间", "confirmed_by": "确认人", "confirmed_time": "确认时间", - "allocate": "分配", - "force_confirm": "强制确认", + "select_bill": "请选择一条单据", + "bill_confirm_success": "单据确认成功!", + "system_generated": "系统生成", + "add_pallet_material": "添加组盘物料", + "material_code": "物料编码", + "material_name": "物料名称", + "unit_name": "计量单位名称", + "warehouse_not_empty": "仓库不能为空", + "business_type_not_empty": "业务类型不能为空", + "business_date_not_empty": "业务日期不能为空", + "please_select_at_least_one_detail": "请至少选择一条明细", + "please_select_business_type": "请选择业务类型!", + "add_material": "物料新增", + "view_detail": "入库详情", + "stor": "仓库", + "total_qty": "总重量", + "biz_date": "业务日期", + "in_detail": "入库明细", + "weight": "重量", + "source_bill_type": "源单类型", + "source_bill_code": "源单号", + "detail_remark": "明细备注", + "operation_detail": "作业明细", + "storagevehicle_code": "载具号", + "start_position": "起始位置", + "dest_position": "目的位置", + "task_code": "任务号", + "is_upload": "是否回传", + "detail_count": "明细数", + "plan_weight": "计划重量", "outbound_success": "出库成功!", "upload_notice": "点击确认按钮后,单据进行回传!", "upload_success": "回传成功!", @@ -999,6 +1053,12 @@ var config = { "operation": "操作" }, "common": { + "status": "状态", + "unit":"单位", + "all":"全部", + "please_select": "请选择/搜索", +"serial_number":"序号", + "quantity":"数量", "blurry_search": "模糊搜索", "create_optname": "创建人", "modifier":"更新人", @@ -1025,7 +1085,7 @@ var config = { "Verify_password": "确认密码", "User_information": "用户资料", "Operation_log": "操作日志", - "action": "行为", + "action": "操作", "IP_source": "IP来源", "Browser": "浏览器", "Request_time": "请求耗时", @@ -1197,7 +1257,39 @@ var config = { "weigth": "托盘重量", "overstruct_type": "载具是否超过位置", "occupystruct_qty": "占用位置数量", - "ext_id": "外部ID" + "ext_id": "外部ID", + "operate_success": "{status}成功", + "vehicle_type": "载具类型", + "fuzzy_search": "模糊搜索", + "vehicle_code_name": "载具号、载具名称", + "vehicle_code": "载具编码", + "vehicle_name": "载具名称", + "vehicle_weight": "载具重量", + "vehicle_id": "载具标识", + "pallet_weight": "托盘重量", + "vehicle_material_info": "载具物料信息", + "material_code": "物料编码", + "material_spec": "物料规格", + "batch": "批次", + "material_qty": "物料数量", + "frozen_qty": "冻结数量", + "process_instance": "流程实例", + "vehicle_info": "载具信息", + "vehicle_weight_g": "载具重量(g)", + "print_config": "打印配置", + "paper_height_mm": "纸张高度(mm)", + "paper_width_mm": "纸张宽度(mm)", + "margin_top_mm": "页边距top(mm)", + "margin_right_mm": "页边距right(mm)", + "margin_down_mm": "页边距down(mm)", + "margin_left_mm": "页边距left(mm)", + "start_vehicle_code": "起始载具号", + "vehicle_qty": "载具数量", + "height_mm": "高度(mm)", + "width_mm": "宽度(mm)", + "depth_mm": "深度(mm)", + "confirm_change": "此操作将 \"{status}\" {code}, 是否继续?", + "is_enabled": "启用状态" }, "sch_base_point": { "point_code": "点位编码",