diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/dao/BstIvtcutrelevance.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/dao/BstIvtcutrelevance.java new file mode 100644 index 000000000..2557c44e3 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/dao/BstIvtcutrelevance.java @@ -0,0 +1,39 @@ +package org.nl.b_lms.pdm.info.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 子卷下线记录表 + *

+ * + * @author author + * @since 2024-07-19 + */ +@Data +@TableName("bst_ivt_cutrelevance") +public class BstIvtcutrelevance implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 标识 + */ + @TableId + private String id; + + /** + * 起始设备 + */ + private String origin_device; + + /** + * 关联设备 + */ + private String target_device; + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/mapper/BstIvtCutrelevanceMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/mapper/BstIvtCutrelevanceMapper.java new file mode 100644 index 000000000..4938607cc --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/mapper/BstIvtCutrelevanceMapper.java @@ -0,0 +1,15 @@ +package org.nl.b_lms.pdm.info.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.b_lms.pdm.info.dao.BstIvtcutrelevance; +/** + *

+ * 子卷下线记录表 Mapper 接口 + *

+ * + * @author author + * @since 2024-07-19 + */ +public interface BstIvtCutrelevanceMapper extends BaseMapper { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/service/IBstIvtCutrelevanceService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/service/IBstIvtCutrelevanceService.java new file mode 100644 index 000000000..516d77883 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/service/IBstIvtCutrelevanceService.java @@ -0,0 +1,17 @@ +package org.nl.b_lms.pdm.info.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.b_lms.pdm.info.dao.BstIvtcutrelevance; +import org.nl.b_lms.pdm.info.dao.PdmBiOrderbominfo; + +/** + *

+ * 订单BOM信息 服务类 + *

+ * + * @author author + * @since 2024-07-19 + */ +public interface IBstIvtCutrelevanceService extends IService { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/service/impl/BstIvtCutrelevanceServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/service/impl/BstIvtCutrelevanceServiceImpl.java new file mode 100644 index 000000000..80129ca48 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/service/impl/BstIvtCutrelevanceServiceImpl.java @@ -0,0 +1,24 @@ +package org.nl.b_lms.pdm.info.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.b_lms.pdm.info.dao.BstIvtcutrelevance; +import org.nl.b_lms.pdm.info.dao.PdmBiContainerinbound; +import org.nl.b_lms.pdm.info.mapper.BstIvtCutrelevanceMapper; +import org.nl.b_lms.pdm.info.mapper.PdmBiContainerinboundMapper; +import org.nl.b_lms.pdm.info.service.IBstIvtCutrelevanceService; +import org.nl.b_lms.pdm.info.service.IPdmBiContainerinboundService; +import org.springframework.stereotype.Service; + +/** + *

+ * 子卷下线记录表 服务实现类 + *

+ * + * @author author + * @since 2024-07-19 + */ +@Service +public class BstIvtCutrelevanceServiceImpl extends ServiceImpl implements IBstIvtCutrelevanceService { + + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SlitterPinDanTrussTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SlitterPinDanTrussTask.java new file mode 100644 index 000000000..826b17da2 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SlitterPinDanTrussTask.java @@ -0,0 +1,179 @@ +package org.nl.b_lms.sch.tasks.slitter; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +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.constant.SlitterConstant; +import org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil; +import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; +import org.nl.common.utils.SecurityUtils; +import org.nl.common.utils.TaskUtils; +import org.nl.modules.wql.WQL; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.sch.AcsTaskDto; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.TaskStatusEnum; +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; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @Author: lyd + * @Description: 分切拼单桁架任务(2/4点任务) + * @Date: 2024/2/1 + */ +@Slf4j +@Service +public class SlitterPinDanTrussTask extends AbstractAcsTask { + private final String THIS_CLASS = SlitterPinDanTrussTask.class.getName(); + @Autowired + private IschBaseTaskService taskService; + @Autowired + private IPdmBiSlittingproductionplanService slittingproductionplanService; + @Autowired + private IBstIvtCutpointivtService bcutpointivtService; + @Autowired + private IstIvtCutpointivtService cutpointivtService; + + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + List taskList = taskService.getIssueTasks(THIS_CLASS); + + ArrayList resultList = new ArrayList<>(); + String agv_system_type = "2"; + for (SchBaseTask task : taskList) { + String requestParam = task.getRequest_param(); + JSONObject requestParamObj = JSONObject.parseObject(requestParam); + AcsTaskDto dto = AcsTaskDto.builder() + .ext_task_id(task.getTask_id()) + .task_code(task.getTask_code()) + .task_type(task.getAcs_task_type()) + .start_device_code(task.getPoint_code1()) + .next_device_code(task.getPoint_code2()) + .start_device_code2(task.getPoint_code3()) + .next_device_code2(task.getPoint_code4()) + .vehicle_code(task.getVehicle_code()) + .truss_type(requestParamObj.getString("truss_type")) + .empty_site(requestParamObj.getString("empty_site")) + .agv_system_type(agv_system_type) + .priority(task.getPriority()) + .remark(task.getRemark()) + .product_area(task.getProduct_area()) + .build(); + resultList.add(dto); + } + return resultList; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateTaskStatus(JSONObject taskObj, String status) { + SchBaseTask task = taskService.getById(taskObj.getString("task_id")); + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + // 更新任务状态为执行中 + task.setTask_status(TaskStatusEnum.EXECUTING.getCode()); + } + + if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { + task.setTask_status(TaskStatusEnum.FINISHED.getCode()); + //清除起点库存 + String point_code1 = task.getPoint_code1(); + String point_code2 = task.getPoint_code2(); + if (point_code1.endsWith("A")) { + bcutpointivtService.update(new LambdaUpdateWrapper() + .eq(BstIvtCutpointivt::getTruss_point_code1, point_code1) + .set(BstIvtCutpointivt::getQzz_no1, "")); + } else { + bcutpointivtService.update(new LambdaUpdateWrapper() + .eq(BstIvtCutpointivt::getTruss_point_code2, point_code1) + .set(BstIvtCutpointivt::getQzz_no2, "")); + } + //更新终点库存 + if (point_code2.endsWith("A")) { + bcutpointivtService.update(new LambdaUpdateWrapper() + .eq(BstIvtCutpointivt::getTruss_point_code1, point_code2) + .set(BstIvtCutpointivt::getQzz_no1, task.getVehicle_code())); + } else { + bcutpointivtService.update(new LambdaUpdateWrapper() + .eq(BstIvtCutpointivt::getTruss_point_code2, point_code2) + .set(BstIvtCutpointivt::getQzz_no2, task.getVehicle_code())); + } + } + + // 取消 + if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) { + task.setTask_status(TaskStatusEnum.FINISHED.getCode()); + task.setIs_delete("1"); + } + task.setUpdate_time(DateUtil.now()); + taskService.updateById(task); + } + + @Override + public String createTask(JSONObject form) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String currentUsername = SecurityUtils.getCurrentUsername(); + + SchBaseTask task = new SchBaseTask(); + task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr()); + task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); + task.setPoint_code1(form.getString("point_code1")); + task.setPoint_code2(form.getString("point_code2")); + task.setVehicle_code(form.getString("vehicle_code")); + task.setAcs_task_type("6"); + task.setIs_delete("0"); + task.setRequest_param(form.toJSONString()); + task.setTask_type(form.getString("task_type")); + task.setProduct_area(form.getString("product_area")); + task.setCreate_id(currentUserId); + task.setCreate_name(currentUsername); + task.setCreate_time(DateUtil.now()); + task.setHandle_class(THIS_CLASS); + //根据类型获取对应的任务优先级 + JSONObject priority_jo = WQL.getWO("PDA_COOLIN").addParam("flag", "3").addParam("task_type", task.getTask_type()).process().uniqueResult(0); + if (ObjectUtil.isEmpty(priority_jo)) { + task.setPriority("1"); + } else { + task.setPriority(priority_jo.getString("value")); + } + taskService.save(task); + this.immediateNotifyAcs(null); + return task.getTask_id(); + } + + @Override + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); + } + + + @Override + public void cancel(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, "0"); + } +}