Browse Source

面辅料回写数量调整

huxy 2 years ago
parent
commit
1e1cc3e501

+ 115 - 64
jeecg-boot-module-system/src/main/java/org/jeecg/modules/splfi/service/impl/SyPackingListFabricServiceImpl.java

@@ -145,7 +145,14 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 			entity.setPurOrSubOrder(detailsItem.getPurOrSubOrder());//采购委外订单号
 			entity.setPrice(detailsItem.getSalesUnitPrice());//单价
 			entity.setFactoryUnitPrice(detailsItem.getFactoryUnitPrice());//工厂单价
-			updateQuantity(entity.getActualDeclaredQuantity(),entity.getSyShippingDetailsItemId());
+
+			if(entity.getMasterMetering().equals("KG")){
+				updateQuantity(entity.getNetWeight(),entity.getSyShippingDetailsItemId(),entity.getMasterMetering());
+			}else{
+				updateQuantity(entity.getActualDeclaredQuantity(),entity.getSyShippingDetailsItemId(),entity.getMasterMetering());
+			}
+
+
 
 
 			if((entity.getInventoryCcode().indexOf("03")!=-1&&!entity.getInventoryCcode().equals("0399")) ||
@@ -180,19 +187,20 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 	 * @return
 	 */
 	@Transactional
-	public void  updateQuantity(BigDecimal quantity,String syShippingDetailsItemId){
+	public void  updateQuantity(BigDecimal quantity,String syShippingDetailsItemId,String master){
 		QueryWrapper queryWrapper=new QueryWrapper();
 		queryWrapper.eq("sy_shipping_details_item_id", syShippingDetailsItemId);//出运明细id
 		queryWrapper.eq("del_flag", "0");//未删除
-		queryWrapper.select("sum(actual_Declared_Quantity) as actualDeclaredQuantity");//获取实际报关数量合计
+		if(master.equals("KG")){
+			queryWrapper.select("sum(net_Weight) as actualDeclaredQuantity");//获取净重合计
+		}else{
+			queryWrapper.select("sum(actual_Declared_Quantity) as actualDeclaredQuantity");//获取实际报关数量合计
+		}
 		BigDecimal actualDeclaredQuantity=new BigDecimal("0");
 		if(syPackingListFabricItemMapper.selectOne(queryWrapper)!=null){
 			actualDeclaredQuantity=syPackingListFabricItemMapper.selectOne(queryWrapper).getActualDeclaredQuantity();
 		}
-		System.out.println("本次数量\t"+quantity);
-		System.out.println("总数\t"+actualDeclaredQuantity);
 		actualDeclaredQuantity=actualDeclaredQuantity.add(quantity);
-		System.out.println("总数减后\t"+actualDeclaredQuantity);
 		SyShippingDetailsItem item=syShippingDetailsItemMapper.selectById(syShippingDetailsItemId);
 
 		BigDecimal shipmentQuantity=item.getShipmentQuantity();//获取发货数量
@@ -208,11 +216,11 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 		item.setExcessQuantity(excessQuantity);//出运明细超发数量
 		syShippingDetailsItemMapper.updateById(item);
 
-		/*UpdateWrapper updateWrapper=new UpdateWrapper();
+		UpdateWrapper updateWrapper=new UpdateWrapper();
 		updateWrapper.set("remaining_Quantity",remainingQuantity);
 		updateWrapper.set("excess_Quantity",excessQuantity);
 		updateWrapper.eq("sy_shipping_details_item_id",syShippingDetailsItemId);
-		return syPackingListFabricItemMapper.update(null,updateWrapper);*/
+		syPackingListFabricItemMapper.update(null,updateWrapper);
 	}
 
 	/**
@@ -222,7 +230,6 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 	 */
 	public String getMasterMetering(String id){
 		SyOrderDataItem syOrderDataItem=syOrderDataItemMapper.selectById(id);
-		System.out.println("单位\t"+syOrderDataItem.getMasterMetering());
 		return syOrderDataItem.getMasterMetering();
 	}
 
@@ -265,35 +272,35 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 
 			entity.setInventoryQuantity(entity.getActualDeclaredQuantity());//入库数量=实际报关数量
 			if(entity.getIsAdd()>0){//大于1就是新增数据
-				//因为云工场得修改时得停止调用前面接口
-				/*SyShippingDetailsItem s1 =syShippingDetailsItemMapper.selectById(entity.getSyShippingDetailsItemId());
-				//剩余数量-这次入库数量=新剩余数量
-				s1.setOrderRemainingQuantity(s1.getOrderRemainingQuantity().subtract(entity.getInventoryQuantity()));
-				//此次入库数量-剩余数量=超发数量
-				s1.setExcessQuantity(entity.getInventoryQuantity().subtract(s1.getOrderRemainingQuantity()));
-				syShippingDetailsItemMapper.updateById(s1);
-				entity.setTotalPrice(entity.getActualDeclaredQuantity().multiply(entity.getPrice()));//实际报关数量*单价
-				if((entity.getInventoryCcode().indexOf("03")!=-1&&!entity.getInventoryCcode().equals("0399")) ||
-						(entity.getInventoryCcode().indexOf("02")!=-1&&!entity.getInventoryCcode().equals("0299"))||
-						(entity.getInventoryCcode().indexOf("04")!=-1&&!entity.getInventoryCcode().equals("0499"))){
-					if(entity!=null&&entity.getMasterMetering().equals("KG")){//当单位为KG时
-						entity.setTotalPrice(entity.getNetWeight().multiply(entity.getPrice()));//净重*单价
-					}
-					else if(entity!=null&&entity.getMasterMetering().equals("M")){
-						entity.setTotalPrice(entity.getMeter().multiply(entity.getPrice()));//米数*单价
-					}
-				}*/
 				entity.setId(null);
 				syPackingListFabricItemMapper.insert(entity);
-				updateQuantity(entity.getActualDeclaredQuantity(),entity.getSyShippingDetailsItemId());
+				if(entity.getMasterMetering()==null){
+					throw new JeecgBootException("没有单位无法保存");
+				}
+				if(entity.getMasterMetering().equals("KG")){
+					updateQuantity(entity.getNetWeight(),entity.getSyShippingDetailsItemId(),entity.getMasterMetering());
+				}else{
+					updateQuantity(entity.getActualDeclaredQuantity(),entity.getSyShippingDetailsItemId(),entity.getMasterMetering());
+				}
 			}else{
-				QueryWrapper queryWrapper=new QueryWrapper();
-				queryWrapper.eq("id", entity.getId());//子表id
-				queryWrapper.select("actual_Declared_Quantity as actualDeclaredQuantity");//获取实际报关数量合计
-				BigDecimal actualDeclaredQuantity=syPackingListFabricItemMapper.selectOne(queryWrapper).getActualDeclaredQuantity();
-				actualDeclaredQuantity=actualDeclaredQuantity.subtract(entity.getActualDeclaredQuantity());
-				syPackingListFabricItemMapper.updateById(entity);
-				updateQuantity(actualDeclaredQuantity.negate(),entity.getSyShippingDetailsItemId());
+				if(entity.getMasterMetering().equals("KG")){//根据净重
+					QueryWrapper queryWrapper=new QueryWrapper();
+					queryWrapper.eq("id", entity.getId());//子表id
+					queryWrapper.select("net_Weight as netWeight");//获取实际报关数量合计
+					BigDecimal netWeight=syPackingListFabricItemMapper.selectOne(queryWrapper).getNetWeight();
+					netWeight=netWeight.subtract(entity.getNetWeight());
+					syPackingListFabricItemMapper.updateById(entity);
+					updateQuantity(netWeight.negate(),entity.getSyShippingDetailsItemId(),entity.getMasterMetering());
+				}else{//根据实际报关数量
+					QueryWrapper queryWrapper=new QueryWrapper();
+					queryWrapper.eq("id", entity.getId());//子表id
+					queryWrapper.select("actual_Declared_Quantity as actualDeclaredQuantity");//获取实际报关数量合计
+					BigDecimal actualDeclaredQuantity=syPackingListFabricItemMapper.selectOne(queryWrapper).getActualDeclaredQuantity();
+					actualDeclaredQuantity=actualDeclaredQuantity.subtract(entity.getActualDeclaredQuantity());
+					syPackingListFabricItemMapper.updateById(entity);
+					updateQuantity(actualDeclaredQuantity.negate(),entity.getSyShippingDetailsItemId(),entity.getMasterMetering());
+				}
+
 			}
 		}
 		return syPackingListFabric;
@@ -310,7 +317,11 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 		queryWrapper.eq("sy_packing_list_fabric_id",id);
 		List<SyPackingListFabricItem> syPackingListFabricItems=syPackingListFabricItemMapper.selectList(queryWrapper);
 		for(SyPackingListFabricItem item : syPackingListFabricItems){
-			updateQuantity(item.getActualDeclaredQuantity().negate(),item.getSyShippingDetailsItemId());
+			if(item.getNetWeight().equals("KG")){
+				updateQuantity(item.getNetWeight().negate(),item.getSyShippingDetailsItemId(),item.getMasterMetering());
+			}else{
+				updateQuantity(item.getActualDeclaredQuantity().negate(),item.getSyShippingDetailsItemId(),item.getMasterMetering());
+			}
 		}
 		syPackingListFabricItemMapper.deleteByMainId(id);
 		syPackingListFabricMapper.deleteByMainId(id);
@@ -328,7 +339,11 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 			queryWrapper.eq("sy_packing_list_fabric_id",id);
 			List<SyPackingListFabricItem> syPackingListFabricItems=syPackingListFabricItemMapper.selectList(queryWrapper);
 			for(SyPackingListFabricItem item : syPackingListFabricItems){
-				updateQuantity(item.getActualDeclaredQuantity().negate(),item.getSyShippingDetailsItemId());
+				if(item.getNetWeight().equals("KG")){
+					updateQuantity(item.getNetWeight().negate(),item.getSyShippingDetailsItemId(),item.getMasterMetering());
+				}else{
+					updateQuantity(item.getActualDeclaredQuantity().negate(),item.getSyShippingDetailsItemId(),item.getMasterMetering());
+				}
 			}
 			syPackingListFabricItemMapper.deleteByMainId(id.toString());
 			syPackingListFabricMapper.deleteByMainId(id.toString());
@@ -605,12 +620,17 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 					}
 					s1.setSpecificationAndModel(item.getSpecificationAndModel());//规格型号
 
