| 
														
															@@ -430,13 +430,19 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			fabricCostInvoice.setCVCName("转入成本"); 
														 | 
														
														 | 
														
															 			fabricCostInvoice.setCVCName("转入成本"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			fabricCostInvoice.setIMoney(d); 
														 | 
														
														 | 
														
															 			fabricCostInvoice.setIMoney(d); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			fabricCostInvoiceList.add(fabricCostInvoice); 
														 | 
														
														 | 
														
															 			fabricCostInvoiceList.add(fabricCostInvoice); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			// 计算入金额 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			Double costInTotal = fabricCostInvoiceList.stream().mapToDouble(FabricCostInvoice::getIMoney).sum(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			// 转出成本 
														 | 
														
														 | 
														
															 			// 转出成本 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			d = oConvertUtils.getDouble(fabricLossMapper.getOmInToOtherMoney(code), 0); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			d = oConvertUtils.getDouble(fabricLossMapper.getOmInToOtherMoney(code), 0) + getOutCost(ret.getFabricPoOrderList(), fabricOMOrderList1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			fabricCostInvoice = new FabricCostInvoice(); 
														 | 
														
														 | 
														
															 			fabricCostInvoice = new FabricCostInvoice(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			fabricCostInvoice.setCVCName("转出成本"); 
														 | 
														
														 | 
														
															 			fabricCostInvoice.setCVCName("转出成本"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			fabricCostInvoice.setIMoney(d); 
														 | 
														
														 | 
														
															 			fabricCostInvoice.setIMoney(d); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			fabricCostInvoiceList.add(fabricCostInvoice); 
														 | 
														
														 | 
														
															 			fabricCostInvoiceList.add(fabricCostInvoice); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			ret.setFabricCostInvoiceList(fabricCostInvoiceList); 
														 | 
														
														 | 
														
															 			ret.setFabricCostInvoiceList(fabricCostInvoiceList); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			// 计算实际单件成本 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			costInTotal -= d; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			BigDecimal bdPriceReal = new BigDecimal(costInTotal/ret.getNumber()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			ret.setActualPrice(bdPriceReal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			//开票成本 - 成衣 
														 | 
														
														 | 
														
															 			//开票成本 - 成衣 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			List<FabricCostClothes> fabricCostClothesList = fabricLossMapper.getCostClothesList(code); 
														 | 
														
														 | 
														
															 			List<FabricCostClothes> fabricCostClothesList = fabricLossMapper.getCostClothesList(code); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			ret.setFabricCostClothesList(fabricCostClothesList); 
														 | 
														
														 | 
														
															 			ret.setFabricCostClothesList(fabricCostClothesList); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -924,6 +930,88 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		return ret; 
														 | 
														
														 | 
														
															 		return ret; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	} 
														 | 
														
														 | 
														
															 	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	/** 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	 * 根据采购入库详情,委外订单详情,获取转出成本。(入库数量-出库数量) * 单价 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	 * @param poOrderList - 采购入库详情 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	 * @param fabricOMOrderList - 委外出入库详情 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	 * @return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	 */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	private Double getOutCost(List<FabricPoOrder> poOrderList, List<FabricOMOrder> fabricOMOrderList){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		// 采购出入库去掉末尾两行:来源余纱、其他入库纱 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		List<FabricPoOrder> poOrderListReal = new ArrayList<>(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		if (poOrderList.size()>2){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			poOrderListReal.addAll(poOrderList); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			poOrderListReal.remove(poOrderListReal.size()-1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			poOrderListReal.remove(poOrderListReal.size()-1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		// 合并所有采购入库+委外入库的物料批次。借用FabricPoOrderIn类 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		List<FabricPoOrderIn> allInList = new ArrayList<>(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		for (FabricPoOrder item : poOrderListReal){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			List<FabricPoOrderIn> inList = item.getFabricPoOrderInList(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			if (oConvertUtils.listIsNotEmpty(inList)){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				for (FabricPoOrderIn itemIn : inList){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					Optional<FabricPoOrderIn> findItemOpt = allInList.stream().filter(e-> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+							e.getCInvCode().equals(itemIn.getCInvCode()) && 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+							e.getCColor().equals(itemIn.getCColor()) && 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+							e.getCBatch().equals(itemIn.getCBatch())).findFirst(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					if (findItemOpt.isPresent()){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+						FabricPoOrderIn formatItem = findItemOpt.get(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+						Double dMoney = formatItem.getIPrice()*formatItem.getIQuantity()+itemIn.getIPrice()*itemIn.getIQuantity(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+						Double dQuantity = formatItem.getIQuantity()+itemIn.getIQuantity(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+						formatItem.setIPrice(dMoney/dQuantity); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+						formatItem.setIQuantity(dQuantity); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					}else { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+						FabricPoOrderIn formatItem = new FabricPoOrderIn(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+						formatItem.setCInvCode(itemIn.getCInvCode()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+						formatItem.setCColor(itemIn.getCColor()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+						formatItem.setCBatch(itemIn.getCBatch()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+						formatItem.setIQuantity(itemIn.getIQuantity()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+						formatItem.setIPrice(itemIn.getIPrice()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+						allInList.add(formatItem); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		/* 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		for (FabricOMOrder item : fabricOMOrderList){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			List<FabricMoOrderRK> inList = item.getFabricMoOrderRKList(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			if (oConvertUtils.listIsNotEmpty(inList)){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				for (FabricMoOrderRK itemIn : inList){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					FabricPoOrderIn formatItem = new FabricPoOrderIn(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					formatItem.setCInvCode(item.getCInvCode()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					formatItem.setCColor(item.getCColor()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					formatItem.setCBatch(itemIn.getCBatch()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					formatItem.setIQuantity(itemIn.getIQuantityIn()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					formatItem.setIPrice(itemIn.getIPrice()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					allInList.add(formatItem); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		}*/ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		// 扣减出库数量 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		for (FabricPoOrderIn itemIn : allInList){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			for (FabricOMOrder item : fabricOMOrderList){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				List<FabricMoOrderCK> outList = item.getFabricMoOrderCKList(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				if (oConvertUtils.listIsNotEmpty(outList)){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					Double dOut = outList.stream().filter(e-> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+							e.getCInvCodeOut().equals(itemIn.getCInvCode()) && 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+							e.getCColorOut().equals(itemIn.getCColor()) && 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+							e.getCBatchOut().equals(itemIn.getCBatch())).mapToDouble(FabricMoOrderCK::getIQuantity).sum(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					itemIn.setIQuantity(itemIn.getIQuantity()-dOut); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		// 计算总转出成本 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		Double dTotal = 0.0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		for (FabricPoOrderIn itemIn : allInList){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			if (itemIn.getIQuantity()>0){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				dTotal += itemIn.getIQuantity()*itemIn.getIPrice(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		BigDecimal bdVal = new BigDecimal(dTotal); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return bdVal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	// 根据文件id,获取文件内容 
														 | 
														
														 | 
														
															 	// 根据文件id,获取文件内容 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	@Override 
														 | 
														
														 | 
														
															 	@Override 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	public byte[] getFileContent(String fileId){ 
														 | 
														
														 | 
														
															 	public byte[] getFileContent(String fileId){ 
														 |