Browse Source

计算超发和

huxy 2 years ago
parent
commit
9f78d41b72

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

@@ -217,9 +217,9 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
         }
         if(oConvertUtils.isNotEmpty(status)){//选择正常或者超发状态
             if(status.equals("n")){
-                queryWrapper.ge("t.excess_quantity",0);//大于等于--超发
+                queryWrapper.le("t.packSurplus",0);//小于等于--超发
             }else{
-                queryWrapper.le("t.excess_quantity",-1);//小于等于--正常
+                queryWrapper.ge("t.packSurplus",1);//大于等于--正常
             }
         }
 		 /* if(oConvertUtils.isNotEmpty(customer)){
@@ -1520,7 +1520,7 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
             mains.add(main);
             //break;
         }
-        syPreAssembledPackingListService.add(mains);
+        syPreAssembledPackingListService.excelAdd(mains);
     }
 
 
@@ -1643,7 +1643,7 @@ public class SyPreAssembledPackingListController extends JeecgController<SyPreAs
             main.setSyPreAssembledPackingListItemList(items);//获取集合
             mains.add(main);
         }
-        return syPreAssembledPackingListService.test(mains);
+        return syPreAssembledPackingListService.excelTest(mains);
     }
 
     @AutoLog(value = "获取excel导入的数据")

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

@@ -207,6 +207,7 @@
         a.english_product_name AS englishProductName,
         b.garment_factory AS garmentFactory,
         b.group_id as group_id,
+        pack_Surplus as packSurplus,
         excess_quantity
         FROM sy_shipping_details a
         LEFT JOIN sy_shipping_details_item b

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

@@ -106,9 +106,9 @@ public interface ISyPreAssembledPackingListService extends IService<SyPreAssembl
 	 */
 	public SyLetterDepositItem typeConversion(SyPreAssembledPackingListItem syPreAssembledPackingListItem);
 
-	public boolean add(List<SyPreAssembledPackingList> items);
+	public boolean excelAdd(List<SyPreAssembledPackingList> items);
 
-	public String test(List<SyPreAssembledPackingList> items);
+	public String excelTest(List<SyPreAssembledPackingList> items);
 
 	public String[] getExcelId();
 }

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

@@ -73,7 +73,7 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 				SyPreAssembledPackingListItem item1=item;
 				BigDecimal boxNumber=boxNumber1.multiply(new BigDecimal(size.getProportion()));//获取该尺码件数
 				item1.setTotal(boxNumber);//该尺码件数
-				item1.setRemainingQuantity(boxNumber);//该尺码的剩余数量
+				//item1.setRemainingQuantity(boxNumber);//该尺码的剩余数量
 				item1.setSize(size.getSize());//获取尺码
 				item1.setActualPackingQty(size.getQuantity());//获取该尺码计划装箱数量
 
@@ -109,11 +109,12 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 				item1.setMasterMetering(syItem.getMasterMetering());
 				syPreAssembledPackingListItemMapper.insert(item1);//添加子表数据
 				//原剩余数量-预装箱单装箱数量=新剩余数量
-				syItem.setSurplusQuantity(syItem.getSurplusQuantity().subtract(item1.getTotal()));
+				//syItem.setSurplusQuantity(syItem.getSurplusQuantity().subtract(item1.getTotal()));
 				//超发数量
-				syItem.setExcessQuantity(syItem.getSurplusQuantity().subtract(item1.getTotal()).negate());
+				//syItem.setExcessQuantity(syItem.getSurplusQuantity().subtract(item1.getTotal()).negate());
 				//syItem.setIsReference(1);//标识已被参照
-				syShippingDetailsItemMapper.updateById(syItem);//修改发运明细
+				//syShippingDetailsItemMapper.updateById(syItem);//修改发运明细
+				updateQuantity(item1.getTotal(),item1.getSyDeclarationElementsItemId());
 			}
 		}
 		return box;
@@ -137,7 +138,7 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 				BigDecimal boxNumber=boxNumber1.multiply(new BigDecimal(size.getProportion()));//获取该尺码件数
 				item1.setTotal(boxNumber);//该尺码件数
 
