Browse Source

预装箱单编辑优化

huxy 2 years ago
parent
commit
8f9e911371

+ 3 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/controller/SyPreAssembledPackingListController.java

@@ -1643,18 +1643,18 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
         return "true";
     }
 
-    /**
+   /* *//**
      * 类型转化
      *
      * @param syPreAssembledPackingListItem
      * @return
-     */
+     *//*
     @AutoLog(value = "类型转化")
     @ApiOperation(value="类型转化", notes="类型转化")
     @RequestMapping(value = "/typeConversion", method = {RequestMethod.POST})
     public SyLetterDepositItem typeConversion(@RequestBody SyPreAssembledPackingListItem syPreAssembledPackingListItem) {
         return syPreAssembledPackingListService.typeConversion(syPreAssembledPackingListItem);
-    }
+    }*/
 
 
     /**

+ 2 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/mapper/SyPreAssembledPackingListItemMapper.java

@@ -21,6 +21,8 @@ import org.jeecg.modules.spapl.vo.PackingLineVo;
 public interface SyPreAssembledPackingListItemMapper extends BaseMapper<SyPreAssembledPackingListItem> {
 
 	public boolean deleteByMainId(String mainId);
+
+	public boolean deleteByGroupId(String mainId);
     
 	public List<SyPreAssembledPackingListItem> selectByMainId(String mainId);
 

+ 5 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/mapper/xml/SyPreAssembledPackingListItemMapper.xml

@@ -8,6 +8,11 @@
 		where sy_pre_assembled_packing_list_id = #{id}
 	</update>
 
+	<update id="deleteByGroupId" parameterType="java.lang.String">
+		update sy_pre_assembled_packing_list_item set
+			del_flag='1'
+		where group_id = #{id}
+	</update>
 	
 	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.spapl.entity.SyPreAssembledPackingListItem">
 		SELECT

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/service/ISyPreAssembledPackingListService.java

@@ -111,7 +111,7 @@ public interface ISyPreAssembledPackingListService extends IService<SyPreAssembl
 	 * 类型转换
 	 * @return SyLetterDepositItem
 	 */
-	public SyLetterDepositItem typeConversion(SyPreAssembledPackingListItem syPreAssembledPackingListItem);
+	public void typeConversion(List<SyPreAssembledPackingListItem> syPreAssembledPackingListItem);
 
 	public boolean excelAdd(List<SyPreAssembledPackingList> items);
 

+ 110 - 19
jeecg-boot-module-system/src/main/java/org/jeecg/modules/spapl/service/impl/SyPreAssembledPackingListServiceImpl.java

@@ -9,6 +9,7 @@ import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.documents.letterDeposit.entity.SyLetterDepositItem;
 import org.jeecg.modules.documents.letterDeposit.mapper.SyLetterDepositItemMapper;
 import org.jeecg.modules.documents.letterDeposit.mapper.SyLetterDepositMapper;
+import org.jeecg.modules.documents.letterDeposit.service.ISyLetterDepositItemService;
 import org.jeecg.modules.documents.shippingDetails.entity.SyShippingDetails;
 import org.jeecg.modules.documents.shippingDetails.entity.SyShippingDetailsItem;
 import org.jeecg.modules.documents.shippingDetails.entity.VO.SyShippingDetailsVo;
@@ -133,10 +134,82 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 		return box;
 	}
 
