fix:自动创建拆单桁架任务

This commit is contained in:
zhouz
2026-06-28 21:27:57 +08:00
parent b36bb4e6b0
commit 4cc67c8c82

View File

@@ -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<BstIvtCutpointivt> cutPoints = bcutpointivtService.getAreaNotTaskPointByStatus("5", "2", null, "0");
for (BstIvtCutpointivt cutPoint : cutPoints) {
log.info("此时执行的点位:{}", cutPoint.getPoint_code());
// 获取分切计划
List<String> 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<PdmBiSlittingproductionplan>()
.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<Deliverycachepointivt> 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<String> 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<PdmBiSlittingproductionplan>()
// .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<String> 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<PdmBiSlittingproductionplan>()
// .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);
}
}
}
}