-				item1.setRemainingQuantity(boxNumber);//该尺码的剩余数量
+				//item1.setRemainingQuantity(boxNumber);//该尺码的剩余数量
 				item1.setTotalPrice(boxNumber.multiply(item1.getUnitPrice()));//获取总价		箱数*单价-->件数*单价
 				//item1.setBoxNumber(boxNumber);//获取箱数
 				//boxNumber=boxNumber.divide(item.getPiecesBox(),6,BigDecimal.ROUND_HALF_UP);
@@ -175,8 +176,15 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 					item1.setSyPreAssembledPackingListId(pid);
 					item1.setId(oConvertUtils.id());//获取到随机id
 					syPreAssembledPackingListItemMapper.insert(item1);
+					updateQuantity(item1.getTotal(),item1.getSyDeclarationElementsItemId());
 				}else{
+					QueryWrapper queryWrapper=new QueryWrapper();
+					queryWrapper.eq("id", item1.getId());//子表id
+					queryWrapper.select("total as total");//获取实际报关数量合计
+					BigDecimal total=syPreAssembledPackingListItemMapper.selectOne(queryWrapper).getTotal();
+					total=total.subtract(item.getTotal());
 					syPreAssembledPackingListItemMapper.updateById(item1);//如果没修改成功就是新增数据
+					updateQuantity(total.negate(),item1.getSyDeclarationElementsItemId());
 				}
 				//这个构造器用来获取预装箱单里所有参照了改发运明细数量的合计
 				/*QueryWrapper<SyPreAssembledPackingListItem> queryWrapperCount =new QueryWrapper<>();
@@ -251,10 +259,10 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 		if(!syPreAssembledPackingListMapper.selectById(syPreAssembledPackingList.getId()).getStatus().equals("0")){
 			throw new JeecgBootException("单据已提交不能修改!");
 		}
-		List<SyPreAssembledPackingListItem> items=syPreAssembledPackingList.getSyPreAssembledPackingListItemList();
+		//List<SyPreAssembledPackingListItem> items=syPreAssembledPackingList.getSyPreAssembledPackingListItemList();
 		syPreAssembledPackingListMapper.updateById(syPreAssembledPackingList);//修改主表数据
-		List<SyPreAssembledPackingListItem> items2=syPreAssembledPackingListItemMapper.selectAll(syPreAssembledPackingList.getId());
-		for(SyPreAssembledPackingListItem item : items2){//要根据这个去改变对应发运明细的剩余数量
+	//	List<SyPreAssembledPackingListItem> items2=syPreAssembledPackingListItemMapper.selectAll(syPreAssembledPackingList.getId());
+		/*for(SyPreAssembledPackingListItem item : items2){//要根据这个去改变对应发运明细的剩余数量
 			if(item.getSyDeclarationElementsItemId()==null){
 				continue;
 			}
@@ -265,14 +273,14 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 			BigDecimal total=syPreAssembledPackingListItemMapper.selectOne(queryWrapperCount).getTotal();
 			//获取发育明细数据
 			SyShippingDetailsItem syItem=syShippingDetailsItemMapper.selectById(item.getSyDeclarationElementsItemId());
-			if(syItem!=null){
+			*//*if(syItem!=null){
 				//发货-预装箱单数量=剩余数量
 				syItem.setSurplusQuantity(syItem.getSurplusQuantity().subtract(total));
 				//预装箱单数量-发货=超发数量
 				syItem.setExcessQuantity(total.subtract(syItem.getSurplusQuantity()));
 				syShippingDetailsItemMapper.updateById(syItem);//修改数据
-			}
-		}
+			}*//*
+		}*/
 		syPreAssembledPackingListItemMapper.deleteByMainId(syPreAssembledPackingList.getId());//将子表的删除状态都变成1
 		if(syPreAssembledPackingList.getSyPreAssembledPackingListItemList()!=null){
 			BigDecimal box= update(syPreAssembledPackingList.getSyPreAssembledPackingListItemList(),syPreAssembledPackingList.getId());
@@ -286,6 +294,10 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 	@Override
 	@Transactional
 	public Integer delMain(String id) {
+		List<SyPreAssembledPackingListItem> items2=syPreAssembledPackingListItemMapper.selectAll(id);
+		for (SyPreAssembledPackingListItem item : items2){
+			updateQuantity(item.getTotal().negate(),item.getSyDeclarationElementsItemId());
+		}
 		QueryWrapper<SyPreAssembledPackingListItem> queryWrapperCount =new QueryWrapper<>();
 		queryWrapperCount.select("id");
 		queryWrapperCount.ne("del_Flag","0");
@@ -296,7 +308,7 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 		//根据主表id获取所有的子表信息
 		//问题:这样会查询到上次就已经删除的数据,数据会乱
 		//思路:让上次被删除的数据避免被重用
-		List<SyPreAssembledPackingListItem> items2=syPreAssembledPackingListItemMapper.selectAll(id);
+
 		/*for(SyPreAssembledPackingListItem item : items2){//要根据这个去改变对应发运明细的剩余数量
 			if(objs.indexOf(item.getId())!=-1){//如果这条数据已经被删除的数据就执行下条数据
 				continue;
@@ -519,7 +531,7 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 
 	@Override
 	@Transactional
-	public boolean add(List<SyPreAssembledPackingList> items1) {
+	public boolean excelAdd(List<SyPreAssembledPackingList> items1) {
 		boolean bool=false;
 		try{
 
@@ -562,7 +574,7 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 						item1.setTotal(boxNumber);//该尺码件数
 						syPreAssembledPackingList.setTotal(syPreAssembledPackingList.getTotal().add(boxNumber));
 						item1.setActualPackingQty(size.getQuantity());//获取该尺码计划装箱数量
-						item1.setRemainingQuantity(boxNumber);//剩余数量
+						//item1.setRemainingQuantity(boxNumber);//剩余数量
 						item1.setSyDeclarationElementsItemId(size.getItemId());//获取到发运明细子表id
 						item1.setSort(size.getNum());//获取序号
 						item1.setId(oConvertUtils.id());//获取到随机id
@@ -597,11 +609,12 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 							syPreAssembledPackingList.setItemNumber(syItem.getItemNumber());
 							syPreAssembledPackingList.setSpurOrSubOrder(syItem.getPurOrSubOrder());
 							//原剩余数量-预装箱单装箱数量=新剩余数量
-							syItem.setSurplusQuantity(syItem.getSurplusQuantity().subtract(item1.getTotal()));
+							/*syItem.setSurplusQuantity(syItem.getSurplusQuantity().subtract(item1.getTotal()));
 							//超发数量
 							syItem.setExcessQuantity(item1.getTotal().subtract(syItem.getSurplusQuantity()));
 							//syItem.setIsReference(1);//标识已被参照
-							syShippingDetailsItemMapper.updateById(syItem);//修改发运明细
+							syShippingDetailsItemMapper.updateById(syItem);//修改发运明细*/
+							updateQuantity(item1.getTotal(),item1.getSyDeclarationElementsItemId());
 						}
 						syPreAssembledPackingList.setTotalPrice(syPreAssembledPackingList.getTotalPrice().add(item1.getTotalPrice()));//获取总价
 						if(size.getProportion()==0){
@@ -627,7 +640,7 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 	}
 
 	@Override
-	public String test(List<SyPreAssembledPackingList> mains) {
+	public String excelTest(List<SyPreAssembledPackingList> mains) {
 		String strs="";
 		int num=1;
 		for(SyPreAssembledPackingList main : mains){
@@ -694,4 +707,45 @@ public class SyPreAssembledPackingListServiceImpl extends ServiceImpl<SyPreAssem
 		}
 		return ids;
 	}
+
+
+	/**
+	 * 增删改都会调用的方法,用来计算剩余数量和超发数量
+	 * @param quantity 本次数量
+	 * @param syShippingDetailsItemId 出运明细id
+	 * @return
+	 */
+	@Transactional
+	public void  updateQuantity(BigDecimal quantity,String syShippingDetailsItemId){
+		QueryWrapper queryWrapper=new QueryWrapper();
+		queryWrapper.eq("sy_declaration_elements_item_id", syShippingDetailsItemId);//出运明细id
+		queryWrapper.eq("del_flag", "0");//未删除
+		queryWrapper.select("sum(total) as total");//获取现有数量合计
+		BigDecimal total=new BigDecimal("0");
+		if(syPreAssembledPackingListItemMapper.selectOne(queryWrapper)!=null){
+			total=syPreAssembledPackingListItemMapper.selectOne(queryWrapper).getTotal();
+		}
+		System.out.println("本次数量\t"+quantity);
+		System.out.println("总数\t"+total);
+		total=total.add(quantity);
+		System.out.println("总数减后\t"+total);
+		SyShippingDetailsItem item=syShippingDetailsItemMapper.selectById(syShippingDetailsItemId);
+		BigDecimal packSurplus=item.getShipmentQuantity();//获取出运明细发货数量
+
+		BigDecimal remainingQuantity=packSurplus.subtract(total);//重新计算剩余数量
+		BigDecimal excessQuantity=new BigDecimal("0");//超发数量默认为0
+
+		if(total.doubleValue()>packSurplus.doubleValue()){//参照数量大于剩余数量就进行计算
+			excessQuantity=total.subtract(packSurplus);//
+		}
+		item.setPackSurplus(remainingQuantity);//出运明细剩余数量
+		item.setExcessQuantity(excessQuantity);//出运明细超发数量
+		syShippingDetailsItemMapper.updateById(item);
+
+		/*UpdateWrapper updateWrapper=new UpdateWrapper();
+		updateWrapper.set("remaining_Quantity",remainingQuantity);
+		updateWrapper.set("excess_Quantity",excessQuantity);
+		updateWrapper.eq("sy_declaration_elements_item_id",syShippingDetailsItemId);
+		return syPreAssembledPackingListItemMapper.update(null,updateWrapper);*/
+	}
 }

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/splfi/controller/SyPackingListFabricController.java

@@ -197,9 +197,9 @@ public class SyPackingListFabricController {
 		 }
 		 if(oConvertUtils.isNotEmpty(status)){//选择正常或者超发状态
 			 if(status.equals("n")){
-				 queryWrapper.ge("t.excess_quantity",0);//大于等于--超发
+				 queryWrapper.le("t.packSurplus",0);//小于等于--超发
 			 }else{
-				 queryWrapper.le("t.excess_quantity",-1);//小于等于--正常
+				 queryWrapper.gt("t.packSurplus",0);//大于等于--正常
 			 }
 		 }
 		 Page<SyShippingDetailsVo> page = new Page<SyShippingDetailsVo>(pageNo, pageSize);

+ 1 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/splfi/mapper/xml/SyPackingListFabricMapper.xml

@@ -59,6 +59,7 @@
         b.account AS account,
         a.english_product_name AS englishProductName,
         b.garment_factory AS garmentFactory,
+        pack_Surplus as packSurplus,
         excess_quantity
         FROM sy_shipping_details a
         LEFT JOIN sy_shipping_details_item b

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

@@ -152,7 +152,7 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 					entity.setActualDeclaredQuantity(entity.getMeter());//修改报关数量
 				}
 			}
