|  | @@ -49,9 +49,7 @@ import com.ruoyi.warehouseBusiness.domain.dto.CalculateStorageFeesDTO;
 | 
	
		
			
				|  |  |  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.domain.vo.*;
 | 
	
		
			
				|  |  |  import com.ruoyi.warehouseBusiness.excel.*;
 | 
	
		
			
				|  |  |  import com.ruoyi.warehouseBusiness.mapper.*;
 | 
	
		
			
				|  |  |  import com.ruoyi.warehouseBusiness.service.ITWarehouseBillsService;
 | 
	
	
		
			
				|  | @@ -3246,55 +3244,6 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  | -     * 根据仓库主表id 更新对应明细表状态
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     * @param fPid 仓库主表id
 | 
	
		
			
				|  |  | -     * @return 结果
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    @Transactional
 | 
	
		
			
				|  |  | -    public AjaxResult storageFeeFollow(Long fPid, long fettle) {
 | 
	
		
			
				|  |  | -        if (StringUtils.isNull(fPid)) {
 | 
	
		
			
				|  |  | -            return AjaxResult.error("仓库更新状态未找到主表信息,请与管理员联系");
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        int warehouseUpdateResult = tWarehouseBillsMapper.warehouseFollowUpdate(fPid, fettle, new Date());
 | 
	
		
			
				|  |  | -        if (warehouseUpdateResult <= 0) {
 | 
	
		
			
				|  |  | -            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | -            return AjaxResult.error("更新库存明细状态失败,请联系管理员");
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        TWarehousebillsfees warehousebillsfees = new TWarehousebillsfees();
 | 
	
		
			
				|  |  | -        warehousebillsfees.setfPid(fPid);
 | 
	
		
			
				|  |  | -        List<TWarehousebillsfees> warehousebillsfeesList = tWarehousebillsfeesMapper.selectTWarehousebillsfeesList(warehousebillsfees);
 | 
	
		
			
				|  |  | -        for (TWarehousebillsfees wareItem : warehousebillsfeesList) {
 | 
	
		
			
				|  |  | -            if (StringUtils.isNull(wareItem.getSrcId())) {
 | 
	
		
			
				|  |  | -                continue;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            if ("KCZZ".equals(wareItem.getfBilltype())) {
 | 
	
		
			
				|  |  | -                TWhgenleg tWhgenleg = tWhgenlegMapper.selectTWhgenlegById(wareItem.getSrcId());
 | 
	
		
			
				|  |  | -                tWhgenleg.setfChargedate(DateUtils.dateAdd(wareItem.getfBillingDeadline(), 1));
 | 
	
		
			
				|  |  | -                int i = tWhgenlegMapper.updateTWhgenleg(tWhgenleg);
 | 
	
		
			
				|  |  | -                if (i <= 0) {
 | 
	
		
			
				|  |  | -                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | -                    return AjaxResult.error("更新库存费用状态失败,请联系管理员");
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            } else {
 | 
	
		
			
				|  |  | -                TWarehousebillsitems tWarehousebillsitems = tWarehousebillsitemsMapper.selectTWarehousebillsitemsById(wareItem.getSrcId());
 | 
	
		
			
				|  |  | -                tWarehousebillsitems.setfChargedate(DateUtils.dateAdd(wareItem.getfBillingDeadline(), 1));
 | 
	
		
			
				|  |  | -                if ("SJCK".equals(wareItem.getfBilltype())) {
 | 
	
		
			
				|  |  | -                    tWarehousebillsitems.setfStorageFeeDeadline(wareItem.getfBillingDeadline());
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                tWarehousebillsitemsMapper.updateTWarehousebillsitems(tWarehousebillsitems);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        int feesUpdateResult = tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(fPid, fettle, new Date());
 | 
	
		
			
				|  |  | -        if (feesUpdateResult <= 0) {
 | 
	
		
			
				|  |  | -            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | -            return AjaxResult.error("更新库存费用状态失败,请联系管理员");
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        return AjaxResult.success();
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  |       * 入库确认
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  |       * @param warehouseBills      主表
 | 
	
	
		
			
				|  | @@ -4427,6 +4376,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |              tWhgenleg.setfMarks((String) whgenleg.get("fMarks"));
 | 
	
		
			
				|  |  |              tWhgenleg.setfMblno((String) whgenleg.get("fMblno"));
 | 
	
		
			
				|  |  |              tWhgenleg.setfCntrno((String) whgenleg.get("fCntrno"));
 | 
	
		
			
				|  |  | +            tWhgenleg.setfOriginalbilldate((Date) whgenleg.get("fOriginalbilldate"));
 | 
	
		
			
				|  |  |              tWhgenleg.setfGoodsid(Long.parseLong(whgenleg.get("fGoodsid").toString()));
 | 
	
		
			
				|  |  |              tWhgenleg.setfNetweightblc(new BigDecimal(whgenleg.get("fNetweight").toString()));
 | 
	
		
			
				|  |  |              tWhgenleg.setfGrossweightblc(new BigDecimal(whgenleg.get("fGrossweight").toString()));
 | 
	
	
		
			
				|  | @@ -4440,6 +4390,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |                  if ((!Objects.equals(li.getfGoodsid(), tWhgenleg.getfGoodsid())) ||
 | 
	
		
			
				|  |  |                          (!Objects.equals(li.getfWarehouselocid(), tWhgenleg.getfWarehouseid()) || Objects.equals(li.getfTransferWarehouselocid(), tWhgenleg.getfWarehouseid())) ||
 | 
	
		
			
				|  |  |                          !li.getfMblno().equals(tWhgenleg.getfMblno()) ||
 | 
	
		
			
				|  |  | +                        !Objects.equals(li.getfOriginalbilldate(), tWhgenleg.getfOriginalbilldate()) ||
 | 
	
		
			
				|  |  |                          (!li.getfMarks().equals(tWhgenleg.getfMarks())) ||
 | 
	
		
			
				|  |  |                          (ifCntrno && !li.getfCntrno().equals(tWhgenleg.getfCntrno()))
 | 
	
		
			
				|  |  |                  ) {
 | 
	
	
		
			
				|  | @@ -4894,24 +4845,92 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |                  auditItems.setTimes(tWarehousebills.getfTimes());
 | 
	
		
			
				|  |  |                  AjaxResult approvalFlow = auditItemsService.createApprovalFlow(auditItems);
 | 
	
		
			
				|  |  |                  String code = approvalFlow.get("code").toString();
 | 
	
		
			
				|  |  | -//                Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
 | 
	
		
			
				|  |  |                  if ("500".equals(code)) {
 | 
	
		
			
				|  |  |                      TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  return approvalFlow;
 | 
	
		
			
				|  |  |              } else {
 | 
	
		
			
				|  |  | -                AjaxResult ajaxResult = storageFeeFollow(fPid, 6L);
 | 
	
		
			
				|  |  | -                String code = ajaxResult.get("code").toString();
 | 
	
		
			
				|  |  | -//                Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
 | 
	
		
			
				|  |  | -                if ("500".equals(code)) {
 | 
	
		
			
				|  |  | -                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                return ajaxResult;
 | 
	
		
			
				|  |  | +                approvedStorageFee(fPid, 6L, new Date());
 | 
	
		
			
				|  |  | +                return AjaxResult.success();
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return AjaxResult.success(tWarehousebills);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     *  计算仓储费审核通过
 | 
	
		
			
				|  |  | +     * @param warehouseId   主表id
 | 
	
		
			
				|  |  | +     * @param fettle   状态
 | 
	
		
			
				|  |  | +     * @param date   审核时间
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public void approvedStorageFee(Long warehouseId, Long fettle, Date date) {
 | 
	
		
			
				|  |  | +        tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(warehouseId, fettle, date);
 | 
	
		
			
				|  |  | +        // 查出主表数据
 | 
	
		
			
				|  |  | +        TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(warehouseId);
 | 
	
		
			
				|  |  | +        if (Objects.isNull(warehouseBills)) {
 | 
	
		
			
				|  |  | +            throw new WarehouseException("未找到仓储信息");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        List<TWarehousebillsfees> feesList = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(warehouseBills.getfId());
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isEmpty(feesList)) {
 | 
	
		
			
				|  |  | +            throw new WarehouseException("未找到需要跟新的费用信息");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        // 过滤出明细信息查询是否存在已计算仓储费
 | 
	
		
			
				|  |  | +        List<Long> ids = feesList.stream().map(TWarehousebillsfees::getSrcId).distinct().collect(toList());
 | 
	
		
			
				|  |  | +        if (tWarehousebillsitemsMapper.selectIsCalculateStorageFeesByIds(ids) > 0) {
 | 
	
		
			
				|  |  | +            throw new WarehouseException("计算费用中存在已计算仓储费信息");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        for (TWarehousebillsfees fees : feesList) {
 | 
	
		
			
				|  |  | +            storageFeeUpdateItem(warehouseBills, fees);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 计算仓储费计算更新出库货转信息
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param warehouseBills 主表信息
 | 
	
		
			
				|  |  | +     * @param fees           仓储费信息
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    private void storageFeeUpdateItem(TWarehouseBills warehouseBills, TWarehousebillsfees fees) {
 | 
	
		
			
				|  |  | +        Date chargeDate = DateUtils.addDays(fees.getfBillingDeadline(), 1);
 | 
	
		
			
				|  |  | +        // 如果是库存总帐
 | 
	
		
			
				|  |  | +        if (WarehouseTypeEnum.KCZZ.getType().equals(fees.getfBilltype())) {
 | 
	
		
			
				|  |  | +            TWhgenleg whgenleg = new TWhgenleg();
 | 
	
		
			
				|  |  | +            whgenleg.setfId(fees.getSrcId());
 | 
	
		
			
				|  |  | +            whgenleg.setfChargedate(chargeDate);
 | 
	
		
			
				|  |  | +            tWhgenlegMapper.updateTWhgenleg(whgenleg);
 | 
	
		
			
				|  |  | +            // 如果计算之前信息
 | 
	
		
			
				|  |  | +            if (!fees.getfBillingDeadline().after(warehouseBills.getUpdateTime())) {
 | 
	
		
			
				|  |  | +                // 查询时间区间内的仓储业务明细信息
 | 
	
		
			
				|  |  | +                List<String> timeList = new ArrayList<>();
 | 
	
		
			
				|  |  | +                timeList.add(DateUtils.dateToString(DateUtils.dateConversionMin(fees.getfBillingDeadline())));
 | 
	
		
			
				|  |  | +                timeList.add(DateUtils.dateToString(DateUtils.dateConversionMax(warehouseBills.getUpdateTime())));
 | 
	
		
			
				|  |  | +                warehouseBills.setItemBsDateList(timeList);
 | 
	
		
			
				|  |  | +                List<TWarehousebillsitems> warehousebillsitemsList = tWarehousebillsitemsMapper.selectListByCorpId(warehouseBills);
 | 
	
		
			
				|  |  | +                // 过滤出出库、货转,更新对应仓储费计费日期
 | 
	
		
			
				|  |  | +                List<TWarehousebillsitems> itemList = warehousebillsitemsList.stream().filter(li ->
 | 
	
		
			
				|  |  | +                        li.getfBilltype().equals(WarehouseTypeEnum.SJCK.getType()) ||
 | 
	
		
			
				|  |  | +                                li.getfBilltype().equals(WarehouseTypeEnum.HQZY.getType())).collect(toList());
 | 
	
		
			
				|  |  | +                if (CollectionUtils.isNotEmpty(itemList)) {
 | 
	
		
			
				|  |  | +                    itemList.forEach(li -> {
 | 
	
		
			
				|  |  | +                        li.setfChargedate(chargeDate);
 | 
	
		
			
				|  |  | +                        li.setUpdateTime(new Date());
 | 
	
		
			
				|  |  | +                        tWarehousebillsitemsMapper.updateTWarehousebillsitems(li);
 | 
	
		
			
				|  |  | +                    });
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            TWarehousebillsitems billsItem = new TWarehousebillsitems();
 | 
	
		
			
				|  |  | +            billsItem.setfId(fees.getSrcId());
 | 
	
		
			
				|  |  | +            billsItem.setfChargedate(chargeDate);
 | 
	
		
			
				|  |  | +            if ("SJCK".equals(fees.getfBilltype())) {
 | 
	
		
			
				|  |  | +                billsItem.setfStorageFeeDeadline(fees.getfBillingDeadline());
 | 
	
		
			
				|  |  | +                billsItem.setIsCalculateStorageFees(WarehouseTypeEnum.CALCULATE.getType());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            tWarehousebillsitemsMapper.updateTWarehousebillsitems(billsItem);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public AjaxResult insertStorageFeeList(List<StorageChargeInsert> storageChargeInsert, LoginUser loginUser, String billsType) {
 | 
	
		
			
				|  |  |          if (CollectionUtils.isEmpty(storageChargeInsert)) {
 | 
	
	
		
			
				|  | @@ -5012,13 +5031,8 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                      return approvalFlow;
 | 
	
		
			
				|  |  |                  } else {
 | 
	
		
			
				|  |  | -                    AjaxResult ajaxResult = storageFeeFollow(fPid, 6L);
 | 
	
		
			
				|  |  | -                    String code = ajaxResult.get("code").toString();
 | 
	
		
			
				|  |  | -//                Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
 | 
	
		
			
				|  |  | -                    if ("500".equals(code)) {
 | 
	
		
			
				|  |  | -                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    return ajaxResult;
 | 
	
		
			
				|  |  | +                    approvedStorageFee(fPid, 6L, new Date());
 | 
	
		
			
				|  |  | +                    return AjaxResult.success();
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -7098,6 +7112,38 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  | +     * 货转根据提单号查询可用客户、仓库信息
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param fMblno 提单号
 | 
	
		
			
				|  |  | +     * @return
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public AjaxResult corpOrWarehouseByMblno(String fMblno) {
 | 
	
		
			
				|  |  | +        WarehouseBillsVO billsVO = new WarehouseBillsVO();
 | 
	
		
			
				|  |  | +        // 查询符合条件的库存总帐
 | 
	
		
			
				|  |  | +        TWhgenleg tWhgenleg = new TWhgenleg();
 | 
	
		
			
				|  |  | +        tWhgenleg.setfMblno(fMblno);
 | 
	
		
			
				|  |  | +        List<TWhgenleg> tWhgenlegs = tWhgenlegMapper.selectTWhgenlegList(tWhgenleg);
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isNotEmpty(tWhgenlegs)) {
 | 
	
		
			
				|  |  | +            // 查询仓库信息
 | 
	
		
			
				|  |  | +            List<Long> warehouseIds = tWhgenlegs.stream().filter(leg -> Objects.nonNull(leg.getfWarehouseid())).map(TWhgenleg::getfWarehouseid)
 | 
	
		
			
				|  |  | +                    .distinct().collect(toList());
 | 
	
		
			
				|  |  | +            if (CollectionUtils.isNotEmpty(warehouseIds)) {
 | 
	
		
			
				|  |  | +                List<TWarehouse> warehouseList = tWarehouseMapper.selectByIds(warehouseIds);
 | 
	
		
			
				|  |  | +                billsVO.setWarehouseList(warehouseList);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            // 查询客户
 | 
	
		
			
				|  |  | +            List<Long> corpIds = tWhgenlegs.stream().filter(leg -> Objects.nonNull(leg.getfCorpid())).map(TWhgenleg::getfCorpid)
 | 
	
		
			
				|  |  | +                    .distinct().collect(toList());
 | 
	
		
			
				|  |  | +            if (CollectionUtils.isNotEmpty(corpIds)) {
 | 
	
		
			
				|  |  | +                List<TCorps> corpsList = tCorpsMapper.selectByIds(corpIds);
 | 
	
		
			
				|  |  | +                billsVO.setCorpsList(corpsList);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return AjaxResult.success(billsVO);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  |       * 如果是入库
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  |       * @param infoVO
 |