Parcourir la source

面料损耗更新

fenghaifu il y a 2 ans
Parent
commit
b6228bfb63

+ 2 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/report/entity/FabricLoss.java

@@ -32,6 +32,8 @@ public class FabricLoss {
     private  String makingPeople;
     //实际单件成本
     private  Double actualPrice;
+    // 实际总金额
+    private Double actualMoney;
     //单件成本
     private  Double price;
     //成衣合同号

+ 4 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/report/entity/FabricMoOrderCK.java

@@ -57,4 +57,8 @@ public class FabricMoOrderCK {
     private Integer MODetailsID;
     // 入库物料编号+颜色
     private  String cInvCodeColorIn;
+    @ApiModelProperty(value = "制造工艺")
+    private String  cVCName;
+    // 计划号,采购订单号或者委外订单号
+    private String cPlanCode;
 }

+ 3 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/report/entity/FabricPoOrderIn.java

@@ -57,4 +57,7 @@ public class FabricPoOrderIn {
 	//未结算数量
 	@ApiModelProperty(value = "未结算数量")
 	private Double iQuantityNSettle;
+
+	@ApiModelProperty(value = "制造工艺")
+	private String  cVCName;
 }

+ 2 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/report/entity/FabricPoOrderOut.java

@@ -43,4 +43,6 @@ public class FabricPoOrderOut {
 	String cWhCode;
 	@ApiModelProperty(value = "仓库名称")
 	String cWhName;
+	@ApiModelProperty(value = "供应商简称")
+	String cVenAbbName;
 }

+ 32 - 11
jeecg-boot-module-system/src/main/java/org/jeecg/modules/report/mapper/xml/FabricLossMapper.xml

@@ -92,10 +92,13 @@
 				isnull(isnull(stuff((SELECT ',' + x.cdefine9 FROM rdrecord08 x
 					inner join RdRecords08 y on x.id=y.id
 					where y.cInvCode + isnull( y.cFree1, '' ) + isnull( y.cBatch, '' )=
-					a.cInvCode + isnull( a.cFree1, '' ) + isnull( a.cBatch, '' ) FOR XML path('') ), 1, 1, ''),cBatch),'') as cPlanCode
+					a.cInvCode + isnull( a.cFree1, '' ) + isnull( a.cBatch, '' ) FOR XML path('') ), 1, 1, ''),cBatch),'') as cPlanCode,g.cVenAbbName
 			FROM
 				rdrecords11 a
 				INNER JOIN Inventory d ON a.cinvcode = d.cinvcode
+				INNER JOIN OM_MODetails e on a.iOMoDID=e.MODetailsID
+				inner join om_momain f on f.moid = e.moid
+				inner join vendor g on f.cVenCode=g.cVenCode
 			WHERE
 				(a.cbatch is null or a.cbatch='' or a.cbatch <> '期初') and
 				(d.cInvCCode LIKE '01%' or d.cInvCCode LIKE '02%' or d.cInvCCode LIKE '03%' or d.cInvCCode LIKE '04%') and
@@ -128,10 +131,13 @@
 					where y.cInvCode + isnull( y.cFree1, '' ) + isnull( y.cBatch, '' ) in (
 					select cInvCode+isnull(cColor,'')+isnull(cAVBatch,'') from VIEW_FabricLoss_AssemVouchs where
 					cInvCode2+isnull(cColor2,'')+isnull(cAVBatch2,'')=a.cInvCode + isnull( a.cFree1, '' ) + isnull( a.cBatch, '' )
-					) FOR XML path('') ), 1, 1, ''),cBatch),'') as cPlanCode
+					) FOR XML path('') ), 1, 1, ''),cBatch),'') as cPlanCode,g.cVenAbbName
 			FROM
 				rdrecords11 a
 				INNER JOIN Inventory d ON a.cinvcode = d.cinvcode
+				INNER JOIN OM_MODetails e on a.iOMoDID=e.MODetailsID
+				inner join om_momain f on f.moid = e.moid
+				inner join vendor g on f.cVenCode=g.cVenCode
 			WHERE
 				(a.cbatch is null or a.cbatch='' or a.cbatch <> '期初') and
 				(d.cInvCCode LIKE '01%' or d.cInvCCode LIKE '02%' or d.cInvCCode LIKE '03%' or d.cInvCCode LIKE '04%') and
