diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilPdaServiceImpl.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilPdaServiceImpl.java index 1ce32304b..56d2b71e2 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilPdaServiceImpl.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilPdaServiceImpl.java @@ -16,8 +16,8 @@ import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.task.service.ISchBaseTaskService; import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition; -import org.nl.wms.sch.task_manage.core.tasks.raw.RawCallRollTrussTask; -import org.nl.wms.sch.task_manage.core.tasks.raw.RawDownAGVTask; +import org.nl.wms.sch.task_manage.tasks.raw.RawCallRollTrussTask; +import org.nl.wms.sch.task_manage.tasks.raw.RawDownAGVTask; import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml index 26319d775..554f7f7ba 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml @@ -28,10 +28,12 @@ FROM sch_base_point p WHERE p.product_area = #{area} AND p.region_code = #{region} - AND p.point_type = #{pointType} + + AND p.point_type = #{pointType} + AND p.point_status = #{pointStatus} AND p.is_used = TRUE AND 0 = (SELECT COUNT(*) FROM sch_base_task t WHERE t.task_status '07' - AND (t.point_code2 = p.point_code OR t.point_code4 = p.point_code)) + AND (t.point_code1 = p.point_code OR t.point_code2 = p.point_code OR t.point_code4 = p.point_code)) diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskconfigService.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskconfigService.java index d1095b504..591682205 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskconfigService.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskconfigService.java @@ -41,4 +41,11 @@ public interface ISchBaseTaskconfigService extends IService { * @param ids / */ void deleteAll(Set ids); + + /** + * 获取任务配置 + * @param code 任务配置编码 + * @return / + */ + SchBaseTaskconfig getByConfigCode(String code); } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskconfigServiceImpl.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskconfigServiceImpl.java index 45d831a77..b391b2494 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskconfigServiceImpl.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskconfigServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -99,4 +100,11 @@ public class SchBaseTaskconfigServiceImpl extends ServiceImpl lam = new QueryWrapper().lambda(); + lam.eq(SchBaseTaskconfig::getConfig_code, code); + return getOne(lam); + } + } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java index d91e4e692..d61cd4f10 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java @@ -102,6 +102,7 @@ public abstract class AbstractTask { List list = new ArrayList<>(); for (SchBaseTask task : taskList) { AcsTaskDto taskDto = new AcsTaskDto(); + this.setTask(task.getConfig_code(), taskDto); taskDto.setExt_task_id(task.getTask_id()); taskDto.setTask_code(task.getTask_code()); taskDto.setRoute_plan_code("normal"); @@ -111,8 +112,9 @@ public abstract class AbstractTask { taskDto.setNext_device_code2(task.getPoint_code4()); taskDto.setVehicle_code(task.getVehicle_code()); taskDto.setVehicle_code2(task.getVehicle_code2()); - this.setTask(task.getConfig_code(), taskDto); - // 如果各类方法对返回参数有不同,可以通过调用子类实现的deliveryBeforeProcessing方法来完成赋值,也可以是统一封装到参数值中。 + taskDto.setProduct_area(task.getProduct_area()); + // 如果各类方法对返回参数有不同,可以通过调用子类实现的deliveryBeforeProcessing方法来完成赋值, + // 也可以是统一封装到参数值中。 this.deliveryBeforeProcessing(task, taskDto); list.add(taskDto); } @@ -120,6 +122,12 @@ public abstract class AbstractTask { return resultForAcs; } + /** + * 设置下发任务,但是具体值以task上的为主 + * @param config_code 配置 + * @param taskDto ACS任务实体 + * @return / + */ private AcsTaskDto setTask(String config_code, AcsTaskDto taskDto) { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, config_code)); @@ -291,7 +299,7 @@ public abstract class AbstractTask { ? param.getString("create_mode") : GeneralDefinition.ACS_CREATION); task.setVehicle_code(vehicleCode); task.setVehicle_code2(vehicleCode2); - task.setProduct_area(productArea); + task.setProduct_area(ObjectUtil.isNotEmpty(productArea) ? productArea : taskConfig.getProduct_area()); task.setVehicle_qty(param.getInteger("vehicle_qty")); task.setVehicle_type(vehicleType); task.setTask_status(TaskStatus.CREATED.getCode()); diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AutoCreateTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AutoCreateTask.java index 34103d5d6..b7dff63be 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AutoCreateTask.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AutoCreateTask.java @@ -3,7 +3,10 @@ package org.nl.wms.sch.task_manage; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.apache.velocity.runtime.directive.Break; import org.nl.config.SpringContextHolder; +import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; +import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; import org.reflections.Reflections; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @@ -31,7 +34,7 @@ public class AutoCreateTask { private Map, Method> methodCache = new HashMap<>(); // 类加载时候执行扫描 static { - Reflections reflections = new Reflections("org.nl.wms.sch.task_manage.task.tasks"); + Reflections reflections = new Reflections("org.nl.wms.sch.task_manage.tasks"); subTypes = reflections.getSubTypesOf(AbstractTask.class); } @@ -49,6 +52,9 @@ public class AutoCreateTask { subTypes.forEach(clz -> { // 调用AbstractAcsTask类的每个子类的schedule()方法 try { + if (!doCheckIsUsed(clz)) { + return; + } Object obj = SpringContextHolder.getBean(clz); Method m = obj.getClass().getMethod("schedule"); m.invoke(obj); @@ -63,5 +69,18 @@ public class AutoCreateTask { }); } + /** + * 判断是否启用 + * @param clz + * @return + */ + public boolean doCheckIsUsed(Class clz) { + String[] split = clz.getName().split("\\."); + String name = split[split.length - 1]; + ISchBaseTaskconfigService bean = SpringContextHolder.getBean(ISchBaseTaskconfigService.class); + SchBaseTaskconfig config = bean.getByConfigCode(name); + return config.getIs_used(); + } + } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/core/tasks/auto/AutoInHotTrussTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/core/tasks/auto/AutoInHotTrussTask.java deleted file mode 100644 index cc7f3740b..000000000 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/core/tasks/auto/AutoInHotTrussTask.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.nl.wms.sch.task_manage.core.tasks.auto; - -import lombok.extern.slf4j.Slf4j; -import org.nl.common.exception.BadRequestException; -import org.nl.wms.sch.task.service.dao.SchBaseTask; -import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum; -import org.springframework.stereotype.Component; - -/** - * @Author: lyd - * @Description: 自动创建入烘箱任务 - * @Date: 2024/8/9 - */ -@Slf4j -@Component(value = "AutoInHotTrussTask") -public class AutoInHotTrussTask extends AbstractTask { - @Override - public void create() throws BadRequestException { - - } - - @Override - protected void autoCreate() { - // 自动创建 - log.info("自动创建。。。。"); - } - - @Override - public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - - } - - @Override - public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - - } -} diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/service/BakingOperationService.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/service/BakingOperationService.java new file mode 100644 index 000000000..382e08dda --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/service/BakingOperationService.java @@ -0,0 +1,17 @@ +package org.nl.wms.sch.task_manage.service; + +import com.alibaba.fastjson.JSONObject; + +/** + * @Author: lyd + * @Description: 烘烤操作 + * @Date: 2024/8/9 + */ +public interface BakingOperationService { + /** + * ACS请求出烘箱 + * @param param / + * @return / + */ + public JSONObject acsRequestOutHotTask(JSONObject param); +} diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/service/impl/BakingOperationServiceImpl.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/service/impl/BakingOperationServiceImpl.java new file mode 100644 index 000000000..a599feaa2 --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/service/impl/BakingOperationServiceImpl.java @@ -0,0 +1,46 @@ +package org.nl.wms.sch.task_manage.service.impl; + +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.exception.BadRequestException; +import org.nl.wms.sch.task.service.ISchBaseTaskService; +import org.nl.wms.sch.task.service.dao.SchBaseTask; +import org.nl.wms.sch.task_manage.service.BakingOperationService; +import org.nl.wms.sch.task_manage.tasks.hot.OutHotTrussTask; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Author: lyd + * @Description: + * @Date: 2024/8/9 + */ +@Slf4j +@Service +public class BakingOperationServiceImpl implements BakingOperationService { + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private OutHotTrussTask outHotTrussTask; + @Override + public JSONObject acsRequestOutHotTask(JSONObject param) { + log.info("acs请求出烘箱:{}", param); + // device_code + // 校验任务 + String deviceCode = param.getString("device_code"); + List schBaseTasks = taskService.checkHaveTask(deviceCode); + if (schBaseTasks.size() > 0) { + throw new BadRequestException("点位[" + deviceCode + "]已经存在任务!"); + } + param.put("config_code", "OutHotTrussTask"); + outHotTrussTask.apply(param); + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "任务创建成功!"); + result.put("data", new JSONObject()); + return result; + } +} diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/auto/AutoInHotTrussTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/auto/AutoInHotTrussTask.java new file mode 100644 index 000000000..26ab0cf59 --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/auto/AutoInHotTrussTask.java @@ -0,0 +1,152 @@ +package org.nl.wms.sch.task_manage.tasks.auto; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; +import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder; +import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService; +import org.nl.wms.pdm.ivt.dao.StIvtHotpointivt; +import org.nl.wms.pdm.ivt.service.IstIvtHotpointivtService; +import org.nl.wms.sch.point.service.ISchBasePointService; +import org.nl.wms.sch.point.service.dao.SchBasePoint; +import org.nl.wms.sch.task.service.ISchBaseTaskService; +import org.nl.wms.sch.task.service.dao.SchBaseTask; +import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.TaskStatus; +import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition; +import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum; +import org.nl.wms.util.TaskUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +import static org.nl.wms.util.PointUtils.clearPoint; +import static org.nl.wms.util.PointUtils.setHxUpdateByType; +import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus; + +/** + * @Author: lyd + * @Description: 自动创建入烘箱任务 + * @Date: 2024/8/9 + */ +@Slf4j +@Component(value = "AutoInHotTrussTask") +public class AutoInHotTrussTask extends AbstractTask { + private final String THIS_CLASS = AutoInHotTrussTask.class.getName(); + private final static String HX_REGION = "A1-HXZC"; + @Autowired + private ISchBasePointService pointService; + @Autowired + private IpdmBiRawfoilworkorderService rawfoilworkorderService; + @Autowired + private IstIvtHotpointivtService hotpointivtService; + @Autowired + private ISchBaseTaskService taskService; + @Override + public void create() throws BadRequestException { + + } + + @Override + @Transactional(rollbackFor = Exception.class) + protected void autoCreate() { + // 自动创建 + log.info("自动创建入烘箱的任务..."); + // 获取烘箱暂存位点位状态是2:待烘烤,没任务的点位 + List hotNotTaskPoint = pointService.getHotNotTaskPoint("A1", HX_REGION, null, "2"); + log.info("找到待烘烤的暂存位:{}", hotNotTaskPoint); + for (SchBasePoint hotPoint : hotNotTaskPoint) { + try { + SchBaseTask task = new SchBaseTask(); + // 查找可用的烘箱 + String workOrderId = hotPoint.getGroup_id(); + if (ObjectUtil.isEmpty(workOrderId)) { + log.error("点位{}的工单号为空!", hotPoint.getPoint_code()); + break; + } + PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(workOrderId); + String bakingTemperature = order.getBaking_temperature(); + // 如果需要烘烤, 先找对应点 + List hotList = hotpointivtService.getNotTaskHotOven(order.getRoll_type(), "1"); + if (hotList.size() == 0) { + log.error("找不到温度为:{} 的可用烘箱位置{}", bakingTemperature); + break; + } + // 查找合适温度的点位 + for (StIvtHotpointivt hxPoint : hotList) { + String pointCode = hxPoint.getPoint_code(); +// String pointTemperature = (String) redisUtils.hget(pointCode, "temperature"); +// if (ObjectUtil.isNotEmpty(pointTemperature)) { +// if (pointTemperature.equals(bakingTemperature)) { +// task.setPoint_code2(hotPoint.getPoint_code()); +// break; +// } +// } + // 临时测试 + task.setPoint_code2(hxPoint.getPoint_code()); + break; + } + JSONObject param = new JSONObject(); + param.put("workorder_id", workOrderId); + task.setPoint_code1(hotPoint.getPoint_code()); + task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); + task.setConfig_code("AutoInHotTrussTask"); + task.setCreate_mode(GeneralDefinition.AUTO_CREATION); + task.setVehicle_code(hotPoint.getVehicle_code()); + task.setRequest_param(JSONObject.toJSONString(param)); + task.setTask_status(TaskStatus.START_AND_POINT.getCode()); + TaskUtils.setCreateByPda(task); + taskService.save(task); + } catch (Exception e) { + log.error("自动创建入烘箱的任务执行异常:{}", e); + } + } + + } + + @Override + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + checkTaskOptionStatus(taskObj); + // 烘箱点位状态设置为烘烤中,起点清空。 + String startPointCode = taskObj.getPoint_code1(); + String endPointCode = taskObj.getPoint_code2(); + SchBasePoint startPoint = pointService.getById(startPointCode); + StIvtHotpointivt endPoint = hotpointivtService.getPointByCode(endPointCode, false); + String orderId = startPoint.getGroup_id(); + PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(orderId); + // 烘箱位,状态为02:烘烤中 + endPoint.setContainer_name(order.getContainer_name()); + endPoint.setWorkorder_id(order.getWorkorder_id()); + endPoint.setInstorage_time(DateUtil.now()); + endPoint.setPoint_status("02"); + endPoint.setFull_vehicle_code(taskObj.getVehicle_code()); + // todo: 更新温度和倒计时 + setHxUpdateByType(endPoint, taskFinishedType); + hotpointivtService.updateById(endPoint); + // 起点清空 + clearPoint(startPoint, taskFinishedType); + // 完成 + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } + + @Override + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + checkTaskOptionStatus(taskObj); + // 取消 + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setRemark(GeneralDefinition.TASK_CANCEL); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } +} diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/core/tasks/hot/InHotTrussTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/InHotTrussTask.java similarity index 96% rename from lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/core/tasks/hot/InHotTrussTask.java rename to lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/InHotTrussTask.java index db930ac89..29474859e 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/core/tasks/hot/InHotTrussTask.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/InHotTrussTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.sch.task_manage.core.tasks.hot; +package org.nl.wms.sch.task_manage.tasks.hot; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; @@ -19,7 +19,6 @@ import org.nl.wms.sch.task_manage.AbstractTask; import org.nl.wms.sch.task_manage.TaskStatus; import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition; import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum; -import org.nl.wms.util.PointUtils; import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -127,9 +126,9 @@ public class InHotTrussTask extends AbstractTask { String requestParam = taskObj.getRequest_param(); JSONObject requestObj = JSONObject.parseObject(requestParam); String workorderId = requestObj.getString("workorder_id"); - String pointCode2 = taskObj.getPoint_code2(); - SchBasePoint hotDjwPoint = pointService.getById(pointCode2); - StIvtHotpointivt hotpointivt = hotpointivtService.getPointByCode(pointCode2, false); + String endPointCode = taskObj.getPoint_code2(); + SchBasePoint hotDjwPoint = pointService.getById(endPointCode); + StIvtHotpointivt hotpointivt = hotpointivtService.getPointByCode(endPointCode, false); PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(workorderId); Assert.notNull(order, "工单不能为空!"); if (ObjectUtil.isEmpty(hotpointivt)) { @@ -145,6 +144,7 @@ public class InHotTrussTask extends AbstractTask { hotpointivt.setContainer_name(order.getContainer_name()); hotpointivt.setWorkorder_id(order.getWorkorder_id()); hotpointivt.setInstorage_time(DateUtil.now()); + hotpointivt.setFull_vehicle_code(taskObj.getVehicle_code()); hotpointivt.setPoint_status("1".equals(order.getIs_baking()) ? "02" : "03"); // todo: 更新温度和倒计时 setHxUpdateByType(hotpointivt, taskFinishedType); diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/OutHotTrussTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/OutHotTrussTask.java new file mode 100644 index 000000000..93dec6c2f --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/OutHotTrussTask.java @@ -0,0 +1,86 @@ +package org.nl.wms.sch.task_manage.tasks.hot; + +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.exception.BadRequestException; +import org.nl.wms.pdm.ivt.dao.StIvtHotpointivt; +import org.nl.wms.pdm.ivt.service.IstIvtHotpointivtService; +import org.nl.wms.sch.point.service.ISchBasePointService; +import org.nl.wms.sch.point.service.dao.SchBasePoint; +import org.nl.wms.sch.task.service.ISchBaseTaskService; +import org.nl.wms.sch.task.service.dao.SchBaseTask; +import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.TaskStatus; +import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition; +import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum; +import org.nl.wms.util.TaskUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus; +import static org.nl.wms.util.TaskUtils.setUpdateByPC; + +/** + * @Author: lyd + * @Description: 创建出烘箱任务 + * @Date: 2024/8/9 + */ +@Slf4j +@Component(value = "OutHotTrussTask") +public class OutHotTrussTask extends AbstractTask { + private final String THIS_CLASS = OutHotTrussTask.class.getName(); + @Autowired + private ISchBasePointService pointService; + @Autowired + private IstIvtHotpointivtService hotpointivtService; + @Autowired + private ISchBaseTaskService taskService; + @Override + public void create() throws BadRequestException { + + } + + @Override + public void createCompletion(SchBaseTask task) { + // 从烘箱暂存位找一个空位 + List hotDjwList = pointService.getHotNotTaskPoint("A1", "A1-HXZC", "4", "1"); + if (hotDjwList.size() == 0) { + throw new BadRequestException("烘箱烘烤完毕的暂存位不够!"); + } + String requestParam = task.getRequest_param(); + JSONObject requestObj = JSONObject.parseObject(requestParam); + String startPoint = task.getPoint_code1(); + StIvtHotpointivt hotPoint = hotpointivtService.getPointByCode(startPoint, false); + requestObj.put("workorder_id", hotPoint.getWorkorder_id()); + SchBasePoint point = hotDjwList.get(0); + task.setVehicle_code(hotPoint.getFull_vehicle_code()); + task.setPoint_code2(point.getPoint_code()); + task.setRequest_param(JSONObject.toJSONString(requestObj)); + // 保存任务参数 + task.setHandle_class(THIS_CLASS); + task.setTask_status(TaskStatus.START_AND_POINT.getCode()); + setUpdateByPC(task); + taskService.save(task); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 出烘箱后,终点状态应改成04:待分切 + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + checkTaskOptionStatus(taskObj); + // 取消 + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setRemark(GeneralDefinition.TASK_CANCEL); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } +} diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/core/tasks/raw/RawCallRollAGVTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/raw/RawCallRollAGVTask.java similarity index 98% rename from lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/core/tasks/raw/RawCallRollAGVTask.java rename to lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/raw/RawCallRollAGVTask.java index eb8ccbd69..9264e2581 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/core/tasks/raw/RawCallRollAGVTask.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/raw/RawCallRollAGVTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.sch.task_manage.core.tasks.raw; +package org.nl.wms.sch.task_manage.tasks.raw; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/core/tasks/raw/RawCallRollTrussTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/raw/RawCallRollTrussTask.java similarity index 98% rename from lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/core/tasks/raw/RawCallRollTrussTask.java rename to lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/raw/RawCallRollTrussTask.java index 9057db067..6b33f12f4 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/core/tasks/raw/RawCallRollTrussTask.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/raw/RawCallRollTrussTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.sch.task_manage.core.tasks.raw; +package org.nl.wms.sch.task_manage.tasks.raw; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; @@ -96,7 +96,7 @@ public class RawCallRollTrussTask extends AbstractTask { // 设置载具类型、点位状态、释放点位 if (ObjectUtil.isNotEmpty(startPointObj)) { // 起点清空 - clearPoint(startPointObj); + clearPoint(startPointObj, taskFinishedType); } log.info("点位清除完毕,清楚后的数据:{}", startPointObj); StIvtSbpointivt startAgvPointObj = stIvtSbpointivtService.getByPointCode(endAgvPoint, false); diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/core/tasks/raw/RawDownAGVTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/raw/RawDownAGVTask.java similarity index 98% rename from lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/core/tasks/raw/RawDownAGVTask.java rename to lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/raw/RawDownAGVTask.java index 2837eab4e..bc8100ff5 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/core/tasks/raw/RawDownAGVTask.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/raw/RawDownAGVTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.sch.task_manage.core.tasks.raw; +package org.nl.wms.sch.task_manage.tasks.raw; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; @@ -15,7 +15,7 @@ import org.nl.wms.sch.task_manage.AbstractTask; import org.nl.wms.sch.task_manage.TaskStatus; import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition; import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum; -import org.nl.wms.sch.task_manage.core.tasks.hot.InHotTrussTask; +import org.nl.wms.sch.task_manage.tasks.hot.InHotTrussTask; import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java index f9af24f1d..5d56bfdf0 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java @@ -42,7 +42,7 @@ public class PointUtils { * 会直接更新数据,使用时候不需要在update * @param point */ - public static void clearPoint(SchBasePoint point) { + public static void clearPoint(SchBasePoint point, TaskFinishedTypeEnum taskFinishedType) { if (ObjectUtil.isEmpty(point)) { return; // 空直接退出 } @@ -51,8 +51,10 @@ public class PointUtils { point.setVehicle_type(""); point.setVehicle_code(""); point.setIng_task_code(""); + point.setGroup_id(""); point.setVehicle_qty(0); point.setUpdate_time(DateUtil.now()); + setUpdateByType(point, taskFinishedType); pointService.updateById(point); }