Browse Source

出运明细批量提交和取消提交优化

zengtx 2 years ago
parent
commit
c49868540f

+ 105 - 70
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/shippingDetails/controller/SyShippingDetailsController.java

@@ -224,45 +224,29 @@ public class SyShippingDetailsController extends JeecgController<SyShippingDetai
 		}
 
 		Page<SyShippingDetailsVo> page = new Page<SyShippingDetailsVo>(1, -1);
-		if(flourOrGarment.equals("0")){//面辅料
-			queryWrapper.eq("1",1);
-			 IPage<SyShippingDetailsVo> pageList = syShippingDetailsService.queryShippingDetailsGarment(page, queryWrapper);
+		IPage<SyShippingDetailsVo> pageList;
+		if (flourOrGarment.equals("0")) { // 面辅料
+			queryWrapper.eq("1", 1);
+			pageList = syShippingDetailsService.queryShippingDetailsGarment(page, queryWrapper);
+		} else { // 成衣
+			queryWrapper.eq("1", 1);
+			pageList = syShippingDetailsService.queryShippingDetails(page, queryWrapper);
+		}
 
-			  for(SyShippingDetailsVo str:pageList.getRecords()){
-				  amountTo = amountTo+str.getShipmentQuantity();
-			  }
-			//amountTo = pageList.getRecords().stream().mapToDouble(i -> i.getShipmentQuantity()).sum();
-			pageList.setRecords(pageList.getRecords().stream().sorted(Comparator.comparing(SyShippingDetailsVo::getCreateTime).reversed()).collect(Collectors.toList()));
+         // 计算总合计数量
+		amountTo = pageList.getRecords().stream().mapToDouble(SyShippingDetailsVo::getShipmentQuantity).sum();
 
-			result.setSuccess(true);
-				result.setResult(pageList);
-				result.setMessage(amountTo.toString());
-		}else{//成衣
-			queryWrapper.eq("1",1);
-			IPage<SyShippingDetailsVo> pageList = syShippingDetailsService.queryShippingDetails(page, queryWrapper);
-
-			amountTo = pageList.getRecords().stream().mapToDouble(i -> i.getShipmentQuantity()).sum();
-//			for(SyShippingDetailsVo str:pageList.getRecords()){
-//				//赋值报关信息
-//				SyDeclarationElements entity = syDeclarationElementsService.getById(str.getElementsId());
-//				if(oConvertUtils.isNotEmpty(entity)){
-//					str.setDeclarationName(entity.getDeclarationName());
-//					str.setHsCode(entity.getHsCode());
-//					str.setEnglishProductName(entity.getEnglishProductName());
-//				}
-//				amountTo = amountTo+str.getShipmentQuantity();
-//			}
+        // 对查询结果按 createTime 逆序排序
+		pageList.setRecords(pageList.getRecords().stream().sorted(Comparator.comparing(SyShippingDetailsVo::getCreateTime).reversed()).collect(Collectors.toList()));
 
-			pageList.setRecords(pageList.getRecords().stream().sorted(Comparator.comparing(SyShippingDetailsVo::getCreateTime).reversed()).collect(Collectors.toList()));
-			result.setSuccess(true);
-			result.setResult(pageList);
-			result.setMessage(amountTo.toString());
+		result.setSuccess(true);
+		result.setResult(pageList);
+		result.setMessage(amountTo.toString());
+
+		return result;
 		}
 
 