-					if(s1.getActualDeclaredQuantity()!=null){
+					if(s1.getActualDeclaredQuantity()==null){
 						//s1.setExcessQuantity(s1.getActualDeclaredQuantity().subtract(item.getOrderRemainingQuantity()));//超发数量
 						//s1.setRemainingQuantity(item.getOrderRemainingQuantity().subtract(s1.getActualDeclaredQuantity()));//剩余数量
 						/*item.setExcessQuantity(s1.getActualDeclaredQuantity().subtract(item.getOrderRemainingQuantity()));
 						item.setOrderRemainingQuantity(item.getOrderRemainingQuantity().subtract(s1.getActualDeclaredQuantity()));*/
-						updateQuantity(s1.getActualDeclaredQuantity(),s1.getSyShippingDetailsItemId());
+						throw new JeecgBootException("实际报关数量不能为null");
+					}
+					if(s1.getMasterMetering().equals("KG")){
+						updateQuantity(s1.getNetWeight(),s1.getSyShippingDetailsItemId(),s1.getMasterMetering());
+					}else{
+						updateQuantity(s1.getActualDeclaredQuantity(),s1.getSyShippingDetailsItemId(),s1.getMasterMetering());
 					}
 					item.setIsReference(2);
 					syShippingDetailsItemMapper.updateById(item);
@@ -669,7 +689,9 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 					item.setSyOrderDataItemId(syShippingDetailsItem.getSyOrderDataItemId());//销售订单主表id
 					item.setSyOrderDataId(syShippingDetailsItem.getSyOrderDataId());//销售订单子表id
 					item.setGroupId(oConvertUtils.getId());
-					item.setMasterMetering(getMasterMetering(item.getSyOrderDataItemId()));
+					SyOrderDataItem dataItem=syOrderDataItemMapper.selectById(syShippingDetailsItem.getSyOrderDataItemId());
+					item.setMasterMetering(dataItem.getMasterMetering());//计量单位
+					//item.setMasterMetering(getMasterMetering(item.getSyOrderDataItemId()));
 					item.setPurOrSubOrder(syShippingDetailsItem.getPurOrSubOrder());//委外采购订单
 					item.setManualYarnUnitPrice(syShippingDetailsItem.getManualYarnUnitPrice());//手册纱单价
 					item.setManualYarnFlag(syShippingDetailsItem.getManualYarnFlag());//手册纱单价
@@ -722,7 +744,11 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 						syShippingDetailsItem.setOrderRemainingQuantity(syShippingDetailsItem.getOrderRemainingQuantity().subtract(item.getActualDeclaredQuantity()));*/
 						syShippingDetailsItem.setIsReference(2);//回写
 						syShippingDetailsItemMapper.updateById(syShippingDetailsItem);
-						updateQuantity(item.getActualDeclaredQuantity(),item.getSyShippingDetailsItemId());
+					}
+					if(item.getMasterMetering().equals("KG")){
+						updateQuantity(item.getNetWeight(),item.getSyShippingDetailsItemId(),item.getMasterMetering());
+					}else{
+						updateQuantity(item.getActualDeclaredQuantity(),item.getSyShippingDetailsItemId(),item.getMasterMetering());
 					}
 					syPackingListFabricItemMapper.insert(item);
 				}
