| 
					
				 | 
			
			
				@@ -476,9 +476,9 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		ret.setNumber(oConvertUtils.getDouble(fabricLossMapper.getNumber(code),0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// 销售出库数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Double dOutSum = oConvertUtils.getDouble(fabricLossMapper.getSaleOutSum(code),0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (dOutSum>ret.getNumber()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			dOutSum = ret.getNumber(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//		if (dOutSum>ret.getNumber()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//			dOutSum = ret.getNumber(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		ret.setOutboundNumber(dOutSum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// 销售订单附件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<AccessorItem> accessorItemList = fabricLossMapper.getSoAccList(ret.getContractNo()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -655,8 +655,8 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// 多发/少发,根/米,损耗设置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		for (FabricOMOrder fabricOMOrder : omOrderListOrderAllList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			double dLoss = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if (fabricOMOrder.getIQuantityOut()!=0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				dLoss = (1 - fabricOMOrder.getIQuantityIn() / fabricOMOrder.getIQuantityOut()) * 100; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (fabricOMOrder.getIQuantityIn()!=0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				dLoss = (fabricOMOrder.getIQuantityOut() / fabricOMOrder.getIQuantityIn() -1) * 100; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if ("02".equals(fabricOMOrder.getCComUnitCode())){  // 根 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1393,6 +1393,8 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		moOrderCKList.addAll(moOrderCKList19); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// 根据采购订单轮询,设置分配数量、余纱、损耗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<FabricPoOrder> poOrderList = ret.getFabricPoOrderList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		for (FabricPoOrder poOrder : poOrderList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			Double dOutSum = 0.0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			List<String> omVenList = new ArrayList<>(); // 委外供应商 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1426,7 +1428,88 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			poOrder.setIQuantityOut(dOutSum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			poOrder.setIQuantityLeft(DoubleOperation.sub(poOrder.getIQuantityIn(),dOutSum)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			poOrder.setIQuantityLeftRate(DoubleOperation.div(poOrder.getIQuantityLeft(),poOrder.getIQuantityIn(), 4)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// ---- 采购订单分行修改 begin --------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<FabricPoOrder> toAddpoOrderList = new ArrayList<>();   // 委外供应商有多个情况,待添加的记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (FabricPoOrder poOrder : poOrderList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (oConvertUtils.listIsEmpty(poOrder.getFabricPoOrderOutList())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				poOrder.setFabricPoOrderOutList(new ArrayList<>()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			poOrder.setIQuantityOut(0.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			List<String> omVenList = new ArrayList<>(); // 委外供应商 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (oConvertUtils.listIsNotEmpty(poOrder.getFabricPoOrderInList())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				for (FabricPoOrderIn orderIn : poOrder.getFabricPoOrderInList()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					Double dInLeft = orderIn.getIQuantity();    // 入库剩余数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					for (FabricMoOrderCK ck : moOrderCKList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						if (!ck.getInvOutId().equalsIgnoreCase(orderIn.getInvId()) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								!ck.getCSourceInvId().equalsIgnoreCase(orderIn.getInvId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						Double dCurOutSum = DoubleOperation.sub(ck.getIQuantityOut(),ck.getITempUseSum());   // 出库单出库数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						if (dCurOutSum<=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						String omVenAbbName = oConvertUtils.getString(ck.getCOmVenAbbName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						if (oConvertUtils.isEmpty(poOrder.getOmcVenAbbName())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							poOrder.setOmcVenAbbName(omVenAbbName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						Double dRealOut = Math.min(dInLeft,dCurOutSum);// 对比入库单,本条出库数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						ck.setITempUseSum(DoubleOperation.add(ck.getITempUseSum(),dRealOut));// 出库累计数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						dInLeft = DoubleOperation.sub(dInLeft,dRealOut);    // 入库剩余数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						FabricPoOrder curOrder = poOrder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						// 设置其他新加采购订单出库记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						if (!omVenAbbName.equalsIgnoreCase(poOrder.getOmcVenAbbName())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							Optional<FabricPoOrder> findOpt = toAddpoOrderList.stream().filter(e-> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+									e.getCInvCode().equalsIgnoreCase(poOrder.getCInvCode())&& 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											e.getCColor().equalsIgnoreCase(poOrder.getCColor())&& 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+											omVenAbbName.equalsIgnoreCase(e.getOmcVenAbbName())).findFirst(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							if (findOpt.isPresent()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								curOrder = findOpt.get(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							}else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								FabricPoOrder copyPoOrder = JSON.parseObject(JSON.toJSONString(poOrder), FabricPoOrder.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								copyPoOrder.setOmcVenAbbName(omVenAbbName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								copyPoOrder.setIQuantity(0.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								copyPoOrder.setIQuantityOut(0.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								copyPoOrder.setFabricPoOrderInList(new ArrayList<>()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								List<FabricPoOrderOut> findList = poOrder.getFabricPoOrderOutList().stream().filter(e-> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										oConvertUtils.getString(e.getCWhName()).indexOf(omVenAbbName)>-1 || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										oConvertUtils.getString(e.getCCode()).indexOf(omVenAbbName)>-1).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								copyPoOrder.setFabricPoOrderOutList(findList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								copyPoOrder.setIQuantityLeft(findList.stream().mapToDouble(FabricPoOrderOut::getIQuantity).sum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								findList = poOrder.getFabricPoOrderOutList().stream().filter(e-> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+										oConvertUtils.getString(e.getCWhName()).indexOf(omVenAbbName)==-1 && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+												oConvertUtils.getString(e.getCCode()).indexOf(omVenAbbName)==-1).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								poOrder.setFabricPoOrderOutList(findList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								toAddpoOrderList.add(copyPoOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								curOrder = copyPoOrder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						curOrder.setIQuantityOut(DoubleOperation.add(curOrder.getIQuantityOut(), dRealOut)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						if (dInLeft<=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 设置余纱、损耗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			poOrder.setIQuantityLeft(poOrder.getFabricPoOrderOutList().stream().mapToDouble(FabricPoOrderOut::getIQuantity).sum()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			poOrder.setIQuantityLeftRate(DoubleOperation.div(poOrder.getIQuantityLeft(),poOrder.getIQuantityIn(), 4)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (toAddpoOrderList.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 设置损耗,清除采购数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (FabricPoOrder poOrder:toAddpoOrderList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				poOrder.setIQuantityLeftRate(DoubleOperation.div(poOrder.getIQuantityLeft(),poOrder.getIQuantityIn(), 4)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				poOrder.setIQuantityIn(0.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			poOrderList.addAll(toAddpoOrderList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			poOrderList.sort(Comparator.comparing(FabricPoOrder::getCInvName).thenComparing(FabricPoOrder::getCPOID)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// ---- 采购订单分行修改 end --------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// 设置来源余纱和其他入库的纱:批号是期初的,算来源余纱;物料名称是杂纱的,算其他入库的纱 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<FabricPoOrderOut> lyysList = new ArrayList<>();    // 来源余纱 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<FabricPoOrderOut> qtrkList = new ArrayList<>();    // 其他入库的纱 
			 |