diff --git a/acs2/nladmin-system/src/main/java/org/nl/modules/common/utils/enums/RegionEnum.java b/acs2/nladmin-system/src/main/java/org/nl/modules/common/utils/enums/RegionEnum.java index 4cc9185..30b6b45 100644 --- a/acs2/nladmin-system/src/main/java/org/nl/modules/common/utils/enums/RegionEnum.java +++ b/acs2/nladmin-system/src/main/java/org/nl/modules/common/utils/enums/RegionEnum.java @@ -131,6 +131,9 @@ public enum RegionEnum { // 钢平台货架-->钢平台货架 GPTHJ_GPTHJ("GPTHJ", "GPTHJ","PS10","Group-003"), + // 拆盘机输送线-->空托盘 + CPJ_KPT("CPJ", "KTP","PS15","Group-004"), + ; // 起点区域 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/KCPJTZPTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/KCPJTZPTask.java new file mode 100644 index 0000000..9ecb531 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/KCPJTZPTask.java @@ -0,0 +1,154 @@ +package org.nl.wms.sch.task_manage.task.tasks.fj; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.nl.config.IdUtil; +import org.nl.wms.ext.mes.service.WmsToMesService; +import org.nl.wms.sch.task.service.ISchBaseTaskService; +import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; +import org.nl.wms.sch.task.service.dao.SchBaseTask; +import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.AcsTaskDto; +import org.nl.wms.sch.task_manage.GeneralDefinition; +import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; +import org.nl.wms.sch.task_manage.task.TaskType; +import org.nl.wms.sch.task_manage.task.core.TaskStatus; +import org.nl.wms.util.TaskUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * @Author: lxy + * @Description: 拆盘机输送线到空托盘站点 + * @Date: 2024/9/24 + */ +@Component(value = "KCPJTZPTask") +@TaskType("KCPJTZPTask") +public class KCPJTZPTask extends AbstractTask { + @Autowired + private ISchBaseTaskService taskService; + + @Autowired + private ISchBaseTaskconfigService taskConfigService; + + @Autowired + private WmsToMesService wmsToMesService; + + @Override + public String create(JSONObject json) { + SchBaseTask task = new SchBaseTask(); + task.setTask_id(IdUtil.getStringId()); + task.setTask_code(json.getString("TaskCode")); + task.setTask_status(TaskStatus.CREATE.getCode()); + task.setConfig_code(json.getString("task_type")); + task.setPoint_code1(json.getString("PickingLocation")); + task.setPoint_code2(json.getString("PlacedLocation")); + task.setIs_vehicle(json.getString("IsPanCode")); + task.setExt_group_data(json.getString("CarryIsEmptyTuoPan")); + 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()); + if (taskDao.getPoint_code2().contains("-")) { + acsTaskDto.setNext_device_code(taskDao.getPoint_code2().replace('-', '_')); + } + acsTaskDto.setPriority(taskDao.getPriority()); + acsTaskDto.setTask_type("1"); + acsTaskDto.setIs_vehicle(taskDao.getIs_vehicle()); + acsTaskDto.setIs_empvehicle(taskDao.getExt_group_data()); + + 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("该任务已完成!"); + } + if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { + throw new BadRequestException("该任务已取消!"); + } + // 根据传来的类型去对任务进行操作 + if (status.equals(TaskStatus.EXECUTING)) { + taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); + taskObj.setRemark("执行中"); + TaskUtils.setUpdateByAcs(taskObj); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { + this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); + } + if (status.equals(TaskStatus.CANCELED)) { + this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); + } + } + + @Override + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + @Override + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + @Override + public void backMes(String task_code) { + wmsToMesService.receiveTaskStatusMesData(taskService.getByCode(task_code)); + } + + @Transactional(rollbackFor = Exception.class) + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 任务完成 + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark(GeneralDefinition.TASK_FINISH); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + + // 通知mes任务完成 + wmsToMesService.receiveTaskStatusMesData(taskObj); + } + + @Transactional(rollbackFor = Exception.class) + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + taskObj.setRemark(GeneralDefinition.TASK_CANCEL); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } +}