|  | @@ -89,85 +89,6 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  			// 根据委外订单设置分配数量、余纱、采购损耗,来源余纱、其他入库的纱
 | 
	
		
			
				|  |  |  			setPoOrderListByOmOrderList(ret);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -/*
 | 
	
		
			
				|  |  | -			// 采购入库-来源余纱
 | 
	
		
			
				|  |  | -			List<FabricPoOrder> lyysList = getPoOrderLyys(code);
 | 
	
		
			
				|  |  | -			fabricPoOrderList.addAll(lyysList);
 | 
	
		
			
				|  |  | -			// 采购入库-其他入库的纱
 | 
	
		
			
				|  |  | -			fabricPoOrderList.addAll(getPoOrderQtrk(code,lyysList));
 | 
	
		
			
				|  |  | -			ret.setFabricPoOrderList(fabricPoOrderList);
 | 
	
		
			
				|  |  | -			// 委外订单所有
 | 
	
		
			
				|  |  | -			List<FabricOMOrder> fabricOMOrderListAll = fabricLossMapper.getOmOrderListAll(code);
 | 
	
		
			
				|  |  | -			if (fabricOMOrderListAll.size() == 0){
 | 
	
		
			
				|  |  | -				ret.setSuccess(false);
 | 
	
		
			
				|  |  | -				ret.setMessage("本计划没有面料委外,无面损表");
 | 
	
		
			
				|  |  | -				return ret;
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			// 委外订单分组
 | 
	
		
			
				|  |  | -			fabricOMOrderListAll = groupOmOrderList(fabricOMOrderListAll);
 | 
	
		
			
				|  |  | -			// 织、染、印,其他排序
 | 
	
		
			
				|  |  | -			List<FabricOMOrder> fabricOMOrderList1 = new ArrayList<>();
 | 
	
		
			
				|  |  | -			List<FabricOMOrder> fabricOMOrderListTmp = fabricOMOrderListAll.stream().filter(e->e.getCVCName().indexOf("织")==0).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -			if (fabricOMOrderListTmp.size()>0){
 | 
	
		
			
				|  |  | -				fabricOMOrderList1.addAll(fabricOMOrderListTmp);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			fabricOMOrderListTmp = fabricOMOrderListAll.stream().filter(e->e.getCVCName().indexOf("染")==0).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -			if (fabricOMOrderListTmp.size()>0){
 | 
	
		
			
				|  |  | -				fabricOMOrderList1.addAll(fabricOMOrderListTmp);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			fabricOMOrderListTmp = fabricOMOrderListAll.stream().filter(e->e.getCVCName().indexOf("印")==0).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -			if (fabricOMOrderListTmp.size()>0){
 | 
	
		
			
				|  |  | -				fabricOMOrderList1.addAll(fabricOMOrderListTmp);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			fabricOMOrderListTmp = fabricOMOrderListAll.stream().filter(e->e.getCVCName().indexOf("织")!=0&&e.getCVCName().indexOf("染")!=0&&e.getCVCName().indexOf("印")!=0).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -			if (fabricOMOrderListTmp.size()>0){
 | 
	
		
			
				|  |  | -				fabricOMOrderList1.addAll(fabricOMOrderListTmp);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			// 设置详情及成本
 | 
	
		
			
				|  |  | -			fabricOMOrderList1 = setFabricOMOrderOutDetail(fabricOMOrderList1, code, editData);
 | 
	
		
			
				|  |  | -			fabricOMOrderList1 = setFabricOMOrderInDetail(fabricOMOrderList1, code);
 | 
	
		
			
				|  |  | -			// 设置余料去向
 | 
	
		
			
				|  |  | -			fabricOMOrderList1 = setFabricOMOrderLeftDetail(fabricOMOrderList1, code);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			// 设置附件
 | 
	
		
			
				|  |  | -			fabricOMOrderList1.forEach(e->{
 | 
	
		
			
				|  |  | -				List<AccessorItem> accessorItemList1 = omAccList.stream().filter(a->a.getCInvId().equals(e.getCInvCode()+e.getCColor())).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -				e.setAccessorItemList(accessorItemList1);
 | 
	
		
			
				|  |  | -			});
 | 
	
		
			
				|  |  | -			// 委外订单国内
 | 
	
		
			
				|  |  | -			for (FabricOMOrder fabricOMOrder : fabricOMOrderList1){
 | 
	
		
			
				|  |  | -				double dLoss = 0;
 | 
	
		
			
				|  |  | -				if (fabricOMOrder.getIQuantityOut()!=0) {
 | 
	
		
			
				|  |  | -					dLoss = (1 - fabricOMOrder.getIQuantityIn() / fabricOMOrder.getIQuantityOut()) * 100;
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -				if ("02".equals(fabricOMOrder.getCComUnitCode())){  // 根
 | 
	
		
			
				|  |  | -					fabricOMOrder.setIQuantityPCS(fabricOMOrder.getIQuantityIn());
 | 
	
		
			
				|  |  | -				}else if ("04".equals(fabricOMOrder.getCComUnitCode())){    // 米
 | 
	
		
			
				|  |  | -					fabricOMOrder.setIQuantityM(fabricOMOrder.getIQuantityIn());
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -				BigDecimal bDLoss = new BigDecimal(dLoss);
 | 
	
		
			
				|  |  | -				fabricOMOrder.setCQuantityLoss(bDLoss.setScale(2, BigDecimal.ROUND_HALF_UP).toString()+"%");
 | 
	
		
			
				|  |  | -				double dMoreLess = fabricOMOrder.getIQuantityIn()-fabricOMOrder.getIQuantity();
 | 
	
		
			
				|  |  | -				BigDecimal bDMoreLess = new BigDecimal(dMoreLess);
 | 
	
		
			
				|  |  | -				fabricOMOrder.setIQuantityMoreLess(bDMoreLess.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			// 委外订单国外
 | 
	
		
			
				|  |  | -			List<FabricOMOrder> fabricOMOrderList2 = fabricLossMapper.getOmOrderListGw(code);
 | 
	
		
			
				|  |  | -			List<FabricOMOrder> fabricOMOrderListGn = fabricOMOrderList1.stream().filter(all->{
 | 
	
		
			
				|  |  | -				return fabricOMOrderList2.stream().filter(gw->
 | 
	
		
			
				|  |  | -						all.getCInvCode().equals(gw.getCInvCode()) &&
 | 
	
		
			
				|  |  | -						all.getCColor().equals(gw.getCColor())).count() ==0;
 | 
	
		
			
				|  |  | -			}).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -			List<FabricOMOrder> fabricOMOrderListGw = fabricOMOrderList1.stream().filter(all->{
 | 
	
		
			
				|  |  | -				return fabricOMOrderList2.stream().filter(gw->
 | 
	
		
			
				|  |  | -						all.getCInvCode().equals(gw.getCInvCode()) &&
 | 
	
		
			
				|  |  | -								all.getCColor().equals(gw.getCColor())).count() >0;
 | 
	
		
			
				|  |  | -			}).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -			ret.setFabricOMOrderList1(fabricOMOrderListGn);
 | 
	
		
			
				|  |  | -			ret.setFabricOMOrderList2(fabricOMOrderListGw);*/
 | 
	
		
			
				|  |  |  			// 费用支出单
 | 
	
		
			
				|  |  |  			List<FabricExpenses> fabricExpensesList = fabricLossMapper.getExpensesList(code);
 | 
	
		
			
				|  |  |  			ret.setFabricExpensesList(fabricExpensesList);
 | 
	
	
		
			
				|  | @@ -1238,108 +1159,6 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  			fabricPoOrder.setFabricPoOrderOutList(findPoOrderStockList);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		ret.setFabricPoOrderList(fabricPoOrderList);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -/*
 | 
	
		
			
				|  |  | -		// 获取委外材料出库单,已核销的取核销数量
 | 
	
		
			
				|  |  | -		List<Map<String,Object>> fabricOmOutList = fabricLossMapper.getOmOutList(code);
 | 
	
		
			
				|  |  | -		// 获取本次采购入库的形态转换
 | 
	
		
			
				|  |  | -		List<Map<String,Object>> fabricAssemVouchList = fabricLossMapper.getAssemVouchList(code);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		// 采购入库被其他委外订单使用的信息
 | 
	
		
			
				|  |  | -		List<FabricPoOrderOut> fabricPoOrderOutList = fabricLossMapper.getPoOrderInToOther(code);
 | 
	
		
			
				|  |  | -		// 采购入库仓库库存
 | 
	
		
			
				|  |  | -		List<FabricPoOrderOut> poOrderStockList = fabricLossMapper.getPurchaseStockList(code);
 | 
	
		
			
				|  |  | -		// 采购订单设置分配数量、委外供应商、余纱、采购损耗
 | 
	
		
			
				|  |  | -		for (FabricPoOrder fabricPoOrder : fabricPoOrderList){
 | 
	
		
			
				|  |  | -			// 获取采购形态转换物料
 | 
	
		
			
				|  |  | -			List<Map<String, Object>> tmpAssemVouchList = fabricAssemVouchList.stream().filter(e->
 | 
	
		
			
				|  |  | -					oConvertUtils.getString(e.get("cInvCode")).equals(fabricPoOrder.getCInvCode()) &&
 | 
	
		
			
				|  |  | -							oConvertUtils.getString(e.get("cColor")).equals(fabricPoOrder.getCColor())).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -			//&&
 | 
	
		
			
				|  |  | -			//								fabricPoOrder.getCBatch().indexOf(oConvertUtils.getString(e.get("cAVBatch")))>-1
 | 
	
		
			
				|  |  | -			// 未形态转换物料
 | 
	
		
			
				|  |  | -			List<Map<String, Object>> tmpOmOutList1 = fabricOmOutList.stream().filter(e->
 | 
	
		
			
				|  |  | -					oConvertUtils.getString(e.get("cInvCode")).equals(fabricPoOrder.getCInvCode()) &&
 | 
	
		
			
				|  |  | -							oConvertUtils.getString(e.get("cColor")).equals(fabricPoOrder.getCColor())).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -			// &&
 | 
	
		
			
				|  |  | -			//								fabricPoOrder.getCBatch().indexOf(oConvertUtils.getString(e.get("cBatch")))>-1
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			// 形态转换物料
 | 
	
		
			
				|  |  | -			List<Map<String, Object>> tmpOmOutList2 = fabricOmOutList.stream().filter(out->{
 | 
	
		
			
				|  |  | -				return tmpAssemVouchList.stream().filter(e ->
 | 
	
		
			
				|  |  | -						oConvertUtils.getString(e.get("cInvCode2")).equals(oConvertUtils.getString(out.get("cInvCode"))) &&
 | 
	
		
			
				|  |  | -								oConvertUtils.getString(e.get("cColor2")).equals(oConvertUtils.getString(out.get("cColor")))
 | 
	
		
			
				|  |  | -				).count() > 0;
 | 
	
		
			
				|  |  | -			}).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -			// &&
 | 
	
		
			
				|  |  | -			//								oConvertUtils.getString(e.get("cAVBatch2")).equals(oConvertUtils.getString(out.get("cBatch")))
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			tmpOmOutList1.addAll(tmpOmOutList2);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			List<String> omcVenAbbNameList = new ArrayList<>();
 | 
	
		
			
				|  |  | -			double outSum = 0;
 | 
	
		
			
				|  |  | -			for (Map<String, Object> out : tmpOmOutList1){
 | 
	
		
			
				|  |  | -				outSum += oConvertUtils.getDouble(out.get("iQuantity").toString(),0);
 | 
	
		
			
				|  |  | -				String omcVenAbbName = oConvertUtils.getString(out.get("cVenAbbName").toString());
 | 
	
		
			
				|  |  | -				if (!omcVenAbbNameList.contains(omcVenAbbName)){
 | 
	
		
			
				|  |  | -					omcVenAbbNameList.add(omcVenAbbName);
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			if (omcVenAbbNameList.size()>0){
 | 
	
		
			
				|  |  | -				fabricPoOrder.setOmcVenAbbName(String.join(",", omcVenAbbNameList));
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			BigDecimal bOutSum = new BigDecimal(outSum);
 | 
	
		
			
				|  |  | -			outSum = bOutSum.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
 | 
	
		
			
				|  |  | -			fabricPoOrder.setIQuantityOut(outSum);
 | 
	
		
			
				|  |  | -			double leftSum = fabricPoOrder.getIQuantityIn()-fabricPoOrder.getIQuantityOut();
 | 
	
		
			
				|  |  | -			BigDecimal bLeftSum = new BigDecimal(leftSum);
 | 
	
		
			
				|  |  | -			leftSum = bLeftSum.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
 | 
	
		
			
				|  |  | -			fabricPoOrder.setIQuantityLeft(leftSum);
 | 
	
		
			
				|  |  | -			double leftRate = 0;
 | 
	
		
			
				|  |  | -			if (fabricPoOrder.getIQuantityIn() != 0) {
 | 
	
		
			
				|  |  | -				leftRate = leftSum / fabricPoOrder.getIQuantityIn();
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			BigDecimal bLeftRate = new BigDecimal(leftRate);
 | 
	
		
			
				|  |  | -			leftRate = bLeftRate.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
 | 
	
		
			
				|  |  | -			fabricPoOrder.setIQuantityLeftRate(leftRate);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			// 设置入库信息
 | 
	
		
			
				|  |  | -			List<FabricPoOrderIn> tmpFabricPoOrderInList = fabricPoOrderInList.stream().filter(e->
 | 
	
		
			
				|  |  | -					e.getCInvCode().equals(fabricPoOrder.getCInvCode()) &&
 | 
	
		
			
				|  |  | -							oConvertUtils.getString(e.getCColor()).equals(oConvertUtils.getString(fabricPoOrder.getCColor()))).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -			fabricPoOrder.setFabricPoOrderInList(tmpFabricPoOrderInList);
 | 
	
		
			
				|  |  | -			// 设置被其他委外订单使用信息
 | 
	
		
			
				|  |  | -			List<FabricPoOrderOut> findFabricPoOrderOutList = fabricPoOrderOutList.stream().filter(e->
 | 
	
		
			
				|  |  | -					oConvertUtils.getString(e.getCInvCode()).equals(oConvertUtils.getString(fabricPoOrder.getCInvCode())) &&
 | 
	
		
			
				|  |  | -							oConvertUtils.getString(e.getCColor()).equals(oConvertUtils.getString(fabricPoOrder.getCColor()))).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -			// 设置计划号,单价
 | 
	
		
			
				|  |  | -			for (FabricPoOrderOut item : findFabricPoOrderOutList){
 | 
	
		
			
				|  |  | -				String cCode = item.getCCode();
 | 
	
		
			
				|  |  | -				int index1 = cCode.indexOf("SY");
 | 
	
		
			
				|  |  | -				if (index1 == -1) {
 | 
	
		
			
				|  |  | -					continue;
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -				int index2 = cCode.indexOf("-", index1);
 | 
	
		
			
				|  |  | -				if (index2 == -1) {
 | 
	
		
			
				|  |  | -					index2 = cCode.length();
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -				item.setCPlanCode(cCode.substring(index1,index2));
 | 
	
		
			
				|  |  | -				if (tmpFabricPoOrderInList.size()>0){
 | 
	
		
			
				|  |  | -					item.setIPrice(tmpFabricPoOrderInList.get(0).getIPrice());
 | 
	
		
			
				|  |  | -					item.setIMoney(item.getIPrice()*item.getIQuantity());
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			// 设置仓库库存
 | 
	
		
			
				|  |  | -			List<FabricPoOrderOut> findPoOrderStockList = poOrderStockList.stream().filter(e->
 | 
	
		
			
				|  |  | -					fabricPoOrder.getCInvCode().equals(e.getCInvCode()) &&
 | 
	
		
			
				|  |  | -							oConvertUtils.getString(fabricPoOrder.getCColor()).equals(e.getCColor())).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -			findFabricPoOrderOutList.addAll(findPoOrderStockList);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			fabricPoOrder.setFabricPoOrderOutList(findFabricPoOrderOutList);
 | 
	
		
			
				|  |  | -		}*/
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	private final String[] CVCOrderKeyList = {"织","染","印"};
 | 
	
	
		
			
				|  | @@ -1373,9 +1192,6 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  		List<FabricOMOrder> omOrderListOrderAllList = fabricOMOrderListAll.stream().sorted(Comparator.comparing(FabricOMOrder::getOrder)).collect(Collectors.toList());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		// 设置详情及成本
 | 
	
		
			
				|  |  | -		/*
 | 
	
		
			
				|  |  | -		omOrderListOrderAllList = setFabricOMOrderOutDetail(omOrderListOrderAllList, code, editData);
 | 
	
		
			
				|  |  | -		omOrderListOrderAllList = setFabricOMOrderInDetail(omOrderListOrderAllList, code);*/
 | 
	
		
			
				|  |  |  		setOmOrderDetail(code, omOrderListOrderAllList, ret.getFabricPoOrderList(), editData);
 | 
	
		
			
				|  |  |  		// 设置余料去向
 | 
	
		
			
				|  |  |  		omOrderListOrderAllList = setFabricOMOrderLeftDetail(omOrderListOrderAllList, code);
 | 
	
	
		
			
				|  | @@ -1453,9 +1269,13 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  		List<FabricOMOrder> omOrderList = new ArrayList<>();
 | 
	
		
			
				|  |  |  		omOrderList.addAll(ret.getFabricOMOrderList1());
 | 
	
		
			
				|  |  |  		omOrderList.addAll(ret.getFabricOMOrderList2());
 | 
	
		
			
				|  |  | +		// 采购订单所有
 | 
	
		
			
				|  |  | +		List<FabricPoOrder> poOrderList = ret.getFabricPoOrderList().stream().filter(e->!e.getCPOID().equals("来源余料") &&
 | 
	
		
			
				|  |  | +				!e.getCPOID().equals("其他入库")).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +		/*
 | 
	
		
			
				|  |  |  		// 获取要计算成本的采购入库
 | 
	
		
			
				|  |  |  		List<FabricCostInvoice> fabricCostInvoiceList1 = fabricLossMapper.getPurchuseInPriceList(code);
 | 
	
		
			
				|  |  | -		// 根据类型、工厂、采购类型分组。根据委外出库,获取出库成本。
 | 
	
		
			
				|  |  | +		// 根据类型、工厂、采购类型分组。根据采购入库,计算成本
 | 
	
		
			
				|  |  |  		List<FabricCostInvoice> fabricCostInvoiceList = new ArrayList<>();
 | 
	
		
			
				|  |  |  		for (FabricCostInvoice fabricCostInvoice : fabricCostInvoiceList1){
 | 
	
		
			
				|  |  |  			Optional<FabricCostInvoice> findItem = fabricCostInvoiceList.stream().filter(e->
 | 
	
	
		
			
				|  | @@ -1473,17 +1293,20 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			Double money = newItem.getIMoney();
 | 
	
		
			
				|  |  | -			for (FabricOMOrder omOrder : omOrderList){
 | 
	
		
			
				|  |  | -				List<FabricMoOrderCK> ckList = omOrder.getFabricMoOrderCKList();
 | 
	
		
			
				|  |  | -				if (ckList != null) {
 | 
	
		
			
				|  |  | -					List<FabricMoOrderCK> findList1 = ckList.stream().filter(e->
 | 
	
		
			
				|  |  | -							e.getInvOutId().equalsIgnoreCase(fabricCostInvoice.getInvId())).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -					for (FabricMoOrderCK ckItem : findList1) {
 | 
	
		
			
				|  |  | -						money+=ckItem.getIMoney();
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//			for (FabricOMOrder omOrder : omOrderList){
 | 
	
		
			
				|  |  | +//				List<FabricMoOrderCK> ckList = omOrder.getFabricMoOrderCKList();
 | 
	
		
			
				|  |  | +//				if (ckList != null) {
 | 
	
		
			
				|  |  | +//					List<FabricMoOrderCK> findList1 = ckList.stream().filter(e->
 | 
	
		
			
				|  |  | +//							e.getInvOutId().equalsIgnoreCase(fabricCostInvoice.getInvId())).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +//					for (FabricMoOrderCK ckItem : findList1) {
 | 
	
		
			
				|  |  | +//						money+=ckItem.getIMoney();
 | 
	
		
			
				|  |  | +//					}
 | 
	
		
			
				|  |  | +//				}
 | 
	
		
			
				|  |  | +//
 | 
	
		
			
				|  |  | +//			}
 | 
	
		
			
				|  |  |  			BigDecimal bdValue = new BigDecimal(money);
 | 
	
		
			
				|  |  |  			newItem.setIMoney(bdValue.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1492,6 +1315,59 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  		//获取委外订单发票金额
 | 
	
		
			
				|  |  |  		List<FabricCostInvoice> fabricCostInvoiceList2 = fabricLossMapper.getOmInvoiceMoneyList(code);
 | 
	
		
			
				|  |  |  		fabricCostInvoiceList.addAll(fabricCostInvoiceList2);
 | 
	
		
			
				|  |  | +		*/
 | 
	
		
			
				|  |  | +		// 根据采购入库和委外入库,计算成本发票
 | 
	
		
			
				|  |  | +		List<FabricCostInvoice> fabricCostInvoiceList = new ArrayList<>();
 | 
	
		
			
				|  |  | +		// 计算采购入库
 | 
	
		
			
				|  |  | +		for (FabricPoOrder poOrder : poOrderList){
 | 
	
		
			
				|  |  | +			Optional<FabricCostInvoice> findItem = fabricCostInvoiceList.stream().filter(e->
 | 
	
		
			
				|  |  | +					"普通采购".equalsIgnoreCase(e.getCBusType()) &&
 | 
	
		
			
				|  |  | +							poOrder.getCVCName().equalsIgnoreCase(e.getCVCName()) &&
 | 
	
		
			
				|  |  | +							poOrder.getCVenAbbName().equalsIgnoreCase(e.getCVenAbbName())).findFirst();
 | 
	
		
			
				|  |  | +			FabricCostInvoice newItem = new FabricCostInvoice();
 | 
	
		
			
				|  |  | +			Double dMoney = 0.0;
 | 
	
		
			
				|  |  | +			if (oConvertUtils.listIsNotEmpty(poOrder.getFabricPoOrderInList())){
 | 
	
		
			
				|  |  | +				for (FabricPoOrderIn orderIn : poOrder.getFabricPoOrderInList()){
 | 
	
		
			
				|  |  | +					dMoney = DoubleOperation.add(dMoney, DoubleOperation.mul(orderIn.getIPrice(),orderIn.getIQuantityInvoice(),2));
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			if (findItem.isPresent()) {
 | 
	
		
			
				|  |  | +				newItem = findItem.get();
 | 
	
		
			
				|  |  | +				newItem.setIMoney(DoubleOperation.add(newItem.getIMoney(), dMoney));
 | 
	
		
			
				|  |  | +			}else{
 | 
	
		
			
				|  |  | +				newItem.setCBusType("普通采购");
 | 
	
		
			
				|  |  | +				newItem.setIMoney(dMoney);
 | 
	
		
			
				|  |  | +				newItem.setCVCName(poOrder.getCVCName());
 | 
	
		
			
				|  |  | +				newItem.setCVenName(poOrder.getCVenName());
 | 
	
		
			
				|  |  | +				newItem.setCVenAbbName(poOrder.getCVenAbbName());
 | 
	
		
			
				|  |  | +				fabricCostInvoiceList.add(newItem);
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		// 计算委外入库的加工费
 | 
	
		
			
				|  |  | +		for (FabricOMOrder omOrder : omOrderList){
 | 
	
		
			
				|  |  | +			Optional<FabricCostInvoice> findItem = fabricCostInvoiceList.stream().filter(e->
 | 
	
		
			
				|  |  | +					"委外加工".equalsIgnoreCase(e.getCBusType()) &&
 | 
	
		
			
				|  |  | +							omOrder.getCVCName().equalsIgnoreCase(e.getCVCName()) &&
 | 
	
		
			
				|  |  | +							omOrder.getCVenAbbName().equalsIgnoreCase(e.getCVenAbbName())).findFirst();
 | 
	
		
			
				|  |  | +			FabricCostInvoice newItem = new FabricCostInvoice();
 | 
	
		
			
				|  |  | +			Double dMoney = 0.0;
 | 
	
		
			
				|  |  | +			if (oConvertUtils.listIsNotEmpty(omOrder.getFabricMoOrderRKList())){
 | 
	
		
			
				|  |  | +				for (FabricMoOrderRK orderIn : omOrder.getFabricMoOrderRKList()){
 | 
	
		
			
				|  |  | +					dMoney = DoubleOperation.add(dMoney, orderIn.getIProcessFee());
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			if (findItem.isPresent()) {
 | 
	
		
			
				|  |  | +				newItem = findItem.get();
 | 
	
		
			
				|  |  | +				newItem.setIMoney(DoubleOperation.add(newItem.getIMoney(), dMoney));
 | 
	
		
			
				|  |  | +			}else{
 | 
	
		
			
				|  |  | +				newItem.setCBusType("委外加工");
 | 
	
		
			
				|  |  | +				newItem.setIMoney(dMoney);
 | 
	
		
			
				|  |  | +				newItem.setCVCName(omOrder.getCVCName());
 | 
	
		
			
				|  |  | +				newItem.setCVenName(omOrder.getCVenName());
 | 
	
		
			
				|  |  | +				newItem.setCVenAbbName(omOrder.getCVenAbbName());
 | 
	
		
			
				|  |  | +				fabricCostInvoiceList.add(newItem);
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  		//获取委外订单运费发票金额
 | 
	
		
			
				|  |  |  		List<FabricCostInvoice> fabricCostInvoiceList3 = fabricLossMapper.getOmInvoiceMoneyYfList(code);
 | 
	
		
			
				|  |  |  		fabricCostInvoiceList.addAll(fabricCostInvoiceList3);
 | 
	
	
		
			
				|  | @@ -1512,7 +1388,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  		// 转入成本
 | 
	
		
			
				|  |  |  		fabricCostInvoiceList.addAll(getInCost(ret.getFabricPoOrderList(), omOrderList));
 | 
	
		
			
				|  |  |  		// 转出成本
 | 
	
		
			
				|  |  | -		List<FabricCostInvoice> outCostList = getOutCost(ret.getFabricPoOrderList(), ret.getFabricOMOrderList1(), ret.getFabricOMOrderList2());
 | 
	
		
			
				|  |  | +		List<FabricCostInvoice> outCostList = getOutCost(ret.getCCode(), ret.getFabricPoOrderList(), ret.getFabricOMOrderList1(), ret.getFabricOMOrderList2());
 | 
	
		
			
				|  |  |  		// 设置修改的工厂
 | 
	
		
			
				|  |  |  		if (editData != null){
 | 
	
		
			
				|  |  |  			List<FabricCostInvoice> editCostList = editData.getFabricCostInvoiceList();
 | 
	
	
		
			
				|  | @@ -1561,6 +1437,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  						formatItem.setCInvCode(itemIn.getCInvCode());
 | 
	
		
			
				|  |  |  						formatItem.setCColor(itemIn.getCColor());
 | 
	
		
			
				|  |  |  						formatItem.setCBatch(itemIn.getCBatch());
 | 
	
		
			
				|  |  | +						formatItem.setCInvName(itemIn.getCInvName());
 | 
	
		
			
				|  |  |  						formatItem.setIQuantity(itemIn.getIQuantity());
 | 
	
		
			
				|  |  |  						formatItem.setIPrice(itemIn.getIPrice());
 | 
	
		
			
				|  |  |  						allInList.add(formatItem);
 | 
	
	
		
			
				|  | @@ -1587,6 +1464,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  						formatItem.setCColor(item.getCColor());
 | 
	
		
			
				|  |  |  						formatItem.setCBatch(itemIn.getCBatch());
 | 
	
		
			
				|  |  |  						formatItem.setIQuantity(itemIn.getIQuantityIn());
 | 
	
		
			
				|  |  | +						formatItem.setCInvName(itemIn.getCInvName());
 | 
	
		
			
				|  |  |  						formatItem.setIPrice(itemIn.getIPrice());
 | 
	
		
			
				|  |  |  						allInList.add(formatItem);
 | 
	
		
			
				|  |  |  					}
 | 
	
	
		
			
				|  | @@ -1607,6 +1485,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  					outCopy.setCColorOut(omOut.getCColorOut());
 | 
	
		
			
				|  |  |  					outCopy.setIQuantity(omOut.getIQuantity());
 | 
	
		
			
				|  |  |  					outCopy.setIPrice(omOut.getIPrice());
 | 
	
		
			
				|  |  | +					outCopy.setCInvNameOut(omOut.getCInvNameOut());
 | 
	
		
			
				|  |  |  					outCopy.setCVCName(omOrder.getCVCName());
 | 
	
		
			
				|  |  |  					outCopy.setCVenAbbName(omOrder.getCVenAbbName());
 | 
	
		
			
				|  |  |  					outCopy.setCPlanCode(omOut.getCPlanCode());
 | 
	
	
		
			
				|  | @@ -1640,7 +1519,8 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		List<FabricCostInvoice> costInvoiceList = new ArrayList<>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		// 计算总转入成本
 | 
	
		
			
				|  |  | +		// 计算总转入成本、设置详情
 | 
	
		
			
				|  |  | +		List<FabricCostInvoiceDetail> invoiceDetailList = new ArrayList<>();
 | 
	
		
			
				|  |  |  		for (FabricMoOrderCK itemOut : omOutListAll){
 | 
	
		
			
				|  |  |  			if (itemOut.getIQuantity()>0){
 | 
	
		
			
				|  |  |  				FabricCostInvoice fabricCostInvoice = new FabricCostInvoice();
 | 
	
	
		
			
				|  | @@ -1650,6 +1530,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  				fabricCostInvoice.setIMoney(DoubleOperation.mul(itemOut.getIQuantity(),itemOut.getIPrice(), 2));
 | 
	
		
			
				|  |  |  				if (fabricCostInvoice.getIMoney()!=0) {
 | 
	
		
			
				|  |  |  					costInvoiceList.add(fabricCostInvoice);
 | 
	
		
			
				|  |  | +					invoiceDetailList.add(FabricCostInvoiceDetail.get(fabricCostInvoice, itemOut));
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
	
		
			
				|  | @@ -1664,6 +1545,8 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  				find.setIMoney(bdVal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
 | 
	
		
			
				|  |  |  			}else{
 | 
	
		
			
				|  |  |  				costInvoiceListGroup.add(fabricCostInvoice);
 | 
	
		
			
				|  |  | +				List<FabricCostInvoiceDetail> findList = invoiceDetailList.stream().filter(e->e.getCParentId().equalsIgnoreCase(fabricCostInvoice.getId())).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +				fabricCostInvoice.setCostInvoiceDetailList(findList);
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		return costInvoiceListGroup;
 | 
	
	
		
			
				|  | @@ -1671,12 +1554,13 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	/**
 | 
	
		
			
				|  |  |  	 * 根据采购入库详情,委外订单详情,获取转出成本。(入库数量-出库数量) * 单价
 | 
	
		
			
				|  |  | +	 * @param code - 计划号
 | 
	
		
			
				|  |  |  	 * @param poOrderList - 采购入库详情
 | 
	
		
			
				|  |  |  	 * @param omOrderListGn - 委外订单国内
 | 
	
		
			
				|  |  |  	 * @param omOrderListGw - 委外订单国外
 | 
	
		
			
				|  |  |  	 * @return
 | 
	
		
			
				|  |  |  	 */
 | 
	
		
			
				|  |  | -	private List<FabricCostInvoice> getOutCost(List<FabricPoOrder> poOrderList, List<FabricOMOrder> omOrderListGn, List<FabricOMOrder> omOrderListGw){
 | 
	
		
			
				|  |  | +	private List<FabricCostInvoice> getOutCost(String code, List<FabricPoOrder> poOrderList, List<FabricOMOrder> omOrderListGn, List<FabricOMOrder> omOrderListGw){
 | 
	
		
			
				|  |  |  		// 采购出入库去掉末尾两行:来源余纱、其他入库纱
 | 
	
		
			
				|  |  |  		List<FabricPoOrder> poOrderListReal = poOrderList.stream().filter(e->!e.getCPOID().equals("来源余料") &&
 | 
	
		
			
				|  |  |  				!e.getCPOID().equals("其他入库")).collect(Collectors.toList());
 | 
	
	
		
			
				|  | @@ -1691,7 +1575,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  					if (findItemOpt.isPresent()){
 | 
	
		
			
				|  |  |  						FabricPoOrderIn formatItem = findItemOpt.get();
 | 
	
		
			
				|  |  |  						Double dMoney = formatItem.getIPrice()*formatItem.getIQuantity()+itemIn.getIPrice()*itemIn.getIQuantity();
 | 
	
		
			
				|  |  | -						Double dQuantity = formatItem.getIQuantity()+itemIn.getIQuantity();
 | 
	
		
			
				|  |  | +						Double dQuantity = formatItem.getIQuantity()+itemIn.getIQuantityInvoice();
 | 
	
		
			
				|  |  |  						formatItem.setIPrice(dMoney/dQuantity);
 | 
	
		
			
				|  |  |  						formatItem.setIQuantity(dQuantity);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1700,9 +1584,10 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  						formatItem.setCInvCode(itemIn.getCInvCode());
 | 
	
		
			
				|  |  |  						formatItem.setCColor(itemIn.getCColor());
 | 
	
		
			
				|  |  |  						formatItem.setCBatch(itemIn.getCBatch());
 | 
	
		
			
				|  |  | -						formatItem.setIQuantity(itemIn.getIQuantity());
 | 
	
		
			
				|  |  | +						formatItem.setIQuantity(itemIn.getIQuantityInvoice());
 | 
	
		
			
				|  |  |  						formatItem.setIPrice(itemIn.getIPrice());
 | 
	
		
			
				|  |  |  						formatItem.setCInvName(itemIn.getCInvName()+" "+itemIn.getCColor());
 | 
	
		
			
				|  |  | +						formatItem.setCPlanCode(itemIn.getCPlanCode());
 | 
	
		
			
				|  |  |  						allInList.add(formatItem);
 | 
	
		
			
				|  |  |  					}
 | 
	
		
			
				|  |  |  				}
 | 
	
	
		
			
				|  | @@ -1721,6 +1606,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  					formatItem.setIPrice(itemIn.getIPrice());
 | 
	
		
			
				|  |  |  					formatItem.setCBusType("1");        // 国内
 | 
	
		
			
				|  |  |  					formatItem.setCInvName(itemIn.getCInvName()+" "+itemIn.getCColor());
 | 
	
		
			
				|  |  | +					formatItem.setCPlanCode(itemIn.getCPlanCode());
 | 
	
		
			
				|  |  |  					allInList.add(formatItem);
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
	
		
			
				|  | @@ -1738,13 +1624,15 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  					formatItem.setIPrice(itemIn.getIPrice());
 | 
	
		
			
				|  |  |  					formatItem.setCBusType("2");        // 国外
 | 
	
		
			
				|  |  |  					formatItem.setCInvName(itemIn.getCInvName()+" "+itemIn.getCColor());
 | 
	
		
			
				|  |  | +					formatItem.setCPlanCode(itemIn.getCPlanCode());
 | 
	
		
			
				|  |  |  					allInList.add(formatItem);
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		List<String> invIdGnList = new ArrayList<>();// 国内入库物料编码
 | 
	
		
			
				|  |  | +		//List<String> invIdGnList = new ArrayList<>();// 国内入库物料编码
 | 
	
		
			
				|  |  |  		List<String> invIdGwList = new ArrayList<>();// 国外入库物料编码
 | 
	
		
			
				|  |  | +		/*
 | 
	
		
			
				|  |  |  		for (FabricOMOrder omOrder : omOrderListGn){
 | 
	
		
			
				|  |  |  			List<FabricMoOrderRK> omRkList = omOrder.getFabricMoOrderRKList();
 | 
	
		
			
				|  |  |  			if (oConvertUtils.listIsNotEmpty(omRkList)) {
 | 
	
	
		
			
				|  | @@ -1752,7 +1640,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  					invIdGnList.add(omOrder.getCInvCode() + omOrder.getCColor() + rkItem.getCBatch());
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +		}*/
 | 
	
		
			
				|  |  |  		for (FabricOMOrder omOrder : omOrderListGw){
 | 
	
		
			
				|  |  |  			List<FabricMoOrderRK> omRkList = omOrder.getFabricMoOrderRKList();
 | 
	
		
			
				|  |  |  			if (oConvertUtils.listIsNotEmpty(omRkList)) {
 | 
	
	
		
			
				|  | @@ -1762,9 +1650,16 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		List<FabricPoOrderOut> invOutGnList = new ArrayList<>();
 | 
	
		
			
				|  |  | -		if (invIdGnList.size()>0){
 | 
	
		
			
				|  |  | -			invOutGnList = fabricLossMapper.getOmInGnOutList(invIdGnList);   //国内出库数量
 | 
	
		
			
				|  |  | +		List<FabricMoOrderCK> moOrderCKList = fabricLossMapper.getOmOutList19(code);
 | 
	
		
			
				|  |  | +		for (FabricMoOrderCK moOrderCK : moOrderCKList){
 | 
	
		
			
				|  |  | +			moOrderCK.setIPrice(0.0);
 | 
	
		
			
				|  |  | +			invOutGnList.add(FabricPoOrderOut.getByMoOut(moOrderCK));
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | +		/*
 | 
	
		
			
				|  |  | +		if (invIdGnList.size()>0){
 | 
	
		
			
				|  |  | +			invOutGnList = fabricLossMapper.getOmOutList19(code).stream().filter(e->invIdGnList.contains(e.getInvOutId())).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		}*/
 | 
	
		
			
				|  |  |  		List<FabricPoOrderOut> invOutGwList = new ArrayList<>();
 | 
	
		
			
				|  |  |  		if (invIdGwList.size()>0){
 | 
	
		
			
				|  |  |  			invOutGwList = fabricLossMapper.getOmInGwOutList(invIdGwList);   //国外出库数量
 | 
	
	
		
			
				|  | @@ -1785,6 +1680,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  					outCopy.setCInvCodeOut(omOut.getCInvCodeOut());
 | 
	
		
			
				|  |  |  					outCopy.setCColorOut(omOut.getCColorOut());
 | 
	
		
			
				|  |  |  					outCopy.setIQuantity(omOut.getIQuantity());
 | 
	
		
			
				|  |  | +					outCopy.setCSourceInvId(omOut.getCSourceInvId());
 | 
	
		
			
				|  |  |  					omOutListAll.add(outCopy);
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
	
		
			
				|  | @@ -1795,7 +1691,8 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			double inLeft = itemIn.getIQuantity();
 | 
	
		
			
				|  |  |  			for (FabricMoOrderCK outItem : omOutListAll){
 | 
	
		
			
				|  |  | -				if (outItem.getInvOutId().equalsIgnoreCase(itemIn.getInvId())){
 | 
	
		
			
				|  |  | +				if (outItem.getInvOutId().equalsIgnoreCase(itemIn.getInvId()) ||
 | 
	
		
			
				|  |  | +				outItem.getCSourceInvId().equalsIgnoreCase(itemIn.getInvId())){
 | 
	
		
			
				|  |  |  					double outLeft = outItem.getIQuantity();
 | 
	
		
			
				|  |  |  					bOmFind = true;
 | 
	
		
			
				|  |  |  					inLeft -= outLeft;
 | 
	
	
		
			
				|  | @@ -1845,7 +1742,8 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		List<FabricCostInvoice> costInvoiceList = new ArrayList<>();
 | 
	
		
			
				|  |  | -		// 计算总转入成本
 | 
	
		
			
				|  |  | +		List<FabricCostInvoiceDetail> costInvoiceDetailList = new ArrayList<>();
 | 
	
		
			
				|  |  | +		// 计算总转入成本,设置详情
 | 
	
		
			
				|  |  |  		for (FabricPoOrderIn itemIn : allInList){
 | 
	
		
			
				|  |  |  			if (itemIn.getIQuantity()>0){
 | 
	
		
			
				|  |  |  				FabricCostInvoice fabricCostInvoice = new FabricCostInvoice();
 | 
	
	
		
			
				|  | @@ -1856,6 +1754,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  				fabricCostInvoice.setIMoney(bdVal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
 | 
	
		
			
				|  |  |  				if (fabricCostInvoice.getIMoney()!=0) {
 | 
	
		
			
				|  |  |  					costInvoiceList.add(fabricCostInvoice);
 | 
	
		
			
				|  |  | +					costInvoiceDetailList.add(FabricCostInvoiceDetail.get(fabricCostInvoice, itemIn));
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
	
		
			
				|  | @@ -1871,6 +1770,8 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  				find.setIMoney(bdVal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
 | 
	
		
			
				|  |  |  			}else{
 | 
	
		
			
				|  |  |  				costInvoiceListGroup.add(fabricCostInvoice);
 | 
	
		
			
				|  |  | +				List<FabricCostInvoiceDetail> findList = costInvoiceDetailList.stream().filter(e->e.getCParentId().equalsIgnoreCase(fabricCostInvoice.getId())).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +				fabricCostInvoice.setCostInvoiceDetailList(findList);
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1908,6 +1809,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  		// 获取材料出库
 | 
	
		
			
				|  |  |  		// 获取委外订单行id,出库物料信息,出库数量
 | 
	
		
			
				|  |  |  		List<FabricMoOrderCK> rowOutList = fabricLossMapper.getOmRowOutList(code);
 | 
	
		
			
				|  |  | +		rowOutList = rowOutList.stream().filter(e->e.getIQuantityOut()>0).collect(Collectors.toList());
 | 
	
		
			
				|  |  |  		rowOutList.forEach(e->e.setBCurPlan(false));
 | 
	
		
			
				|  |  |  		// 委外入库
 | 
	
		
			
				|  |  |  		List<FabricMoOrderRK> rowInList = fabricLossMapper.getOmInDetailList(code);
 | 
	
	
		
			
				|  | @@ -1930,7 +1832,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  			otherInList.forEach(e -> e.setITempUseSum(0.0));
 | 
	
		
			
				|  |  |  			// 设置其他委外订单入库的材料成本,只计算一层
 | 
	
		
			
				|  |  |  			setOtherOmInPriceList(code, otherInList);
 | 
	
		
			
				|  |  | -			// 设置形态转换入库成本
 | 
	
		
			
				|  |  | +			// 设置形态转换入库成本,及源头物料
 | 
	
		
			
				|  |  |  			setAssemVouchInPriceList(otherInList);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		// 设置非本次委外加工出入库成本
 | 
	
	
		
			
				|  | @@ -2047,7 +1949,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  			List<String> invIdList = new ArrayList<>();
 | 
	
		
			
				|  |  |  			outList.forEach(e->invIdList.add(e.getInvOutId()));
 | 
	
		
			
				|  |  |  			List<FabricCommonIn> inList = fabricLossMapper.getInListByInvId(invIdList);
 | 
	
		
			
				|  |  | -			// 设置形态转换的源头单价
 | 
	
		
			
				|  |  | +			// 设置形态转换的源头单价,及源头物料
 | 
	
		
			
				|  |  |  			setAssemVouchInPriceList(inList);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			// 每行设置金额
 | 
	
	
		
			
				|  | @@ -2144,15 +2046,27 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  	 */
 | 
	
		
			
				|  |  |  	private void setAssemVouchsInPrice(List<FabricCommonIn> commonInList, List<FabricAssemVouchsOrgIn> assemVouchsOrgInList,
 | 
	
		
			
				|  |  |  	                                    List<FabricInPrice> priceList){
 | 
	
		
			
				|  |  | -		priceList.forEach(e->{
 | 
	
		
			
				|  |  | -			commonInList.forEach(i->{
 | 
	
		
			
				|  |  | -				if (assemVouchsOrgInList.stream().filter(v->
 | 
	
		
			
				|  |  | -						v.getAutoId().equals(e.getAutoId())&&
 | 
	
		
			
				|  |  | -								i.getInvId().equalsIgnoreCase(v.getCInvIdFinal())).count()>0){
 | 
	
		
			
				|  |  | -					i.setIPrice(DoubleOperation.getScale(e.getIPrice(),4));
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -			});
 | 
	
		
			
				|  |  | -		});
 | 
	
		
			
				|  |  | +		for (FabricInPrice inPrice : priceList){
 | 
	
		
			
				|  |  | +			for (FabricCommonIn commonIn : commonInList){
 | 
	
		
			
				|  |  | +				Optional<FabricAssemVouchsOrgIn> findOpt = assemVouchsOrgInList.stream().filter(e->
 | 
	
		
			
				|  |  | +								e.getAutoId().equals(inPrice.getAutoId()) &&
 | 
	
		
			
				|  |  | +										commonIn.getInvId().equalsIgnoreCase(e.getCInvIdFinal())).findFirst();
 | 
	
		
			
				|  |  | +				if (findOpt.isPresent()){
 | 
	
		
			
				|  |  | +					commonIn.setIPrice(DoubleOperation.getScale(inPrice.getIPrice(),4));
 | 
	
		
			
				|  |  | +					commonIn.setCSourceInvId(findOpt.get().getCInvIdAfter());
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +//		priceList.forEach(e->{
 | 
	
		
			
				|  |  | +//			commonInList.forEach(i->{
 | 
	
		
			
				|  |  | +//				if (assemVouchsOrgInList.stream().filter(v->
 | 
	
		
			
				|  |  | +//						v.getAutoId().equals(e.getAutoId())&&
 | 
	
		
			
				|  |  | +//								i.getInvId().equalsIgnoreCase(v.getCInvIdFinal())).count()>0){
 | 
	
		
			
				|  |  | +//					i.setIPrice(DoubleOperation.getScale(e.getIPrice(),4));
 | 
	
		
			
				|  |  | +//					i.setCSourceInvId();
 | 
	
		
			
				|  |  | +//				}
 | 
	
		
			
				|  |  | +//			});
 | 
	
		
			
				|  |  | +//		});
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	/**
 | 
	
	
		
			
				|  | @@ -2211,7 +2125,8 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 | 
	
		
			
				|  |  |  				for (FabricPoOrderIn orderIn : poOrder.getFabricPoOrderInList()) {
 | 
	
		
			
				|  |  |  					Double dInLeft = orderIn.getIQuantity();    // 入库剩余数量
 | 
	
		
			
				|  |  |  					for (FabricMoOrderCK ck : moOrderCKList){
 | 
	
		
			
				|  |  | -						if (!ck.getInvOutId().equalsIgnoreCase(orderIn.getInvId())){
 | 
	
		
			
				|  |  | +						if (!ck.getInvOutId().equalsIgnoreCase(orderIn.getInvId()) &&
 | 
	
		
			
				|  |  | +						!ck.getCSourceInvId().equalsIgnoreCase(orderIn.getInvId())){
 | 
	
		
			
				|  |  |  							continue;
 | 
	
		
			
				|  |  |  						}
 | 
	
		
			
				|  |  |  						Double dCurOutSum = ck.getIQuantityOut();   // 出库单出库数量
 |