@@ -169,10 +175,14 @@
 				d.cinvname <> '杂纱'  and a.iquantity>0
 		) union all (
 			SELECT
-				a.comcode as cCode,isnull(a.iSQuantity,a.iquantity) as iQuantity,isnull(a.iUnitCost,0) as iPrice,isnull(a.cBatch,'') as cBatch,d.cInvName,a.cInvCode,isnull(a.cFree1,'') as cColor,'杂纱' as cPlanCode
+				a.comcode as cCode,isnull(a.iSQuantity,a.iquantity) as iQuantity,isnull(a.iUnitCost,0) as iPrice,
+				isnull(a.cBatch,'') as cBatch,d.cInvName,a.cInvCode,isnull(a.cFree1,'') as cColor,'杂纱' as cPlanCode,g.cVenAbbName
 			FROM
 				rdrecords11 a
 				INNER JOIN Inventory d ON a.cinvcode = d.cinvcode
+				INNER JOIN OM_MODetails e on a.iOMoDID=e.MODetailsID
+				inner join om_momain f on f.moid = e.moid
+				inner join vendor g on f.cVenCode=g.cVenCode
 			WHERE
 				(a.cbatch is null or a.cbatch='' or a.cbatch <> '期初') and
 				(d.cInvCCode LIKE '01%' or d.cInvCCode LIKE '02%' or d.cInvCCode LIKE '03%' or d.cInvCCode LIKE '04%') and
@@ -197,10 +207,13 @@
 				u.cinvcode+isnull(u.cfree1,'')+isnull(u.cbatch,'') = a.cInvCode+isnull(a.cFree1,'')+isnull(a.cbatch,'')
 				FOR XML path('')
 				), 1, 1, ''),'')
-			end	as cPlanCode
+			end	as cPlanCode,g.cVenAbbName
 		FROM
 			rdrecords11 a
 			INNER JOIN Inventory d ON a.cinvcode = d.cinvcode
+			INNER JOIN OM_MODetails e on a.iOMoDID=e.MODetailsID
+			inner join om_momain f on f.moid = e.moid
+			inner join vendor g on f.cVenCode=g.cVenCode
 		WHERE
 			(d.cInvCCode LIKE '01%'
 			or d.cInvCCode LIKE '02%'
@@ -241,10 +254,13 @@
 
 				FOR XML path('')
 				), 1, 1, ''),'')
-			end	as cPlanCode
+			end	as cPlanCode,g.cVenAbbName
 		FROM
 			rdrecords11 a
 			INNER JOIN Inventory d ON a.cinvcode = d.cinvcode
