| 
					
				 | 
			
			
				@@ -50,6 +50,7 @@ import com.ruoyi.warehouseBusiness.domain.enums.FeesTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ruoyi.warehouseBusiness.domain.enums.WarehouseActIdEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ruoyi.warehouseBusiness.domain.enums.WarehouseTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ruoyi.warehouseBusiness.domain.vo.AppWarehouseInfoVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ruoyi.warehouseBusiness.domain.vo.CalculateStorageFeesInfoVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ruoyi.warehouseBusiness.domain.vo.StorageFeeCalculationResultVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ruoyi.warehouseBusiness.excel.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ruoyi.warehouseBusiness.mapper.*; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3628,6 +3629,10 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 查询总账是否存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             TWhgenleg tWhgenle = queryTWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (Objects.nonNull(tWhgenle) && wbItem.getfBsdate().before(tWarehouseBills.getfChargedate())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new WarehouseException("业务日期不得超出库存总帐日期"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //  入库数特殊不判断入账 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if ("SJCK".equals(billsType)) { // 出库 查询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4022,7 +4027,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 storageFeesDto.setStartTime((Date) item.get("fOriginalbilldate")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 storageFeesDto.setEndTime(fBsdate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else if (WarehouseTypeEnum.HQZY.getType().equals(fBilltype)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                fInventoryDays = DateUtils.getDateDay(fBsdate, (Date) item.get("fOriginalbilldate")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fInventoryDays = DateUtils.getDateDay(fBsdate, (Date) item.get("fChargedate")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 fBillingDays = fInventoryDays; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 storageFeesDto.setStartTime(fBsdate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 storageFeesDto.setEndTime((Date) item.get("fOriginalbilldate")); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4033,6 +4038,9 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 fInventoryDays = DateUtils.getDateDay(warehouseBills.getfBillingDeadline(), (Date) item.get("fOriginalbilldate")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 fBillingDays = DateUtils.getDateDay(warehouseBills.getfBillingDeadline(), (Date) item.get("fChargedate")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (fBillingDays <= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             storageFeesDto.setDays(fBillingDays); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             storageFeesDto.setfMblno((String) item.get("fMblno")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 赋值要计算的数量单位 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4100,6 +4108,124 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public Map<String, Object> getWarehouseItems1(TWarehouseBills warehouseBills, List<CalculateStorageFeesInfoVO> feesInfoVOList, LoginUser loginUser, String cangKey) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Object> map = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        BigDecimal sumAmt = new BigDecimal(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<TWarehousebillsfees> itemsList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<SysDictData> taxRate = sysDictDataMapper.selectDictDataByType("tax_rate"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (CalculateStorageFeesInfoVO item : feesInfoVOList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (StringUtils.isNull(item.getFBillingway())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new WarehouseException("单号:" + item.getFBillno() + ",业务日期:" + item.getFBsdate() + "未找到库存总账的计费单位,请确认"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            CalculateStorageFeesDTO storageFeesDto = new CalculateStorageFeesDTO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            storageFeesDto.setfCorpid(warehouseBills.getfCorpid()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            storageFeesDto.setCangKey(cangKey); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            storageFeesDto.setWarehouseId(Long.parseLong(String.valueOf(item.getWarehouse()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String fGoodsid = item.getFTypeid(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (StringUtils.isNotEmpty(fGoodsid)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fGoodsid = "\"" + fGoodsid + "\""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            storageFeesDto.setfGoodsid(fGoodsid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            long fId = item.getFId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 累计计费天数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (Objects.equals(item.getFChargedate().getTime(), item.getFOriginalbilldate().getTime())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                storageFeesDto.setEarlySumDays(0L); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                storageFeesDto.setEarlySumDays(DateUtils.getDateDay(item.getFChargedate(), item.getFOriginalbilldate())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 库存天数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            long fInventoryDays; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 要计费天数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            long fBillingDays; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (WarehouseTypeEnum.SJCK.getType().equals(item.getFBilltype())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fInventoryDays = DateUtils.getDateDay(item.getFBsdate(), item.getFChargedate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fBillingDays = fInventoryDays; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                storageFeesDto.setStartTime(item.getFOriginalbilldate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                storageFeesDto.setEndTime(item.getFBsdate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else if (WarehouseTypeEnum.HQZY.getType().equals(item.getFBilltype())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fInventoryDays = DateUtils.getDateDay(item.getFBsdate(), item.getFChargedate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fBillingDays = fInventoryDays; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                storageFeesDto.setStartTime(item.getFBsdate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                storageFeesDto.setEndTime(item.getFOriginalbilldate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                storageFeesDto.setStartTime(item.getFChargedate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                storageFeesDto.setEndTime(warehouseBills.getfBillingDeadline()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fInventoryDays = DateUtils.getDateDay(warehouseBills.getfBillingDeadline(), item.getFOriginalbilldate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fBillingDays = DateUtils.getDateDay(warehouseBills.getfBillingDeadline(), item.getFChargedate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (fBillingDays <= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            storageFeesDto.setDays(fBillingDays); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            storageFeesDto.setfMblno(item.getFMblno()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 赋值要计算的数量单位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            storageFeesDto.setfQty(new BigDecimal(item.getFQty())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            storageFeesDto.setfVolumn(item.getFVolumn()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            storageFeesDto.setfNetweight(item.getFNetweight()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            storageFeesDto.setfGrossweight(item.getFGrossweight()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 仓储费协议计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            StorageFeeCalculationResultVO feeCalculationResultVO = tWarehouseAgreementService.getCarryingCost(storageFeesDto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (Objects.isNull(feeCalculationResultVO)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String mblno = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (StringUtils.isNotNull(item.getFMblno())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                mblno = item.getFMblno(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            map.put("feeId", feeCalculationResultVO.getFeeId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            map.put("itemFeeId", feeCalculationResultVO.getFeeId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sumAmt = sumAmt.add(feeCalculationResultVO.getAmt()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            TWarehousebillsfees fees = new TWarehousebillsfees(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfFeeid(feeCalculationResultVO.getFeeId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfDc("D"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfAmt(feeCalculationResultVO.getAmt()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setSrcId(fId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfMblno(mblno); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setRemark(feeCalculationResultVO.getRemark()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfFeeunitid(2L); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfAmount(feeCalculationResultVO.getAmt()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfBillstatus(2L); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfCurrency("RMB"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfBsdate(item.getFBsdate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfBillingQty(feeCalculationResultVO.getQty()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfUnitprice(feeCalculationResultVO.getAmt()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfBilltype(item.getFBilltype()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfBillingDays(fBillingDays); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfQty(new BigDecimal(1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfPid(warehouseBills.getfId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfInventoryDays(fInventoryDays); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfExrate(new BigDecimal(1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setPriceDateRemarks(feeCalculationResultVO.getBillingInterval()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfCorpid(warehouseBills.getfCorpid()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfMarks(item.getFMarks()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setSrcBillNo(item.getFBillno()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setCreateBy(loginUser.getUser().getUserName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfWarehouseid(storageFeesDto.getWarehouseId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfProductName(item.getFGoodsids()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (WarehouseTypeEnum.SJCK.getType().equals(item.getFBilltype()) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    WarehouseTypeEnum.HQZY.getType().equals(item.getFBilltype())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fees.setfBillingDeadline(item.getFBsdate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fees.setfBillingDeadline(warehouseBills.getfBillingDeadline()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfChargedate(item.getFChargedate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfTaxrate(new BigDecimal(taxRate.get(0).getDictValue())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfOriginalbilldate(item.getFOriginalbilldate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fees.setfBillingway(feeCalculationResultVO.getUnit()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWarehousebillsfeesMapper.insertTWarehousebillsfees(fees); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            itemsList.add(fees); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        map.put("sumAmt", sumAmt); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        map.put("itemsList", itemsList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 新增库存费计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4197,6 +4323,93 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return AjaxResult.success(map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public AjaxResult calculateStorageFees1(TWarehouseBills tWarehouseBills, LoginUser loginUser, String billsType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.isNull(tWarehouseBills.getfCorpid())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return AjaxResult.error("请选择客户信息"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tWarehouseBills.setfBillingDeadline(DateUtils.dateConversionMax(tWarehouseBills.getfBillingDeadline())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        long fPid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.isNull(tWarehouseBills.getfId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 生成流水号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Date time = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String billNo = billnoSerialServiceImpl.getSerialNumber(WarehouseTypeEnum.JSCCF.getType(), time); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWarehouseBills.setfBillno(billNo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (StringUtils.isNull(tWarehouseBills.getfBillstatus())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                tWarehouseBills.setfBillstatus(2L); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWarehouseBills.setfBilltype(billsType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWarehouseBills.setfBsdeptid(loginUser.getUser().getDeptId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWarehouseBills.setCreateBy(loginUser.getUser().getUserName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWarehouseBills.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWarehouseBillsMapper.insertTWarehousebills(tWarehouseBills); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fPid = tWarehouseBills.getfId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWarehousebillsfeesMapper.deleteByFPid(tWarehouseBills.getfId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWarehousebillsitemsMapper.deleteByFPid(tWarehouseBills.getfId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWarehouseBills.setUpdateBy(loginUser.getUser().getUserName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWarehouseBills.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fPid = tWarehouseBills.getfId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 计划物资明细 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<TWarehousebillsfees> itemsList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Object> map = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //调一次公共方法,获取字符类型的true或者false传 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String cangKey = sysConfigServiceImpl.selectConfigByKey("agreement.warehouse"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 查出所有仓库 给后续匹配仓库名字使用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<TWarehouse> warehouseList = tWarehouseMapper.selectTWarehouseList(new TWarehouse()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 查询 出库 货转的库存明细 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tWarehouseBills.setfId(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<CalculateStorageFeesInfoVO> feesInfoVOList = tWarehousebillsitemsMapper.selectStorageFeeItemList1(tWarehouseBills); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tWarehouseBills.setfId(fPid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (CollectionUtils.isNotEmpty(feesInfoVOList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<String, Object> mapItem = getWarehouseItems1(tWarehouseBills, feesInfoVOList, loginUser, cangKey); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (mapItem.containsKey("error")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return AjaxResult.error((String) mapItem.get("error")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            itemsList = (List<TWarehousebillsfees>) mapItem.get("itemsList"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 给仓库信息赋值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            itemsList.forEach(li -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                TWarehouse tWarehouse = warehouseList.stream().filter(warehouse -> Objects.equals(warehouse.getfId(), li.getfWarehouseid())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .findFirst().orElseThrow(() -> new WarehouseException("找不到仓库信息")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                li.setWarehouseName(tWarehouse.getfName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<CalculateStorageFeesInfoVO> whgenlegfeesInfoVOList = tWhgenlegMapper.selectStorageFeeItemList1(tWarehouseBills); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (CollectionUtils.isNotEmpty(whgenlegfeesInfoVOList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 如果是计算之前日期的库存总帐则需要使用当时日期的准确数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!tWarehouseBills.getfBillingDeadline().after(new Date())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                updateWhgenlegs1(tWarehouseBills, whgenlegfeesInfoVOList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<String, Object> mapItem = getWarehouseItems1(tWarehouseBills, whgenlegfeesInfoVOList, loginUser, cangKey); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (mapItem.containsKey("error")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return AjaxResult.error((String) mapItem.get("error")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<TWarehousebillsfees> itemList = (List<TWarehousebillsfees>) mapItem.get("itemsList"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 给仓库信息赋值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (TWarehousebillsfees li : itemList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                TWarehouse tWarehouse = warehouseList.stream().filter(warehouse -> Objects.equals(warehouse.getfId(), li.getfWarehouseid())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .findFirst().orElseThrow(() -> new WarehouseException("找不到仓库信息")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                li.setWarehouseName(tWarehouse.getfName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                itemsList.add(li); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TFees tFees = new TFees(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tFees.setfStatus("2"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tFees.setDelFlag("0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<TFees> feesList = tFeesMapper.selectTFeesList(tFees); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (CollectionUtils.isEmpty(itemsList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new WarehouseException("未找到合适的库存明细"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        map.put("feesList", feesList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        map.put("warehouseBills", tWarehouseBills); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        map.put("warehouseItemList", itemsList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return AjaxResult.success(map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 更新库存总帐当日实际 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4257,6 +4470,58 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return tWhgenlegs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void updateWhgenlegs1(TWarehouseBills tWarehouseBills, List<CalculateStorageFeesInfoVO> infoVOList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 获取区间时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tWarehouseBills.setItemBsDateList(timeConversion(tWarehouseBills.getfBillingDeadline(), new Date())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 查询时间区间内的仓储业务明细信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<TWarehousebillsitems> warehousebillsitemsList = tWarehousebillsitemsMapper.selectListByCorpId(tWarehouseBills); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 如果没有则直接结束此方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (CollectionUtils.isEmpty(warehousebillsitemsList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        infoVOList.forEach(whgenleg -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 判断是否计算箱号 0为 不计算 1为计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            boolean ifCntrno = "1".equals(whgenleg.getIfCntrno()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 组合一个库存总帐类使用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            TWhgenleg tWhgenleg = new TWhgenleg(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWhgenleg.setfCorpid(tWarehouseBills.getfCorpid()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWhgenleg.setfQtyblc(whgenleg.getFQty()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWhgenleg.setfMarks(whgenleg.getFMarks()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWhgenleg.setfMblno(whgenleg.getFMblno()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWhgenleg.setfCntrno(whgenleg.getFCntrno()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWhgenleg.setfGoodsid(whgenleg.getFGoodsid()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWhgenleg.setfNetweightblc(whgenleg.getFNetweight()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWhgenleg.setfGrossweightblc(whgenleg.getFGrossweight()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWhgenleg.setfWarehouseid(whgenleg.getWarehouseLocationid()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.info("每次yuan件数、毛重、净重、:{}, {}, {}, {}", tWhgenleg.getfQtyblc(), tWhgenleg.getfVolumnblc(), tWhgenleg.getfNetweightblc(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWhgenleg.getfGrossweightblc()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<TWarehousebillsitems> itemList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (TWarehousebillsitems li : warehousebillsitemsList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if ((!Objects.equals(li.getfGoodsid(), tWhgenleg.getfGoodsid())) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        (!Objects.equals(li.getfWarehouselocid(), tWhgenleg.getfWarehouseid()) || Objects.equals(li.getfTransferWarehouselocid(), tWhgenleg.getfWarehouseid())) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        !li.getfMblno().equals(tWhgenleg.getfMblno()) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        (!li.getfMarks().equals(tWhgenleg.getfMarks())) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        (ifCntrno && !li.getfCntrno().equals(tWhgenleg.getfCntrno())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                itemList.add(li); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 如果找不到符合条件的明细信息 直接结束此方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (CollectionUtils.isNotEmpty(itemList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                itemList.forEach(li -> updateWhgenlegCalculate(tWhgenleg, li)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.info("每次的件数、毛重、净重、:{}, {}, {}, {}", tWhgenleg.getfQtyblc(), tWhgenleg.getfVolumnblc(), tWhgenleg.getfNetweightblc(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWhgenleg.getfGrossweightblc()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 覆盖数量、毛重、净重 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            whgenleg.setFQty(tWhgenleg.getfQtyblc()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            whgenleg.setFNetweight(tWhgenleg.getfNetweightblc()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            whgenleg.setFGrossweight(tWhgenleg.getfGrossweightblc()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 根据仓储明细更新库存总帐数量、毛重、净重 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -6770,6 +7035,10 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public AjaxResult feeReviewSubmit(Long id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         TWarehousebillsfees warehousebillsfees = tWarehousebillsfeesMapper.selectTWarehousebillsfeesById(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.isNull(warehousebillsfees.getfCorpid()) || StringUtils.isNull(warehousebillsfees.getfFeeid()) || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                StringUtils.isNull(warehousebillsfees.getfFeeunitid())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new WarehouseException("请确认是否维护客户、费用信息、计价单位"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (Objects.isNull(warehousebillsfees) || Objects.nonNull(warehousebillsfees.getfReviewDate())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new WarehouseException("未找到费用信息或费用已被审核"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 |