From c61182009436011354eac9ebf1496fac65bd3bca Mon Sep 17 00:00:00 2001 From: zhangzq Date: Sun, 22 Jun 2025 12:36:44 +0800 Subject: [PATCH] =?UTF-8?q?add:=E5=A2=9E=E5=8A=A0=E5=85=AC=E5=85=B1?= =?UTF-8?q?=E7=B1=BB=E7=9B=B4=E6=8E=A5=E4=B8=8B=E5=8F=91=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E9=87=8D=E5=86=99=E5=AD=90=E5=8D=B7=E4=B8=8B=E7=BA=BF?= =?UTF-8?q?=E4=B8=8B=E5=8F=91=E6=94=B9=E7=9B=B4=E6=8E=A5=E4=B8=8B=E5=8F=91?= =?UTF-8?q?=20opt:=E4=BF=AE=E6=94=B9=E8=A3=85=E7=AE=B1=E5=8C=BA=E8=A1=A5?= =?UTF-8?q?=E7=A9=BA=E4=BB=A3=E7=A0=81=EF=BC=8C=E6=94=B9=E6=88=90=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=8F=AF=E7=94=A8=E7=82=B9=E4=BD=8D=E7=94=9F=E6=88=90?= =?UTF-8?q?=E4=B8=8B=E5=8F=91=20opt:=E5=88=A0=E9=99=A4=E8=A3=85=E7=AE=B1?= =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E8=A1=8C=E6=9E=B6=E4=BB=BB=E5=8A=A1=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E5=90=8E=E8=B0=83=E7=94=A8=E8=A1=A5=E7=A9=BA=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=EF=BC=8C=E7=BB=9F=E4=B8=80=E7=94=B1=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E5=99=A8=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sch/tasks/first_floor_area/MzhcwTask.java | 26 ++++++++- .../first_floor_area/SendDjqKzjTask.java | 24 +++++++- .../sch/tasks/first_floor_area/ZxDjwTask.java | 4 -- .../auto/AutoSendVehicleToDjq.java | 31 ++++++---- .../tasks/slitter/SendShaftToCacheTask.java | 5 +- .../nl/wms/sch/manage/AbstractAcsTask.java | 58 +++++++++++++++---- 6 files changed, 118 insertions(+), 30 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java index 7040b7395..9bb253166 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java @@ -336,11 +336,35 @@ public class MzhcwTask extends AbstractAcsTask { taskService.save(task); //如果目标点位没有空位先创建不下发 if (isSend) { - this.immediateNotifyAcs(null); + this.immediateNotifyAcs(task,""); } return task.getTask_id(); } + @Override + public List addTask(SchBaseTask task) { + List result = new ArrayList<>(); + AcsTaskDto dto = AcsTaskDto.builder() + .ext_task_id(task.getTask_id().toString()) + .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()) + //四个点任务与两个点任务类型区分 + .agv_action_type(task.getVehicle_code2()) + .vehicle_code(task.getVehicle_code()) + .priority(task.getPriority()) + .remark(task.getRemark()) + .class_type(IOSEnum.ACS_TYPE.code("子卷下线行架任务")) + .product_area(task.getProduct_area()) + .agv_action_type(PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务")) + .interaction_json(JSON.parseObject(task.getRequest_param())) + .build(); + result.add(dto); + return result; + } @Override @Transactional diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SendDjqKzjTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SendDjqKzjTask.java index 6d0ec80b0..3533872bc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SendDjqKzjTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SendDjqKzjTask.java @@ -164,11 +164,33 @@ public class SendDjqKzjTask extends AbstractAcsTask { taskService.save(task); //如果目标点位没有空位先创建不下发 if (isSend) { - this.immediateNotifyAcs(null); + this.immediateNotifyAcs(task,""); } return task.getTask_id(); } + @Override + public List addTask(SchBaseTask r) { + ArrayList resultList = new ArrayList<>(); + AcsTaskDto dto = AcsTaskDto.builder() + .ext_task_id(r.getTask_id().toString()) + .task_code(r.getTask_code()) + .task_type(r.getAcs_task_type()) + .start_device_code(r.getPoint_code1()) + .next_device_code(r.getPoint_code2()) + .start_device_code2(r.getPoint_code3()) + .next_device_code2(r.getPoint_code4()) + .vehicle_code(r.getVehicle_code()) + .priority(r.getPriority()) + .remark(r.getRemark()) + .product_area(r.getProduct_area()) + .agv_action_type(r.getVehicle_code2()) + .agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼诺宝任务")) + .interaction_json(JSON.parseObject(r.getRequest_param())) + .build(); + resultList.add(dto); + return resultList; + } @Override @Transactional diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java index 3eb7e997a..3248d93a7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java @@ -146,10 +146,6 @@ public class ZxDjwTask extends AbstractAcsTask { bstIvtBoxinfoMapper.updateById(bstIvtBoxinfo); //5.最后一个子卷,清除装箱位木箱信息 packageinfoivtService.update(null, new UpdateWrapper().set("update_time", now).set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code2())); - //装箱位所在区域 - String block = packageinfoivtService.list(new LambdaQueryWrapper().eq(BstIvtPackageinfoivt::getPoint_code,schBaseTask.getPoint_code2())).get(0).getBlock(); - //6.创建装箱区->待检区或管制区补空任务 - callingVehicleToDjqOrGzq(Integer.parseInt(packagerelationList.get(0).getQuanlity_in_box().toString()),block); } //7.改变子卷包装状态为已装箱:1 PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToDjq.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToDjq.java index 92a6a937b..79ef989e4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToDjq.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendVehicleToDjq.java @@ -22,6 +22,7 @@ import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.List; @@ -75,25 +76,33 @@ public class AutoSendVehicleToDjq extends Prun { .eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) .eq(SchBaseTask::getTask_type, "010909")); if (ObjectUtils.isNotEmpty(taskList)) { + log.warn("当前装箱区存在执行的行架任务"+taskList.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(","))); return; } } //存在装箱区有空载具的点位 - List zxqIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", ""); - if (ObjectUtils.isEmpty(zxqIvtList)) { + List zxqVehicleList = packageinfoivtService + .selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具")); + List djqEmpList = packageinfoivtService + .selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空")); + if (CollectionUtils.isEmpty(zxqVehicleList) || CollectionUtils.isEmpty(djqEmpList)) { + log.info(THIS_CLASS + "装箱区或待检区没有可用点位"); return; } - //按块执行取空任务 - if (isCalling.equals(IOSEnum.IS_NOTANDYES.code("是"))) { - if (StringUtils.isNotBlank(block)) { - zxqIvtList = zxqIvtList.stream().filter(r -> r.getBlock().equals(block)).collect(Collectors.toList()); - } - } JSONObject task = new JSONObject(); - task.put("point_code1", zxqIvtList.get(0).getPoint_code()); - getPointCode(task, PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->管制区)")); + task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->待检区)")); + task.put("point_code1", zxqVehicleList.get(0).getPoint_code()); + task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务")); + task.put("task_status", TaskStatusEnum.SURE_END.getCode()); + task.put("point_code2", djqEmpList.get(0).getPoint_code()); + try { + sendDjqKzjTask.createTask(task); + }catch (Exception ex){ + log.error(THIS_CLASS+"任务创建失败"+ex.getMessage()); + } + } else { - log.info("装箱区->待检区或管制区补空载具任务正在创建被锁住。"); + log.info(THIS_CLASS + "装箱区搬空任务正在创建被锁住"); } } finally { if (lock.isLocked() && lock.isHeldByCurrentThread()) { diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SendShaftToCacheTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SendShaftToCacheTask.java index 81f78f740..39763624f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SendShaftToCacheTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SendShaftToCacheTask.java @@ -16,7 +16,6 @@ import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt; import org.nl.b_lms.sch.point.service.IstIvtShaftivtService; 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.SlitterEnum; import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.TaskUtils; @@ -183,7 +182,7 @@ public class SendShaftToCacheTask extends AbstractAcsTask { } @Override - public JSONObject immediateNotifyAcs(String task_id) { + public JSONObject immediateNotifyAcs(Object task_id) { try { Thread.sleep(1000); } catch (Exception ex) { @@ -191,7 +190,7 @@ public class SendShaftToCacheTask extends AbstractAcsTask { } List taskList = new ArrayList<>(); - SchBaseTask baseTask = taskService.getById(task_id); + SchBaseTask baseTask = taskService.getById((String)task_id); taskList.add(baseTask); ArrayList resultList = new ArrayList<>(); String agv_system_type = "2"; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java index b12012588..b7521127f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java @@ -4,6 +4,9 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.StringUtils; +import org.nl.b_lms.sch.task.dao.SchBaseTask; +import org.nl.modules.common.exception.BadRequestException; import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.AcsUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -34,12 +37,26 @@ public abstract class AbstractAcsTask { return addTask(); } + public List schedule(String taskId) { + return addTask(taskId); + } + + public List schedule(SchBaseTask task) { + return addTask(task); + } + /** * 添加任务进行下发 * * @return */ public abstract List addTask(); + public List addTask(String taskId){ + throw new BadRequestException("当前类没有重写addTask(taskId)方法"); + }; + public List addTask(SchBaseTask task){ + throw new BadRequestException("当前类没有重写addTask(taskId)方法"); + }; /** * @param taskObj 代表一条任务对象 @@ -107,25 +124,46 @@ public abstract class AbstractAcsTask { return AcsUtil.notifyAcs("api/wms/task", jsonArray); } + /** * */ - public JSONObject immediateNotifyAcs(String task_id) { + public JSONObject immediateNotifyAcs(Object task_id) { try { Thread.sleep(1000); }catch (Exception ex){ } + List taskList; + if (ObjectUtil.isEmpty(task_id)){ + taskList = this.schedule(); + }else { + taskList = this.schedule((String) task_id); + } + if (ObjectUtil.isNotEmpty(taskList)) { + JSONArray arr = JSONArray.parseArray(JSON.toJSONString(taskList)); + if (acsUtil == null){ + return AcsUtil.notifyAcs("api/wms/task", arr); + }else { + return acsUtil.notifyAcs3("api/wms/task", arr); + } + } + return null; - List taskList = this.schedule(); - if (ObjectUtil.isNotEmpty(taskList)) { - JSONArray arr = JSONArray.parseArray(JSON.toJSONString(taskList)); - if (acsUtil == null){ - return AcsUtil.notifyAcs("api/wms/task", arr); - }else { - return acsUtil.notifyAcs3("api/wms/task", arr); - } - } + } + public JSONObject immediateNotifyAcs(SchBaseTask task,String taskId) { + if (task==null){ + throw new BadRequestException("任务下发参数不能为空"); + } + List taskList = this.schedule(task); + if (ObjectUtil.isNotEmpty(taskList)) { + JSONArray arr = JSONArray.parseArray(JSON.toJSONString(taskList)); + if (acsUtil == null){ + return AcsUtil.notifyAcs("api/wms/task", arr); + }else { + return acsUtil.notifyAcs3("api/wms/task", arr); + } + } return null; }