+			INNER JOIN OM_MODetails e on a.iOMoDID=e.MODetailsID
+			inner join om_momain f on f.moid = e.moid
+			inner join vendor g on f.cVenCode=g.cVenCode
 		WHERE
 			(d.cInvCCode LIKE '01%'
 			or d.cInvCCode LIKE '02%'
@@ -677,7 +693,9 @@
 			case when f.cbustype='委外加工' then 0 else
 				isnull(isnull((select sum(iSum) from PurBillVouchs  x where x.RdsId =e.autoid),iSum ),0)
 			end as iPurchuseMoney,
-			e.iOMoDID as MODetailsID
+			e.iOMoDID as MODetailsID,
+			(select top 1 x.cCode from om_momain x inner join OM_MODetails y on x.moid = y.moid where e.iOMoDID =y.MODetailsID) as moCode,
+			(select top 1 x.cPOID from PO_Pomain x inner join PO_Podetails y on x.POID = y.POID where e.iPOsID =y.id) as poCode
 			from rdrecords01 e
 				inner join rdrecord01 f on e.id=f.id
 				inner join Vendor g on g.cVenCode=f.cVenCode
@@ -701,8 +719,8 @@
 		select f.cBusType,f.cCode,'' as cVenName,'' as cVenAbbName,
 			e.cInvCode,isnull(e.cFree1,'') as cColor,isnull(e.cBatch,'') as cBatch,
 			e.iQuantity,
-			isnull(e.iPrice,0) as iPurchuseMoney,
-			null as MODetailsID
+			isnull(case when f.cMaker='王行乔' then e.iPrice else e.iPrice*1.13 end,0) as iPurchuseMoney,
+			null as MODetailsID,'其他入库' as moCode,'其他入库' as poCode
 		from rdrecords08 e
 				inner join rdrecord08 f on e.id=f.id
 		where e.cinvcode+isnull(e.cfree1,'')+isnull(cbatch,'') in (
@@ -734,7 +752,9 @@
 		e.iOMoDID as MODetailsID,
 		(select top 1  x.cInvCode2+isnull(x.cColor2,'')+isnull(x.cAVBatch2,'') from
 				VIEW_FabricLoss_AssemVouchs x where
-				x.cInvCode+isnull(x.cColor,'')+isnull(x.cAVBatch,'')=e.cInvCode+isnull(e.cfree1,'')+isnull(e.cBatch,'')) as cInvIdOut
+				x.cInvCode+isnull(x.cColor,'')+isnull(x.cAVBatch,'')=e.cInvCode+isnull(e.cfree1,'')+isnull(e.cBatch,'')) as cInvIdOut,
+		(select top 1 x.cCode from om_momain x inner join OM_MODetails y on x.moid = y.moid where e.iOMoDID =y.MODetailsID) as moCode,
+			(select top 1 x.cPOID from PO_Pomain x inner join PO_Podetails y on x.POID = y.POID where e.iPOsID =y.id) as poCode
 	from rdrecords01 e
 		inner join rdrecord01 f on e.id=f.id
 		inner join Vendor g on g.cVenCode=f.cVenCode
@@ -773,11 +793,12 @@
 	select e.autoid,f.cBusType,f.cCode,'' as cVenName,'' as cVenAbbName,
 		e.cInvCode,isnull(e.cFree1,'') as cColor,isnull(e.cBatch,'') as cBatch,
 		e.iQuantity,
-		isnull(e.iPrice,0) as iPurchuseMoney,
+		isnull(case when f.cMaker='王行乔' then e.iPrice else e.iPrice*1.13 end,0) as iPurchuseMoney,
 		null as MODetailsID,
 		(select top 1  x.cInvCode2+isnull(x.cColor2,'')+isnull(x.cAVBatch2,'') from
 				VIEW_FabricLoss_AssemVouchs x where
-				x.cInvCode+isnull(x.cColor,'')+isnull(x.cAVBatch,'')=e.cInvCode+isnull(e.cfree1,'')+isnull(e.cBatch,'')) as cInvIdOut
+				x.cInvCode+isnull(x.cColor,'')+isnull(x.cAVBatch,'')=e.cInvCode+isnull(e.cfree1,'')+isnull(e.cBatch,'')) as cInvIdOut,
+				'其他入库' as moCode,'其他入库' as poCode
 	from rdrecords08 e
 		inner join rdrecord08 f on e.id=f.id
 	where

+ 165 - 58
jeecg-boot-module-system/src/main/java/org/jeecg/modules/report/service/impl/FabricLossServiceImpl.java

@@ -292,7 +292,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 				fabricPoOrderLyys.setIQuantityIn(bdVal.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());
 			}
 			*/
-			fabricPoOrderList.add(getPoOrderLyys(code));
+			fabricPoOrderList.addAll(getPoOrderLyys(code));
 			// 采购入库-其他入库的纱
 			/*
 			fabricPoOrderTempList = fabricLossMapper.getPurchaseListOtherInList(code);
@@ -308,7 +308,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 				BigDecimal bdVal = new BigDecimal(fabricPoOrderQtrk.getIQuantityIn());
 				fabricPoOrderQtrk.setIQuantityIn(bdVal.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());
 			}*/
-			fabricPoOrderList.add(getPoOrderQtrk(code));
+			fabricPoOrderList.addAll(getPoOrderQtrk(code));
 			ret.setFabricPoOrderList(fabricPoOrderList);
 			// 委外订单所有
 			List<FabricOMOrder> fabricOMOrderListAll = fabricLossMapper.getOmOrderListAll(code);
@@ -351,9 +351,9 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 				}
 
 				if ("02".equals(fabricOMOrder.getCComUnitCode())){  // 根
-					fabricOMOrder.setIQuantityPCS(fabricOMOrder.getIQuantity());
+					fabricOMOrder.setIQuantityPCS(fabricOMOrder.getIQuantityIn());
 				}else if ("04".equals(fabricOMOrder.getCComUnitCode())){    // 米
-					fabricOMOrder.setIQuantityM(fabricOMOrder.getIQuantity());
+					fabricOMOrder.setIQuantityM(fabricOMOrder.getIQuantityIn());
 				}
 				BigDecimal bDLoss = new BigDecimal(dLoss);
 				fabricOMOrder.setCQuantityLoss(bDLoss.setScale(2, BigDecimal.ROUND_HALF_UP).toString()+"%");
