From f6ce7313857f0f6b1705f5de6d9309038e4b2336 Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Mon, 12 Aug 2024 13:52:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=83=98=E7=83=A4=E7=A1=AE=E5=AE=9A?= =?UTF-8?q?=E7=9A=84=E4=B8=9A=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pda/mps/controller/BakingController.java | 35 ++++++++++ .../nl/wms/pda/mps/service/BakingService.java | 17 +++++ .../mps/service/impl/BakingServiceImpl.java | 65 +++++++++++++++++++ .../IpdmBiRawfoilworkorderService.java | 7 ++ .../PdmBiRawfoilworkorderServiceImpl.java | 8 +++ .../service/BakingOperationService.java | 2 +- .../tasks/auto/AutoInHotTrussTask.java | 3 +- .../tasks/auto/AutoOutHotTrussTask.java | 56 ++++++++++++++++ .../task_manage/tasks/hot/InHotTrussTask.java | 13 +++- .../tasks/hot/OutHotTrussTask.java | 19 +++++- .../main/java/org/nl/wms/util/PointUtils.java | 25 +++++++ 11 files changed, 245 insertions(+), 5 deletions(-) create mode 100644 lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/controller/BakingController.java create mode 100644 lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/BakingService.java create mode 100644 lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java create mode 100644 lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/auto/AutoOutHotTrussTask.java diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/controller/BakingController.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/controller/BakingController.java new file mode 100644 index 000000000..2b85e02ce --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/controller/BakingController.java @@ -0,0 +1,35 @@ +package org.nl.wms.pda.mps.controller; + +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.pda.mps.service.BakingService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Author: lyd + * @Description: 手持烘烤相关 + * @Date: 2024/8/12 + */ +@RestController +@RequestMapping("/api/pda/baking") +@Slf4j +@SaIgnore +public class BakingController { + + @Autowired + private BakingService bakingService; + + @PostMapping("/bakingQuality") + @Log("烘烤质检") + public ResponseEntity bakingQuality(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(bakingService.bakingQuality(whereJson), HttpStatus.OK); + } +} diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/BakingService.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/BakingService.java new file mode 100644 index 000000000..3daa17083 --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/BakingService.java @@ -0,0 +1,17 @@ +package org.nl.wms.pda.mps.service; + +import com.alibaba.fastjson.JSONObject; + +/** + * @Author: lyd + * @Description: + * @Date: 2024/8/12 + */ +public interface BakingService { + /** + * 质检 + * @param param / + * @return / + */ + JSONObject bakingQuality(JSONObject param); +} diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java new file mode 100644 index 000000000..97970093e --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java @@ -0,0 +1,65 @@ +package org.nl.wms.pda.mps.service.impl; + +import cn.hutool.core.lang.Assert; +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.pda.mps.service.BakingService; +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.util.PointUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Author: lyd + * @Description: + * @Date: 2024/8/12 + */ +@Service +@Slf4j +public class BakingServiceImpl implements BakingService { + + @Autowired + private ISchBasePointService pointService; + @Autowired + private IpdmBiRawfoilworkorderService rawfoilworkorderService; + @Override + public JSONObject bakingQuality(JSONObject param) { + log.info("手持操作烘烤质检:{}", param); + // param: point_code, vehicle_code,quality(1: 合格,0: 不合格) + String quality = param.getString("quality"); + String pointCode = param.getString("point_code"); + String vehicleCode = param.getString("vehicle_code"); + Assert.notBlank(pointCode, "点位不能为空!"); + Assert.notBlank(vehicleCode, "收卷辊不能为空!"); + SchBasePoint hotZcPoint = pointService.getById(pointCode); + if (ObjectUtil.isEmpty(hotZcPoint)) { + throw new BadRequestException("点位 [" + pointCode + "] 不存在!"); + } + List rawOrderList = rawfoilworkorderService.getOrderByVehicleAndStatus(vehicleCode, "04"); + if (rawOrderList.size() > 1) { + throw new BadRequestException("收卷辊 [" + vehicleCode + "] 对应的生箔工单存在多条,请将其他多余工单结束!"); + } + if (rawOrderList.size() == 0) { + throw new BadRequestException("收卷辊 [" + vehicleCode + "] 对应的生箔工单不存在!"); + } + if ("0".equals(quality)) { + // 重复烘烤 + hotZcPoint.setPoint_status("2"); + } else { + // 质检合格 + hotZcPoint.setPoint_status("4"); + } + PointUtils.setUpdateByPC(hotZcPoint); + pointService.updateById(hotZcPoint); + JSONObject result = new JSONObject(); + result.put("message", "操作成功!"); + return result; + } +} diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/service/IpdmBiRawfoilworkorderService.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/service/IpdmBiRawfoilworkorderService.java index e7f94e8ff..e655302bb 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/service/IpdmBiRawfoilworkorderService.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/service/IpdmBiRawfoilworkorderService.java @@ -73,6 +73,13 @@ public interface IpdmBiRawfoilworkorderService extends IService getOrderByVehicleAndStatus(String vehicleCode, String status); } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/service/impl/PdmBiRawfoilworkorderServiceImpl.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/service/impl/PdmBiRawfoilworkorderServiceImpl.java index 87bfedb9a..0478c373c 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/service/impl/PdmBiRawfoilworkorderServiceImpl.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/service/impl/PdmBiRawfoilworkorderServiceImpl.java @@ -234,5 +234,13 @@ public class PdmBiRawfoilworkorderServiceImpl extends ServiceImpl getOrderByVehicleAndStatus(String vehicleCode, String status) { + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.eq(PdmBiRawfoilworkorder::getWind_roll, vehicleCode) + .eq(PdmBiRawfoilworkorder::getStatus, status); + return list(lam); + } + } 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 index 382e08dda..e99156917 100644 --- 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 @@ -13,5 +13,5 @@ public interface BakingOperationService { * @param param / * @return / */ - public JSONObject acsRequestOutHotTask(JSONObject param); + JSONObject acsRequestOutHotTask(JSONObject param); } 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 index 26ab0cf59..45fe87f81 100644 --- 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 @@ -32,7 +32,7 @@ import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus; /** * @Author: lyd - * @Description: 自动创建入烘箱任务 + * @Description: 自动创建入烘箱任务 (统一调度执行,不合适则换定时任务) * @Date: 2024/8/9 */ @Slf4j @@ -102,6 +102,7 @@ public class AutoInHotTrussTask extends AbstractTask { task.setVehicle_code(hotPoint.getVehicle_code()); task.setRequest_param(JSONObject.toJSONString(param)); task.setTask_status(TaskStatus.START_AND_POINT.getCode()); + task.setHandle_status(THIS_CLASS); TaskUtils.setCreateByPda(task); taskService.save(task); } catch (Exception e) { diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/auto/AutoOutHotTrussTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/auto/AutoOutHotTrussTask.java new file mode 100644 index 000000000..c74387d43 --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/auto/AutoOutHotTrussTask.java @@ -0,0 +1,56 @@ +package org.nl.wms.sch.task_manage.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; +import org.nl.wms.sch.task_manage.tasks.hot.OutHotTrussTask; + +/** + * @Author: lyd + * @Date: 2024/8/12 + * @Description: 自动出烘箱任务,最终调用 {@link OutHotTrussTask} 来创建任务 + *

todo: 业务需求待定!!!

+ * @see OutHotTrussTask + */ +@Slf4j +@Component(value = "AutoOutHotTrussTask") +public class AutoOutHotTrussTask extends AbstractTask { + private final String THIS_CLASS = AutoOutHotTrussTask.class.getName(); + public final static String CONFIG_CODE = "OutHotTrussTask"; + @Override + public void create() throws BadRequestException { + + } + + /** + * 自动创建任务 + * @see OutHotTrussTask#createCompletion(SchBaseTask) + */ + @Override + protected void autoCreate() { + // 查找暂存中的点位,根据 + } + + /** + * @see OutHotTrussTask#finishTask(SchBaseTask, TaskFinishedTypeEnum) + * @param taskObj 任务数据 + * @param taskFinishedType 完成枚举 + */ + @Override + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 不在此业务 + } + + /** + * @see OutHotTrussTask#cancelTask(SchBaseTask, TaskFinishedTypeEnum) + * @param taskObj 任务数据 + * @param 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/tasks/hot/InHotTrussTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/InHotTrussTask.java index 29474859e..a20289967 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 @@ -57,12 +57,17 @@ public class InHotTrussTask extends AbstractTask { } + /** + * todo: 烘烤时间与烘烤温度是否需要下发ACS? + * @param task / + */ @Override public void createCompletion(SchBaseTask task) { // 查找烘箱同大卷小卷 String requestParam = task.getRequest_param(); JSONObject requestObj = JSONObject.parseObject(requestParam); String workorderId = requestObj.getString("workorder_id"); + String flag = "0"; PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(workorderId); if ("1".equals(order.getIs_baking())) { String bakingTemperature = order.getBaking_temperature(); @@ -103,17 +108,21 @@ public class InHotTrussTask extends AbstractTask { } // 如果都没有位置, 就去未开启的烘箱的空位,也是区分大小卷 + // todo: (有可能是待烘烤、也有可能是不需要烘烤做为暂存) if (ObjectUtil.isEmpty(task.getPoint_code2())) { List notTaskHotOven = hotpointivtService.getNotTaskHotOven(order.getRoll_type(), "0"); if (notTaskHotOven.size() == 0) { throw new BadRequestException("未找到可用货位!"); } + // 代表是暂存 + flag = "1"; StIvtHotpointivt stIvtHotpointivt = notTaskHotOven.get(0); task.setPoint_code2(stIvtHotpointivt.getPoint_code()); } // 保存任务参数 task.setHandle_class(THIS_CLASS); task.setTask_status(TaskStatus.START_AND_POINT.getCode()); + requestObj.put("caching", flag); setUpdateByPC(task); taskService.save(task); } @@ -126,6 +135,7 @@ public class InHotTrussTask extends AbstractTask { String requestParam = taskObj.getRequest_param(); JSONObject requestObj = JSONObject.parseObject(requestParam); String workorderId = requestObj.getString("workorder_id"); + String caching = requestObj.getString("caching"); String endPointCode = taskObj.getPoint_code2(); SchBasePoint hotDjwPoint = pointService.getById(endPointCode); StIvtHotpointivt hotpointivt = hotpointivtService.getPointByCode(endPointCode, false); @@ -145,7 +155,8 @@ public class InHotTrussTask extends AbstractTask { 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"); + // 02:烘烤中,03:暂存中 + hotpointivt.setPoint_status("0".equals(caching) ? "02" : "03"); // todo: 更新温度和倒计时 setHxUpdateByType(hotpointivt, taskFinishedType); hotpointivtService.updateById(hotpointivt); 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 93dec6c2f..b1cefa09b 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 @@ -13,15 +13,17 @@ 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.hotClearPoint; +import static org.nl.wms.util.PointUtils.setUpdateByType; import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus; import static org.nl.wms.util.TaskUtils.setUpdateByPC; +import static org.nl.wms.util.TaskUtils.setUpdateByType; /** * @Author: lyd @@ -69,7 +71,20 @@ public class OutHotTrussTask extends AbstractTask { @Override @Transactional(rollbackFor = Exception.class) public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + checkTaskOptionStatus(taskObj); // 出烘箱后,终点状态应改成04:待分切 + String startPointCode = taskObj.getPoint_code1(); + String endPointCode = taskObj.getPoint_code2(); + StIvtHotpointivt startPoint = hotpointivtService.getPointByCode(startPointCode, false); + SchBasePoint endPoint = pointService.getById(endPointCode); + // 终点设置值 + endPoint.setVehicle_code(startPoint.getFull_vehicle_code()); + endPoint.setGroup_id(startPoint.getWorkorder_id()); + endPoint.setPoint_status("04"); + setUpdateByType(endPoint, taskFinishedType); + pointService.updateById(endPoint); + // 起点清空 + hotClearPoint(startPoint, taskFinishedType); } @Override @@ -80,7 +95,7 @@ public class OutHotTrussTask extends AbstractTask { taskObj.setTask_status(TaskStatus.CANCELED.getCode()); taskObj.setRemark(GeneralDefinition.TASK_CANCEL); taskObj.setFinished_type(taskFinishedType.getCode()); - TaskUtils.setUpdateByType(taskObj, taskFinishedType); + setUpdateByType(taskObj, taskFinishedType); taskService.updateById(taskObj); } } 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 5d56bfdf0..a4bcf30b2 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 @@ -6,12 +6,16 @@ import com.alibaba.fastjson.JSONObject; import org.nl.common.utils.SecurityUtils; import org.nl.config.SpringContextHolder; import org.nl.wms.pdm.ivt.dao.StIvtHotpointivt; +import org.nl.wms.pdm.ivt.service.IstIvtHotpointivtService; +import org.nl.wms.pdm.ivt.service.impl.StIvtHotpointivtServiceImpl; import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.point.service.impl.SchBasePointServiceImpl; import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition; import org.nl.wms.sch.task_manage.core.enums.PointStatusEnum; import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum; +import java.math.BigDecimal; + /** * @Author: lyd * @Description: 点位工具类 @@ -57,6 +61,27 @@ public class PointUtils { setUpdateByType(point, taskFinishedType); pointService.updateById(point); } + /** + * 烘箱清空点位 + * 会直接更新数据,使用时候不需要在update + * @param point + */ + public static void hotClearPoint(StIvtHotpointivt point, TaskFinishedTypeEnum taskFinishedType) { + if (ObjectUtil.isEmpty(point)) { + return; // 空直接退出 + } + IstIvtHotpointivtService pointService = SpringContextHolder.getBean(StIvtHotpointivtServiceImpl.class); + point.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); + point.setContainer_name(""); + point.setFull_vehicle_code(""); + point.setWorkorder_id(""); + point.setInstorage_time(""); + point.setWorkorder_id(""); + point.setTemperature(BigDecimal.valueOf(0)); + point.setLast_time(""); + setHxUpdateByType(point, taskFinishedType); + pointService.updateById(point); + } /** * 清空点位