@@ -758,12 +784,20 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 				SyShippingDetailsItem syShippingDetailsItem=syShippingDetailsItemMapper.selectById(item.getSyShippingDetailsItemId());//获取物料分类和其他数据
 				//物料分类
 				if(syShippingDetailsItem!=null){//不为null
-					item.setInventoryCcode(syShippingDetailsItem.getInventoryCcode());//物料分类
-					item.setPrice(syShippingDetailsItem.getSalesUnitPrice());//价格
-					if(syShippingDetailsItem.getMasterMetering()!=null){
-						item.setMasterMetering(syShippingDetailsItem.getMasterMetering());//单位
+					SyOrderDataItem dataItem=syOrderDataItemMapper.selectById(syShippingDetailsItem.getSyOrderDataItemId());
+					if(dataItem.getMasterMetering().equals("KG")){
+						total3=total3.add(item.getNetWeight());
+					}else{
+						total3=total3.add(item.getActualDeclaredQuantity());
 					}
-					if((item.getInventoryCcode().indexOf("03")!=-1&&!item.getInventoryCcode().equals("0399")) ||
+					//item.setInventoryCcode(syShippingDetailsItem.getInventoryCcode());//物料分类
+					//item.setPrice(syShippingDetailsItem.getSalesUnitPrice());//价格
+					/*if(syShippingDetailsItem.getMasterMetering()!=null){
+						item.setMasterMetering(syShippingDetailsItem.getMasterMetering());//单位
+					}*/
+
+
+					/*if((item.getInventoryCcode().indexOf("03")!=-1&&!item.getInventoryCcode().equals("0399")) ||
 							(item.getInventoryCcode().indexOf("02")!=-1&&!item.getInventoryCcode().equals("0299"))||
 							(item.getInventoryCcode().indexOf("04")!=-1&&!item.getInventoryCcode().equals("0499"))){//面料计算米数
 						if(item.getMeter()==null){
@@ -772,8 +806,10 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 						}else{
 							item.setActualDeclaredQuantity(item.getMeter());
 						}
-					}
-					if(item.getMasterMetering().equals("KG")){//计算总价
+					}else{//辅料
+
+					}*/
+					/*if(item.getMasterMetering().equals("KG")){//计算总价
 						if(item.getNetWeight()!=null){
 							item.setTotalPrice(item.getNetWeight().multiply(item.getPrice()));//净重*单价
 						}else{
@@ -785,10 +821,9 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 						}else{
 							//throw new JeecgBootException("单位不为kg的物料请填写实际报关数量,用于计算金额");
 						}
-					}
+					}*/
 				}
 				//单位换算
-				total3=total3.add(item.getActualDeclaredQuantity());
 				name=item.getPlanLotNumber()+"-"+item.getDeclarationName();
 				ids+=item.getSyShippingDetailsItemId()+",";//获取出运明细子表id
 			}
@@ -807,16 +842,17 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 				queryWrapper=new QueryWrapper();
 				queryWrapper.in("sy_Shipping_Details_Item_Id", Arrays.asList(ids.split(",")));
 				queryWrapper.eq("del_flag","0");
-				queryWrapper.select("sum(actual_Declared_Quantity) as actual_Declared_Quantity");
+				queryWrapper.select("sum(actual_Declared_Quantity) as actual_Declared_Quantity,sum(net_Weight) as net_Weight,master_Metering");
 				SyPackingListFabricItem syPackingListFabricItem=syPackingListFabricItemMapper.selectOne(queryWrapper);
 				if(syPackingListFabricItem!=null){
-					total2=syPackingListFabricItem.getActualDeclaredQuantity();
+					if(syPackingListFabricItem.getMasterMetering().equals("KG")){
+						total2=syPackingListFabricItem.getNetWeight();
+					}else{
+						total2=syPackingListFabricItem.getActualDeclaredQuantity();
+					}
 				}
 			}
