From 4cc67c8c827ebdf05f677d320e29b281a65b88fd Mon Sep 17 00:00:00 2001 From: zhouz <> Date: Sun, 28 Jun 2026 21:27:57 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=87=AA=E5=8A=A8=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E6=8B=86=E5=8D=95=E6=A1=81=E6=9E=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../slitter/auto/AutoSplitTrussTask.java | 148 ++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSplitTrussTask.java diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSplitTrussTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSplitTrussTask.java new file mode 100644 index 000000000..23c406fdb --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSplitTrussTask.java @@ -0,0 +1,148 @@ +package org.nl.b_lms.sch.tasks.slitter.auto; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; +import org.nl.b_lms.sch.point.dao.StIvtCutpointivt; +import org.nl.b_lms.sch.point.service.IstIvtCutpointivtService; +import org.nl.b_lms.sch.task.dao.SchBaseTask; +import org.nl.b_lms.sch.task.service.IschBaseTaskService; +import org.nl.b_lms.sch.tasks.slitter.TrussDisassemblyCacheTask; +import org.nl.b_lms.sch.tasks.slitter.UpShaftTrussTask; +import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant; +import org.nl.b_lms.sch.tasks.slitter.constant.SlitterEnum; +import org.nl.b_lms.sch.tasks.slitter.mapper.SlitterMapper; +import org.nl.wms.pdm.ivt.deliverycache.service.IDeliverycachepointivtService; +import org.nl.wms.pdm.ivt.deliverycache.service.dao.Deliverycachepointivt; +import org.nl.wms.pdm.ivt.deliverycache.service.dto.AreaBCachePointDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @Author: lyd + * @Description: 自动任务 创建拆单桁架任务 + * @Date: 2024/2/1 + */ +@Slf4j +@Deprecated +@Component +public class AutoSplitTrussTask { + + @Autowired + private IDeliverycachepointivtService deliverycachepointivtService; + + @Autowired + private TrussDisassemblyCacheTask trussDisassemblyCacheTask; + + @Autowired + private IBstIvtCutpointivtService bcutpointivtService; + + @Autowired + private IPdmBiSlittingproductionplanService slittingproductionplanService; + + /** + * 运行任务,主要负责校验分切机是否有未处理的任务,如果有则跳过;如果没有,会尝试为分切机创建新的任务。 + * 该过程包括:查找没有气涨轴的分切机点位,校验是否存在相关任务,寻找备好轴的对接点位,获取下一组分切计划, + * 并根据计划创建相应的搬运任务。 + */ + public void run() { + log.info("自动创建拆单桁架任务开始执行..."); + //查询可以拆单的分切缓存点位 + List cutPoints = bcutpointivtService.getAreaNotTaskPointByStatus("5", "2", null, "0"); + for (BstIvtCutpointivt cutPoint : cutPoints) { + log.info("此时执行的点位:{}", cutPoint.getPoint_code()); + // 获取分切计划 + List collect = Stream.of(cutPoint.getQzz_no1(), cutPoint.getQzz_no2()) + .filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList()); + if (collect.size() == 0) { + cutPoint.setRemark("点位数据与状态不符合,气胀轴编码为空!"); + cutPoint.setIs_used("0"); + cutPoint.setUpdate_time(DateUtil.now()); + bcutpointivtService.updateById(cutPoint); + continue; + } + + //获取任意一条分切计划 + PdmBiSlittingproductionplan plan = slittingproductionplanService.getOne(new LambdaQueryWrapper() + .eq(PdmBiSlittingproductionplan::getQzzno,collect.get(0))); + + AreaBCachePointDto build = AreaBCachePointDto.builder() + .area(cutPoint.getProduct_area()) + .location(cutPoint.getPoint_location()) + .pointStatus("01") + .plan(cutPoint.getPlan()) + .size(plan.getQzz_size()).build(); + + //查询可以存放的点位(根据区域、规划、尺寸查询) + List list = deliverycachepointivtService.getAreaBCacheByConditionsAndNoTask(build); + // 创建桁架任务 + JSONObject trussTaskParam = new JSONObject(); + if (ObjectUtil.isNotEmpty(cutPoint.getQzz_no1()) && ObjectUtil.isNotEmpty(cutPoint.getQzz_no2())) { + if (list.size() < 2) { + log.info("原地等待,无可用架子..."); + // 原地等待 + // 分切计划状态修改02->03 +// List collect = Stream.of(task.getVehicle_code(), task.getVehicle_code2()) +// .filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList()); +// PdmBiSlittingproductionplan p = new PdmBiSlittingproductionplan(); +// p.setStatus("03"); +// TaskUtils.updateOptMessageBySlitterPlan(p); +// slittingproductionplanService.update(p, new LambdaQueryWrapper() +// .in(PdmBiSlittingproductionplan::getQzzno, collect)); + return; + } + Deliverycachepointivt d1 = list.get(0); + Deliverycachepointivt d2 = list.get(1); + // 四点 + trussTaskParam.put("point_code1", cutPoint.getTruss_point_code1()); + trussTaskParam.put("point_code2", d1.getPoint_code()); + trussTaskParam.put("point_code3", cutPoint.getTruss_point_code2()); + trussTaskParam.put("point_code4", d2.getPoint_code()); + trussTaskParam.put("vehicle_code1", cutPoint.getQzz_no1()); + trussTaskParam.put("vehicle_code2", cutPoint.getQzz_no2()); + trussTaskParam.put("truss_type", "8"); + trussTaskParam.put("task_type", SlitterEnum.TASK_TYPE.code("拆单桁架任务")); + trussTaskParam.put("product_area", cutPoint.getProduct_area()); + trussTaskParam.put("to_Task1_Axis_Type", plan.getQzz_size()); + trussTaskParam.put("to_Task2_Axis_Type", plan.getQzz_size()); + trussDisassemblyCacheTask.createTask(trussTaskParam); + } else { + if (list.isEmpty()) { + log.info("原地等待,无可用架子..."); + // 原地等待 + // 分切计划状态修改02->03 +// List collect = Stream.of(task.getVehicle_code(), task.getVehicle_code2()) +// .filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList()); +// PdmBiSlittingproductionplan p = new PdmBiSlittingproductionplan(); +// p.setStatus("03"); +// TaskUtils.updateOptMessageBySlitterPlan(p); +// slittingproductionplanService.update(p, new LambdaQueryWrapper() +// .in(PdmBiSlittingproductionplan::getQzzno, collect)); + return; + } + // 两点 + Deliverycachepointivt d1 = list.get(0); + trussTaskParam.put("point_code1", ObjectUtil.isNotEmpty(cutPoint.getQzz_no1()) + ? cutPoint.getTruss_point_code1() : cutPoint.getTruss_point_code2()); + trussTaskParam.put("point_code2", d1.getPoint_code()); + trussTaskParam.put("truss_type", "8"); + trussTaskParam.put("task_type", SlitterEnum.TASK_TYPE.code("拆单桁架任务")); + trussTaskParam.put("product_area", cutPoint.getProduct_area()); + trussTaskParam.put("to_Task1_Axis_Type", plan.getQzz_size()); + trussDisassemblyCacheTask.createTask(trussTaskParam); + } + + } + } + +}