Explorar o código

修改海运出口 MBLNO 重复校验规则

wfg hai 4 meses
pai
achega
e3e87b581e

+ 122 - 46
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java

@@ -183,12 +183,50 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		if (ObjectUtils.isNotNull(bills.getMblno())) {
 			bills.setMblno(bills.getMblno().replaceAll(" ", ""));
 		}
-		List<Bills> count = baseMapper.selectList(new LambdaQueryWrapper<Bills>()
-			.select(Bills::getId)
-			.eq(Bills::getCreateDept, branchId)
-			.eq(Bills::getTenantId, AuthUtil.getTenantId())
-			.eq(Bills::getIsDeleted, 0)
-			.eq(Bills::getMblno, bills.getMblno()));
+
+		// List<Bills> count = baseMapper.selectList(new LambdaQueryWrapper<Bills>()
+		// 	.select(Bills::getId)
+		// 	.eq(Bills::getCreateDept, branchId)
+		// 	.eq(Bills::getTenantId, AuthUtil.getTenantId())
+		// 	.eq(Bills::getIsDeleted, 0)
+		// 	.eq(Bills::getMblno, bills.getMblno()));
+
+		List<Bills> count = null;
+		// 只判断海运出口
+		if("SE".equals(bills.getBusinessType()) && ObjectUtils.isNotNull(bills.getMblno())){
+			// 改为同一团队内,Booking+MblNo 不重复
+			LambdaQueryWrapper<Bills> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper.select(Bills::getId);
+			// CreateDept 是一级部门,总公司,分公司等
+			lambdaQueryWrapper.eq(Bills::getCreateDept, branchId)
+				 .eq(Bills::getTenantId, AuthUtil.getTenantId())
+				 .eq(Bills::getIsDeleted, 0)
+				 .eq(Bills::getTeamId, bills.getTeamId())
+				 .eq(Bills::getMblno, bills.getMblno());
+			if(ObjectUtils.isNotNull(bills.getBookingNo())) {
+				lambdaQueryWrapper.eq(Bills::getBookingNo, bills.getBookingNo());
+			}
+			if(ObjectUtils.isNotNull(bills.getId())) {
+				lambdaQueryWrapper.ne(Bills::getId, bills.getId());
+			}
+
+			List<String> billTypes = new ArrayList<>();
+			if("DDMM".contains(bills.getBillType())){
+				billTypes.add("DD");
+				billTypes.add("MM");
+			}else{
+				billTypes.add("MH");
+				billTypes.add("HH");
+			}
+			lambdaQueryWrapper.in(Bills::getBillType, billTypes);
+
+			count = baseMapper.selectList(lambdaQueryWrapper);
+		}
+
+		if(ObjectUtils.isNotNull(count) && count.size()>0){
+			throw new RuntimeException("提单号不允许重复输入:" + bills.getMblno());
+		}
+
 		if ("SE".equals(bills.getBusinessType())) {
 			bills.setBillDate(bills.getEtd());
 		} else {
@@ -260,13 +298,13 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			}
 		}
 		if (bills.getId() == null) {
-			if (!"MH".equals(bills.getBillType())) {
-				if (ObjectUtils.isNotNull(bills.getMblno())) {
-					if (!count.isEmpty()) {
-						throw new RuntimeException("提单号不允许重复:" + bills.getMblno());
-					}
-				}
-			}
+			// if (!"MH".equals(bills.getBillType())) {
+			// 	if (ObjectUtils.isNotNull(bills.getMblno())) {
+			// 		if (!count.isEmpty()) {
+			// 			throw new RuntimeException("提单号不允许重复:" + bills.getMblno());
+			// 		}
+			// 	}
+			// }
 			BusinessType businessType = bBusinessTypeService.getOne(new LambdaQueryWrapper<BusinessType>()
 				.select(BusinessType::getId)
 				.eq(BusinessType::getTenantId, AuthUtil.getTenantId())
@@ -313,14 +351,14 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			// 旧数据处理
 			int version = StringUtil.isBlank(dataSourceBill.getVersion()) ? 1 : Integer.parseInt(dataSourceBill.getVersion());
 			bills.setVersion(String.valueOf(version + 1));
-			List<Long> ids = count.stream().map(Bills::getId).distinct().collect(Collectors.toList());
-			if (!"MH".equals(bills.getBillType())) {
-				if (ObjectUtils.isNotNull(bills.getMblno())) {
-					if (!count.isEmpty() && !ids.contains(bills.getId())) {
-						throw new RuntimeException("提单号不允许重复:" + bills.getMblno());
-					}
-				}
-			}
+			// List<Long> ids = count.stream().map(Bills::getId).distinct().collect(Collectors.toList());
+			// if (!"MH".equals(bills.getBillType())) {
+			// 	if (ObjectUtils.isNotNull(bills.getMblno())) {
+			// 		if (!count.isEmpty() && !ids.contains(bills.getId())) {
+			// 			throw new RuntimeException("提单号不允许重复:" + bills.getMblno());
+			// 		}
+			// 	}
+			// }
 			bills.setUpdateUser(AuthUtil.getUserId());
 			bills.setUpdateTime(new Date());
 			bills.setUpdateUserName(AuthUtil.getUserName());
@@ -3530,12 +3568,50 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		if (ObjectUtils.isNotNull(bills.getMblno())) {
 			bills.setMblno(bills.getMblno().replaceAll(" ", ""));
 		}
-		List<Bills> count = baseMapper.selectList(new LambdaQueryWrapper<Bills>()
-			.eq(Bills::getBranchId, branchId)
-			.eq(Bills::getCreateDept, AuthUtil.getDeptId())
-			.eq(Bills::getTenantId, AuthUtil.getTenantId())
-			.eq(Bills::getIsDeleted, 0)
-			.eq(Bills::getMblno, bills.getMblno()));
+
+		// List<Bills> count = baseMapper.selectList(new LambdaQueryWrapper<Bills>()
+		// 	.eq(Bills::getBranchId, branchId)
+		// 	.eq(Bills::getCreateDept, AuthUtil.getDeptId())
+		// 	.eq(Bills::getTenantId, AuthUtil.getTenantId())
+		// 	.eq(Bills::getIsDeleted, 0)
+		// 	.eq(Bills::getMblno, bills.getMblno()));
+
+		List<Bills> count = null;
+		// 只判断海运出口
+		if("SE".equals(bills.getBusinessType()) && ObjectUtils.isNotNull(bills.getMblno())){
+			// 改为同一团队内,Booking+MblNo 不重复
+			LambdaQueryWrapper<Bills> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper.select(Bills::getId);
+			// CreateDept 是一级部门,总公司,分公司等
+			lambdaQueryWrapper.eq(Bills::getCreateDept, branchId)
+				.eq(Bills::getTenantId, AuthUtil.getTenantId())
+				.eq(Bills::getIsDeleted, 0)
+				.eq(Bills::getTeamId, bills.getTeamId())
+				.eq(Bills::getMblno, bills.getMblno());
+			if(ObjectUtils.isNotNull(bills.getBookingNo())) {
+				lambdaQueryWrapper.eq(Bills::getBookingNo, bills.getBookingNo());
+			}
+			if(ObjectUtils.isNotNull(bills.getId())) {
+				lambdaQueryWrapper.ne(Bills::getId, bills.getId());
+			}
+
+			List<String> billTypes = new ArrayList<>();
+			if("DDMM".contains(bills.getBillType())){
+				billTypes.add("DD");
+				billTypes.add("MM");
+			}else{
+				billTypes.add("MH");
+				billTypes.add("HH");
+			}
+			lambdaQueryWrapper.in(Bills::getBillType, billTypes);
+
+			count = baseMapper.selectList(lambdaQueryWrapper);
+		}
+
+		if(ObjectUtils.isNotNull(count) && count.size()>0){
+			throw new RuntimeException("提单号不允许重复输入:" + bills.getMblno());
+		}
+
 		if ("SE".equals(bills.getBusinessType())) {
 			bills.setBillDate(bills.getEtd());
 		} else {
@@ -3566,14 +3642,14 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			.eq(Bills::getVoyageNo, bills.getVoyageNo()));
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 		if (bills.getId() == null) {
-			if (!"MH".equals(bills.getBillType())) {
-				if (ObjectUtils.isNotNull(bills.getMblno())) {
-					List<Bills> billsList = count.stream().filter(e -> e.getTeamId().equals(AuthUtil.getPostId())).collect(Collectors.toList());
-					if (!billsList.isEmpty()) {
-						return R.data("1", "提单号不允许重复:" + bills.getMblno());
-					}
-				}
-			}
+			// if (!"MH".equals(bills.getBillType())) {
+			// 	if (ObjectUtils.isNotNull(bills.getMblno())) {
+			// 		List<Bills> billsList = count.stream().filter(e -> e.getTeamId().equals(AuthUtil.getPostId())).collect(Collectors.toList());
+			// 		if (!billsList.isEmpty()) {
+			// 			return R.data("1", "提单号不允许重复:" + bills.getMblno());
+			// 		}
+			// 	}
+			// }
 			if (ObjectUtils.isNotNull(bills.getVesselId()) && ObjectUtils.isNotNull(bills.getVoyageNo())) {
 				if (!dateList.isEmpty() && dateList.stream().anyMatch(e -> !e.getBillDate().equals(bills.getBillDate()))) {
 					List<Bills> bills1 = dateList.stream().filter(e -> !e.getBillDate().equals(bills.getBillDate())).collect(Collectors.toList());
@@ -3581,17 +3657,17 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				}
 			}
 		} else {
-			List<Bills> billsList = count.stream().filter(e -> ObjectUtils.isNotNull(e.getTeamId()) && e.getTeamId().equals(AuthUtil.getPostId())).collect(Collectors.toList());
-			if (!billsList.isEmpty()) {
-				List<Long> ids = billsList.stream().map(Bills::getId).distinct().collect(Collectors.toList());
-				if (!"MH".equals(bills.getBillType())) {
-					if (ObjectUtils.isNotNull(bills.getMblno())) {
-						if (!ids.contains(bills.getId())) {
-							return R.data("1", "提单号不允许重复:" + bills.getMblno());
-						}
-					}
-				}
-			}
+			// List<Bills> billsList = count.stream().filter(e -> ObjectUtils.isNotNull(e.getTeamId()) && e.getTeamId().equals(AuthUtil.getPostId())).collect(Collectors.toList());
+			// if (!billsList.isEmpty()) {
+			// 	List<Long> ids = billsList.stream().map(Bills::getId).distinct().collect(Collectors.toList());
+			// 	if (!"MH".equals(bills.getBillType())) {
+			// 		if (ObjectUtils.isNotNull(bills.getMblno())) {
+			// 			if (!ids.contains(bills.getId())) {
+			// 				return R.data("1", "提单号不允许重复:" + bills.getMblno());
+			// 			}
+			// 		}
+			// 	}
+			// }
 			if (ObjectUtils.isNotNull(bills.getVesselId()) && ObjectUtils.isNotNull(bills.getVoyageNo())) {
 				if (!dateList.isEmpty() && dateList.stream().anyMatch(e -> !e.getId().equals(bills.getId()) && !e.getBillDate().equals(bills.getBillDate()))) {
 					List<Bills> bills1 = dateList.stream().filter(e -> !e.getId().equals(bills.getId()) && !e.getBillDate().equals(bills.getBillDate())).collect(Collectors.toList());