-			total1.setScale(2,BigDecimal.ROUND_HALF_UP);
-			total2.setScale(2,BigDecimal.ROUND_HALF_UP);
-			total3.setScale(2,BigDecimal.ROUND_HALF_UP);
-			strs+=name+"的原单据数量"+total1+",已参照数量"+total2+",本次数量"+total3+";";
+			strs+=name+"的原单据数量"+total1.setScale(2,BigDecimal.ROUND_HALF_UP)+",已参照数量"+total2.setScale(2,BigDecimal.ROUND_HALF_UP)+",本次数量"+total3.setScale(2,BigDecimal.ROUND_HALF_UP)+";";
 			num++;
 		}
 		return strs;
@@ -1118,29 +1154,38 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 					}
 				}
 
+				if(item.getMasterMetering().equals("KG")){//获取净重
+					mapItem.put("IQUANTITY",item.getNetWeight());//数量
+					mapItem3.put("IQUANTITY",item.getNetWeight());//数量
+					mapItem4.put("IQUANTITY",item.getNetWeight());//数量
+					mapItem5.put("IQUANTITY",item.getNetWeight());//数量
+					mapItem6.put("IQUANTITY",item.getNetWeight());//数量
+				}else{//获取实际报关数量
+					mapItem.put("IQUANTITY",item.getActualDeclaredQuantity());//数量
+					mapItem3.put("IQUANTITY",item.getActualDeclaredQuantity());//数量
+					mapItem4.put("IQUANTITY",item.getActualDeclaredQuantity());//数量
+					mapItem5.put("IQUANTITY",item.getActualDeclaredQuantity());//数量
+					mapItem6.put("IQUANTITY",item.getActualDeclaredQuantity());//数量
+				}
+
 
 
 				mapItem.put("CINVCODE",item.getInventoryCode());//存货编码