@@ -445,22 +445,15 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 			}
 			fabricCostInvoiceList = fabricCostInvoiceListOrder;
 			// 转入成本
-			Double d = getInCost(ret.getFabricPoOrderList(), fabricOMOrderListGn, fabricOMOrderListGw);
-			FabricCostInvoice fabricCostInvoice = new FabricCostInvoice();
-			fabricCostInvoice.setCVCName("转入成本");
-			fabricCostInvoice.setIMoney(d);
-			fabricCostInvoiceList.add(fabricCostInvoice);
-
+			fabricCostInvoiceList.addAll(getInCost(ret.getFabricPoOrderList(), fabricOMOrderListGn, fabricOMOrderListGw));
 			// 转出成本
-			d = getOutCost(ret.getFabricPoOrderList(), fabricOMOrderListGn, fabricOMOrderListGw);
-			fabricCostInvoice = new FabricCostInvoice();
-			fabricCostInvoice.setCVCName("转出成本");
-			fabricCostInvoice.setIMoney(d);
-			fabricCostInvoiceList.add(fabricCostInvoice);
+			fabricCostInvoiceList.addAll(getOutCost(ret.getFabricPoOrderList(), fabricOMOrderListGn, fabricOMOrderListGw));
+
 			ret.setFabricCostInvoiceList(fabricCostInvoiceList);
 			// 计算单件成本
 			Double costInTotal = fabricCostInvoiceList.stream().mapToDouble(FabricCostInvoice::getIMoney).sum();
