diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/AgvCallShaftManuallyTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/AgvCallShaftManuallyTask.java new file mode 100644 index 000000000..e41d1c4df --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/AgvCallShaftManuallyTask.java @@ -0,0 +1,143 @@ +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.JSONObject; +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.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.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.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author: lyd + * @Date: 2025/9/3 + */ +@Slf4j +@Component +public class AgvCallShaftManuallyTask extends AbstractAcsTask { + private final String THIS_CLASS = AgvCallShaftManuallyTask.class.getName(); + @Autowired + private IschBaseTaskService taskService; + + @Autowired + private IBstIvtCutpointivtService bcutpointivtService; + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + List taskList = taskService.getIssueTasks(THIS_CLASS); + + ArrayList resultList = new ArrayList<>(); + String agv_system_type = "2"; + for (SchBaseTask task : taskList) { + 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()) + .agv_system_type(agv_system_type) + .priority(task.getPriority()) + .remark(task.getRemark()) + .product_area(task.getProduct_area()) + .build(); + resultList.add(dto); + } + return resultList; + } + + @Override + 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 endPoint = task.getPoint_code2(); + BstIvtCutpointivt agvPoint = bcutpointivtService.getPintByAgvCode(endPoint, false); + agvPoint.setPoint_status("2"); + agvPoint.setUpdate_time(DateUtil.now()); + agvPoint.setRemark("人工呼叫空轴!"); + bcutpointivtService.updateById(agvPoint); + } + // 取消 + if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) { + task.setTask_status(TaskStatusEnum.FINISHED.getCode()); + } + TaskUtils.updateOptMessageByTask(task); + 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(ObjectUtil.isNotEmpty(form.getString("task_status")) + ? form.getString("task_status") + : TaskStatusEnum.START_AND_POINT.getCode()); + task.setPoint_code1(form.getString("point_code1")); + task.setPoint_code2(form.getString("point_code2")); + // 行家任务给6,AGV给3 + task.setAcs_task_type("3"); + task.setIs_delete(SlitterConstant.SLITTER_NO); + 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"); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/TrussCallShaftManuallyTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/TrussCallShaftManuallyTask.java new file mode 100644 index 000000000..b0e6e1eac --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/TrussCallShaftManuallyTask.java @@ -0,0 +1,177 @@ +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.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.bst.ivt.shafttubeivt.service.IBstIvtShafttubeivtService; +import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt; +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.constant.SlitterEnum; +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.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + * 人工叫轴桁架任务 + * @Author: lyd + * @Date: 2025/9/3 + */ +@Slf4j +@Component +public class TrussCallShaftManuallyTask extends AbstractAcsTask { + private final String THIS_CLASS = TrussCallShaftManuallyTask.class.getName(); + @Autowired + private IschBaseTaskService taskService; + @Autowired + private IBstIvtCutpointivtService bcutpointivtService; + @Autowired + private IBstIvtShafttubeivtService bshafttubeivtService; + @Autowired + private AgvCallShaftManuallyTask agvCallShaftManuallyTask; + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + List taskList = taskService.getIssueTasks(THIS_CLASS); + + ArrayList resultList = new ArrayList<>(); + String agv_system_type = "2"; + for (SchBaseTask task : taskList) { + 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()) + .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()); + // 判断当前的任务组是否都做完了,做完了就申请AGV搬走 + JSONObject requestObj = JSONObject.parseObject(task.getRequest_param()); + String startPoint = task.getPoint_code1(); + String endPoint = task.getPoint_code2(); + SchBaseTask one = taskService.getOne(new LambdaQueryWrapper() + .eq(SchBaseTask::getIs_delete, "0") + .eq(SchBaseTask::getTask_group_id, task.getTask_group_id()) + .ne(SchBaseTask::getTask_id, task.getTask_id()) + .lt(SchBaseTask::getTask_status, "07"), false); + // 数据赋值 + BstIvtShafttubeivt startPointObj = bshafttubeivtService.getByPointCode(startPoint, false); + startPointObj.setHave_qzz("0"); + startPointObj.setTube_name1(""); + startPointObj.setPlan(""); + TaskUtils.updateOptMessageByBShaftPoint(startPointObj); + bshafttubeivtService.updateById(startPointObj); + BstIvtCutpointivt endPointObj = bcutpointivtService.getPintByTrussCode(endPoint, false); + endPointObj.setPoint_status("2"); + endPointObj.setRemark("等待搬运空轴..."); + bcutpointivtService.updateById(endPointObj); + if (ObjectUtil.isEmpty(one)) { + // 创建AGV任务 + JSONObject exParam = new JSONObject(); + exParam.put("point_code1", endPointObj.getPoint_code()); + exParam.put("point_code2", task.getPoint_code3()); + exParam.put("task_type", SlitterEnum.TASK_TYPE.code("送空轴AGV任务")); + exParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + agvCallShaftManuallyTask.createTask(exParam); + } + } + // 取消 + if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) { + task.setTask_status(TaskStatusEnum.FINISHED.getCode()); + } + TaskUtils.updateOptMessageByTask(task); + 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(ObjectUtil.isNotEmpty(form.getString("task_status")) + ? form.getString("task_status") + : TaskStatusEnum.START_AND_POINT.getCode()); + task.setPoint_code1(form.getString("point_code1")); + task.setPoint_code2(form.getString("point_code2")); + task.setPoint_code3(form.getString("point_code3")); + task.setTask_group_id(form.getString("group_id")); + 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"); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/constant/SlitterEnum.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/constant/SlitterEnum.java index d2800839b..b1af1fbe6 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/constant/SlitterEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/constant/SlitterEnum.java @@ -26,8 +26,13 @@ public enum SlitterEnum { , "套轴异常处理AGV任务", "010811", "套轴异常处理桁架任务", "010812", "送气胀轴到分切机任务", "010813" , "拔轴完毕出轴", "010814", "穿拔轴缓存<>气胀轴缓存位", "010815", "备货区单独送空载具", "010816" , "拼单送轴", "010817", "拆单两点移动任务", "010818", "拆单四点移动任务", "010819" - , "满轴拼单桁架任务", "010820") - ); + , "满轴拼单桁架任务", "010820", "送空轴AGV任务", "010821", "人工叫空轴桁架任务", "010822") + ), + /** + * 二次请求 + */ + TRUSS_SECONDARY_REQUEST(MapOf.of("套轴取货二次分配", "1", "拔轴放货二次分配", "2", "进轴放货二次分配", "3", "出轴取货二次分配", "4")) + ; private Map code; diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/controller/SlitterController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/controller/SlitterController.java index 7399f82ca..fcbbc034e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/controller/SlitterController.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/controller/SlitterController.java @@ -94,4 +94,10 @@ public class SlitterController { slitterService.recover(entity); return new ResponseEntity<>( HttpStatus.OK); } + @PostMapping("/callShaft") + @Log("呼叫空轴") + @SaIgnore + public ResponseEntity callShaft(@RequestBody JSONObject entity){ + return new ResponseEntity<>(slitterService.callShaft(entity), HttpStatus.OK); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/SlitterService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/SlitterService.java index c4ad986bd..b35c7bb38 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/SlitterService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/SlitterService.java @@ -398,4 +398,6 @@ public interface SlitterService { * @param param */ JSONObject getTubeLength(JSONObject param); + + JSONObject callShaft(JSONObject entity); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java index d4cf889b6..a5762b2dd 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java @@ -148,6 +148,8 @@ public class SlitterServiceImpl implements SlitterService { private ClassstandardService classstandardService; @Autowired private StockAreaSendVehicleTask stockAreaSendVehicleTask; + @Autowired + private TrussCallShaftManuallyTask trussCallShaftManuallyTask; @Override public JSONObject acsRequestShaftLoadTube(JSONObject param) { @@ -3008,6 +3010,90 @@ public class SlitterServiceImpl implements SlitterService { return res; } + @Override + public JSONObject callShaft(JSONObject param) { + // area、point_code、row(size,generation) + log.info("呼叫空轴:{}", param); + JSONObject res = new JSONObject(); + String area = param.getString("area"); + String pointCode = param.getString("point_code"); + RLock open = redissonClient.getLock(pointCode); + boolean openLock; + try { + openLock = open.tryLock(0, TimeUnit.SECONDS); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + try { + if (openLock) { + JSONArray row = param.getJSONArray("row"); + if (row.size() > 2) { + throw new BadRequestException("一次最多只能呼叫两根轴!"); + } + List list = taskService.list(new LambdaQueryWrapper() + .lt(SchBaseTask::getTask_status, "07") + .eq(SchBaseTask::getIs_delete, "0") + .and(la2 -> la2.eq(SchBaseTask::getPoint_code1, pointCode) + .or() + .eq(SchBaseTask::getPoint_code2, pointCode) + .or() + .eq(SchBaseTask::getPoint_code3, pointCode) + .or() + .eq(SchBaseTask::getPoint_code4, pointCode))); + if (list.size() > 0) { + throw new BadRequestException("点位[" + pointCode + "]存在未完成得任务!"); + } + BstIvtCutpointivt agvPoint = bcutpointivtService.getPintByAgvCode(pointCode, false); + String groupId = IdUtil.getSnowflake(1, 1).nextIdStr(); + // 找终点 + // 获取一个空位 (上下区域) + List emptyNotTaskPoint = bcutpointivtService.getNBJAreaNotTaskPointByStatus( + "1", "1", agvPoint.getPoint_location(), "1"); + if (emptyNotTaskPoint.size() == 0) { + throw new BadRequestException("内包间没有空的套轴对接位!"); + } + BstIvtCutpointivt cutpointivt = emptyNotTaskPoint.get(0); + for (int i = 0; i < row.size(); i++) { + JSONObject rowJSONObject = row.getJSONObject(i); + BstIvtShafttubeivt pickWaitPoint = shafttubeivtService.getOne(new LambdaQueryWrapper() + .eq(BstIvtShafttubeivt::getPoint_location, agvPoint.getPoint_location()) + .eq(BstIvtShafttubeivt::getPoint_type, "7")); + if (ObjectUtil.isEmpty(pickWaitPoint)) { + throw new BadRequestException("未找到可存放气涨轴规格「" + rowJSONObject.getString("size") + "」的等待点位"); + } + // 判断库内有没有可用的轴 + List shafttubeivts = shafttubeivtService.getNotTaskShaftCache(rowJSONObject.getString("size"), + rowJSONObject.getString("generation"), agvPoint.getPoint_location()); + if (shafttubeivts.size() == 0) { + throw new BadRequestException("没有气胀轴尺寸[" + rowJSONObject.getString("size") + "],代数[" + + rowJSONObject.getString("generation") + "]的库存!"); + } + // 创建桁架任务(二次分配) + JSONObject taskParam = new JSONObject(); + taskParam.put("point_code1", pickWaitPoint.getPoint_code()); + taskParam.put("point_code2", i == 0 ? cutpointivt.getTruss_point_code1() : cutpointivt.getTruss_point_code2()); + taskParam.put("point_code3", pointCode); + taskParam.put("task_type", SlitterEnum.TASK_TYPE.code("人工叫空轴桁架任务")); + taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + taskParam.put("qzz_size", rowJSONObject.getString("size")); + taskParam.put("qzz_generation", rowJSONObject.getString("generation")); + taskParam.put("group_id", groupId); + trussCallShaftManuallyTask.createTask(taskParam); + } + + } else { + throw new BadRequestException("系统繁忙,稍后在试!!"); + } + } finally { + if (open.isLocked() && open.isHeldByCurrentThread()) { + open.unlock(); + } + } + res.put("status", HttpStatus.HTTP_OK); + res.put("message", "请求成功"); + return res; + } + public List getRedisListValue(String key) { List stepTipLogs = (List) redisUtils.get(key); if (CollectionUtil.isEmpty(stepTipLogs)) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index b92990e34..7547ae341 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -20,6 +20,8 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; +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.bst.ivt.shafttubeivt.service.IBstIvtShafttubeivtService; import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt; import org.nl.b_lms.pda.service.ProductOutTwoService; @@ -36,6 +38,7 @@ import org.nl.b_lms.sch.tasks.TwoBoxExcepTask; import org.nl.b_lms.sch.tasks.TwoExceptionInTask; import org.nl.b_lms.sch.tasks.first_floor_area.MzhcwTask; import org.nl.b_lms.sch.tasks.first_floor_area.SsxDjwTask; +import org.nl.b_lms.sch.tasks.slitter.constant.SlitterEnum; import org.nl.b_lms.sch.tasks.slitter.service.SlitterService; import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService; import org.nl.b_lms.storage_manage.database.service.IMdpbBoxtypeService; @@ -186,6 +189,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Autowired private IBstIvtShafttubeivtService shafttubeivtService; @Autowired + private IBstIvtCutpointivtService bstIvtCutpointivtService; + @Autowired private RedisUtils redisUtils; /** @@ -2830,16 +2835,26 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { boolean updateFlag = false; if ("1".equals(type)) { if (task.getPoint_code1().contains("QHD")) { - // 请求取货 - String deviceCode = task.getPoint_code2(); - List stepTipLogs = getRedisListValue("ERROR" + deviceCode); - BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false); JSONObject requestParam = JSONObject.parseObject(task.getRequest_param()); String qzzSize = requestParam.getString("qzz_size"); + // 请求取货 + String deviceCode = task.getPoint_code2(); + BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false); + String generation; + String location; + if (ObjectUtil.isNotEmpty(startPoint)) { + generation = startPoint.getQzz_generation(); + location = startPoint.getPoint_location(); + } else { + BstIvtCutpointivt cutPoint = bstIvtCutpointivtService.getPintByTrussCode(deviceCode, false); + location = cutPoint.getPoint_location(); + generation = requestParam.getString("qzz_generation"); + } // 获取气涨轴缓存没有任务的点位 List shafttubeivts = shafttubeivtService.getNotTaskShaftCache(qzzSize, - startPoint.getQzz_generation(), startPoint.getPoint_location()); + generation, location); if (shafttubeivts.size() == 0) { + List stepTipLogs = getRedisListValue("ERROR" + deviceCode); stepTipLogs.add(">>>桁架取轴二次请求异常:未找到气涨轴规格「" + qzzSize + "」的暂存位"); redisUtils.set("ERROR" + deviceCode, stepTipLogs); throw new BadRequestException("未找到气涨轴规格「" + qzzSize + "」的暂存位"); @@ -2916,6 +2931,31 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { targetPoint = task.getPoint_code2(); } } + if ("4".equals(type)) { + if (task.getPoint_code1().contains("QHD")) { + // 请求取货 + String deviceCode = task.getPoint_code2(); + BstIvtCutpointivt cutPoint = bstIvtCutpointivtService.getPintByTrussCode(deviceCode, false); + JSONObject requestParam = JSONObject.parseObject(task.getRequest_param()); + String qzzSize = requestParam.getString("qzz_size"); + String qzz_generation = ObjectUtil.isNotEmpty(requestParam.getString("qzz_generation")) ? requestParam.getString("qzz_generation") : "4"; + // 获取气涨轴缓存没有任务的点位 + List shafttubeivts = shafttubeivtService.getNotTaskShaftCache(qzzSize, + qzz_generation, cutPoint.getPoint_location()); + if (shafttubeivts.size() == 0) { + throw new BadRequestException("未找到气涨轴规格「" + qzzSize + "」的暂存位"); + } + BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0); + targetPoint = shafttubeivt.getPoint_code(); + // 修改任务 + task.setPoint_code1(targetPoint); + task.setRemark("取货请求成功"); + task.setUpdate_time(DateUtil.now()); + updateFlag = true; + } else { + targetPoint = task.getPoint_code1(); + } + } if (updateFlag) { taskService.updateById(task); }