-				mapItem.put("IQUANTITY",item.getActualDeclaredQuantity());//数量
 				//mapItem.put("INUM",orderDataItem.get("inum"));//明细ID(采购订单行ID/委外订单行ID)
 
 				//mapItem.put("cBatch","x");//批号
 
 
 				mapItem3.put("CINVCODE",item.getInventoryCode());//存货编码
-				mapItem3.put("IQUANTITY",item.getActualDeclaredQuantity());//数量
 
 				mapItem4.put("CINVCODE",item.getInventoryCode());//存货编码
-				mapItem4.put("IQUANTITY",item.getActualDeclaredQuantity());//数量
 				mapItem4.put("size",item.getSize());//根据尺码判断
 				mapItem4.put("SOAUTOIDCOL","IDLSID");//订单明细ID对应字段名(关联单据类型为发货单IDLSID)
 				//mapItem4.put("AUTOID_SO","10300001");//关联明细ID 测试用先写
 
 				mapItem5.put("CINVCODE",item.getInventoryCode());//存货编码
-				mapItem5.put("IQUANTITY",item.getActualDeclaredQuantity());//数量
 
 				mapItem6.put("CINVCODE",item.getInventoryCode());//存货编码
-				mapItem6.put("IQUANTITY",item.getActualDeclaredQuantity());//数量
 				mapItem6.put("size",item.getSize());//根据尺码判断
 
 
@@ -1742,7 +1787,7 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 							}
 
 							if(sy1.getMasterMetering().equals("KG")){//计算总价
-								if(sy1.getNetWeight()==null){
+								if(sy1.getNetWeight()!=null){
 									sy1.setTotalPrice(sy1.getNetWeight().multiply(sy1.getPrice()));//净重*单价
 								}
 							}else{
@@ -1751,8 +1796,14 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 								}
 							}
 
-							if(sy1.getActualDeclaredQuantity()!=null){
-								updateQuantity(sy1.getActualDeclaredQuantity(),sy1.getSyShippingDetailsItemId());
+							/*if(sy1.getActualDeclaredQuantity()!=null){
+								updateQuantity(sy1.getActualDeclaredQuantity(),sy1.getSyShippingDetailsItemId(),sy1.getMasterMetering());
+							}*/
+
+							if(sy1.getMasterMetering().equals("KG")&&sy1.getNetWeight()!=null){
+								updateQuantity(sy1.getNetWeight(),sy1.getSyShippingDetailsItemId(),sy1.getMasterMetering());
+							}else if(sy1.getActualDeclaredQuantity()!=null){
+								updateQuantity(sy1.getActualDeclaredQuantity(),sy1.getSyShippingDetailsItemId(),sy1.getMasterMetering());
 							}
 
 							items.add(sy1);