-
+			BigDecimal dVal = new BigDecimal(costInTotal);
+			ret.setActualMoney(dVal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
 			BigDecimal bdPriceReal = new BigDecimal(0);
 			if (ret.getNumber()>0) {
 				bdPriceReal = new BigDecimal(costInTotal / ret.getNumber());
@@ -640,17 +633,17 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 	 * @param code
 	 * @return
 	 */
-	private FabricPoOrder getPoOrderQtrk(String code){
+	private List<FabricPoOrder> getPoOrderQtrk(String code){
 		// 采购入库-其他入库的纱
 		List<FabricPoOrderOut> fabricPoOrderTempList = fabricLossMapper.getPurchaseListOtherInList(code);
 		List<FabricPoOrderOut> fabricPoOrderOutListGroup = new ArrayList<>();   // 根据委外订单号和批号分组
-		FabricPoOrder fabricPoOrderQtrk = new FabricPoOrder();
-		fabricPoOrderQtrk.setCInvName("其他入库的纱");
-		fabricPoOrderQtrk.setIQuantityIn(0.0);
-		fabricPoOrderQtrk.setFabricPoOrderOutList(fabricPoOrderOutListGroup);
+//		FabricPoOrder fabricPoOrderQtrk = new FabricPoOrder();
+//		fabricPoOrderQtrk.setCInvName("其他入库的纱");
+//		fabricPoOrderQtrk.setIQuantityIn(0.0);
+//		fabricPoOrderQtrk.setFabricPoOrderOutList(fabricPoOrderOutListGroup);
 		if (fabricPoOrderTempList.size()>0){
 			for (FabricPoOrderOut item : fabricPoOrderTempList){
-				fabricPoOrderQtrk.setIQuantityIn(item.getIQuantity()+fabricPoOrderQtrk.getIQuantityIn());
+//				fabricPoOrderQtrk.setIQuantityIn(item.getIQuantity()+fabricPoOrderQtrk.getIQuantityIn());
 				String cCode = item.getCCode();
 				String cBatch = item.getCBatch();
 				Optional<FabricPoOrderOut> findItemOpt = fabricPoOrderOutListGroup.stream().filter(e->
@@ -670,8 +663,8 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 					item.setIMoney(item.getIPrice()*item.getIQuantity());
 				}
 			}
-			BigDecimal bdVal = new BigDecimal(fabricPoOrderQtrk.getIQuantityIn());
-			fabricPoOrderQtrk.setIQuantityIn(bdVal.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());
+//			BigDecimal bdVal = new BigDecimal(fabricPoOrderQtrk.getIQuantityIn());
+//			fabricPoOrderQtrk.setIQuantityIn(bdVal.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());
 		}
 		// 单价数量保留位数
 		for (FabricPoOrderOut item : fabricPoOrderOutListGroup){
@@ -680,7 +673,37 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 			bdVal = new BigDecimal(item.getIQuantity());
 			item.setIQuantity(bdVal.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());
 		}
-		return fabricPoOrderQtrk;
+
+		// 去掉批号分组
+		List<FabricPoOrder> fabricPoOrderList = new ArrayList<>();
+		for (FabricPoOrderOut item : fabricPoOrderOutListGroup){
+			String cInvCode = item.getCInvCode();
+			String cColor = item.getCColor();
+			Optional<FabricPoOrder> findOpt = fabricPoOrderList.stream().filter(e->e.getCInvCode().equals(cInvCode) &&
+					e.getCColor().equals(cColor)).findFirst();
+			if (!findOpt.isPresent()){
+				FabricPoOrder orderItem = new FabricPoOrder();
+				orderItem.setCInvName(item.getCInvName()+" "+item.getCColor());
+				orderItem.setCPOID("其他入库");
+				orderItem.setCColor(cColor);
+				orderItem.setCInvCode(cInvCode);
+				orderItem.setOmcVenAbbName(item.getCVenAbbName());
+				orderItem.setIQuantityIn(item.getIQuantity());
+				orderItem.setIQuantityOut(item.getIQuantity());
+				List<FabricPoOrderOut> findOutList = fabricPoOrderOutListGroup.stream().filter(e->e.getCInvCode().equals(cInvCode) &&
+						e.getCColor().equals(cColor)).collect(Collectors.toList());
+				orderItem.setFabricPoOrderOutList(findOutList);
+				fabricPoOrderList.add(orderItem);
+			}else{
+				FabricPoOrder findItem = findOpt.get();
+				findItem.setIQuantityOut(findItem.getIQuantityOut()+item.getIQuantity());
+				findItem.setIQuantityIn(findItem.getIQuantityIn()+item.getIQuantity());
+				if (findItem.getOmcVenAbbName().indexOf(item.getCVenAbbName()) == -1){
+					findItem.setOmcVenAbbName(findItem.getOmcVenAbbName()+","+item.getCVenAbbName());
+				}
+			}
+		}
+		return fabricPoOrderList;
 	}
 
 	/**
@@ -688,17 +711,17 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 	 * @param code
 	 * @return
 	 */
-	private FabricPoOrder getPoOrderLyys(String code){
+	private List<FabricPoOrder> getPoOrderLyys(String code){
 		List<FabricPoOrderOut> fabricPoOrderTempList = fabricLossMapper.getPurchaseListOtherPurInList(code);
 		List<FabricPoOrderOut> fabricPoOrderOutListGroup = new ArrayList<>();   // 根据委外订单号和批号分组
-		FabricPoOrder fabricPoOrderLyys = new FabricPoOrder();
-		fabricPoOrderLyys.setCInvName("来源余纱");
-		fabricPoOrderLyys.setIQuantityIn(0.0);
-		fabricPoOrderLyys.setFabricPoOrderOutList(fabricPoOrderOutListGroup);
+//		FabricPoOrder fabricPoOrderLyys = new FabricPoOrder();
+//		fabricPoOrderLyys.setCInvName("来源余纱");
+//		fabricPoOrderLyys.setIQuantityIn(0.0);
+//		fabricPoOrderLyys.setFabricPoOrderOutList(fabricPoOrderOutListGroup);
 
 		if (fabricPoOrderTempList.size()>0){
 			for (FabricPoOrderOut item : fabricPoOrderTempList){
-				fabricPoOrderLyys.setIQuantityIn(item.getIQuantity()+fabricPoOrderLyys.getIQuantityIn());
+//				fabricPoOrderLyys.setIQuantityIn(item.getIQuantity()+fabricPoOrderLyys.getIQuantityIn());
 
 				String cCode = item.getCCode();
 				String cBatch = item.getCBatch();
@@ -719,8 +742,8 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 					item.setIMoney(item.getIPrice()*item.getIQuantity());
 				}
 			}
-			BigDecimal bdVal = new BigDecimal(fabricPoOrderLyys.getIQuantityIn());
-			fabricPoOrderLyys.setIQuantityIn(bdVal.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());
+//			BigDecimal bdVal = new BigDecimal(fabricPoOrderLyys.getIQuantityIn());
+//			fabricPoOrderLyys.setIQuantityIn(bdVal.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());
 		}
 		// 获取委外订单出库物料的入库物料信息:包含采购入库、委外入库
 		List<Map<String,Object>> rowInList = fabricLossMapper.getOmRowInList(code);
@@ -751,8 +774,38 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 			cPlanCode = org.jeecg.modules.system.util.oConvertUtils.stringCut(cPlanCode, ",", "SY", "-");
 			item.setCPlanCode(cPlanCode);
 		}
+		// 去掉批号分组
+		List<FabricPoOrder> fabricPoOrderList = new ArrayList<>();
+		for (FabricPoOrderOut item : fabricPoOrderOutListGroup){
+			String cInvCode = item.getCInvCode();
+			String cColor = item.getCColor();
+			Optional<FabricPoOrder> findOpt = fabricPoOrderList.stream().filter(e->e.getCInvCode().equals(cInvCode) &&
+					e.getCColor().equals(cColor)).findFirst();
+			if (!findOpt.isPresent()){
+				FabricPoOrder orderItem = new FabricPoOrder();
+				orderItem.setCInvName(item.getCInvName()+" "+item.getCColor());
+				orderItem.setCPOID("来源余料");
+				orderItem.setCColor(cColor);
+				orderItem.setCInvCode(cInvCode);
+				orderItem.setOmcVenAbbName(item.getCVenAbbName());
+				orderItem.setIQuantityIn(item.getIQuantity());
+				orderItem.setIQuantityOut(item.getIQuantity());
+				List<FabricPoOrderOut> findOutList = fabricPoOrderOutListGroup.stream().filter(e->e.getCInvCode().equals(cInvCode) &&
+						e.getCColor().equals(cColor)).collect(Collectors.toList());
+				orderItem.setFabricPoOrderOutList(findOutList);
+				fabricPoOrderList.add(orderItem);
+			}else{
+				FabricPoOrder findItem = findOpt.get();
+				findItem.setIQuantityOut(findItem.getIQuantityOut()+item.getIQuantity());
+				findItem.setIQuantityIn(findItem.getIQuantityIn()+item.getIQuantity());
+				if (findItem.getOmcVenAbbName().indexOf(item.getCVenAbbName()) == -1){
+					findItem.setOmcVenAbbName(findItem.getOmcVenAbbName()+","+item.getCVenAbbName());
+				}
+			}
+		}
 
-		return fabricPoOrderLyys;
+
+		return fabricPoOrderList;
 	}
 
 	/**
@@ -927,6 +980,11 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 				retItem.setCInvNameOut(itemOut.getCInvNameOut());
 				retItem.setCColorOut(itemOut.getCColorOut());
 				retItem.setCBatchOut(itemOut.getCBatchOut());
+				if ("普通采购".equals(itemIn.get("cBusType"))){
+					retItem.setCPlanCode(itemIn.get("poCode").toString());
+				}else{
+					retItem.setCPlanCode(itemIn.get("moCode").toString());
+				}
 				retItem.setMODetailsID(itemOut.getMODetailsID());
 				BigDecimal bdVal = new BigDecimal(curSum);
 				retItem.setIQuantity(bdVal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
@@ -962,6 +1020,11 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 					retItem.setCInvNameOut(itemOut.getCInvNameOut());
 					retItem.setCColorOut(itemOut.getCColorOut());
 					retItem.setCBatchOut(itemOut.getCBatchOut());
+					if ("普通采购".equals(itemIn.get("cBusType"))){
+						retItem.setCPlanCode(itemIn.get("poCode").toString());
+					}else{
+						retItem.setCPlanCode(itemIn.get("moCode").toString());
+					}
 					retItem.setMODetailsID(itemOut.getMODetailsID());
 					BigDecimal bdVal = new BigDecimal(curSum);
 					retItem.setIQuantity(bdVal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
@@ -989,14 +1052,10 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 	 * @param omOrderListGw - 委外订单国外
 	 * @return
 	 */
-	private Double getOutCost(List<FabricPoOrder> poOrderList, List<FabricOMOrder> omOrderListGn, List<FabricOMOrder> omOrderListGw){
+	private List<FabricCostInvoice> getOutCost(List<FabricPoOrder> poOrderList, List<FabricOMOrder> omOrderListGn, List<FabricOMOrder> omOrderListGw){
 		// 采购出入库去掉末尾两行:来源余纱、其他入库纱
-		List<FabricPoOrder> poOrderListReal = new ArrayList<>();
-		if (poOrderList.size()>2){
-			poOrderListReal.addAll(poOrderList);
-			poOrderListReal.remove(poOrderListReal.size()-1);
-			poOrderListReal.remove(poOrderListReal.size()-1);
-		}
+		List<FabricPoOrder> poOrderListReal = poOrderList.stream().filter(e->!e.getCPOID().equals("来源余料") &&
+				!e.getCPOID().equals("其他入库")).collect(Collectors.toList());
 		// 合并所有采购入库+委外入库的物料批次。借用FabricPoOrderIn类
 		List<FabricPoOrderIn> allInList = new ArrayList<>();
 		for (FabricPoOrder item : poOrderListReal){
@@ -1021,6 +1080,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 						formatItem.setCBatch(itemIn.getCBatch());
 						formatItem.setIQuantity(itemIn.getIQuantity());
 						formatItem.setIPrice(itemIn.getIPrice());
+						formatItem.setCInvName(itemIn.getCInvName());
 						allInList.add(formatItem);
 					}
 				}
@@ -1038,6 +1098,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 					formatItem.setIQuantity(itemIn.getIQuantityIn());
 					formatItem.setIPrice(itemIn.getIPrice());
 					formatItem.setCBusType("1");        // 国内
+					formatItem.setCInvName(itemIn.getCInvName()+" "+itemIn.getCColor());
 					allInList.add(formatItem);
 				}
 			}
@@ -1054,6 +1115,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 					formatItem.setIQuantity(itemIn.getIQuantityIn());
 					formatItem.setIPrice(itemIn.getIPrice());
 					formatItem.setCBusType("2");        // 国外
+					formatItem.setCInvName(itemIn.getCInvName()+" "+itemIn.getCColor());
 					allInList.add(formatItem);
 				}
 			}