-	BigDecimal update(List<SyPreAssembledPackingListItem> items,String pid){
-		BigDecimal box=new BigDecimal(0);//获取总箱数
+	void update(List<SyPreAssembledPackingListItem> items,String pid){
 		long startTime = System.currentTimeMillis();
+		List<SyPreAssembledPackingListItem> items3=new ArrayList<>();
+		List<SyPreAssembledPackingListItem> items2=syPreAssembledPackingListItemService.selectByMainId(pid);//获取主表所有数据
+		//syPreAssembledPackingListItemMapper.deleteByMainId(pid);//将子表的删除状态都变成1
+		Map<String,SyPreAssembledPackingListItem> maps=new HashMap<>();
 		for (SyPreAssembledPackingListItem item : items){
+			maps.put(item.getGroupId(),item);//
+		}
+		for (SyPreAssembledPackingListItem item2 : items2){
+			 if(maps.containsKey(item2.getGroupId())){//有这个分组id
+				 SyPreAssembledPackingListItem item=maps.get(item2.getGroupId());
+				 List<SizeTable> sizes=item.getSizeTables();//获取尺码表信息
+				 BigDecimal boxNumber1=item.getBoxNumber();//获取箱数
+				 item.setActualPackingQty(item.getTotal());//计划装箱数量
+				 if(item.getIsAdd()>0){
+					 item.setGroupId(org.jeecg.modules.system.util.oConvertUtils.getId());//分组id
+				 }
+				 //box=box.add(boxNumber1);//合计
+				 item.setDelFlag("0");
+				 for (SizeTable size : sizes){
+					 if(size.getProportion()==null){
+						 size.setProportion(0);
+					 }
+					 SyPreAssembledPackingListItem item1=item;
+					 item1.setSize(size.getSize());//获取尺码信息
+					 BigDecimal boxNumber=boxNumber1.multiply(new BigDecimal(size.getProportion()));//获取该尺码件数
+					 item1.setTotal(boxNumber);//该尺码件数
+					 item1.setTotalPrice(boxNumber.multiply(item1.getUnitPrice()));//获取总价		箱数*单价-->件数*单价
+					 item1.setId(size.getItemId());//从尺码表中获取到id
+					 if(size.getProportion()==0){
+						 item1.setTotal(null);//该尺码件数
+					 }
+					 if(item.getIsAdd()>0){//如果为0就添加数据
+						 String syDeclarationElementsItemId=syPreAssembledPackingListItemMapper.selectById(item1.getId()).getSyDeclarationElementsItemId();
+						 item1.setSyDeclarationElementsItemId(syDeclarationElementsItemId);
+						 SyShippingDetailsItem syItem=syShippingDetailsItemMapper.selectById(item1.getSyDeclarationElementsItemId());
+						 if(syItem!=null){
+							 //获取委外/采购订单子表Id
+							 item1.setOmpoId(syItem.getOmpoId());
+							 item1.setOmpoIdItem(syItem.getOmpoIdItem());
+							 item1.setOmpoAccount(syItem.getOmpoAccount());
+							 item1.setSyOrderDataId(syItem.getSyOrderDataId());
+							 item1.setSyOrderDataItemId(syItem.getSyOrderDataItemId());
+							 item1.setOrderNumber(syItem.getOrderNumber());//获取订单号
+							 item1.setSupplierCode(syItem.getSupplierCode());
+							 item1.setSupplier(syItem.getSupplier());
+							 //获取订单子表id
+							 //item1.setSyOrderDataItemId(syItem.getSyOrderDataItemId());
+						 }
+						 item1.setSyPreAssembledPackingListId(pid);
+						 item1.setId(oConvertUtils.id());//获取到随机id
+						 syPreAssembledPackingListItemMapper.insert(item1);
+					 }else{
+						 SyPreAssembledPackingListItem item3=new SyPreAssembledPackingListItem();
+						 BeanUtils.copyProperties(item1,item3);
+						 items3.add(item3);
+						 //syPreAssembledPackingListItemMapper.updateById(item1);//如果没修改成功就是新增数据
+					 }
+				 }
+			 }
+			 else{
+			 	syPreAssembledPackingListItemMapper.deleteByGroupId(item2.getGroupId());
+			 }
+		}
+		long startTime2 = System.currentTimeMillis();
+		typeConversion(items3);//修改预托书数量
+		syPreAssembledPackingListItemService.updateBatchById(items3);
+		long endTime = System.currentTimeMillis();
+		System.out.println("全程的时间:" + (endTime - startTime) + "ms");
+		System.out.println("update的时间:" + (endTime - startTime2) + "ms");
+		//return new BigDecimal("0");
+
+		//syPreAssembledPackingListItemMapper.deleteByMainId(pid);//将子表的删除状态都变成1
+		//BigDecimal box=new BigDecimal(0);//获取总箱数
+		/*for (SyPreAssembledPackingListItem item : items){
 			List<SizeTable> sizes=item.getSizeTables();//获取尺码表信息
 			BigDecimal boxNumber1=item.getBoxNumber();//获取箱数
 			item.setActualPackingQty(item.getTotal());//计划装箱数量
@@ -192,20 +265,20 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 					syPreAssembledPackingListItemMapper.insert(item1);
 					//updateQuantity(item1.getTotal(),item1.getSyDeclarationElementsItemId());
 				}else{
-					/*QueryWrapper queryWrapper=new QueryWrapper();
+					*//*QueryWrapper queryWrapper=new QueryWrapper();
 					queryWrapper.eq("id", item1.getId());//子表id
 					queryWrapper.select("total as total");//获取实际报关数量合计
 					BigDecimal total=new BigDecimal("0");
 					if(syPreAssembledPackingListItemMapper.selectOne(queryWrapper)!=null){
 						total=syPreAssembledPackingListItemMapper.selectOne(queryWrapper).getTotal().subtract(item.getTotal());
 						//total=total.subtract(item.getTotal());
-					}*/
+					}*//*
 
 					syPreAssembledPackingListItemMapper.updateById(item1);//如果没修改成功就是新增数据
 					//updateQuantity(total.negate(),item1.getSyDeclarationElementsItemId());
 				}
 				//这个构造器用来获取预装箱单里所有参照了改发运明细数量的合计