-		return result;
-	}
-	
 	/**
 	 * 添加
 	 *
@@ -993,59 +977,100 @@ public class SyShippingDetailsController extends JeecgController<SyShippingDetai
 					  
 				  }
 				  //判断重复自由项数据
-				  for(String str:syShippingDetails.getGrouyIdList()) {
+				  for (String str : syShippingDetails.getGrouyIdList()) {
+					  Set<String> seenData = new HashSet<>();
 					  QueryWrapper<SyShippingDetailsItem> queryWrapper = new QueryWrapper<>();
 					  queryWrapper.in("group_id", str).eq("del_flag", 0);
 					  List<SyShippingDetailsItem> groupList = syShippingDetailsItemService.list(queryWrapper);
-					  for (int i = 0; i < groupList.size(); i++) {
-						  SyShippingDetailsItem tableRow = groupList.get(i);
-						  for (int j = i+1; j < groupList.size(); j++) {
-							  SyShippingDetailsItem nextData = groupList.get(j);
-							  if (tableRow.getSmallPo().equals(nextData.getSmallPo()) && tableRow.getOrderNumber().equals(nextData.getOrderNumber()) &&
-									  tableRow.getPreDeliveryDate().equals(nextData.getPreDeliveryDate()) && tableRow.getPreCompletionDate().equals(nextData.getPreCompletionDate()) &&
-									  tableRow.getItemNumber().equals(nextData.getItemNumber()) && tableRow.getInventoryCode().equals(nextData.getInventoryCode()) &&
-									  tableRow.getColour().equals(nextData.getColour()) && tableRow.getSize().equals(nextData.getSize())&&
-									  tableRow.getGuangpeiGateWidth().equals(nextData.getGuangpeiGateWidth()) && tableRow.getWeight().equals(nextData.getWeight())&&
-							          tableRow.getCodingRules().equals(nextData.getCodingRules())) {
-								  result.setSuccess(false);
-								  result.setMessage("第"+count+"条里面的第"+(i+1)+"行和第"+(j+1)+"行数据相同,无法提交");
-								  return result;
-							  }
-						  }
 
+					  for (SyShippingDetailsItem item : groupList) {
+						  String key = generateKey(item);
+						  if (seenData.contains(key)) {
+							  result.setSuccess(false);
+							  result.setMessage("第" + count + "条里面有重复数据,无法提交");
+							  return result;
+						  }
+						  seenData.add(key);
 					  }
+
 					  count++;
 				  }
+//				  for(String str:syShippingDetails.getGrouyIdList()) {
+//					  QueryWrapper<SyShippingDetailsItem> queryWrapper = new QueryWrapper<>();
+//					  queryWrapper.in("group_id", str).eq("del_flag", 0);
+//					  List<SyShippingDetailsItem> groupList = syShippingDetailsItemService.list(queryWrapper);
+//					  for (int i = 0; i < groupList.size(); i++) {
+//						  SyShippingDetailsItem tableRow = groupList.get(i);
+//						  for (int j = i+1; j < groupList.size(); j++) {
+//							  SyShippingDetailsItem nextData = groupList.get(j);
+//							  if (tableRow.getSmallPo().equals(nextData.getSmallPo()) && tableRow.getOrderNumber().equals(nextData.getOrderNumber()) &&
+//									  tableRow.getPreDeliveryDate().equals(nextData.getPreDeliveryDate()) && tableRow.getPreCompletionDate().equals(nextData.getPreCompletionDate()) &&
+//									  tableRow.getItemNumber().equals(nextData.getItemNumber()) && tableRow.getInventoryCode().equals(nextData.getInventoryCode()) &&
+//									  tableRow.getColour().equals(nextData.getColour()) && tableRow.getSize().equals(nextData.getSize())&&
+//									  tableRow.getGuangpeiGateWidth().equals(nextData.getGuangpeiGateWidth()) && tableRow.getWeight().equals(nextData.getWeight())&&
+//							          tableRow.getCodingRules().equals(nextData.getCodingRules())) {
+//								  result.setSuccess(false);
+//								  result.setMessage("第"+count+"条里面的第"+(i+1)+"行和第"+(j+1)+"行数据相同,无法提交");
+//								  return result;
+//							  }
+//						  }
+//
+//					  }
+//					  count++;
+//				  }
 			  }else{
-				  //查询是否已提交
+				  // 查询是否已提交
 				  QueryWrapper<SyShippingDetailsItem> itemQueryWrapper1 = new QueryWrapper<>();
-				  itemQueryWrapper1.in("id",idsList).eq("submit_status","1");
+				  itemQueryWrapper1.in("id", idsList).eq("submit_status", "1");
 				  List<SyShippingDetailsItem> list1 = syShippingDetailsItemService.list(itemQueryWrapper1);
+
 				  for (SyShippingDetailsItem li : list1) {
-//					  if (li.getSubmitStatus() == 0) {
-//						  result.setSuccess(false);
-//						  result.setMessage("部分单据已取消提交,请勿重复取消提交!");
-//						  return result;
-//					  }
-					  //判断下游是否有预装箱单-成衣单据
-					  QueryWrapper<SyPreAssembledPackingListItem> queryWrapper = new QueryWrapper<SyPreAssembledPackingListItem>();
-					  queryWrapper.eq("sy_declaration_elements_item_id",li.getId()).eq("del_flag",0);
-                      List<SyPreAssembledPackingListItem> packingListItems = syPreAssembledPackingListItemService.list(queryWrapper);
-                      if(packingListItems.size()!=0){
-						  result.setSuccess(false);
-						  result.setMessage("该单据被下游参照,不允许取消提交!");
-						  return result;
-					  }
-					  //判断下游是否有装箱单-面辅料单据
-					  QueryWrapper<SyPackingListFabricItem> queryWrapper1 = new QueryWrapper<SyPackingListFabricItem>();
-					  queryWrapper1.eq("sy_shipping_details_item_id",li.getId()).eq("del_flag",0);
-					  List<SyPackingListFabricItem> packingListFabricItem = syPackingListFabricItemService.list(queryWrapper1);
-					  if(packingListFabricItem.size()!=0){
+					  // 判断下游是否有预装箱单-成衣单据和装箱单-面辅料单据
+					  QueryWrapper<SyPreAssembledPackingListItem> queryWrapper = new QueryWrapper<>();
+					  queryWrapper.eq("sy_declaration_elements_item_id", li.getId()).eq("del_flag", 0);
+
+					  // 使用LEFT JOIN连接装箱单表,并筛选出符合条件的行数
+					  queryWrapper.apply("NOT EXISTS (SELECT 1 FROM sy_packing_list_fabric_item WHERE sy_shipping_details_item_id = {0} AND del_flag = 0)", li.getId());
+
+					  // 使用LEFT JOIN连接预装箱单表,并筛选出符合条件的行数
+					  queryWrapper.apply("NOT EXISTS (SELECT 1 FROM sy_pre_assembled_packing_list_item WHERE sy_declaration_elements_item_id = {0} AND del_flag = 0)", li.getId());
+
+					  int count1 = syPreAssembledPackingListItemService.count(queryWrapper);
+					  if (count1 > 0) {
 						  result.setSuccess(false);
 						  result.setMessage("该单据被下游参照,不允许取消提交!");
 						  return result;
 					  }
 				  }
+//				  //查询是否已提交
+//				  QueryWrapper<SyShippingDetailsItem> itemQueryWrapper1 = new QueryWrapper<>();
+//				  itemQueryWrapper1.in("id",idsList).eq("submit_status","1");
+//				  List<SyShippingDetailsItem> list1 = syShippingDetailsItemService.list(itemQueryWrapper1);
+//				  for (SyShippingDetailsItem li : list1) {
+////					  if (li.getSubmitStatus() == 0) {
+////						  result.setSuccess(false);
+////						  result.setMessage("部分单据已取消提交,请勿重复取消提交!");
+////						  return result;
+////					  }
+//					  //判断下游是否有预装箱单-成衣单据
+//					  QueryWrapper<SyPreAssembledPackingListItem> queryWrapper = new QueryWrapper<SyPreAssembledPackingListItem>();
+//					  queryWrapper.eq("sy_declaration_elements_item_id",li.getId()).eq("del_flag",0);
+//                      List<SyPreAssembledPackingListItem> packingListItems = syPreAssembledPackingListItemService.list(queryWrapper);
+//                      if(packingListItems.size()!=0){
+//						  result.setSuccess(false);
+//						  result.setMessage("该单据被下游参照,不允许取消提交!");
+//						  return result;
+//					  }
+//					  //判断下游是否有装箱单-面辅料单据
+//					  QueryWrapper<SyPackingListFabricItem> queryWrapper1 = new QueryWrapper<SyPackingListFabricItem>();
+//					  queryWrapper1.eq("sy_shipping_details_item_id",li.getId()).eq("del_flag",0);
+//					  List<SyPackingListFabricItem> packingListFabricItem = syPackingListFabricItemService.list(queryWrapper1);
+//					  if(packingListFabricItem.size()!=0){
+//						  result.setSuccess(false);
+//						  result.setMessage("该单据被下游参照,不允许取消提交!");
+//						  return result;
+//					  }
+//				  }
 			  }
 
 
@@ -1072,6 +1097,16 @@ public class SyShippingDetailsController extends JeecgController<SyShippingDetai
   }
 
 
+  //处理拼接
+	 private String generateKey(SyShippingDetailsItem item) {
+		 // 根据需要拼接一个唯一标识字符串,用于比较
+		 return item.getSmallPo() + item.getOrderNumber() + item.getPreDeliveryDate() + item.getPreCompletionDate()
+				 + item.getItemNumber() + item.getInventoryCode() + item.getColour() + item.getSize()
+				 + item.getGuangpeiGateWidth() + item.getWeight() + item.getCodingRules();
+	 }
+
+
+
 	 /**
 	  * 发运明细查询订单接口
 	  * @param