| 
					
				 | 
			
			
				@@ -6,6 +6,7 @@ import com.baomidou.dynamic.datasource.annotation.DS; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.metadata.IPage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.hibernate.engine.jdbc.Size; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.jeecg.common.api.vo.Result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.jeecg.common.exception.JeecgBootException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.jeecg.common.util.oConvertUtils; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -233,51 +234,102 @@ public class SyPackingListTailoringServiceImpl extends ServiceImpl<SyPackingList 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Map<String,String> mapId=new HashMap<>();//key为发运明细子表id,value为分组id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		syPackingListTailoring.setTotalBoxes(new BigDecimal("0")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		syPackingListTailoring.setTotalPrice(new BigDecimal("0")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		for(SyPackingListTailoringItem s1 : items){//调整面辅料云工厂接口,导入添加验证,改面辅料金额计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			SyPreAssembledPackingListItem syPreAssembledPackingListItem=syPreAssembledPackingListItemMapper.selectById(s1.getSyPreAssembledPackingListItemId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if(syPreAssembledPackingListItem==null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				throw new JeecgBootException("数据库找不到对应的预装箱单子表id"+s1.getSyPreAssembledPackingListItemId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 * 获取所有的尺码和预装箱单子表id,创建map对象根据分组id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 * 循环map.size次,根据map的key随机获取一条数据,有尺码数据的就不更改了,,无尺码数据的只更换尺码和预装箱单id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 * 最后在进行添加 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map<String,String> sizes=new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map<String,List<SyPackingListTailoringItem>> maps=new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (SyPackingListTailoringItem item : items){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(!sizes.containsKey(item.getSize())){//获取所有的尺码和预装箱单子表id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sizes.put(item.getSize(),item.getSyPreAssembledPackingListItemId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(maps.containsKey(item.getGroupId())){//根据分组id创建map对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				maps.get(item.getGroupId()).add(item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				List<SyPackingListTailoringItem> items1=new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				items1.add(item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				maps.put(item.getGroupId(),items1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		items=new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (String groupId : maps.keySet()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SyPackingListTailoringItem item1=maps.get(groupId).get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Map<String,Integer> sizes1=new HashMap<>();//获取尺码和数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			List<SizeTable> sizeTables=new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (SyPackingListTailoringItem item : maps.get(groupId)){//获取该分组的所有尺码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sizes1.put(item.getSize(),item.getActualPackingQty().intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setId(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setDelFlag("0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			BigDecimal total=s1.getTotal(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setTotal(s1.getActualPackingQty().multiply(s1.getBoxNumber()));//各尺码数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setActualPackingQty(total);//合计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setSyPackingListTailoringId(syPackingListTailoring.getId());//主表id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setSyPreAssembledPackingListId(syPackingListTailoring.getSyPreAssembledPackingListId());//预装箱单主表id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if(!mapId.containsKey(s1.getGroupId())){//如果这个发运明细id没有分组id,就生成一个新的分组id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				mapId.put(s1.getGroupId(), org.jeecg.modules.system.util.oConvertUtils.getId());//分组id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				syPackingListTailoring.setTotalBoxes(syPackingListTailoring.getTotalBoxes().add(s1.getBoxNumber()));//总箱数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (String size : sizes.keySet()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				SizeTable sizeTable=new SizeTable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sizeTable.setSize(size);//获取尺码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sizeTable.setItemId(sizes.get(size));//获取预装箱单子表id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(sizes1.containsKey(size)){//有尺码的获取数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					sizeTable.setProportion(sizes1.get(size));//获取数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}else{//默认为0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					sizeTable.setProportion(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sizeTables.add(sizeTable); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setGroupId(mapId.get(s1.getGroupId()));//获取id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setUnitPrice(syPreAssembledPackingListItem.getUnitPrice());//单价 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			try{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				s1.setHod(new SimpleDateFormat("yyyy-MM-dd").parse(syPreAssembledPackingListItem.getHod()));//字符转化为日期,需要申明异常 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			item1.setSizeTables(sizeTables); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			items.add(item1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		System.out.println("SyPackingListTailoringItem.size\t"+items.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for(SyPackingListTailoringItem s1 : items){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			s1.setGroupId(org.jeecg.modules.system.util.oConvertUtils.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			syPackingListTailoring.setTotalBoxes(syPackingListTailoring.getTotalBoxes().add(s1.getBoxNumber()));//总箱数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (SizeTable sizeTable : s1.getSizeTables()){//sizetable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				SyPreAssembledPackingListItem syPreAssembledPackingListItem=syPreAssembledPackingListItemMapper.selectById(sizeTable.getItemId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(syPreAssembledPackingListItem==null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					throw new JeecgBootException("数据库找不到对应的预装箱单子表id"+s1.getSyPreAssembledPackingListItemId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setId(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setDelFlag("0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				BigDecimal total=s1.getTotal(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setTotal(new BigDecimal(sizeTable.getProportion()).multiply(s1.getBoxNumber()));//各尺码数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setSize(sizeTable.getSize()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setActualPackingQty(total);//合计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setSyPackingListTailoringId(syPackingListTailoring.getId());//主表id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setSyPreAssembledPackingListId(syPackingListTailoring.getSyPreAssembledPackingListId());//预装箱单主表id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				/*if(!mapId.containsKey(s1.getGroupId())){//如果这个发运明细id没有分组id,就生成一个新的分组id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					mapId.put(s1.getGroupId(), org.jeecg.modules.system.util.oConvertUtils.getId());//分组id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//s1.setGroupId(mapId.get(s1.getGroupId()));//获取id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setUnitPrice(syPreAssembledPackingListItem.getUnitPrice());//单价 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				try{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					s1.setHod(new SimpleDateFormat("yyyy-MM-dd").parse(syPreAssembledPackingListItem.getHod()));//字符转化为日期,需要申明异常 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setTotalPrice(s1.getTotal().multiply(s1.getUnitPrice()));//计算总价 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setSyOrderDataId(syPreAssembledPackingListItem.getSyOrderDataId());//订单数据子表id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setSyOrderDataItemId(syPreAssembledPackingListItem.getSyOrderDataItemId());//订单数据子表id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setOmpoAccount(syPreAssembledPackingListItem.getOmpoAccount());//采购委外账套号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setOmpoId(syPreAssembledPackingListItem.getOmpoId());//采购委外主表id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setOmpoIdItem(syPreAssembledPackingListItem.getOmpoIdItem());//采购委外子表id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setSalesman(syPreAssembledPackingListItem.getSalesman());//业务员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setSalesDepartment(syPreAssembledPackingListItem.getSalesDepartment());//业务部门 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setSpurOrSubOrder(syPreAssembledPackingListItem.getSpurOrSubOrder());//采购委外订单号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setMasterMetering(syPreAssembledPackingListItem.getMasterMetering());//计量单位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setFactoryUnitPrice(syPreAssembledPackingListItem.getFactoryUnitPrice());//工厂单价 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setInventoryCcode(syPreAssembledPackingListItem.getInventoryCcode());//物料分类 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setWithCode(syPreAssembledPackingListItem.getWithCode());//配码规则 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setPackId(syPreAssembledPackingListItem.getPackId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setSupplier(syPreAssembledPackingListItem.getSupplier()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setSupplierCode(syPreAssembledPackingListItem.getSupplierCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setYmoney(syPreAssembledPackingListItem.getYmoney());//佣金 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				s1.setElementsId(syPackingListTailoring.getElementsId());//申报要素id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				syPackingListTailoring.setTotalPrice(syPackingListTailoring.getTotalPrice().add(s1.getTotalPrice()));//总价 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				syPackingListTailoring.setCreateTime(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(s1.getTotal().doubleValue()==0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					s1.setTotal(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				syPackingListTailoringItemMapper.insert(s1);//新增子表数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setTotalPrice(s1.getTotal().multiply(s1.getUnitPrice()));//计算总价 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setSyOrderDataId(syPreAssembledPackingListItem.getSyOrderDataId());//订单数据子表id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setSyOrderDataItemId(syPreAssembledPackingListItem.getSyOrderDataItemId());//订单数据子表id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setSalesman(syPreAssembledPackingListItem.getSalesman());//业务员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setSalesDepartment(syPreAssembledPackingListItem.getSalesDepartment());//业务部门 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setSpurOrSubOrder(syPreAssembledPackingListItem.getSpurOrSubOrder());//采购委外订单号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setMasterMetering(syPreAssembledPackingListItem.getMasterMetering());//计量单位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setFactoryUnitPrice(syPreAssembledPackingListItem.getFactoryUnitPrice());//工厂单价 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setInventoryCcode(syPreAssembledPackingListItem.getInventoryCcode());//物料分类 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setWithCode(syPreAssembledPackingListItem.getWithCode());//配码规则 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setOmpoAccount(syPreAssembledPackingListItem.getOmpoAccount());//采购委外账套号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setPackId(syPreAssembledPackingListItem.getPackId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setSupplier(syPreAssembledPackingListItem.getSupplier()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setSupplierCode(syPreAssembledPackingListItem.getSupplierCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setYmoney(syPreAssembledPackingListItem.getYmoney());//佣金 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setElementsId(syPackingListTailoring.getElementsId());//申报要素id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setOmpoId(syPreAssembledPackingListItem.getOmpoId());//采购委外主表id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			s1.setOmpoIdItem(syPreAssembledPackingListItem.getOmpoIdItem());//采购委外子表id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			syPackingListTailoring.setTotalPrice(syPackingListTailoring.getTotalPrice().add(s1.getTotalPrice()));//总价 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			syPackingListTailoring.setCreateTime(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			syPackingListTailoringItemMapper.insert(s1);//新增子表数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		syPackingListTailoringMapper.updateById(syPackingListTailoring); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return syPackingListTailoring; 
			 |