|  | @@ -514,7 +514,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |          if (StringUtils.isNotEmpty(warehousebillsitems.getfLocalcntrno())) {
 | 
	
		
			
				|  |  |              tWhgenleg.setfLocalcntrno(warehousebillsitems.getfLocalcntrno());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        if (WarehouseTypeEnum.HQZY.getType().equals(warehouseBills.getfBilltype())) {
 | 
	
		
			
				|  |  | +        if (WarehouseTypeEnum.HQZY.getType().equals(warehouseBills.getfBilltype()) || WarehouseTypeEnum.CKDB.getType().equals(warehouseBills.getfBilltype())) {
 | 
	
		
			
				|  |  |              // 仓储计费日期
 | 
	
		
			
				|  |  |              tWhgenleg.setfChargedate(warehousebillsitems.getfBsdate());
 | 
	
		
			
				|  |  |          } else {
 | 
	
	
		
			
				|  | @@ -3324,6 +3324,10 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          int i = 1;
 | 
	
		
			
				|  |  |          for (TWarehousebillsitems item : warehousebillsitemsList) {
 | 
	
		
			
				|  |  | +            // 如果业务时间超出当前时间则不允许
 | 
	
		
			
				|  |  | +            if (item.getfBsdate().after(new Date())) {
 | 
	
		
			
				|  |  | +                throw new WarehouseException("业务日期不得超出当前日期");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              // 查询是否可以修改
 | 
	
		
			
				|  |  |              TWarehousebillsitems tWarehousebillsitems = tWarehousebillsitemsMapper.selectTWarehousebillsitemsById(item.getfId());
 | 
	
		
			
				|  |  |              if (tWarehousebillsitems.getfBillstatus() == 40) {
 | 
	
	
		
			
				|  | @@ -3364,11 +3368,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  if (StringUtils.isNotNull(tWhgenle)) {
 | 
	
		
			
				|  |  | -                    int i1 = updateTWhgenlegData(item, tWhgenle.getfId(), billsType);
 | 
	
		
			
				|  |  | -                    if (i1 <= 0) {
 | 
	
		
			
				|  |  | -                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | -                        return AjaxResult.error("更新库存总账失败");
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | +                    updateTWhgenlegData(item, tWhgenle.getfId(), billsType);
 | 
	
		
			
				|  |  |                  } else {
 | 
	
		
			
				|  |  |                      if (instalTWhgenleg(tWarehouseBills, item, loginUser.getUser()) <= 0) {
 | 
	
		
			
				|  |  |                          TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
	
		
			
				|  | @@ -3601,6 +3601,10 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |          List<TFees> feesList = new ArrayList<>();
 | 
	
		
			
				|  |  |          List<TWarehousebillsfees> warehousebillsfees = new ArrayList<>();
 | 
	
		
			
				|  |  |          for (TWarehousebillsitems wbItem : warehousebillsitemsList) {
 | 
	
		
			
				|  |  | +            // 如果业务时间超出当前时间则不允许
 | 
	
		
			
				|  |  | +            if (wbItem.getfBsdate().after(new Date())) {
 | 
	
		
			
				|  |  | +                throw new WarehouseException("业务日期不得超出当前日期");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              // 查询是否可以修改
 | 
	
		
			
				|  |  |              TWarehousebillsitems tWarehousebillsitems = tWarehousebillsitemsMapper.selectTWarehousebillsitemsById(wbItem.getfId());
 | 
	
		
			
				|  |  |              if (tWarehousebillsitems.getfBillstatus() == 40) {
 | 
	
	
		
			
				|  | @@ -3630,6 +3634,8 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |                      TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  |                      return AjaxResult.error("库存明细第" + i + "行库存为空");
 | 
	
		
			
				|  |  |                  } else { // 非空修改库存总账
 | 
	
		
			
				|  |  | +                    //校验计费日期是等于库存总帐计费日,如果不相等则报错
 | 
	
		
			
				|  |  | +                    checkWhgenleg(tWarehouseBills, tWhgenle);
 | 
	
		
			
				|  |  |                      //  库存 <  出库件数
 | 
	
		
			
				|  |  |                      if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {
 | 
	
		
			
				|  |  |                          TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
	
		
			
				|  | @@ -3644,35 +3650,6 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |                      if (StringUtils.isNull(tWarehouseBills.getfCorpid())) {
 | 
	
		
			
				|  |  |                          return AjaxResult.error("库存明细第" + i + "行请检查客户信息,操作终止");
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  | -                    /*long fCorpid = tWarehouseBills.getfCorpid();
 | 
	
		
			
				|  |  | -                    TGoods tGoods = tGoodsMapper.selectTGoodsById(wbItem.getfGoodsid());
 | 
	
		
			
				|  |  | -                    long fGoodsid = tGoods.getfTypeid();
 | 
	
		
			
				|  |  | -                    long fBillingway = wbItem.getfBillingway();
 | 
	
		
			
				|  |  | -                    long fQty = wbItem.getfQty();
 | 
	
		
			
				|  |  | -                    // 计算仓储费明细
 | 
	
		
			
				|  |  | -                    Map<String, Object> objectMap = tWarehouseAgreementService.getCarryingCost(fCorpid, fGoodsid, dateDay, fBillingway, fQty , 0L);
 | 
	
		
			
				|  |  | -                    if (StringUtils.isNull(objectMap)) {
 | 
	
		
			
				|  |  | -                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | -                        return AjaxResult.error("库存明细第" + i + "行没有维护出库明细的仓储协议,操作终止");
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    Long feeId = (Long) objectMap.get("feeId");
 | 
	
		
			
				|  |  | -                    BigDecimal amt = (BigDecimal) objectMap.get("amt");
 | 
	
		
			
				|  |  | -                    TFees tFees = tFeesMapper.selectTFeesById(feeId);
 | 
	
		
			
				|  |  | -                    if (StringUtils.isNotNull(tFees)) {
 | 
	
		
			
				|  |  | -                        feesList.add(tFees);
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    TWarehousebillsfees fees = new TWarehousebillsfees();
 | 
	
		
			
				|  |  | -                    fees.setfPid(fPid);
 | 
	
		
			
				|  |  | -                    fees.setfFeeid(feeId);
 | 
	
		
			
				|  |  | -                    fees.setfCorpid(tWarehouseBills.getfCorpid());
 | 
	
		
			
				|  |  | -                    fees.setfFeeUnitid(fBillingway);
 | 
	
		
			
				|  |  | -                    fees.setfQty(new BigDecimal(1));
 | 
	
		
			
				|  |  | -                    fees.setfUnitprice(amt);
 | 
	
		
			
				|  |  | -                    fees.setfAmount(amt);
 | 
	
		
			
				|  |  | -                    fees.setfExrate(new BigDecimal(1));
 | 
	
		
			
				|  |  | -                    fees.setfCurrency("RMB");
 | 
	
		
			
				|  |  | -                    fees.setRemark(dateDay + "天" + tFees.getfName());
 | 
	
		
			
				|  |  | -                    warehousebillsfees.add(fees);*/
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  wbItem.setfBillstatus(40L);
 | 
	
		
			
				|  |  |              } else if (WarehouseTypeEnum.CKDB.getType().equals(billsType) || WarehouseTypeEnum.HWTG.getType().equals(billsType)) { // 调拨查询
 | 
	
	
		
			
				|  | @@ -3680,6 +3657,8 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |                      TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  |                      return AjaxResult.error("库存明细第" + i + "行库存为空");
 | 
	
		
			
				|  |  |                  } else { // 非空修改库存总账
 | 
	
		
			
				|  |  | +                    //校验计费日期是等于库存总帐计费日,如果不相等则报错
 | 
	
		
			
				|  |  | +                    checkWhgenleg(tWarehouseBills, tWhgenle);
 | 
	
		
			
				|  |  |                      if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {  //  1、  库存 <  调拨件数  提示库存不足
 | 
	
		
			
				|  |  |                          TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  |                          return AjaxResult.error("库存明细第" + i + "行库存不足");
 | 
	
	
		
			
				|  | @@ -3708,6 +3687,8 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |                      TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  |                      return AjaxResult.error("库存明细第" + i + "行库存为空");
 | 
	
		
			
				|  |  |                  } else { // 非空修改库存总账
 | 
	
		
			
				|  |  | +                    //校验计费日期是等于库存总帐计费日,如果不相等则报错
 | 
	
		
			
				|  |  | +                    checkWhgenleg(tWarehouseBills, tWhgenle);
 | 
	
		
			
				|  |  |                      if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {  //  1、  库存 <  调拨件数  提示库存不足
 | 
	
		
			
				|  |  |                          TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  |                          return AjaxResult.error("库存明细第" + i + "行库存不足");
 | 
	
	
		
			
				|  | @@ -3820,6 +3801,18 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |          return AjaxResult.success("成功", map);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 校验计费日期是等于库存总帐计费日,如果不相等则报错
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param wbItem
 | 
	
		
			
				|  |  | +     * @param tWhgenle
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    private void checkWhgenleg(TWarehouseBills wbItem, TWhgenleg tWhgenle) {
 | 
	
		
			
				|  |  | +        // 如果仓储费计费日期超出 库存总帐的计费日期不相等则报异常
 | 
	
		
			
				|  |  | +        if (wbItem.getfChargedate().before(tWhgenle.getfChargedate())) {
 | 
	
		
			
				|  |  | +            throw new WarehouseException("仓储费计费日期与库存总帐计费日期不相符");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 打印作业单
 | 
	
	
		
			
				|  | @@ -4034,7 +4027,8 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |                  storageFeesDto.setStartTime(fBsdate);
 | 
	
		
			
				|  |  |                  storageFeesDto.setEndTime((Date) item.get("fOriginalbilldate"));
 | 
	
		
			
				|  |  |              } else {
 | 
	
		
			
				|  |  | -                storageFeesDto.setStartTime((Date) item.get("fOriginalbilldate"));
 | 
	
		
			
				|  |  | +                storageFeesDto.setStartTime((Date) item.get("fChargedate"));
 | 
	
		
			
				|  |  | +//                storageFeesDto.setStartTime((Date) item.get("fOriginalbilldate"));
 | 
	
		
			
				|  |  |                  storageFeesDto.setEndTime(warehouseBills.getfBillingDeadline());
 | 
	
		
			
				|  |  |                  fInventoryDays = DateUtils.getDateDay(warehouseBills.getfBillingDeadline(), (Date) item.get("fOriginalbilldate"));
 | 
	
		
			
				|  |  |                  fBillingDays = DateUtils.getDateDay(warehouseBills.getfBillingDeadline(), (Date) item.get("fChargedate"));
 | 
	
	
		
			
				|  | @@ -4088,12 +4082,11 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |              fees.setfProductName(item.get("fGoodsids").toString());
 | 
	
		
			
				|  |  |              if (WarehouseTypeEnum.SJCK.getType().equals(fBilltype) ||
 | 
	
		
			
				|  |  |                      WarehouseTypeEnum.HQZY.getType().equals(fBilltype)) {
 | 
	
		
			
				|  |  | -                fees.setfChargedate((Date) item.get("fOriginalbilldate"));
 | 
	
		
			
				|  |  |                  fees.setfBillingDeadline(fBsdate);
 | 
	
		
			
				|  |  |              } else {
 | 
	
		
			
				|  |  | -                fees.setfChargedate((Date) item.get("fChargedate"));
 | 
	
		
			
				|  |  |                  fees.setfBillingDeadline(warehouseBills.getfBillingDeadline());
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            fees.setfChargedate((Date) item.get("fChargedate"));
 | 
	
		
			
				|  |  |              fees.setfTaxrate(new BigDecimal(taxRate.get(0).getDictValue()));
 | 
	
		
			
				|  |  |              fees.setfOriginalbilldate((Date) item.get("fOriginalbilldate"));
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -4598,7 +4591,6 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |          JSONArray warehouseJSON = JSONArray.parseArray(warehouseItems);
 | 
	
		
			
				|  |  |          List<TWarehousebillsfees> itemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsfees.class);
 | 
	
		
			
				|  |  |          for (TWarehousebillsfees item : itemsList) {
 | 
	
		
			
				|  |  | -            item.setfId(null);
 | 
	
		
			
				|  |  |              item.setSrcBillNo(tWarehousebills.getfBillno());
 | 
	
		
			
				|  |  |              item.setfPid(fPid);
 | 
	
		
			
				|  |  |              item.setfBillstatus(tWarehousebills.getfBillstatus());
 | 
	
	
		
			
				|  | @@ -4608,7 +4600,6 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |              JSONArray feesJSON = JSON.parseArray(warehouseFees);
 | 
	
		
			
				|  |  |              List<TWarehousebillsfees> warehousebillsfeesList = JSON.parseArray(feesJSON.toJSONString(), TWarehousebillsfees.class);
 | 
	
		
			
				|  |  |              for (TWarehousebillsfees fees : warehousebillsfeesList) {
 | 
	
		
			
				|  |  | -                fees.setfId(null);
 | 
	
		
			
				|  |  |                  fees.setfPid(fPid);
 | 
	
		
			
				|  |  |                  fees.setfDc("D");
 | 
	
		
			
				|  |  |                  fees.setfBilltype(WarehouseTypeEnum.JSCCF.getType());
 | 
	
	
		
			
				|  | @@ -4998,10 +4989,26 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |                      TWhgenleg whgenleg = new TWhgenleg();
 | 
	
		
			
				|  |  |                      whgenleg.setfId(wareItem.getSrcId());
 | 
	
		
			
				|  |  |                      whgenleg.setfChargedate(wareItem.getfChargedate());
 | 
	
		
			
				|  |  | -                    int i = tWhgenlegMapper.updateTWhgenleg(whgenleg);
 | 
	
		
			
				|  |  | -                    if (i <= 0) {
 | 
	
		
			
				|  |  | -                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | -                        return AjaxResult.error("更新库存费用状态失败,请联系管理员");
 | 
	
		
			
				|  |  | +                    tWhgenlegMapper.updateTWhgenleg(whgenleg);
 | 
	
		
			
				|  |  | +                    // 如果计算之前信息
 | 
	
		
			
				|  |  | +                    if (!wareItem.getfBillingDeadline().after(tWarehousebills.getUpdateTime())) {
 | 
	
		
			
				|  |  | +                        // 查询时间区间内的仓储业务明细信息
 | 
	
		
			
				|  |  | +                        List<String> timeList = new ArrayList<>();
 | 
	
		
			
				|  |  | +                        timeList.add(DateUtils.dateToString(DateUtils.dateConversionMin(wareItem.getfBillingDeadline())));
 | 
	
		
			
				|  |  | +                        timeList.add(DateUtils.dateToString(DateUtils.dateConversionMax(tWarehousebills.getUpdateTime())));
 | 
	
		
			
				|  |  | +                        tWarehousebills.setItemBsDateList(timeList);
 | 
	
		
			
				|  |  | +                        List<TWarehousebillsitems> warehousebillsitemsList = tWarehousebillsitemsMapper.selectListByCorpId(tWarehousebills);
 | 
	
		
			
				|  |  | +                        // 过滤出出库、货转,更新对应仓储费计费日期
 | 
	
		
			
				|  |  | +                        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(wareItem.getfChargedate());
 | 
	
		
			
				|  |  | +                                li.setUpdateTime(new Date());
 | 
	
		
			
				|  |  | +                                tWarehousebillsitemsMapper.updateTWarehousebillsitems(li);
 | 
	
		
			
				|  |  | +                            });
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  } else {
 | 
	
		
			
				|  |  |                      TWarehousebillsitems billsItem = new TWarehousebillsitems();
 | 
	
	
		
			
				|  | @@ -7004,10 +7011,12 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |          TWarehouse tWarehouse = tWarehouseList.stream().filter(li -> Objects.equals(li.getfId(), infoVO.getfWarehouseid())).findFirst()
 | 
	
		
			
				|  |  |                  .orElseThrow(() -> new WarehouseException("仓库不存在"));
 | 
	
		
			
				|  |  |          infoVO.setWarehouseName(tWarehouse.getfName());
 | 
	
		
			
				|  |  | -        // 调入仓库
 | 
	
		
			
				|  |  | -        TWarehouse inWarehouse = tWarehouseList.stream().filter(li -> Objects.equals(li.getfId(), infoVO.getfInwarehouseid())).findFirst()
 | 
	
		
			
				|  |  | -                .orElseThrow(() -> new WarehouseException("仓库不存在"));
 | 
	
		
			
				|  |  | -        infoVO.setInWarehouseName(inWarehouse.getfName());
 | 
	
		
			
				|  |  | +        if (StringUtils.isNotNull(infoVO.getfInwarehouseid())) {
 | 
	
		
			
				|  |  | +            // 调入仓库
 | 
	
		
			
				|  |  | +            TWarehouse inWarehouse = tWarehouseList.stream().filter(li -> Objects.equals(li.getfId(), infoVO.getfInwarehouseid())).findFirst()
 | 
	
		
			
				|  |  | +                    .orElseThrow(() -> new WarehouseException("仓库不存在"));
 | 
	
		
			
				|  |  | +            infoVO.setInWarehouseName(inWarehouse.getfName());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 |