@@ -1158,16 +1220,38 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 				}
 			}
 		}
-		// 计算总转出成本
-		Double dTotal = 0.0;
+		List<FabricCostInvoice> costInvoiceList = new ArrayList<>();
+		// 计算总转入成本
 		for (FabricPoOrderIn itemIn : allInList){
 			if (itemIn.getIQuantity()>0){
-				dTotal += itemIn.getIQuantity()*itemIn.getIPrice();
+				FabricCostInvoice fabricCostInvoice = new FabricCostInvoice();
+				fabricCostInvoice.setCVCName(itemIn.getCInvName());
+				fabricCostInvoice.setCVenAbbName("");
+				fabricCostInvoice.setCBusType("转出成本");
+				BigDecimal bdVal = new BigDecimal(itemIn.getIQuantity()*itemIn.getIPrice()*-1);
+				fabricCostInvoice.setIMoney(bdVal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+				if (fabricCostInvoice.getIMoney()!=0) {
+					costInvoiceList.add(fabricCostInvoice);
+				}
+			}
+		}
+
+		// 分组
+		List<FabricCostInvoice> costInvoiceListGroup = new ArrayList<>();
+		for (FabricCostInvoice fabricCostInvoice : costInvoiceList){
+			Optional<FabricCostInvoice> findOpt = costInvoiceListGroup.stream().filter(e->
+					e.getCVCName().equals(fabricCostInvoice.getCVCName()) &&
+							e.getCVenAbbName().equals(fabricCostInvoice.getCVenAbbName())).findFirst();
+			if (findOpt.isPresent()){
+				FabricCostInvoice find = findOpt.get();
+				BigDecimal bdVal = new BigDecimal(find.getIMoney()+fabricCostInvoice.getIMoney());
+				find.setIMoney(bdVal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+			}else{
+				costInvoiceListGroup.add(fabricCostInvoice);
 			}
 		}
 
-		BigDecimal bdVal = new BigDecimal(dTotal*-1);
-		return bdVal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+		return costInvoiceListGroup;
 
 	}
 	// 根据文件id,获取文件内容
@@ -1203,7 +1287,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 		List<FabricPoOrder> poOrderList = fabricLoss.getFabricPoOrderList();
 		if (oConvertUtils.listIsNotEmpty(poOrderList)) {
 			for (FabricPoOrder poOrder : poOrderList) {
-				if (poOrder.getCInvName().equals("来源余纱") || poOrder.getCInvName().equals("其他入库的纱")){
+				if (poOrder.getCPOID().equals("来源余料") || poOrder.getCPOID().equals("其他入库")){
 					List<FabricPoOrderOut> orderOutList = poOrder.getFabricPoOrderOutList();
 					if (oConvertUtils.listIsNotEmpty(orderOutList)) {
 						for (FabricPoOrderOut orderOut : orderOutList) {
@@ -1231,14 +1315,10 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 	 * @param omOrderListGw - 委外订单国外
 	 * @return
 	 */
-	private Double getInCost(List<FabricPoOrder> poOrderList, List<FabricOMOrder> omOrderListGn, List<FabricOMOrder> omOrderListGw){
+	private List<FabricCostInvoice> getInCost(List<FabricPoOrder> poOrderList, List<FabricOMOrder> omOrderListGn, List<FabricOMOrder> omOrderListGw){
 		// 采购出入库去掉末尾两行:来源余纱、其他入库纱
-		List<FabricPoOrder> poOrderListReal = new ArrayList<>();
-		if (poOrderList.size()>2){
-			poOrderListReal.addAll(poOrderList);
-			poOrderListReal.remove(poOrderListReal.size()-1);
-			poOrderListReal.remove(poOrderListReal.size()-1);
-		}
+		List<FabricPoOrder> poOrderListReal = poOrderList.stream().filter(e->!e.getCPOID().equals("来源余料") &&
+				!e.getCPOID().equals("其他入库")).collect(Collectors.toList());
 		// 合并所有采购入库+委外入库的物料批次。借用FabricPoOrderIn类
 		List<FabricPoOrderIn> allInList = new ArrayList<>();
 		for (FabricPoOrder item : poOrderListReal){
@@ -1313,6 +1393,10 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 				outCopy.setCColorOut(omOut.getCColorOut());
 				outCopy.setIQuantity(omOut.getIQuantity());
 				outCopy.setIPrice(omOut.getIPrice());
+				outCopy.setCVCName(omOrder.getCVCName());
+				outCopy.setCVenAbbName(omOrder.getCVenAbbName());
+				outCopy.setCPlanCode(omOut.getCPlanCode());
+
 				omOutListAll.add(outCopy);
 			}
 
@@ -1341,16 +1425,39 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 			}
 			itemOut.setIQuantity(outLeft);
 		}
+		List<FabricCostInvoice> costInvoiceList = new ArrayList<>();
+
 		// 计算总转入成本
-		Double dTotal = 0.0;
 		for (FabricMoOrderCK itemOut : omOutListAll){
 			if (itemOut.getIQuantity()>0){
-				dTotal += itemOut.getIQuantity()*itemOut.getIPrice();
+				FabricCostInvoice fabricCostInvoice = new FabricCostInvoice();
+				fabricCostInvoice.setCVCName(itemOut.getCVCName());
+				fabricCostInvoice.setCVenAbbName(itemOut.getCPlanCode()+" "+itemOut.getCVenAbbName());
+				fabricCostInvoice.setCBusType("转入成本");
+				BigDecimal bdVal = new BigDecimal(itemOut.getIQuantity()*itemOut.getIPrice());
+				fabricCostInvoice.setIMoney(bdVal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+				if (fabricCostInvoice.getIMoney()!=0) {
+					costInvoiceList.add(fabricCostInvoice);
+				}
 			}
 		}
+		// 分组
+		List<FabricCostInvoice> costInvoiceListGroup = new ArrayList<>();
+		for (FabricCostInvoice fabricCostInvoice : costInvoiceList){
+			Optional<FabricCostInvoice> findOpt = costInvoiceListGroup.stream().filter(e->
+					e.getCVCName().equals(fabricCostInvoice.getCVCName()) &&
+					e.getCVenAbbName().equals(fabricCostInvoice.getCVenAbbName())).findFirst();
+			if (findOpt.isPresent()){
+				FabricCostInvoice find = findOpt.get();
+				BigDecimal bdVal = new BigDecimal(find.getIMoney()+fabricCostInvoice.getIMoney());
+				find.setIMoney(bdVal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+			}else{
+				costInvoiceListGroup.add(fabricCostInvoice);
+			}
+		}
+
 
-		BigDecimal bdVal = new BigDecimal(dTotal);
-		return bdVal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+		return costInvoiceListGroup;
 
 	}
 }