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 6b90e07b8..6b3966b33 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 @@ -354,6 +354,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl entityList, String boxType) { // code:终点,material_code:木箱规格,num: 子卷数 UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("quanlity_in_box", entityList.size()); updateWrapper.set("box_type", boxType); updateWrapper.set("box_group", maxBoxGroup); updateWrapper.set("status", "0"); 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 f5adf7673..7fbd68e39 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 @@ -120,23 +120,27 @@ public class ZxDjwTask extends AbstractAcsTask { schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode()); //2.改变起点点位状态 packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); - //更新库存记录 - packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code2())); - //3.更改子卷信息状态为包装1,创建装箱区->装箱位桁架任务的时候判断是否最后一个子卷:相同木箱号如果生成状态0个数等于1且子卷号等于当前载具号,就是最后一个子卷 + //3.判断是否最后一个子卷:相同木箱号的子卷包装关系如果生成状态:0,且个数等于1且子卷号等于当前载具号,就是最后一个子卷 + List packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getPackage_box_sn, schBaseTask.getVehicle_code2()).eq(PdmBiSubpackagerelation::getStatus, "0")); + //所有木箱已装箱 + if (CollectionUtils.isEmpty(packagerelationList)) { + BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtBoxinfo::getBox_no, schBaseTask.getVehicle_code2()).ne(BstIvtBoxinfo::getIs_packing, "1")); + if (bstIvtBoxinfo == null) { + throw new BadRequestException("子卷包装关系为已装箱或找该任务的木箱号不存在!"); + } + //4.更改木箱信息为已装箱:1 + bstIvtBoxinfo.setIs_packing("1"); + bstIvtBoxinfoMapper.updateById(bstIvtBoxinfo); + } + if (packagerelationList.size() == 1 && packagerelationList.get(0).getContainer_name().equals(schBaseTask.getVehicle_code())) { + //5.最后一个子卷,清除装箱位木箱信息 + packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code2())); + } + //6.改变子卷包装状态为已装箱:1 PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService .getOne(new LambdaUpdateWrapper().eq(PdmBiSubpackagerelation::getContainer_name, schBaseTask.getVehicle_code()), false); pdmBiSubpackagerelation.setStatus("1"); subpackageRelationService.updateById(pdmBiSubpackagerelation); - //4.查询同一个木箱号如果生成状态0个数等于0,更新该木箱信息表为包装1 - List packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getPackage_box_sn, schBaseTask.getVehicle_code2()).eq(PdmBiSubpackagerelation::getStatus, "0")); - if (CollectionUtils.isEmpty(packagerelationList)) { - BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtBoxinfo::getBox_no, schBaseTask.getVehicle_code2()).ne(BstIvtBoxinfo::getIs_packing, "1")); - if (bstIvtBoxinfo == null) { - throw new BadRequestException("找不到该木箱信息!"); - } - bstIvtBoxinfo.setIs_packing("1"); - bstIvtBoxinfoMapper.updateById(bstIvtBoxinfo); - } //创建装箱区->空载具缓存位补空任务 //kzjhcwTask.toKzjHcw(schBaseTask.getPoint_code1()); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendZxToDjw.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendZxToDjw.java index 1fc929787..10a4e49ea 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendZxToDjw.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendZxToDjw.java @@ -56,84 +56,86 @@ public class AutoSendZxToDjw { } void sendZxToDjw() { + //装箱位有木箱 + List zxwPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱位"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位")); + if (CollectionUtils.isEmpty(zxwPackageinfoivtList)) { + return; + } //装箱区有子卷且没有正在进行的装箱任务 List zxqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", ""); if (CollectionUtils.isEmpty(zxqPackageinfoivtList)) { return; } - //装箱位有木箱 - List zxwPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱位"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"), PackageInfoIvtEnum.SORT_TYPE.code("升序"), PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位")); - if (CollectionUtils.isNotEmpty(zxwPackageinfoivtList)) { - //装箱位上的木箱号 - String boxNo = zxwPackageinfoivtList.get(0).getContainer_name(); - //获取木箱信息,未包装的木箱 - BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtBoxinfo::getBox_no, boxNo).ne(BstIvtBoxinfo::getIs_packing, "1")); - if (bstIvtBoxinfo == null) { - throw new BadRequestException("请检查木箱号:"+ boxNo +"是否存在或者状态为已装箱!"); - } - //检查木箱信息 - checkBoxParams(boxNo, bstIvtBoxinfo); - //3.查询子卷对应的包装关系表,判断装箱位的木箱号是否为子卷对应的木箱号,是,创建搬运任务到装箱对接位位桁架任务 - List relationList = subpackageRelationService - .list(new LambdaUpdateWrapper().eq(PdmBiSubpackagerelation::getPackage_box_sn, boxNo).eq(PdmBiSubpackagerelation::getStatus, "0")); - if (CollectionUtils.isEmpty(relationList)) { - throw new BadRequestException("装箱位的木箱号"+boxNo+"对应的子卷包装关系异常,请检查子卷包装关系状态是否为0!"); - } - //获取与该木箱号匹配的子卷号 - String containerName = relationList.get(0).getContainer_name(); - List zxqPoint = zxqPackageinfoivtList.stream().filter(r -> r.getContainer_name().equals(containerName)).collect(Collectors.toList()); - //装箱区点位上有与该木箱号匹配的子卷 - if (CollectionUtils.isNotEmpty(zxqPoint)) { - List productionPlanList = pdmBiSlittingproductionplanMapper.selectList(new LambdaQueryWrapper().eq(PdmBiSlittingproductionplan::getContainer_name, containerName)); - if (productionPlanList.isEmpty()) { - throw new BadRequestException("装箱区的子卷号为"+containerName+"无对应的分切计划信息,请检查!"); - } - //创建搬运任务到装箱位 - 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", zxqPoint.get(0).getPoint_code()); - jo.put("point_code2", zxwPackageinfoivtList.get(0).getPoint_code()); - jo.put("vehicle_code", containerName); - jo.put("vehicle_code2", boxNo); - jo.put("is_send", "1"); - //扩展参数 - JSONObject param = new JSONObject(); - //查询是否为最后一个子卷,相同木箱号且子卷包装状态为生成 - List packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getPackage_box_sn, boxNo).eq(PdmBiSubpackagerelation::getStatus, "0")); - if (packagerelationList.size() == 1 && packagerelationList.get(0).getContainer_name().equals(containerName)) { - //最后子卷 - param.put("lastOne", "1"); - } else { - param.put("lastOne", "0"); - } - //获取木箱高度等级 - param.put("heightLevel", getHeightLevel(bstIvtBoxinfo)); - //获取子卷长度 - param.put("len", getMaxNum(productionPlanList)); - //木箱最大数量 - param.put("maxNo", bstIvtBoxinfo.getNum()); - //托盘类型 1小托盘 2大托盘 - param.put("containerType", bstIvtBoxinfo.getVehicle_type()); - //木箱需放入子卷数量 - param.put("boxNo", relationList.get(0).getQuanlity_in_box()); - //子卷号 - param.put("barcode", containerName); - jo.put("request_param", param.toString()); - zxDjwTask.createTask(jo); - } + //装箱位上的木箱号 + String boxNo = zxwPackageinfoivtList.get(0).getContainer_name(); + //获取木箱信息,未包装的木箱 + BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper().eq(BstIvtBoxinfo::getBox_no, boxNo).ne(BstIvtBoxinfo::getIs_packing, "1")); + if (bstIvtBoxinfo == null) { + throw new BadRequestException("请检查木箱号:" + boxNo + "是否存在或者状态为已装箱!"); } + //检查木箱信息 + checkBoxParams(boxNo, bstIvtBoxinfo); + //3.查询子卷对应的包装关系表,判断装箱位的木箱号是否为子卷对应的木箱号,是,创建搬运任务到装箱对接位位桁架任务 + List relationList = subpackageRelationService + .list(new LambdaUpdateWrapper().eq(PdmBiSubpackagerelation::getPackage_box_sn, boxNo).eq(PdmBiSubpackagerelation::getStatus, "0")); + if (CollectionUtils.isEmpty(relationList)) { + throw new BadRequestException("装箱位的木箱号" + boxNo + "对应的子卷包装关系异常,请检查子卷包装关系状态是否为0!"); + } + //获取与该木箱号匹配的子卷号 + String containerName = relationList.get(0).getContainer_name(); + List zxqPoint = zxqPackageinfoivtList.stream().filter(r -> r.getContainer_name().equals(containerName)).collect(Collectors.toList()); + //装箱区点位上有与该木箱号匹配的子卷 + if (CollectionUtils.isNotEmpty(zxqPoint)) { + List productionPlanList = pdmBiSlittingproductionplanMapper.selectList(new LambdaQueryWrapper().eq(PdmBiSlittingproductionplan::getContainer_name, containerName)); + if (productionPlanList.isEmpty()) { + throw new BadRequestException("装箱区的子卷号为" + containerName + "无对应的分切计划信息,请检查!"); + } + //创建搬运任务到装箱位 + 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", zxqPoint.get(0).getPoint_code()); + jo.put("point_code2", zxwPackageinfoivtList.get(0).getPoint_code()); + jo.put("vehicle_code", containerName); + jo.put("vehicle_code2", boxNo); + jo.put("is_send", "1"); + //扩展参数 + JSONObject param = new JSONObject(); + //查询是否为最后一个子卷,相同木箱号且子卷包装状态为生成 + List packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper().eq(PdmBiSubpackagerelation::getPackage_box_sn, boxNo).eq(PdmBiSubpackagerelation::getStatus, "0")); + if (packagerelationList.size() == 1 && packagerelationList.get(0).getContainer_name().equals(containerName)) { + //最后子卷 + param.put("lastOne", "1"); + } else { + param.put("lastOne", "0"); + } + //获取木箱高度等级 + param.put("heightLevel", getHeightLevel(bstIvtBoxinfo)); + //获取子卷长度 + param.put("len", getMaxNum(productionPlanList)); + //木箱最大数量 + param.put("maxNo", bstIvtBoxinfo.getNum()); + //托盘类型 1小托盘 2大托盘 + param.put("containerType", bstIvtBoxinfo.getVehicle_type()); + //木箱需放入子卷数量 + param.put("boxNo", relationList.get(0).getQuanlity_in_box()); + //子卷号 + param.put("barcode", containerName); + jo.put("request_param", param.toString()); + zxDjwTask.createTask(jo); + } + } private static void checkBoxParams(String boxNo, BstIvtBoxinfo bstIvtBoxinfo) { if (StringUtils.isBlank(bstIvtBoxinfo.getBox_high())) { - throw new BadRequestException("请检查木箱号:"+ boxNo +"木箱高度不能为空!"); + throw new BadRequestException("请检查木箱号:" + boxNo + "木箱高度不能为空!"); } if (StringUtils.isBlank(bstIvtBoxinfo.getNum())) { - throw new BadRequestException("请检查木箱号:"+ boxNo +"能装的最大子卷数不能为空!"); + throw new BadRequestException("请检查木箱号:" + boxNo + "能装的最大子卷数不能为空!"); } if (StringUtils.isBlank(bstIvtBoxinfo.getVehicle_type())) { - throw new BadRequestException("请检查木箱号:"+ boxNo +"托盘类型不能为空!"); + throw new BadRequestException("请检查木箱号:" + boxNo + "托盘类型不能为空!"); } }