diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java index a99267cc7..b940f3099 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java @@ -48,7 +48,7 @@ public class AcsToWmsController { return new ResponseEntity<>(acsToWmsService.outHotTaskApply(whereJson), HttpStatus.OK); } @PostMapping("/applyOvenGantryTask") - @Log(value = "申请出烘箱任务", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS) + @Log(value = "申请入烘箱对接任务", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS) @SaIgnore public ResponseEntity applyOvenGantryTask(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(acsToWmsService.applyOvenGantryTask(whereJson), HttpStatus.OK); diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 833d05d7a..d019f96d2 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -190,7 +190,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Override public JSONObject applyOvenGantryTask(JSONObject param) { - return bakingOperationService.acsRequestInHotTask(param); +// return bakingOperationService.acsRequestInHotTask(param); + return bakingOperationService.acsRequestInHotTaskV2(param); } @Override diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingPdaServiceImpl.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingPdaServiceImpl.java index 8d256c951..df21025af 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingPdaServiceImpl.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingPdaServiceImpl.java @@ -13,9 +13,14 @@ import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder; import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService; 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.core.constant.GeneralDefinition; +import org.nl.wms.sch.task_manage.tasks.hot.InHotTrussTask; import org.nl.wms.util.PointUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @@ -34,6 +39,10 @@ public class BakingPdaServiceImpl implements BakingPdaService { private ISchBasePointService pointService; @Autowired private IpdmBiRawfoilworkorderService rawfoilworkorderService; + @Autowired + private InHotTrussTask inHotTrussTask; + @Autowired + private ISchBaseTaskService taskService; @Override public JSONObject bakingQuality(JSONObject param) { log.info("手持操作烘烤质检:{}", param); @@ -103,17 +112,18 @@ public class BakingPdaServiceImpl implements BakingPdaService { } @Override + @Transactional(rollbackFor = Exception.class) public JSONObject doModifyRawInfos(JSONObject param) { log.info("手持修改温度/时间 - {}", param); - // point_code, temperature, time + // point_code, order_code, temperature, time String pointCode = param.getString("point_code"); + String orderCode = param.getString("order_code"); String temperature = param.getString("temperature"); + String rollType = param.getString("roll_type"); + String isBaking = param.getString("is_baking"); String time = param.getString("time"); SchBasePoint hotPoint = pointService.getById(pointCode); - if (ObjectUtil.isEmpty(hotPoint.getSource_id())) { - throw new BadRequestException("点位 [" + pointCode + "] 不存在生箔工单信息!"); - } - PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(hotPoint.getSource_id()); + PdmBiRawfoilworkorder order = rawfoilworkorderService.getByContainerName(orderCode); if (ObjectUtil.isEmpty(order)) { throw new BadRequestException("生箔工单不存在!"); } @@ -123,8 +133,28 @@ public class BakingPdaServiceImpl implements BakingPdaService { .set(PdmBiRawfoilworkorder::getUpdate_optid, SecurityUtils.getCurrentUserId()) .set(PdmBiRawfoilworkorder::getUpdate_optname, SecurityUtils.getCurrentNickName()) .set(PdmBiRawfoilworkorder::getUpdate_time, DateUtil.now()) - .eq(PdmBiRawfoilworkorder::getWorkorder_id, hotPoint.getSource_id()); + .set(PdmBiRawfoilworkorder::getRoll_type, rollType) + .set(PdmBiRawfoilworkorder::getIs_baking, isBaking) + .eq(PdmBiRawfoilworkorder::getContainer_name, orderCode); rawfoilworkorderService.update(lam); + if (!hotPoint.getMaterial_code().equals(orderCode)) { + // 点位绑定的与扫码的不一样,以扫码的数据为准, 修改点位信息。 + hotPoint.setMaterial_code(order.getContainer_name()); + PointUtils.setUpdateByPC(hotPoint); + pointService.updateById(hotPoint); + } + // 创建入烘箱/入暂存 + log.info("开始创建桁架任务入烘箱对接位...."); + List schBaseTasks = taskService.checkHaveTask(pointCode); + if (schBaseTasks.size() > 0) { + throw new BadRequestException("该点位已经创建过任务!"); + } + JSONObject taskParam = new JSONObject(); + taskParam.put("order_code", orderCode); + taskParam.put("device_code", pointCode); + taskParam.put("config_code", "InHotTrussTask"); + taskParam.put("create_mode", GeneralDefinition.PDA_CREATION); + inHotTrussTask.apply(taskParam); JSONObject result = new JSONObject(); result.put("message", "操作成功!"); return result; 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 4f23e614e..e2929c021 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 @@ -163,62 +163,60 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService { @Override @Transactional(rollbackFor = Exception.class) public JSONObject needEmptyAxisV2(JSONObject param) { - MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.RAW_DOWN.getTag()); - log.info("手持生箔下料: {}", param); - // point_code, order_code, is_call_empty - String pointCode = param.getString("point_code"); - String orderCode = param.getString("order_code"); - String isCallEmpty = param.getString("is_call_empty"); - // 判断是否存在任务 - List unFinishTasks = taskService.checkHaveTask(pointCode); - // 判断是否存在对应的桁架任务 - List unFinishRelatedTasks = taskService.checkHaveRelatedTaskInRequestParam(pointCode); - if (unFinishTasks.size() > 0 || unFinishRelatedTasks.size() > 0) { - throw new BadRequestException("点位[" + pointCode + "]已经存在任务!"); - } - StIvtSbpointivt sbPoint = stIvtSbpointivtService.getByPointCode(pointCode, true); - if (ObjectUtil.isEmpty(sbPoint)) { - throw new BadRequestException("生箔位:" + pointCode + " 不存在,请检查是否被锁住!"); - } - // todo: 通过流转卡号到ERP系统查找对应的信息,最后生成工单存到LMS - // 创建工单 - PdmBiRawfoilworkorder rawOrder = new PdmBiRawfoilworkorder(); - rawOrder.setWorkorder_id(IdUtil.getSnowflake(1,1).nextIdStr()); - rawOrder.setContainer_name(orderCode); - rawOrder.setResource_name(sbPoint.getExt_code()); - rawOrder.setMfg_order_name("$$$$"); - rawOrder.setProduct_name("锂电"); - rawOrder.setDescription("锂电"); - rawOrder.setTheory_height(BigDecimal.valueOf(2000)); - rawOrder.setUp_coiler_date(DateUtil.now()); - rawOrder.setStatus("01"); - TaskUtils.setRawOrderCreateByDefault(rawOrder); - rawOrder.setProduct_area(sbPoint.getProduct_area()); -// rawOrder.setIs_baking("1"); - rawOrder.setOrder_type("1"); -// rawOrder.setBaking_time("80"); -// rawOrder.setRoll_type("1"); -// rawOrder.setBaking_temperature("80"); - rawfoilworkorderService.save(rawOrder); - // 组织请求任务参数 - // 当前生箔的点位 - param.put("device_code", pointCode); - param.put("workorder_id", rawOrder.getWorkorder_id()); - param.put("ext_code", sbPoint.getExt_code()); - param.put("vehicle_code2", sbPoint.getExt_code()); - param.put("create_mode", GeneralDefinition.PDA_CREATION); - // 判断是否呼叫空辊 - if (GeneralDefinition.YES.equals(isCallEmpty)) { - // 创建桁架任务,之后创建AGV任务需要备注是四点任务 - param.put("config_code", "RawCallRollTrussTask"); - param.put("is_flag", "1"); - rawCallRollTrussTask.apply(param); - } else { - // 创建AGV任务,直接到烘箱的任务 - param.put("config_code", "RawDownAGVTask"); - param.put("is_flag", "0"); - rawDownAGVTask.apply(param); - } + TaskUtils.taskLock("call-raw-down", () -> { + MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.RAW_DOWN.getTag()); + log.info("手持生箔下料: {}", param); + // point_code, order_code, is_call_empty + String pointCode = param.getString("point_code"); + // 母卷号 + String orderCode = param.getString("order_code"); + String isCallEmpty = param.getString("is_call_empty"); + // 判断是否存在任务 + List unFinishTasks = taskService.checkHaveTask(pointCode); + // 判断是否存在对应的桁架任务 + List unFinishRelatedTasks = taskService.checkHaveRelatedTaskInRequestParam(pointCode); + if (unFinishTasks.size() > 0 || unFinishRelatedTasks.size() > 0) { + throw new BadRequestException("点位[" + pointCode + "]已经存在任务!"); + } + StIvtSbpointivt sbPoint = stIvtSbpointivtService.getByPointCode(pointCode, true); + if (ObjectUtil.isEmpty(sbPoint)) { + throw new BadRequestException("生箔位:" + pointCode + " 不存在,请检查是否被锁住!"); + } + // 创建工单 + PdmBiRawfoilworkorder rawOrder = new PdmBiRawfoilworkorder(); + rawOrder.setWorkorder_id(IdUtil.getSnowflake(1,1).nextIdStr()); + rawOrder.setContainer_name(orderCode); + rawOrder.setResource_name(sbPoint.getExt_code()); + rawOrder.setMfg_order_name("$$$$"); + rawOrder.setProduct_name("锂电"); + rawOrder.setDescription("锂电"); + rawOrder.setTheory_height(BigDecimal.valueOf(2000)); + rawOrder.setUp_coiler_date(DateUtil.now()); + rawOrder.setStatus("01"); + TaskUtils.setRawOrderCreateByDefault(rawOrder); + rawOrder.setProduct_area(sbPoint.getProduct_area()); + rawOrder.setOrder_type("1"); + rawfoilworkorderService.save(rawOrder); + // 组织请求任务参数 + // 当前生箔的点位 + param.put("device_code", pointCode); + param.put("workorder_id", rawOrder.getWorkorder_id()); + param.put("ext_code", sbPoint.getExt_code()); +// param.put("vehicle_code2", sbPoint.getExt_code()); + param.put("create_mode", GeneralDefinition.PDA_CREATION); + // 判断是否呼叫空辊 + if (GeneralDefinition.YES.equals(isCallEmpty)) { + // 创建桁架任务,之后创建AGV任务需要备注是四点任务 + param.put("config_code", "RawCallRollTrussTask"); + param.put("is_flag", "1"); + rawCallRollTrussTask.apply(param); + } else { + // 创建AGV任务,直接到烘箱的任务 + param.put("config_code", "RawDownAGVTask"); + param.put("is_flag", "0"); + rawDownAGVTask.apply(param); + } + }); JSONObject result = new JSONObject(); result.put("status", HttpStatus.OK.value()); result.put("message", "任务创建成功!"); diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java index caf26db91..3695c0435 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java @@ -157,6 +157,8 @@ public class SchBasePointServiceImpl extends ServiceImpl 0) { throw new BadRequestException("点位[" + deviceCode + "]已经存在任务!"); } - param.put("config_code", "OutHotTrussTask"); - outHotTrussTask.apply(param); + param.put("config_code", "OutHotToDockingTrussTask"); + outHotToDockingTrussTask.apply(param); JSONObject result = new JSONObject(); result.put("status", HttpStatus.OK.value()); result.put("message", "任务创建成功!"); - result.put("data", new JSONObject()); return result; } @Override + @Deprecated public JSONObject acsRequestInHotTask(JSONObject param) { log.info("acs请求入烘箱:{}", param); // 任务完成将工单对应的状态设置04, 维护重量信息。触发烘箱桁架任务 @@ -104,4 +110,52 @@ public class BakingOperationServiceImpl implements BakingOperationService { result.put("data", new JSONObject()); return result; } + + @Override + @Transactional(rollbackFor = Exception.class) + public JSONObject acsRequestInHotTaskV2(JSONObject param) { + log.info("acs请求入烘箱:{}", param); + // 任务完成将工单对应的状态设置04, 维护重量信息。触发烘箱桁架任务(送到烘箱对接位) + // param: task_code + String taskCode = param.getString("task_code"); + Assert.notBlank(taskCode, "任务编码不能为空!"); + SchBaseTask taskObj = taskService.getByCode(taskCode); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("任务不存在"); + } + JSONObject taskParam = new JSONObject(); + String requestParam = taskObj.getRequest_param(); + JSONObject requestObj = JSONObject.parseObject(requestParam); + String orderCode = requestObj.getString("order_code"); + if (ObjectUtil.isNotEmpty(orderCode)) { + rawfoilworkorderService.update(new LambdaUpdateWrapper() + .set(PdmBiRawfoilworkorder::getStatus, "04") + .eq(PdmBiRawfoilworkorder::getContainer_name, orderCode)); + log.info("工单修改完毕 - 母卷号 - {}", orderCode); + } + // 烘箱对接位(生箔点位) + String hxPointCode = ""; + // 获取点位 + if (ObjectUtil.isEmpty(taskObj.getPoint_code3())) { + // 取满任务 + hxPointCode = taskObj.getPoint_code2(); + } else { + // 取满放空任务 + hxPointCode = taskObj.getPoint_code4(); + } + log.info("开始创建桁架任务入烘箱对接位...."); + taskParam.put("order_code", orderCode); + taskParam.put("up_task_code", taskObj.getTask_code()); + taskParam.put("device_code", hxPointCode); + taskParam.put("config_code", "InHotDockingTrussTask"); + taskParam.put("create_mode", GeneralDefinition.ACS_CREATION); + // 满卷的收卷辊编码放在AGV任务的载具2上 +// taskParam.put("vehicle_code", taskObj.getVehicle_code2()); + inHotDockingTrussTask.apply(taskParam); + 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/hot/InHotDockingTrussTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/InHotDockingTrussTask.java new file mode 100644 index 000000000..a713b6368 --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/InHotDockingTrussTask.java @@ -0,0 +1,97 @@ +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.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.constant.RegionConstant; +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; +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 + * @Date: 2024/9/5 + */ +@Slf4j +@Component(value = "InHotDockingTrussTask") +public class InHotDockingTrussTask extends AbstractTask { + private final String THIS_CLASS = InHotDockingTrussTask.class.getName(); + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private ISchBasePointService pointService; + @Override + public void create() throws BadRequestException { + + } + + /** + * 起点确认,找个终点(烘箱对接位) + * @param task / + */ + @Override + public void createCompletion(SchBaseTask task) { + TaskUtils.taskLock(RegionConstant.REGION_A1_HXZC + "5", () -> { + // 找个对接位(状态是空的,没有任务的) + List endPoints = pointService.getHotNotTaskPoint("A1", RegionConstant.REGION_A1_HXZC, + "5", "1"); + if (endPoints.size() == 0) { + throw new BadRequestException("没有可用的烘箱对接位!"); + } + SchBasePoint endPoint = endPoints.get(0); + task.setPoint_code2(endPoint.getPoint_code()); + // 保存任务参数 + 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) { + checkTaskOptionStatus(taskObj); + JSONObject requestObj = JSONObject.parseObject(taskObj.getRequest_param()); + String orderCode = requestObj.getString("order_code"); + // 点位赋值。 + String endPointCode = taskObj.getPoint_code2(); + SchBasePoint endPoint = pointService.getById(endPointCode); + endPoint.setPoint_status("5"); + endPoint.setMaterial_code(orderCode); + PointUtils.setUpdateByType(endPoint, taskFinishedType); + pointService.updateById(endPoint); + // 完成 + 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/tasks/hot/InHotTrussTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/InHotTrussTask.java index f3f246beb..91e6b7c97 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/InHotTrussTask.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/InHotTrussTask.java @@ -9,8 +9,8 @@ import org.nl.common.exception.BadRequestException; import org.nl.common.utils.RedisUtils; import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder; import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService; -import org.nl.wms.pdm.ivt.hot.service.dao.StIvtHotpointivt; import org.nl.wms.pdm.ivt.hot.service.IstIvtHotpointivtService; +import org.nl.wms.pdm.ivt.hot.service.dao.StIvtHotpointivt; 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; @@ -26,11 +26,10 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; +import static org.nl.wms.sch.task_manage.core.constant.RegionConstant.REGION_A1_HXZC; +import static org.nl.wms.util.PointUtils.*; import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus; import static org.nl.wms.util.TaskUtils.setUpdateByPC; -import static org.nl.wms.util.PointUtils.setUpdateByType; -import static org.nl.wms.util.PointUtils.setHxUpdateByType; -import static org.nl.wms.sch.task_manage.core.constant.RegionConstant.REGION_A1_HXZC; /** * @Author: lyd @@ -69,6 +68,8 @@ public class InHotTrussTask extends AbstractTask { String orderCode = requestObj.getString("order_code"); String flag = "0"; PdmBiRawfoilworkorder order = rawfoilworkorderService.getByContainerName(orderCode); + // TODO: 没有设置是否烘烤、时间、温度、不继续 + if (GeneralDefinition.YES.equals(order.getIs_baking())) { String bakingTemperature = order.getBaking_temperature(); requestObj.put("temperature", bakingTemperature); @@ -145,6 +146,7 @@ public class InHotTrussTask extends AbstractTask { String caching = requestObj.getString("caching"); String endPointCode = taskObj.getPoint_code2(); SchBasePoint hotDjwPoint = pointService.getById(endPointCode); + SchBasePoint startPoint = pointService.getById(taskObj.getPoint_code1()); StIvtHotpointivt hotpointivt = hotpointivtService.getPointByCode(endPointCode, false); PdmBiRawfoilworkorder order = rawfoilworkorderService.getByContainerName(orderCode); Assert.notNull(order, "工单不能为空!"); @@ -167,6 +169,8 @@ public class InHotTrussTask extends AbstractTask { setHxUpdateByType(hotpointivt, taskFinishedType); hotpointivtService.updateById(hotpointivt); } + // 起点清空 + clearPoint(startPoint, taskFinishedType); // 完成 taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setFinished_type(taskFinishedType.getCode()); @@ -175,7 +179,6 @@ public class InHotTrussTask extends AbstractTask { } @Override - @Transactional(rollbackFor = Exception.class) public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { checkTaskOptionStatus(taskObj); // 取消 diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/OutHotToDockingTrussTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/OutHotToDockingTrussTask.java new file mode 100644 index 000000000..d247c9125 --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/OutHotToDockingTrussTask.java @@ -0,0 +1,114 @@ +package org.nl.wms.sch.task_manage.tasks.hot; + +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.wms.pdm.bi.dao.PdmBiRawfoilworkorder; +import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService; +import org.nl.wms.pdm.ivt.hot.service.IstIvtHotpointivtService; +import org.nl.wms.pdm.ivt.hot.service.dao.StIvtHotpointivt; +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.constant.RegionConstant; +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; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +import static org.nl.wms.sch.task_manage.core.constant.RegionConstant.REGION_A1_HXZC; +import static org.nl.wms.util.PointUtils.hotClearPoint; +import static org.nl.wms.util.TaskUtils.*; + +/** + * 出烘箱到对接位质检桁架任务 + * @Author: lyd + * @Date: 2024/9/6 + */ +@Slf4j +@Component("OutHotToDockingTrussTask") +public class OutHotToDockingTrussTask extends AbstractTask { + private final String THIS_CLASS = OutHotToDockingTrussTask.class.getName(); + @Autowired + private ISchBasePointService pointService; + @Autowired + private IstIvtHotpointivtService hotpointivtService; + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private IpdmBiRawfoilworkorderService rawfoilworkorderService; + @Override + public void create() throws BadRequestException { + + } + + @Override + public void createCompletion(SchBaseTask task) { + TaskUtils.taskLock(REGION_A1_HXZC + "5", () -> { + // 从烘箱对接位中找一个空位 + List endPoints = pointService.getHotNotTaskPoint("A1", RegionConstant.REGION_A1_HXZC, + "5", "1"); + if (endPoints.size() == 0) { + throw new BadRequestException("没有可用的烘箱对接位!"); + } + // 烘箱起点位置 + StIvtHotpointivt hotPoint = hotpointivtService.getPointByCode(task.getPoint_code1(), false); + SchBasePoint endPoint = endPoints.get(0); + String requestParam = task.getRequest_param(); + JSONObject requestObj = JSONObject.parseObject(requestParam); + requestObj.put("workorder_id", hotPoint.getWorkorder_id()); + task.setPoint_code2(endPoint.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) { + checkTaskOptionStatus(taskObj); + JSONObject request = JSONObject.parseObject(taskObj.getRequest_param()); + String startPointCode = taskObj.getPoint_code1(); + String endPointCode = taskObj.getPoint_code2(); + StIvtHotpointivt startPoint = hotpointivtService.getPointByCode(startPointCode, false); + // 起点清空 + hotClearPoint(startPoint, taskFinishedType); + // 终点赋值 + PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(request.getString("workorder_id")); + SchBasePoint endPoint = pointService.getById(endPointCode); + // 终点设置值 + endPoint.setMaterial_code(order.getContainer_name()); + endPoint.setSource_id(request.getString("workorder_id")); + endPoint.setPoint_status("3"); + PointUtils.setUpdateByType(endPoint, taskFinishedType); + pointService.updateById(endPoint); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setFinished_type(taskFinishedType.getCode()); + 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()); + setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } +} 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 index f8f99ddb4..597cc22ea 100644 --- 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 @@ -9,6 +9,7 @@ import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder; import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService; import org.nl.wms.pdm.ivt.hot.service.IstIvtHotpointivtService; import org.nl.wms.pdm.ivt.hot.service.dao.StIvtHotpointivt; +import org.nl.wms.quartz.AutoCreateOutHotTask; 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; @@ -32,9 +33,12 @@ import static org.nl.wms.util.TaskUtils.setUpdateByType; import static org.nl.wms.sch.task_manage.core.constant.RegionConstant.REGION_A1_HXZC; /** - * @Author: lyd - * @Description: 创建出烘箱任务 + * 创建出烘箱任务 *

自动创建与ACS申请公用的任务类 + *

以下两个类进行调用

+ * @see org.nl.wms.sch.task_manage.service.impl.BakingOperationServiceImpl#acsRequestOutHotTask(JSONObject) + * @see AutoCreateOutHotTask#run() + * @Author: lyd * @Date: 2024/8/9 */ @Slf4j @@ -138,7 +142,6 @@ public class OutHotTrussTask extends AbstractTask { } @Override - @Transactional(rollbackFor = Exception.class) public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { checkTaskOptionStatus(taskObj); // 取消 diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/raw/RawCallRollTrussTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/raw/RawCallRollTrussTask.java index f7ea3931d..0df58b547 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/raw/RawCallRollTrussTask.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/raw/RawCallRollTrussTask.java @@ -77,7 +77,7 @@ public class RawCallRollTrussTask extends AbstractTask { task.setPoint_code1(startPoint.getPoint_code()); task.setPoint_code2(endPoint.getPoint_code()); // 收卷辊库里的载具编码 - task.setVehicle_code(startPoint.getVehicle_code()); +// task.setVehicle_code(startPoint.getVehicle_code()); task.setTask_status(TaskStatus.START_AND_POINT.getCode()); setUpdateByPC(task); taskService.save(task); @@ -90,7 +90,6 @@ public class RawCallRollTrussTask extends AbstractTask { checkTaskOptionStatus(taskObj); // 完成任务:1、清空起点数据,2、创建AGV任务 JSONObject taskParam = new JSONObject(); - // 获取参数 String requestParam = taskObj.getRequest_param(); // 其中device_code代表AGV的终点(生箔点位) JSONObject requestObj = JSONObject.parseObject(requestParam); @@ -116,7 +115,7 @@ public class RawCallRollTrussTask extends AbstractTask { } log.info("桁架任务完毕,开始创建 [{}] 的AGV任务", endAgvPoint); // 收卷辊库里的载具编码 - taskParam.put("vehicle_code", taskObj.getVehicle_code()); +// taskParam.put("vehicle_code", taskObj.getVehicle_code()); taskParam.put("device_code", endAgvPoint); taskParam.put("is_flag", flag); taskParam.put("order_code", requestObj.getString("order_code")); diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/raw/RawDownAGVTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/raw/RawDownAGVTask.java index ec634f8f1..84b64bf38 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/raw/RawDownAGVTask.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/raw/RawDownAGVTask.java @@ -74,9 +74,9 @@ public class RawDownAGVTask extends AbstractTask { SchBasePoint hxPoint = hxPoints.get(0); if ("1".equals(flag)) { // 创建四点任务:先去收卷辊出口在到生箔位,在从生箔到烘箱对接位 - StIvtSbpointivt pointCode = sbpointivtService.getByPointCode(deviceCode, false); +// StIvtSbpointivt pointCode = sbpointivtService.getByPointCode(deviceCode, false); // 标记一下是哪个生箔机的收卷辊 - task.setVehicle_code2(pointCode.getExt_code()); +// task.setVehicle_code2(pointCode.getExt_code()); task.setPoint_code1(startPointCode); task.setPoint_code2(deviceCode + "_K"); task.setPoint_code3(deviceCode + "_M"); diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java index a029f461a..5cf26af32 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java @@ -40,13 +40,13 @@ public class TaskUtils { /** * 创建任务 - * @param region 区域编码 + * @param code 锁编码 * @param function */ @SneakyThrows - public static void taskLock(String region, Runnable function){ + public static void taskLock(String code, Runnable function){ RedissonClient redissonClient = SpringContextHolder.getBean(RedissonClient.class); - RLock lock = redissonClient.getLock(region); + RLock lock = redissonClient.getLock(code); boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); try { if (tryLock) { diff --git a/lms2/nladmin-ui/src/views/wms/sch/point/index.vue b/lms2/nladmin-ui/src/views/wms/sch/point/index.vue index 34b400820..eb0e30b55 100644 --- a/lms2/nladmin-ui/src/views/wms/sch/point/index.vue +++ b/lms2/nladmin-ui/src/views/wms/sch/point/index.vue @@ -375,6 +375,11 @@ :label="$t('Point.table.vehicle_qty')" :min-width="flexWidth('vehicle_qty',crud.data,$t('Point.table.vehicle_qty'))" /> +