-			if(entity.getMasterMetering().equals("KG")){//计算总价
+			if(entity.getMasterMetering()!=null&&entity.getMasterMetering().equals("KG")){//计算总价
 				if(entity.getNetWeight()!=null){
 					entity.setTotalPrice(entity.getNetWeight().multiply(entity.getPrice()));//净重*单价
 				}
@@ -177,7 +177,7 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 	 * @return
 	 */
 	@Transactional
-	public int  updateQuantity(BigDecimal quantity,String syShippingDetailsItemId){
+	public void  updateQuantity(BigDecimal quantity,String syShippingDetailsItemId){
 		QueryWrapper queryWrapper=new QueryWrapper();
 		queryWrapper.eq("sy_shipping_details_item_id", syShippingDetailsItemId);//出运明细id
 		queryWrapper.eq("del_flag", "0");//未删除
@@ -186,33 +186,30 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 		if(syPackingListFabricItemMapper.selectOne(queryWrapper)!=null){
 			actualDeclaredQuantity=syPackingListFabricItemMapper.selectOne(queryWrapper).getActualDeclaredQuantity();
 		}
-		actualDeclaredQuantity.add(quantity);
+		System.out.println("本次数量\t"+quantity);
+		System.out.println("总数\t"+actualDeclaredQuantity);
+		actualDeclaredQuantity=actualDeclaredQuantity.add(quantity);
+		System.out.println("总数减后\t"+actualDeclaredQuantity);
+		SyShippingDetailsItem item=syShippingDetailsItemMapper.selectById(syShippingDetailsItemId);
 
-		QueryWrapper queryWrapper2=new QueryWrapper();
-		queryWrapper2.eq("id", syShippingDetailsItemId);//出运明细id
-		queryWrapper2.eq("del_flag", "0");//未删除
-		queryWrapper2.select("sum(shipment_Quantity) as shipment_Quantity");//获取发货数量
-		BigDecimal shipmentQuantity=syShippingDetailsItemMapper.selectOne(queryWrapper2).getShipmentQuantity();
+		BigDecimal shipmentQuantity=item.getShipmentQuantity();//获取发货数量
 
 		BigDecimal remainingQuantity=shipmentQuantity.subtract(actualDeclaredQuantity);//剩余数量
-		BigDecimal excessQuantity=null;//超发数量
+		BigDecimal excessQuantity=new BigDecimal("0");//超发数量
+
 		if(actualDeclaredQuantity.doubleValue()>shipmentQuantity.doubleValue()){
-			excessQuantity=actualDeclaredQuantity.subtract(shipmentQuantity);
-			if(excessQuantity.doubleValue()<=0){
-				excessQuantity=null;//转为null
-			}
+			excessQuantity=actualDeclaredQuantity.subtract(shipmentQuantity);//
 		}
 
-		SyShippingDetailsItem item=syShippingDetailsItemMapper.selectById(syShippingDetailsItemId);
-		item.setOrderRemainingQuantity(remainingQuantity);//出运明细剩余数量
+		item.setPackSurplus(remainingQuantity);//出运明细剩余数量
 		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);
+		return syPackingListFabricItemMapper.update(null,updateWrapper);*/
 	}
 
 	/**
@@ -253,7 +250,7 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 					entity.setActualDeclaredQuantity(entity.getMeter());//修改报关数量
 				}
 			}
-			if(entity.getMasterMetering().equals("KG")){//计算总价
+			if(entity.getMasterMetering()!=null&&entity.getMasterMetering().equals("KG")){//计算总价
 				if(entity.getNetWeight()!=null){
 					entity.setTotalPrice(entity.getNetWeight().multiply(entity.getPrice()));//净重*单价
 				}
@@ -265,7 +262,6 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 
 			entity.setInventoryQuantity(entity.getActualDeclaredQuantity());//入库数量=实际报关数量
 			if(entity.getIsAdd()>0){//大于1就是新增数据
-				updateQuantity(entity.getActualDeclaredQuantity(),entity.getSyShippingDetailsItemId());
 				//因为云工场得修改时得停止调用前面接口
 				/*SyShippingDetailsItem s1 =syShippingDetailsItemMapper.selectById(entity.getSyShippingDetailsItemId());
 				//剩余数量-这次入库数量=新剩余数量
@@ -286,14 +282,15 @@ public class SyPackingListFabricServiceImpl extends ServiceImpl<SyPackingListFab
 				}*/
 				entity.setId(null);
 				syPackingListFabricItemMapper.insert(entity);
+				updateQuantity(entity.getActualDeclaredQuantity(),entity.getSyShippingDetailsItemId());
 			}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());
-				updateQuantity(actualDeclaredQuantity.negate(),entity.getSyShippingDetailsItemId());
 				syPackingListFabricItemMapper.updateById(entity);
+				updateQuantity(actualDeclaredQuantity.negate(),entity.getSyShippingDetailsItemId());
 			}
 		}
 		return syPackingListFabric;