fix:修复前端子卷规格无法显示问题,装箱对接位子卷装箱数量问题

This commit is contained in:
2024-06-26 12:46:51 +08:00
parent bd153c9044
commit 4d729392c9
3 changed files with 84 additions and 77 deletions

View File

@@ -354,6 +354,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
private void updateBoxGroup(Integer maxBoxGroup, List<String> entityList, String boxType) {
// code终点,material_code木箱规格,num: 子卷数
UpdateWrapper<PdmBiSubpackagerelation> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("quanlity_in_box", entityList.size());
updateWrapper.set("box_type", boxType);
updateWrapper.set("box_group", maxBoxGroup);
updateWrapper.set("status", "0");

View File

@@ -120,23 +120,27 @@ public class ZxDjwTask extends AbstractAcsTask {
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
//2.改变起点点位状态
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
//更新库存记录
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().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<PdmBiSubpackagerelation> packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getPackage_box_sn, schBaseTask.getVehicle_code2()).eq(PdmBiSubpackagerelation::getStatus, "0"));
//所有木箱已装箱
if (CollectionUtils.isEmpty(packagerelationList)) {
BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper<BstIvtBoxinfo>().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<BstIvtPackageinfoivt>().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<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getContainer_name, schBaseTask.getVehicle_code()), false);
pdmBiSubpackagerelation.setStatus("1");
subpackageRelationService.updateById(pdmBiSubpackagerelation);
//4.查询同一个木箱号如果生成状态0个数等于0更新该木箱信息表为包装1
List<PdmBiSubpackagerelation> packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getPackage_box_sn, schBaseTask.getVehicle_code2()).eq(PdmBiSubpackagerelation::getStatus, "0"));
if (CollectionUtils.isEmpty(packagerelationList)) {
BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper<BstIvtBoxinfo>().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());
}

View File

@@ -56,84 +56,86 @@ public class AutoSendZxToDjw {
}
void sendZxToDjw() {
//装箱位有木箱
List<BstIvtPackageinfoivt> 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<BstIvtPackageinfoivt> zxqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", "");
if (CollectionUtils.isEmpty(zxqPackageinfoivtList)) {
return;
}
//装箱位木箱
List<BstIvtPackageinfoivt> 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<BstIvtBoxinfo>().eq(BstIvtBoxinfo::getBox_no, boxNo).ne(BstIvtBoxinfo::getIs_packing, "1"));
if (bstIvtBoxinfo == null) {
throw new BadRequestException("请检查木箱号:"+ boxNo +"是否存在或者状态为已装箱!");
}
//检查木箱信息
checkBoxParams(boxNo, bstIvtBoxinfo);
//3.查询子卷对应的包装关系表,判断装箱位的木箱号是否为子卷对应的木箱号,是,创建搬运任务到装箱对接位位桁架任务
List<PdmBiSubpackagerelation> relationList = subpackageRelationService
.list(new LambdaUpdateWrapper<PdmBiSubpackagerelation>().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<BstIvtPackageinfoivt> zxqPoint = zxqPackageinfoivtList.stream().filter(r -> r.getContainer_name().equals(containerName)).collect(Collectors.toList());
//装箱区点位上有与该木箱号匹配的子卷
if (CollectionUtils.isNotEmpty(zxqPoint)) {
List<PdmBiSlittingproductionplan> productionPlanList = pdmBiSlittingproductionplanMapper.selectList(new LambdaQueryWrapper<PdmBiSlittingproductionplan>().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<PdmBiSubpackagerelation> packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper<PdmBiSubpackagerelation>().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<BstIvtBoxinfo>().eq(BstIvtBoxinfo::getBox_no, boxNo).ne(BstIvtBoxinfo::getIs_packing, "1"));
if (bstIvtBoxinfo == null) {
throw new BadRequestException("请检查木箱号:" + boxNo + "是否存在或者状态为已装箱!");
}
//检查木箱信息
checkBoxParams(boxNo, bstIvtBoxinfo);
//3.查询子卷对应的包装关系表,判断装箱位的木箱号是否为子卷对应的木箱号,是,创建搬运任务到装箱对接位位桁架任务
List<PdmBiSubpackagerelation> relationList = subpackageRelationService
.list(new LambdaUpdateWrapper<PdmBiSubpackagerelation>().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<BstIvtPackageinfoivt> zxqPoint = zxqPackageinfoivtList.stream().filter(r -> r.getContainer_name().equals(containerName)).collect(Collectors.toList());
//装箱区点位上有与该木箱号匹配的子卷
if (CollectionUtils.isNotEmpty(zxqPoint)) {
List<PdmBiSlittingproductionplan> productionPlanList = pdmBiSlittingproductionplanMapper.selectList(new LambdaQueryWrapper<PdmBiSlittingproductionplan>().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<PdmBiSubpackagerelation> packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper<PdmBiSubpackagerelation>().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 + "托盘类型不能为空!");
}
}