From 9186ce137f2a67a4d8d7bb1cbfcc40cf69729d22 Mon Sep 17 00:00:00 2001 From: liuxy Date: Tue, 18 Jun 2024 16:34:21 +0800 Subject: [PATCH] =?UTF-8?q?rev=EF=BC=9A1.=E5=87=BA=E5=BA=93=E5=85=AD?= =?UTF-8?q?=E4=B8=AA=E4=BD=8D=E7=BD=AE=E5=9C=A8=E4=B8=80=E4=B8=AA=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E5=8D=95=E4=B8=8A=E4=B8=80=E8=B5=B7=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=20=E6=8A=A5=E9=94=99=EF=BC=9A?= =?UTF-8?q?=E2=80=98=E4=BB=93=E4=BD=8D=E4=B8=8D=E8=B6=B3=E2=80=99=202.?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E6=8D=86=E6=89=8E=E7=9A=84=E6=97=B6=E5=80=99?= =?UTF-8?q?=E8=A6=81=E8=BF=9B=E8=A1=8C=E5=88=A4=E6=96=AD=E6=AD=A4=E8=A7=84?= =?UTF-8?q?=E6=A0=BC=E6=98=AF=E5=90=A6=E5=8F=AA=E6=9C=89=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E7=AE=B1=E5=AD=90=EF=BC=8C=E5=A6=82=E6=9E=9C=E6=98=AF=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E8=B0=83=E7=94=A8acs=E6=8E=A5=E5=8F=A3=E6=94=BE?= =?UTF-8?q?=E8=A1=8C=203.=E6=8D=86=E6=89=8E=E7=9A=84=E6=97=B6=E5=80=99?= =?UTF-8?q?=E6=8D=86=E6=89=8E=E4=BD=8D=E5=A6=82=E6=9E=9C=E6=9C=89=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E7=9B=B8=E5=90=8C=E8=A7=84=E6=A0=BC=E7=9A=84=E7=AE=B1?= =?UTF-8?q?=E5=AD=90=20=E8=A6=81=E4=BC=98=E5=85=88=E6=94=BE=E5=9C=A8?= =?UTF-8?q?=E8=BF=99=E4=B8=AA=E4=BD=8D=E7=BD=AE=E4=B8=8A=204.=E7=94=9F?= =?UTF-8?q?=E6=88=90=E8=BD=AC=E5=BA=93=E4=BB=BB=E5=8A=A1=E6=97=B6=20?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E6=8F=90=E5=89=8D=E7=A1=AE=E5=AE=9A=E5=B7=B7?= =?UTF-8?q?=E9=81=93=E7=9A=84=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nl/b_lms/sch/tasks/TwoLashTask.java | 16 +++++ .../nl/b_lms/sch/tasks/TwoOutHeapTask.java | 1 + .../org/nl/b_lms/sch/tasks/TwoOutTask.java | 3 +- .../impl/StIvtIostorinvOutServiceImpl.java | 59 +++++++++++++------ .../util/impl/InBussManageServiceImpl.java | 38 +++++++++--- .../util/impl/LashManageServiceImpl.java | 4 ++ .../util/impl/OutBussManageServiceImpl.java | 33 +++++++++++ .../util/service/InBussManageService.java | 1 + .../util/service/LashManageService.java | 2 + 9 files changed, 131 insertions(+), 26 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java index 285d30ffe..43f1abfb5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoLashTask.java @@ -141,6 +141,21 @@ public class TwoLashTask extends AbstractAcsTask { // 完成 if (status.equals(TaskStatusEnum.FINISHED.getCode())) { + // 判断当前任务组的所有任务是否都为完成:如果都为完成则 调用acs接口允许此木箱离开 + JSONObject groupTask = WQLObject.getWQLObject("sch_base_task").query("task_group_id = '" + taskObj.getString("task_group_id") + "' and is_delete = '0' and task_status <> 07 and task_id <> '"+taskObj.getString("task_id")+"'") + .uniqueResult(0); + + if (ObjectUtil.isEmpty(groupTask)) { + // 更新点位载具、数量 + JSONObject pointDao = pointTab.query("point_code = '" + taskObj.getString("point_code2") + "'").uniqueResult(0); + pointDao.put("vehicle_code", ""); + pointDao.put("vehicle_qty",0); + WQLObject.getWQLObject("sch_base_point").update(pointDao); + + // TODO 调用acs接口告诉此木箱可以离开 + + } + map.put("task_status", TaskStatusEnum.FINISHED.getCode()); } @@ -219,6 +234,7 @@ public class TwoLashTask extends AbstractAcsTask { json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); json.put("point_code1", form.getString("start_device_code")); json.put("point_code2", form.getString("next_device_code")); + json.put("task_group_id", form.getString("task_group_id")); json.put("is_auto_issue", form.getString("is_auto_issue")); json.put("handle_class", this.getClass().getName()); json.put("create_id", SecurityUtils.getCurrentUserId()); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutHeapTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutHeapTask.java index 353b5f2b1..c059e9993 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutHeapTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutHeapTask.java @@ -110,6 +110,7 @@ public class TwoOutHeapTask extends AbstractAcsTask { JSONObject jsonParam = new JSONObject(); jsonParam.put("device_code",jsonTask.getString("point_code2")); jsonParam.put("vehicle_code",jsonTask.getString("vehicle_code")); + jsonParam.put("task_group_id",jsonTask.getString("task_group_id")); LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class); bean1.createLashTask(jsonParam); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutTask.java index 62f100129..b530d2f1d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutTask.java @@ -163,13 +163,14 @@ public class TwoOutTask extends AbstractAcsTask { bean.finishTask(jsonTask); // 判断此任务组是否全部完成 - JSONArray resultJSONArray = taskTab.query("task_group_id = '" + jsonTask.getString("task_group_id") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'") + JSONArray resultJSONArray = taskTab.query("task_group_id = '" + jsonTask.getString("task_group_id") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "' and handle_class = '"+THIS_CLASS+"'") .getResultJSONArray(0); // 下发堆垛机至行架任务(2个行架位) JSONObject jsonParam = new JSONObject(); jsonParam.put("device_code",jsonTask.getString("point_code2")); jsonParam.put("vehicle_code",jsonTask.getString("vehicle_code")); + jsonParam.put("task_group_id",jsonTask.getString("task_group_id")); jsonParam.put("vehicle_type",jsonTask.getJSONObject("request_param").getString("containerType")); LashManageServiceImpl bean1 = SpringContextHolder.getBean(LashManageServiceImpl.class); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java index dd5ad95cf..3cc003f8b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java @@ -33,6 +33,7 @@ import org.nl.modules.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.system.service.param.ISysParamService; import org.nl.wms.basedata.st.service.StorattrService; import org.nl.wms.basedata.st.service.dto.StorattrDto; import org.nl.wms.pda.mps.eum.RegionTypeEnum; @@ -102,6 +103,9 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl '07' and is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonTask)) { flag = false; - } else { - // 不相同:判断是否有此木箱的任务 - JSONObject jsonTask = taskService.query("table_fk = '" + iostorinv_id + "' and vehicle_code = '" + jsonLow.getString("storagevehicle_code") + "' and is_delete = '0'").uniqueResult(0); - - if (ObjectUtil.isNotEmpty(jsonTask)) { - flag = false; - } - } + } if (flag) { @@ -1160,7 +1154,36 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl().lambda() + .eq(BstIvtBoxinfo::getBox_no, jsonLow.getString("storagevehicle_code")) + ); + + String box_high = boxDao.getBox_high(); + if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) { + height = "1"; + } else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) { + height = "2"; + } else { + height = "3"; + } + moveParam.put("height", height); + moveParam.put("vehicle_type", boxDao.getVehicle_type()); + moveParam.put("move_block_num", jsonLow.getString("block_num")); + + // 查询物料id + StIvtIostorinvdis disDao = iStIvtIostorinvdisService.list( + new QueryWrapper().lambda() + .ne(StIvtIostorinvdis::getWork_status,IOSEnum.BILL_STATUS.code("完成")) + .eq(StIvtIostorinvdis::getBox_no, jsonLow.getString("storagevehicle_code")) + ).get(0); + + moveParam.put("material_id", disDao.getMaterial_id()); JSONObject jsonMove = inBussManageService.getOneStruct(moveParam); // 生成任务 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBussManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBussManageServiceImpl.java index 17cfb5c40..b299ad1cb 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBussManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBussManageServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONAware; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -119,12 +120,27 @@ public class InBussManageServiceImpl implements InBussManageService { * 判断是否有仓位 * 判断条件:库区、仓库、是否启用、是否删除、未锁定、没有载具 */ - JSONArray attrArry = attrTab.query("IFNULL(storagevehicle_code,'') = '' " + - "AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " + - "AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonObject.getString("stor_id") + "' " + - "AND storagevehicle_type = '" + jsonObject.getString("vehicle_type") + "'" + - "AND height = '" + jsonObject.getString("height") + "'" + - "AND sect_id = '" + jsonObject.getString("sect_id") + "'").getResultJSONArray(0); + // 是否是移库: 提前确定的巷道 + String block_num = jsonObject.getString("move_block_num"); + + JSONArray attrArry = new JSONArray(); + if (ObjectUtil.isEmpty(block_num)) { + attrArry = attrTab.query("IFNULL(storagevehicle_code,'') = '' " + + "AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " + + "AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonObject.getString("stor_id") + "' " + + "AND storagevehicle_type = '" + jsonObject.getString("vehicle_type") + "'" + + "AND height = '" + jsonObject.getString("height") + "'" + + "AND sect_id = '" + jsonObject.getString("sect_id") + "'").getResultJSONArray(0); + } else { + attrArry = attrTab.query("IFNULL(storagevehicle_code,'') = '' " + + "AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " + + "AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonObject.getString("stor_id") + "' " + + "AND storagevehicle_type = '" + jsonObject.getString("vehicle_type") + "'" + + "AND height = '" + jsonObject.getString("height") + "'" + + "AND sect_id = '" + jsonObject.getString("sect_id") + "' AND block_num = '"+block_num+"'") + .getResultJSONArray(0); + } + if (ObjectUtil.isEmpty(attrArry)) { notInRowList.clear(); @@ -143,7 +159,10 @@ public class InBussManageServiceImpl implements InBussManageService { jsonSub.put("vehicle_type", jsonObject.getString("vehicle_type")); jsonSub.put("height", jsonObject.getString("height")); - String block_num = getMinBlock(jsonSub); + // 不是移库则需要找新巷道 + if (ObjectUtil.isEmpty(block_num)) { + block_num = getMinBlock(jsonSub); + } /* * 确定哪排:查看每排相同木箱规格等 的数量,找到数量最小的那排 */ @@ -156,6 +175,11 @@ public class InBussManageServiceImpl implements InBussManageService { jsonSub.put("row_num", row_num); JSONObject jsonAttr = queryStruct(jsonSub); + // 如果是移库空并且仓位为空则报错 + if (ObjectUtil.isNotEmpty(jsonObject.getString("move_block_num")) && ObjectUtil.isEmpty(jsonAttr)) { + throw new BadRequestException("仓位不足!"); + } + // 为空则新找巷道 if (ObjectUtil.isEmpty(jsonAttr)) { diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java index e9b6c7a76..d9d300604 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java @@ -10,6 +10,8 @@ import org.hibernate.annotations.Source; import org.nl.b_lms.sch.point.dao.SchBasePoint; import org.nl.b_lms.sch.point.dao.mapper.SchBasePointMapper; import org.nl.b_lms.sch.point.service.IschBasePointService; +import org.nl.b_lms.sch.task.dao.SchBaseTask; +import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper; import org.nl.b_lms.sch.tasks.TwoLashTask; import org.nl.b_lms.sch.tasks.TwoOutHeapTask; import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService; @@ -184,6 +186,7 @@ public class LashManageServiceImpl implements LashManageService { jsonTaskParam.put("task_type", "010707"); jsonTaskParam.put("start_device_code", whereJson.getString("device_code")); jsonTaskParam.put("next_device_code", end_point); + jsonTaskParam.put("task_group_id", whereJson.getString("task_group_id")); jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code")); jsonTaskParam.put("is_auto_issue", is_move); @@ -218,6 +221,7 @@ public class LashManageServiceImpl implements LashManageService { jsonTaskParam.put("task_type", "010720"); whereJson.put("containerType", whereJson.getString("vehicle_type")); jsonTaskParam.put("point_code1", whereJson.getString("device_code")); + jsonTaskParam.put("task_group_id", whereJson.getString("task_group_id")); jsonTaskParam.put("point_code2", next_device_code); jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code")); jsonTaskParam.put("request_param", whereJson); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java index c419f8b50..acb269bd8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java @@ -5,6 +5,9 @@ import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService; +import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo; import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvOutService; import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdtlService; @@ -17,6 +20,7 @@ import org.nl.common.utils.IdUtil; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.system.service.param.ISysParamService; import org.nl.wms.pda.mps.eum.RegionTypeEnum; import org.nl.wms.st.inbill.service.StorPublicService; import org.nl.wms.st.instor.service.HandMoveStorService; @@ -72,6 +76,12 @@ public class OutBussManageServiceImpl implements OutBussManageService { @Autowired private HandMoveStorService handMoveStorService; + @Autowired + private ISysParamService iSysParamService; + + @Autowired + private IBstIvtBoxinfoService iBstIvtBoxinfoService; + @Override @Transactional public void lockStruct(List param, JSONObject json) { @@ -381,6 +391,29 @@ public class OutBussManageServiceImpl implements OutBussManageService { moveParam.put("sect_id", RegionTypeEnum.TWO_BZC01.getId()); moveParam.put("box_no", json.getString("storagevehicle_code")); moveParam.put("material_id", jsonMater.getString("material_id")); + //根据木箱高度,判断入库仓位的高度、 + String height = ""; + String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue(); + String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue(); + // 查询木箱信息 + BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne( + new QueryWrapper().lambda() + .eq(BstIvtBoxinfo::getBox_no, json.getString("storagevehicle_code")) + ); + + String box_high = boxDao.getBox_high(); + if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) { + height = "1"; + } else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) { + height = "2"; + } else { + height = "3"; + } + moveParam.put("height", height); + moveParam.put("vehicle_type", boxDao.getVehicle_type()); + // 移库巷道 + moveParam.put("move_block_num",json.getString("block_num")); + JSONObject jsonMove = inBussManageService.getOneStruct(moveParam); // 查询移出货位的库存物料 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/InBussManageService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/InBussManageService.java index 332a11f87..45ebf41ae 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/InBussManageService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/InBussManageService.java @@ -38,6 +38,7 @@ public interface InBussManageService { * sect_id:库区标识 * material_id: 物料标识 * box_no:木箱号 + * move_block_num: 是否移库:提前确定巷道 * } * @return JSONObject 仓位对象 */ diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/LashManageService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/LashManageService.java index 0d86dce68..d5ae9ab9e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/LashManageService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/LashManageService.java @@ -17,6 +17,7 @@ public interface LashManageService { * @param whereJson { * device_code:起点 * vehicle_code: 箱号 + * task_group_id: 任务组 * * } */ @@ -28,6 +29,7 @@ public interface LashManageService { * device_code:起点 * vehicle_code: 箱号 * vehicle_type: 载具类型 + * task_group_id: 任务组 * * } */