From 4dcda1a79b904cae3851fffad3158efb590e0550 Mon Sep 17 00:00:00 2001 From: ls <1793460677@qq.com> Date: Fri, 13 Jun 2025 16:43:30 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E8=B4=A8=E6=A3=80=E8=A3=85=E7=AE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PdmBiSubpackagerelationServiceImpl.java | 144 ++++++------------ .../impl/BstIvtPackageinfoivtServiceImpl.java | 127 +++++++++++---- .../sch/tasks/first_floor_area/ZxqTask.java | 73 --------- .../first_floor_area/auto/TaskQueue.java | 75 ++------- .../dao/mapper/StIvtIostorinvdisMapper.java | 2 +- .../dao/mapper/StIvtIostorinvdisMapper.xml | 17 +++ .../inbill/rest/RawAssistIStorController.java | 44 +++++- .../inbill/service/RawAssistIStorService.java | 2 + .../impl/RawAssistIStorServiceImpl.java | 101 +++++++++++- 9 files changed, 316 insertions(+), 269 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java index 7f755b9..e050893 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java @@ -138,6 +138,8 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl collect = ivtList.stream().map(a -> a.getIvt_id()).collect(Collectors.toList()); packageinfoivtService.update(new UpdateWrapper() .set("update_time", DateUtil.now()) .in("ivt_id",collect)); + + List subList = this.list(new QueryWrapper() + .eq("status", "0") + .in("container_name", containerNameList)); + + Set containers = subList.stream().map(PdmBiSubpackagerelation::getContainer_name).collect(Collectors.toSet()); + String boxSn = subList.get(0).getPackage_box_sn(); + //子卷到装箱区 + agvTransfer(containers, deviceCode); + + PdmBiContainerinbound pdmBiContainerinbound = new PdmBiContainerinbound(); + pdmBiContainerinbound.setId(org.nl.common.utils.IdUtil.getStringId()); + pdmBiContainerinbound.setContainer_name(String.join(",", containerNameList)); + pdmBiContainerinbound.setBox(boxSn); + Boolean inbound = whereJson.getBoolean("inbound"); + if (inbound!=null){ + pdmBiContainerinbound.setInbound(inbound); + } + iPdmBiContainerinboundService.save(pdmBiContainerinbound); + + } @Override @@ -363,6 +389,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl() .eq("task_type", "010908") .eq("is_delete", "0") @@ -373,7 +400,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl8){ throw new BadRequestException("当前装箱区木箱任务已满,稍后再试"); } - +**/ String[] split = containerName.split(","); //理论毛重 List subList = this.list(new QueryWrapper() @@ -383,7 +410,6 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl collect = subList.stream().map(PdmBiSubpackagerelation::getPackage_box_sn).collect(Collectors.toSet()); - Set containers = subList.stream().map(PdmBiSubpackagerelation::getContainer_name).collect(Collectors.toSet()); List containerList = subList.stream().map(PdmBiSubpackagerelation::getContainer_name).collect(Collectors.toList()); if (collect.size() == 0){ throw new BadRequestException("当前子卷还未进行装箱组盘操作"); @@ -394,89 +420,6 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl hasTask = taskService.list(new QueryWrapper() - .select("point_code2") - .eq("is_delete", "0") - .eq("point_code1", boxAttr.getString("struct_code")) - .lt("task_status", TaskStatusEnum.FINISHED.getCode())); - if (!CollectionUtils.isEmpty(hasTask)){ - boolean zxq = hasTask.stream().map(a -> a.getPoint_code2()).filter(a -> a.contains("ZXQ")).findAny().isPresent(); - if (zxq){ - throw new BadRequestException("当前子卷正在执行装箱入库操作"); - }else{ - throw new BadRequestException("当前空木箱"+boxSn+"存在正在执行的任务,稍后再操作"); - } - } - // 查询木箱对应的托盘号 - JSONObject jsonVeExt = WQLObject.getWQLObject("md_pb_storagevehicleext").query("pcsn = '" + boxSn + "'") - .uniqueResult(0); - if (ObjectUtil.isEmpty(jsonVeExt)) { - throw new BadRequestException("此木箱没有绑定托盘号!"+boxSn); - } - //子卷到装箱区 - agvTransfer(containers, deviceCode, boxSn); - String task_group_id = null; - if (boxAttr.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("深"))) { - JSONObject 浅Attr = attrTab - .query("zdepth = '1' and row_num = '"+boxAttr.getString("row_num")+"' and col_num = '" + boxAttr.getString("col_num") + "' and layer_num = '"+boxAttr.getString("layer_num")+"'") - .uniqueResult(0); - if (ObjectUtil.isEmpty(浅Attr)){ - throw new BadRequestException(boxAttr.getString("struct_code")+"对应浅货位信息不正确"); - } - if (ObjectUtil.isEmpty(浅Attr.getString("storagevehicle_code"))){ - if (!浅Attr.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))) { - throw new BadRequestException("木箱货位"+boxAttr.getString("struct_code")+"的浅货位存在正在执行的任务"); - } - }else { - if (浅Attr.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))) { - // 判断浅货位木箱和深货位木箱是否相同规格 - task_group_id = outBoxManageService.createBoxMove(浅Attr); - } else if (浅Attr.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("验箱出库锁"))) { - List list = taskService.list(new QueryWrapper() - .eq("is_delete", "0") - .eq("point_code1", 浅Attr.getString("struct_code")) - .lt("task_status", TaskStatusEnum.FINISHED.getCode())); - if (!CollectionUtils.isEmpty(list)){ - throw new BadRequestException("当前木箱所在货位"+boxAttr.getString("struct_code")+"对应浅货位存在任务"+浅Attr.getString("task_code")); - } - }else { - throw new BadRequestException("当前木箱所在货位"+boxAttr.getString("struct_code")+"对应浅货位存在任务"+浅Attr.getString("task_code")); - } - } - } - PdmBiContainerinbound pdmBiContainerinbound = new PdmBiContainerinbound(); - pdmBiContainerinbound.setId(org.nl.common.utils.IdUtil.getStringId()); - pdmBiContainerinbound.setContainer_name(containerName); - pdmBiContainerinbound.setBox(boxSn); - Boolean inbound = param.getBoolean("inbound"); - if (inbound!=null){ - pdmBiContainerinbound.setInbound(inbound); - } - iPdmBiContainerinboundService.save(pdmBiContainerinbound); - // 生成任务 - JSONObject jsonTaskParam = new JSONObject(); - jsonTaskParam.put("task_type", "010704"); - jsonTaskParam.put("start_device_code", boxAttr.getString("struct_code")); - jsonTaskParam.put("next_device_code", deviceCode); - jsonTaskParam.put("vehicle_code", boxAttr.getString("storagevehicle_code")); - jsonTaskParam.put("vehicle_code2", jsonVeExt.getString("storagevehicle_code")); - jsonTaskParam.put("task_group_id", task_group_id); - JSONObject request_param = new JSONObject(); - request_param.put("containerType", boxAttr.getString("storagevehicle_type")); - jsonTaskParam.put("request_param", request_param.toString()); - // 锁定起点 - boxAttr.put("lock_type", IOSEnum.LOCK_TYPE.code("出库锁")); - attrTab.update(boxAttr); - twoOutBoxTask.createTask(jsonTaskParam); - twoOutBoxTask.immediateNotifyAcs(null); PdmProductSpecServiceImpl.doRecord(SpecEnum.ZXRK,null,Boolean.TRUE,null,containerList); } @@ -492,7 +435,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl { - try { - log.error("----回传子卷包装关系----"); - String isConnect2 = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_CONNECT_MES2").getValue(); - if ("1".equals(isConnect2)) { - transferBoxPackageToMes(false, whereJson, containerNameList, boxSn, weightTotal); + String isOnMes = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_on_mes").getValue(); + if (isOnMes.equals(IOSEnum.IS_NOTANDYES.code("是"))) { + //给MES传输子卷包装关系 + PdmProductSpecServiceImpl.doRecord(SpecEnum.BZ, null, Boolean.TRUE, null, containerNameList.stream().collect(Collectors.toList())); + CompletableFuture.runAsync(() -> { + try { + log.error("----回传子卷包装关系----"); + String isConnect2 = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_CONNECT_MES2").getValue(); + if ("1".equals(isConnect2)) { + transferBoxPackageToMes(false, whereJson, containerNameList, boxSn, weightTotal); + } + } catch (Exception e) { + log.error("子卷装箱异常,transferBoxPackageToMes给MES传输子卷包装关系异常,木箱号为:" + boxSn + ",异常信息:" + e); } - } catch (Exception e) { - log.error("子卷装箱异常,transferBoxPackageToMes给MES传输子卷包装关系异常,木箱号为:" + boxSn + ",异常信息:" + e); - } - }, pool); + }, pool); + } } /** @@ -736,7 +682,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl containerNameList, String deviceCode, String boxSn) { + protected void agvTransfer(Set containerNameList, String deviceCode) { //待检区点位 List djqPointList = packageinfoivtService .list(new LambdaUpdateWrapper() diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java index 758220b..2da70cf 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java @@ -2,6 +2,8 @@ package org.nl.b_lms.sch.point.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -1006,6 +1008,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl updateWrapper = new UpdateWrapper<>(); //LMS获取MES称重后子卷信息 JSONObject jo = new JSONObject(); + String isOnMes = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_on_mes").getValue(); //子卷质检合格品和管制品 if (StringUtils.isNotBlank(whereJson.getString("container_name")) && StringUtils.isBlank(whereJson.getString("pointCode"))) { if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("空")) || whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("空载具")) || whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("有子卷"))) { @@ -1038,35 +1041,14 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl().eq(PdmBiSlittingproductionplan::getContainer_name, whereJson.get("container_name")) + .eq(PdmBiSlittingproductionplan::getIs_delete, "0")); + + if (ObjectUtil.isEmpty(slittingproductionplan)) { + throw new BadRequestException("未查询到子卷【" + whereJson.get("container_name") + "】的分切计划!"); + } + + String quality_guaran_period = ""; + if (slittingproductionplan.getMaterial_type().equals("FG1")) { + quality_guaran_period = "90天"; + } else { + quality_guaran_period = "180天"; + } + + //插入包装关系 + PdmBiSubpackagerelation subpackagerelation = subpackagerelationService.getOne(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getContainer_name, whereJson.get("container_name"))); + if (ObjectUtil.isEmpty(subpackagerelation)) { + subpackagerelation = new PdmBiSubpackagerelation(); + subpackagerelation.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + subpackagerelation.setQuality_guaran_period(quality_guaran_period); + subpackagerelation.setSale_order_name((String) whereJson.get("sale_order_name")); + subpackagerelation.setCustomer_name((String) whereJson.get("customer_name")); + subpackagerelation.setCustomer_description((String) whereJson.get("customer_description")); + subpackagerelation.setProduct_name(slittingproductionplan.getProduct_name()); + subpackagerelation.setProduct_description(slittingproductionplan.getDescription()); + subpackagerelation.setDate_of_FG_inbound(DateUtil.format(DateUtil.date(), "yyyy-MM-dd")); + subpackagerelation.setContainer_name((String) whereJson.get("container_name")); + subpackagerelation.setWidth((String) whereJson.get("width")); + subpackagerelation.setThickness((String) whereJson.get("thickness")); + subpackagerelation.setNet_weight((String) whereJson.get("net_weight")); + subpackagerelation.setLength((String) whereJson.get("length")); + subpackagerelation.setStatus("99"); + subpackagerelation.setIsRePrintPackageBoxLabel("0"); + subpackagerelation.setIsUnPackBox("0"); + subpackagerelation.setSap_pcsn((String) whereJson.get("sap_pcsn")); + subpackagerelation.setCreate_id(Long.parseLong(SecurityUtils.getCurrentUserId())); + subpackagerelation.setCreate_name(SecurityUtils.getCurrentNickName()); + subpackagerelation.setCreate_time(DateUtil.now()); + subpackagerelation.setCreate_id(Long.parseLong(SecurityUtils.getCurrentUserId())); + subpackagerelation.setExt_code("BC01"); + subpackagerelation.setNeed_delete("99"); + subpackagerelation.setJoint_type(slittingproductionplan.getJoint_type()); + subpackagerelation.setMaterial_type(slittingproductionplan.getMaterial_type()); + subpackagerelationService.save(subpackagerelation); + } else { + //更新入包装关系 + subpackagerelation = new PdmBiSubpackagerelation(); + subpackagerelation.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + subpackagerelation.setQuality_guaran_period(quality_guaran_period); + subpackagerelation.setSale_order_name((String) whereJson.get("sale_order_name")); + subpackagerelation.setCustomer_name((String) whereJson.get("customer_name")); + subpackagerelation.setCustomer_description((String) whereJson.get("customer_description")); + subpackagerelation.setProduct_name(slittingproductionplan.getProduct_name()); + subpackagerelation.setProduct_description(slittingproductionplan.getDescription()); + subpackagerelation.setDate_of_FG_inbound(DateUtil.format(DateUtil.date(), "yyyy-MM-dd")); + subpackagerelation.setContainer_name((String) whereJson.get("container_name")); + subpackagerelation.setWidth((String) whereJson.get("width")); + subpackagerelation.setLength((String) whereJson.get("length")); + subpackagerelation.setThickness((String) whereJson.get("thickness")); + subpackagerelation.setNet_weight((String) whereJson.get("net_weight")); + subpackagerelation.setStatus("99"); + subpackagerelation.setIsRePrintPackageBoxLabel("0"); + subpackagerelation.setIsUnPackBox("0"); + subpackagerelation.setSap_pcsn((String) whereJson.get("sap_pcsn")); + subpackagerelation.setCreate_id(Long.parseLong(SecurityUtils.getCurrentUserId())); + subpackagerelation.setCreate_name(SecurityUtils.getCurrentNickName()); + subpackagerelation.setCreate_time(DateUtil.now()); + subpackagerelation.setCreate_id(Long.parseLong(SecurityUtils.getCurrentUserId())); + subpackagerelation.setExt_code("BC01"); + subpackagerelation.setNeed_delete("99"); + subpackagerelation.setJoint_type(slittingproductionplan.getJoint_type()); + subpackagerelation.setMaterial_type(slittingproductionplan.getMaterial_type()); + subpackagerelationService.save(subpackagerelation); + subpackagerelationService.update(subpackagerelation); + } + } + /** * 获取移库任务目标点位 * diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java index 5681d5c..0ddbb15 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java @@ -157,80 +157,7 @@ public class ZxqTask extends AbstractAcsTask { } - private void zxqToZxw(SchBaseTask schBaseTask) { - PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService - .getOne(new LambdaUpdateWrapper().eq(PdmBiSubpackagerelation::getContainer_name, schBaseTask.getVehicle_code()), false); - if (pdmBiSubpackagerelation != null) { - //查询目标点位信息 - BstIvtPackageinfoivt zxqPoint = packageinfoivtService.getOne(new LambdaUpdateWrapper().eq(BstIvtPackageinfoivt::getPoint_code, schBaseTask.getPoint_code2())); - //查询装箱对接位的木箱号和区域与子卷对应的木箱号与区域是否匹配 - BstIvtPackageinfoivt zxdjwPoint = packageinfoivtService.getOne(new LambdaUpdateWrapper() - .eq(BstIvtPackageinfoivt::getContainer_name, pdmBiSubpackagerelation.getPackage_box_sn()).eq(BstIvtPackageinfoivt::getBlock, zxqPoint.getBlock())); - if (zxdjwPoint != null) { - //创建搬运任务到装箱位 - JSONObject jo = new JSONObject(); - jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位")); - jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); - jo.put("point_code1", schBaseTask.getPoint_code2()); - jo.put("point_code2", zxdjwPoint.getPoint_code()); - jo.put("vehicle_code", schBaseTask.getVehicle_code()); - jo.put("is_send", "1"); - List productionPlanList = pdmBiSlittingproductionplanMapper.selectList(new LambdaQueryWrapper().eq(PdmBiSlittingproductionplan::getContainer_name, schBaseTask.getVehicle_code())); - if (productionPlanList.isEmpty()) { - throw new BadRequestException("该子卷暂无分切计划信息"); - } - //获取纸管长度 - Integer maxNum = SlitterTaskUtil.getPaperLengthInt(productionPlanList.get(0)); - String paperSize = SlitterTaskUtil.getPaperSize(productionPlanList.get(0)); - //扩展参数 - JSONObject param = new JSONObject(); - //获取木箱信息,未包装的木箱 - BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtBoxinfo::getBox_no, schBaseTask.getVehicle_code2()).ne(BstIvtBoxinfo::getIs_packing, "1")); - if (bstIvtBoxinfo == null) { - throw new BadRequestException("找不到该木箱信息!"); - } - //获取木箱高度等级 - String height = ""; - String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue(); - String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue(); - String box_high = bstIvtBoxinfo.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"; - } - //木箱高度等级 - param.put("heightLevel", height); - //木箱最大数量 - param.put("maxNo", bstIvtBoxinfo.getNum()); - //托盘类型 1小托盘 2大托盘 - param.put("containerType", bstIvtBoxinfo.getVehicle_type()); - //查询是否为最后一个子卷,相同木箱号且状态为生成 - List packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getPackage_box_sn, schBaseTask.getVehicle_code2()).eq(PdmBiSubpackagerelation::getStatus, "0")); - PdmBiSubpackagerelation oneSub = packagerelationList.get(0); - String containerName = oneSub.getContainer_name(); - if (packagerelationList.size() == 1 && containerName.equals(schBaseTask.getVehicle_code())) { - //最后子卷 - param.put("lastOne", "1"); - } else { - param.put("lastOne", "0"); - } - - //木箱放入子卷数量 - param.put("boxNo", pdmBiSubpackagerelation.getQuanlity_in_box()); - //子卷号 - param.put("barcode", schBaseTask.getVehicle_code()); - //子卷长度 - param.put("len", maxNum); - param.put("frpModel", paperSize); - jo.put("request_param", param.toString()); - zxDjwTask.createTask(jo); - } - } - } /** * 返回实体 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/TaskQueue.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/TaskQueue.java index 51a7dbb..e50b502 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/TaskQueue.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/TaskQueue.java @@ -60,7 +60,7 @@ public class TaskQueue { tasks.forEach(task -> { redisUtils.pushToList(TASK_QUEUE_PREFIX + groupId, task); //redisUtils.pushToList(TASK_QUEUE_PREFIX + groupId, task,3,TimeUnit.HOURS); - log.info("子卷装箱:待检区->装箱区agv任务组为:" + groupId + ",任务编号为:" + task.getTask_code() + "子卷号为:" + task.getVehicle_code() +"成功添加到任务队列。"); + log.info("子卷装箱:待检区->装箱区agv任务组为:" + groupId + ",任务编号为:" + task.getTask_code() + "子卷号为:" + task.getVehicle_code() + "成功添加到任务队列。"); }); } @@ -78,71 +78,28 @@ public class TaskQueue { .eq("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区")) .eq("is_delete", IOSEnum.IS_NOTANDYES.code("否")) .orderByDesc("create_time", "task_step")); - log.info("当前zxq有起点任务数量"+list.size()); - for (int i = 0; i < Math.min(empPointList.size(),list.size()); i++) { + log.info("当前zxq有起点任务数量" + list.size()); + for (int i = 0; i < Math.min(empPointList.size(), list.size()); i++) { String empPoin = empPointList.get(i); SchBaseTask task = list.get(i); - executeTask(task,empPoin); + executeTask(task, empPoin); } } } private void executeTask(SchBaseTask task, String pointCode) { - //查询子卷号的货位 - BstIvtPackageinfoivt newIvt = packageinfoivtService.list(new LambdaQueryWrapper() - .eq(BstIvtPackageinfoivt::getContainer_name, task.getVehicle_code())).get(0); - String pointCode1 = newIvt.getPoint_code(); - //是否深库位 - if (newIvt.getDepth().equals(PackageInfoIvtEnum.DEPTH_TYPE.code("浅货位"))) { - //是浅货位,直接创建搬运任务 - task.setPoint_code1(pointCode1); - task.setPoint_code2(pointCode); - task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); - taskService.updateById(task); - log.info("子卷装箱:待检区->装箱区agv任务编号为:" + "子卷号为:" + task.getVehicle_code() + task.getTask_code() + ",任务状态为:" + task.getTask_status() + "下发完成。"); - } else { - //是深货位,查询对应的浅货位 - List groupIvtList = packageinfoivtService.list(new LambdaQueryWrapper().eq(BstIvtPackageinfoivt::getCol_num, newIvt.getCol_num())).stream().filter(r -> r.getDepth().equals(PackageInfoIvtEnum.DEPTH_TYPE.code("浅货位"))).collect(Collectors.toList()); - BstIvtPackageinfoivt shallowIvt = groupIvtList.get(0); - //库位为空,查询该点位是否存在放货任务,如果存在,先建立确定起点任务,则等任务完成后再确定终点与下发 - if (shallowIvt.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code("空"))) { - Set pointCodes2 = new HashSet<>(); - pointCodes2.add(shallowIvt.getPoint_code()); - List existTaskList = bstIvtPackageinfoivtMapper.getTaskList(null, pointCodes2, null, null).stream().filter(r -> !r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区"))).collect(Collectors.toList()); - //无放货任务,直接创建搬运任务 - if (ObjectUtils.isEmpty(existTaskList)) { - task.setPoint_code1(pointCode1); - task.setPoint_code2(pointCode); - task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); - taskService.updateById(task); - log.info("子卷装箱:待检区->装箱区agv任务编号为:" + "子卷号为:" + task.getVehicle_code() + task.getTask_code() + ",任务状态为:" + task.getTask_status() + "下发完成。"); - } - } else { - //库位不为空,创建移库任务,查询该点位是否存在取货任务,如果存在,先更新搬运任务为确定终点任务,则等任务完成后再下发 - Set pointCodes2 = new HashSet<>(); - pointCodes2.add(shallowIvt.getPoint_code()); - List existTaskList = bstIvtPackageinfoivtMapper.getTaskList(pointCodes2, null, null, null).stream().filter(r -> !r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区"))).collect(Collectors.toList()); - //存在取货任务 - if (ObjectUtils.isEmpty(existTaskList)) { - //任务等下次在做 - //直接创建移库任务 - //获取移库任务目标点 - JSONObject task1 = new JSONObject(); - String pointCode2 = packageinfoivtService.getDjqShiftingPoint(shallowIvt, true); - task1.put("task_status", StringUtils.isBlank(pointCode2) ? TaskStatusEnum.SURE_START.getCode() : TaskStatusEnum.START_AND_POINT.getCode()); - task1.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务")); - task1.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区移库任务")); - task1.put("vehicle_code", shallowIvt.getContainer_name()); - task1.put("point_code1", shallowIvt.getPoint_code()); - task1.put("point_code2", pointCode2); - //任务组标识 - task1.put("task_group_id", task.getTask_id()); - task1.put("material_code", shallowIvt.getIvt_status()); - //创建移库任务 - shiftingTask.createTask(task1); - } - } - } + //查询子卷号的货位 + BstIvtPackageinfoivt newIvt = packageinfoivtService.list(new LambdaQueryWrapper() + .eq(BstIvtPackageinfoivt::getContainer_name, task.getVehicle_code())).get(0); + String pointCode1 = newIvt.getPoint_code(); + + //是浅货位,直接创建搬运任务 + task.setPoint_code1(pointCode1); + task.setPoint_code2(pointCode); + task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); + taskService.updateById(task); + log.info("子卷装箱:待检区->装箱区agv任务编号为:" + "子卷号为:" + task.getVehicle_code() + task.getTask_code() + ",任务状态为:" + task.getTask_status() + "下发完成。"); + } /** diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.java index 363c430..8396506 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.java @@ -57,7 +57,7 @@ public interface StIvtIostorinvdisMapper extends BaseMapper { List getNotCreateDis(JSONObject whereJson); - @Select("SELECT dis.* FROM st_ivt_iostorinvdis dis LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id WHERE dis.box_no = #{boxNo} AND dis.work_status < '99' AND mst.is_delete = '0' AND mst.bill_status < '99'") + List getstartAndDisRows(String boxNo); JSONArray getDisDtls(@Param("boxNos") HashSet vehicleSet,@Param("iostorinvId") String iostorinvId); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.xml index a3d6b53..c31d144 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.xml @@ -1063,6 +1063,23 @@ WHERE 1=1 limit 0,50000 + diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/rest/RawAssistIStorController.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/rest/RawAssistIStorController.java index 3316870..00388d8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/rest/RawAssistIStorController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/rest/RawAssistIStorController.java @@ -3,6 +3,8 @@ package org.nl.wms.st.inbill.rest; import com.alibaba.fastjson.JSONArray; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; +import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvService; import org.nl.modules.logging.annotation.Log; import org.nl.wms.st.inbill.service.RawAssistIStorService; import org.springframework.beans.factory.annotation.Autowired; @@ -23,6 +25,12 @@ public class RawAssistIStorController { @Autowired private RawAssistIStorService rawAssistIStorService; + /** + * 二期入库服务 + */ + @Autowired + private IStIvtIostorinvService iStIvtIostorinvService; + @GetMapping @Log("查询入库单据") @@ -71,7 +79,9 @@ public class RawAssistIStorController { //@PreAuthorize("@el.check('structrelamaterial:edit')") public ResponseEntity insertDtl(@RequestBody Map whereJson) { - rawAssistIStorService.insertDtl(whereJson); + if (whereJson.get("stor_id").toString().equals(IOSEnum.STOR_ID.code("二期"))) { + iStIvtIostorinvService.insertMst(whereJson); + } return new ResponseEntity<>(HttpStatus.CREATED); } @@ -83,17 +93,20 @@ public class RawAssistIStorController { //@PreAuthorize("@el.check('sectattr:edit')") public ResponseEntity update(@RequestBody Map whereJson) { - rawAssistIStorService.update(whereJson); + if (whereJson.get("stor_id").toString().equals(IOSEnum.STOR_ID.code("二期"))) { + iStIvtIostorinvService.update(whereJson); + } return new ResponseEntity<>(HttpStatus.NO_CONTENT); } @PostMapping("/divStruct") @Log("分配货位") - //@PreAuthorize("@el.check('materialtype:list')") public ResponseEntity divStruct(@RequestBody Map whereJson) { - rawAssistIStorService.divStruct(whereJson); + if (whereJson.get("stor_id").toString().equals(IOSEnum.STOR_ID.code("二期"))) { + iStIvtIostorinvService.divStruct(whereJson); + } return new ResponseEntity<>(HttpStatus.NO_CONTENT); } @@ -110,4 +123,27 @@ public class RawAssistIStorController { + @PostMapping("/divPoint") + @Log("设置起点") + + //@PreAuthorize("@el.check('materialtype:list')") + public ResponseEntity divPoint(@RequestBody Map whereJson) { + if (whereJson.get("stor_id").toString().equals(IOSEnum.STOR_ID.code("二期"))) { + iStIvtIostorinvService.setPoint(whereJson); + } + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + + @PostMapping("/unDivStruct") + @Log("取消分配货位") + + //@PreAuthorize("@el.check('materialtype:list')") + public ResponseEntity unDivStruct(@RequestBody Map whereJson) { + if (whereJson.get("stor_id").toString().equals(IOSEnum.STOR_ID.code("二期"))) { + iStIvtIostorinvService.unDivStruct(whereJson); + } + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/RawAssistIStorService.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/RawAssistIStorService.java index 810529e..d1baf0f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/RawAssistIStorService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/RawAssistIStorService.java @@ -35,4 +35,6 @@ public interface RawAssistIStorService { JSONArray queryBoxMater(JSONArray rows); + + void divPoint(Map whereJson); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java index 7f3d4e9..5dcb178 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java @@ -43,6 +43,7 @@ import org.nl.wms.basedata.st.service.dto.StorattrDto; import org.nl.wms.basedata.st.service.impl.StructattrServiceImpl; import org.nl.wms.basedata.st.service.impl.UserStorServiceImpl; import org.nl.wms.pda.mps.eum.RegionTypeEnum; +import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.service.PointService; import org.nl.wms.sch.service.dto.PointDto; import org.nl.wms.st.inbill.service.RawAssistIStorService; @@ -349,10 +350,10 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("package_box_sn", dis.getBox_no()) - .eq("status", "1"); // 原状态是 0 才更新 + .eq("status", targetStatus); // 原状态是 0 才更新 PdmBiSubpackagerelation relation = new PdmBiSubpackagerelation(); - relation.setStatus(targetStatus); + relation.setStatus("1"); pdmBiSubpackagerelationMapper.update(relation, wrapper); @@ -920,6 +921,102 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { } + @Transactional(rollbackFor = Exception.class) + @Override + public void divPoint(Map whereJson) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + ArrayList rows = (ArrayList) whereJson.get("tableMater"); + String point_code = (String) whereJson.get("point_code"); + HashMap map = rows.get(0); + SchBasePoint pointDto = ischBasePointService.findByCode(point_code); + + StIvtIostorinvdis stIvtIostorinvdis = StIvtIostorinvdis.builder().work_status("01") + .point_id(pointDto.getPoint_id()) + .build(); + //判断起点终点是否不为空 + QueryWrapper query = new QueryWrapper().eq("iostorinv_id", map.get("iostorinv_id")).eq("box_no", map.get("box_no")); + StIvtIostorinvdis stIvtIostorinvdisByIdBox = stIvtIostorinvdisMapper.selectOne(query); + + if (StrUtil.isNotEmpty(stIvtIostorinvdisByIdBox.getStruct_code())) { + //创建任务 + TwoInTask task = new TwoInTask(); + JSONObject task_form = new JSONObject(); + task_form.put("task_type", "010501"); + task_form.put("start_device_code", point_code); + task_form.put("next_device_code", stIvtIostorinvdisByIdBox.getStruct_code()); + task_form.put("vehicle_code", map.get("box_no")); + //查询主表信息 + StIvtIostorinv iostorinvId = stIvtIostorinvMapper.selectById(map.get("iostorinv_id")); + task_form.put("inv_type", iostorinvId.getBill_type()); + task_form.put("inv_id", iostorinvId.getIostorinv_id()); + task_form.put("inv_code", iostorinvId.getBill_code()); + String task_id = task.createTask(task_form); + stIvtIostorinvdis.setTask_id(Long.valueOf(task_id)); + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("iostorinv_id", map.get("iostorinv_id")) + .eq("box_no", map.get("box_no")); + + stIvtIostorinvdisMapper.update(stIvtIostorinvdis, queryWrapper); + if (StrUtil.isNotEmpty(stIvtIostorinvdisByIdBox.getStruct_code())) { + //修改库存 + //直接取出入库分配表的库存 +// JSONArray dis_rows = WQLObject.getWQLObject("ST_IVT_IOStorInvDis").query("iostorinv_id = '" + map.get("iostorinv_id") + "' AND box_no = '" + map.get("box_no") + "'").getResultJSONArray(0); +// JSONObject mst_jo = WQLObject.getWQLObject("ST_IVT_IOStorInv").query("iostorinv_id = '" + map.get("iostorinv_id") + "'").uniqueResult(0); + + // 查询 ST_IVT_IOStorInvDis 表数据 + List dis_rows = stIvtIostorinvdisMapper.selectList(new LambdaQueryWrapper() + .eq(StIvtIostorinvdis::getIostorinv_id, map.get("iostorinv_id")) + .eq(StIvtIostorinvdis::getBox_no, map.get("box_no"))); + + + // 查询 ST_IVT_IOStorInv 主表数据 + StIvtIostorinv mst = stIvtIostorinvMapper.selectOne(new LambdaQueryWrapper() + .eq(StIvtIostorinv::getIostorinv_id, map.get("iostorinv_id"))); + for (int i = 0; i < dis_rows.size(); i++) { + StIvtIostorinvdis stIvtIostorinvdis1 = dis_rows.get(i); + //更新明细表状态 + StIvtIostorinvdtl stIvtIostorinvdtl = stIvtIostorinvdtlMapper.selectOne(new LambdaQueryWrapper() + .eq(StIvtIostorinvdtl::getIostorinvdtl_id, stIvtIostorinvdis1.getIostorinvdtl_id())); + + if (Double.valueOf(String.valueOf(stIvtIostorinvdtl.getUnassign_qty())) == 0) { + //判断该明细下是否还存在未分配货位的分配明细 + + List disdiv_rows = stIvtIostorinvdisMapper.selectList(new LambdaQueryWrapper() + .eq(StIvtIostorinvdis::getIostorinvdtl_id, stIvtIostorinvdtl.getIostorinvdtl_id()) + .and(wrapper -> wrapper + .or().isNull(StIvtIostorinvdis::getStruct_id) + .or().eq(StIvtIostorinvdis::getStruct_id, "")) + .and(wrapper -> wrapper + .or().isNull(StIvtIostorinvdis::getPoint_id) + .or().eq(StIvtIostorinvdis::getPoint_id, ""))); + + if (disdiv_rows.size() == 0) { + stIvtIostorinvdtl.setBill_status("40"); + stIvtIostorinvdtlMapper.updateById(stIvtIostorinvdtl); + //判断主表下的明细是否都为40 +// JSONArray dtl_rows = WQLObject.getWQLObject("ST_IVT_IOStorInvDtl").query("iostorinv_id = '" + dis_jo.getString("iostorinv_id") + "' AND bill_status < '40'").getResultJSONArray(0); + + List dtl_rows = stIvtIostorinvdtlMapper.selectList(new LambdaQueryWrapper() + .eq(StIvtIostorinvdtl::getIostorinv_id, stIvtIostorinvdis1.getIostorinv_id()) + .lt(StIvtIostorinvdtl::getBill_status, "40")); + if (dtl_rows.size() == 0) { + mst.setBill_status("40"); + mst.setDis_optid(Long.valueOf(currentUserId)); + mst.setDis_optname(nickName); + mst.setDis_time(now); + stIvtIostorinvMapper.updateById(mst); + } + } + } + } + } + } + + @Override public JSONObject autoDis(JSONObject whereJson) { /*