fix:修复前端子卷规格无法显示问题,装箱对接位子卷装箱数量问题
This commit is contained in:
@@ -354,6 +354,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
|||||||
private void updateBoxGroup(Integer maxBoxGroup, List<String> entityList, String boxType) {
|
private void updateBoxGroup(Integer maxBoxGroup, List<String> entityList, String boxType) {
|
||||||
// code:终点,material_code:木箱规格,num: 子卷数
|
// code:终点,material_code:木箱规格,num: 子卷数
|
||||||
UpdateWrapper<PdmBiSubpackagerelation> updateWrapper = new UpdateWrapper<>();
|
UpdateWrapper<PdmBiSubpackagerelation> updateWrapper = new UpdateWrapper<>();
|
||||||
|
updateWrapper.set("quanlity_in_box", entityList.size());
|
||||||
updateWrapper.set("box_type", boxType);
|
updateWrapper.set("box_type", boxType);
|
||||||
updateWrapper.set("box_group", maxBoxGroup);
|
updateWrapper.set("box_group", maxBoxGroup);
|
||||||
updateWrapper.set("status", "0");
|
updateWrapper.set("status", "0");
|
||||||
|
|||||||
@@ -120,23 +120,27 @@ public class ZxDjwTask extends AbstractAcsTask {
|
|||||||
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
|
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
|
||||||
//2.改变起点点位状态
|
//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_code1()));
|
||||||
//更新库存记录
|
//3.判断是否最后一个子卷:相同木箱号的子卷包装关系如果生成状态:0,且个数等于1且子卷号等于当前载具号,就是最后一个子卷
|
||||||
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code2()));
|
List<PdmBiSubpackagerelation> packagerelationList = subpackageRelationService.list(new LambdaQueryWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getPackage_box_sn, schBaseTask.getVehicle_code2()).eq(PdmBiSubpackagerelation::getStatus, "0"));
|
||||||
//3.更改子卷信息状态为包装1,创建装箱区->装箱位桁架任务的时候判断是否最后一个子卷:相同木箱号如果生成状态0个数等于1且子卷号等于当前载具号,就是最后一个子卷
|
//所有木箱已装箱
|
||||||
|
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
|
PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService
|
||||||
.getOne(new LambdaUpdateWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getContainer_name, schBaseTask.getVehicle_code()), false);
|
.getOne(new LambdaUpdateWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getContainer_name, schBaseTask.getVehicle_code()), false);
|
||||||
pdmBiSubpackagerelation.setStatus("1");
|
pdmBiSubpackagerelation.setStatus("1");
|
||||||
subpackageRelationService.updateById(pdmBiSubpackagerelation);
|
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());
|
//kzjhcwTask.toKzjHcw(schBaseTask.getPoint_code1());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,84 +56,86 @@ public class AutoSendZxToDjw {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void sendZxToDjw() {
|
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("取货任务"), "", "");
|
List<BstIvtPackageinfoivt> zxqPackageinfoivtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务"), "", "");
|
||||||
if (CollectionUtils.isEmpty(zxqPackageinfoivtList)) {
|
if (CollectionUtils.isEmpty(zxqPackageinfoivtList)) {
|
||||||
return;
|
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("装箱区->装箱对接位"));
|
String boxNo = zxwPackageinfoivtList.get(0).getContainer_name();
|
||||||
if (CollectionUtils.isNotEmpty(zxwPackageinfoivtList)) {
|
//获取木箱信息,未包装的木箱
|
||||||
//装箱位上的木箱号
|
BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper<BstIvtBoxinfo>().eq(BstIvtBoxinfo::getBox_no, boxNo).ne(BstIvtBoxinfo::getIs_packing, "1"));
|
||||||
String boxNo = zxwPackageinfoivtList.get(0).getContainer_name();
|
if (bstIvtBoxinfo == null) {
|
||||||
//获取木箱信息,未包装的木箱
|
throw new BadRequestException("请检查木箱号:" + boxNo + "是否存在或者状态为已装箱!");
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
//检查木箱信息
|
||||||
|
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) {
|
private static void checkBoxParams(String boxNo, BstIvtBoxinfo bstIvtBoxinfo) {
|
||||||
if (StringUtils.isBlank(bstIvtBoxinfo.getBox_high())) {
|
if (StringUtils.isBlank(bstIvtBoxinfo.getBox_high())) {
|
||||||
throw new BadRequestException("请检查木箱号:"+ boxNo +"木箱高度不能为空!");
|
throw new BadRequestException("请检查木箱号:" + boxNo + "木箱高度不能为空!");
|
||||||
}
|
}
|
||||||
if (StringUtils.isBlank(bstIvtBoxinfo.getNum())) {
|
if (StringUtils.isBlank(bstIvtBoxinfo.getNum())) {
|
||||||
throw new BadRequestException("请检查木箱号:"+ boxNo +"能装的最大子卷数不能为空!");
|
throw new BadRequestException("请检查木箱号:" + boxNo + "能装的最大子卷数不能为空!");
|
||||||
}
|
}
|
||||||
if (StringUtils.isBlank(bstIvtBoxinfo.getVehicle_type())) {
|
if (StringUtils.isBlank(bstIvtBoxinfo.getVehicle_type())) {
|
||||||
throw new BadRequestException("请检查木箱号:"+ boxNo +"托盘类型不能为空!");
|
throw new BadRequestException("请检查木箱号:" + boxNo + "托盘类型不能为空!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user