-				/*QueryWrapper<SyPreAssembledPackingListItem> queryWrapperCount =new QueryWrapper<>();
+				*//*QueryWrapper<SyPreAssembledPackingListItem> queryWrapperCount =new QueryWrapper<>();
 				queryWrapperCount.select("COALESCE(sum(total),0)  total");
 				queryWrapperCount.eq("del_Flag","0");
 				queryWrapperCount.eq("sy_Declaration_Elements_Item_Id",item1.getSyDeclarationElementsItemId());
@@ -218,13 +291,10 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 					//标识已被参照
 					//syItem.setIsReference(1);	由预托书回写
 					syShippingDetailsItemMapper.updateById(syItem);//修改发运明细发货数量和超出数量,如不需要就注释
-				}*/
+				}*//*
 				typeConversion(item1);//修改预托书数量
 			}
-		}
-		long endTime = System.currentTimeMillis();
-		System.out.println("保存的时间:" + (endTime - startTime) + "ms");
-		return box;
+		}*/
 	}
 
 
@@ -301,10 +371,10 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 				syShippingDetailsItemMapper.updateById(syItem);//修改数据
 			}*//*
 		}*/
-		syPreAssembledPackingListItemMapper.deleteByMainId(syPreAssembledPackingList.getId());//将子表的删除状态都变成1
 		if(syPreAssembledPackingList.getSyPreAssembledPackingListItemList()!=null){
-			BigDecimal box= update(syPreAssembledPackingList.getSyPreAssembledPackingListItemList(),syPreAssembledPackingList.getId());
-			syPreAssembledPackingList.setTotalBoxes(box);//主表的总箱数
+			//BigDecimal box= update(syPreAssembledPackingList.getSyPreAssembledPackingListItemList(),syPreAssembledPackingList.getId());
+			update(syPreAssembledPackingList.getSyPreAssembledPackingListItemList(),syPreAssembledPackingList.getId());
+			//syPreAssembledPackingList.setTotalBoxes(box);//主表的总箱数
 			syPreAssembledPackingListMapper.updateById(syPreAssembledPackingList);//修改主表总箱数
 		}
 		return syPreAssembledPackingList;
@@ -545,19 +615,40 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 		return "true";
 	}
 
+	@Autowired
+	private ISyLetterDepositItemService syLetterDepositItemService;
+
 	@Override
-	public SyLetterDepositItem typeConversion(SyPreAssembledPackingListItem syPreAssembledPackingListItem) {
+	public void typeConversion(List<SyPreAssembledPackingListItem> syPreAssembledPackingListItems) {
+		List<String> ids=new ArrayList<>();
+		Map<String,SyPreAssembledPackingListItem> maps=new HashMap<>();
+		for (SyPreAssembledPackingListItem item : syPreAssembledPackingListItems){
+			ids.add(item.getId());
+			maps.put(item.getGroupId(),item);
+		}
 		QueryWrapper queryWrapper=new QueryWrapper();
-		queryWrapper.eq("sy_pre_assembled_packing_list_item_id",syPreAssembledPackingListItem.getId());
+		queryWrapper.in("sy_pre_assembled_packing_list_item_id",ids);
 		queryWrapper.eq("del_flag","0");//未删除的数据
-		SyLetterDepositItem syLetterDepositItem=syLetterDepositItemMapper.selectOne(queryWrapper);//问题点
-		if(syLetterDepositItem!=null){
+		List<SyLetterDepositItem> syLetterDepositItems=syLetterDepositItemMapper.selectList(queryWrapper);//问题点
+		/*SyPreAssembledPackingListItem item3=new SyPreAssembledPackingListItem();
+		BeanUtils.copyProperties(item1,item3);*/
+		for (SyLetterDepositItem syLetterDepositItem : syLetterDepositItems){
+			if(maps.containsKey(syLetterDepositItem.getSyPreAssembledPackingListItemId())){
+				String id=syLetterDepositItem.getId();//保存预托书id防止覆盖
+				BeanUtils.copyProperties(maps.get(syLetterDepositItem.getSyPreAssembledPackingListItemId()), syLetterDepositItem);
+				syLetterDepositItem.setId(id);//重新赋值
+				//syLetterDepositItemMapper.updateById(syLetterDepositItem);//修改预托书数据
+			}
+		}
+		syLetterDepositItemService.updateBatchById(syLetterDepositItems);
+		//SyLetterDepositItem syLetterDepositItem=
+		/*if(syLetterDepositItem!=null){
 			String id=syLetterDepositItem.getId();//保存预托书id防止覆盖
 			BeanUtils.copyProperties(syPreAssembledPackingListItem, syLetterDepositItem);
 			syLetterDepositItem.setId(id);//重新赋值
 			syLetterDepositItemMapper.updateById(syLetterDepositItem);//修改预托书数据
-		}
-		return syLetterDepositItem;
+		}*/
+		//return void;
 	}