| | |
| | | import com.ruoyi.common.constant.AmountConstant; |
| | | import com.ruoyi.common.constant.CacheConstants; |
| | | import com.ruoyi.common.core.redis.RedisCache; |
| | | import com.ruoyi.common.enums.DisabledEnum; |
| | | import com.ruoyi.common.exception.ServiceException; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import com.ruoyi.common.utils.OrderNos; |
| | | import com.ruoyi.common.utils.SmsUtil; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.common.utils.TencentMailUtil; |
| | | import com.ruoyi.common.utils.*; |
| | | import com.ruoyi.common.utils.uuid.UUID; |
| | | import com.ruoyi.system.dto.BillStatisticsDto; |
| | | import com.ruoyi.system.dto.CachPayDto; |
| | |
| | | import com.taxi591.bankapi.dto.ChargeBillRequest; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.jetbrains.annotations.NotNull; |
| | | import org.joda.time.LocalDateTime; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | return info; |
| | | } |
| | | |
| | | public PageInfo<TBillDto> queryPageForApplet(TBillQuery query){ |
| | | PageInfo<TBill> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); |
| | | PageInfo<TBillDto> info = tBillMapper.pageForApplet(pageInfo, query); |
| | | return info; |
| | | } |
| | | |
| | | @Override |
| | | public List<String> getBillIds(TBillQuery query) { |
| | | List<TBillDto> billDtos = tBillMapper.getBillList(query); |
| | |
| | | if (presist.getPayFeesStatus().equals("3")){ |
| | | throw new ServiceException("该账单已缴费完成"); |
| | | } |
| | | |
| | | switch (type){ |
| | | // 仅更新除金额字段外的属性 |
| | | case 1: |
| | |
| | | BigDecimal outstand = presist.getPayableFeesMoney() |
| | | .add(save.getPayableFeesPenalty()) |
| | | .subtract(presist.getPayFeesMoney()); |
| | | |
| | | save.setOutstandingMoney(outstand); |
| | | } |
| | | //处理缴费金额 |
| | |
| | | .subtract(save.getPayFeesMoney()); |
| | | save.setOutstandingMoney(outstand); |
| | | //抵扣金额就是缴费金额 |
| | | save.setDeductionMoney(tBill.getPayableFeesMoney()); |
| | | save.setDeductionMoney(tBill.getPayFeesMoney()); |
| | | save.setPreOutstand(presist.getOutstandingMoney()); |
| | | if (outstand.compareTo(BigDecimal.ZERO)<=0){ |
| | | save.setPayFeesStatus("3"); |
| | |
| | | break; |
| | | |
| | | } |
| | | save.setBusinessDeptId(presist.getBusinessDeptId()); |
| | | updateById(save); |
| | | return save; |
| | | }finally { |
| | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void saveBill(TbillSaveDto bill) { |
| | | bill.setManualAddition(DisabledEnum.YES.getCode()); |
| | | save(bill); |
| | | if (bill.getBillType().equals("3")){ |
| | | if (bill.getDetails()==null || bill.getDetails().size()==0){ |
| | |
| | | save.setPayType(3); |
| | | save.setPayer(dto.getPayer()); |
| | | save.setPayTime(billSave.getPayFeesTime()); |
| | | save.setBusinessDeptId(bill.getBusinessDeptId()); |
| | | save.setSysSerialNumber(OrderNos.getDid(30)); |
| | | save.setFlowType(1); |
| | | save.setPaymentBillId(back.getId()); |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 根据发票编号查询账单列表 |
| | |
| | | } |
| | | |
| | | @Override |
| | | public BillStatisticsDto statistics(String busDeptId) { |
| | | public BillStatisticsDto statistics(TBillQuery query) { |
| | | BillStatisticsDto dto = new BillStatisticsDto(); |
| | | dto.setRent(getBaseMapper().statisticsAllRent(busDeptId)); |
| | | dto.setNopay(getBaseMapper().statisticsNoPay(busDeptId)); |
| | | dto.setPayed(getBaseMapper().statisticsPayed(busDeptId)); |
| | | dto.setOverdue(getBaseMapper().statisticsOverdue(busDeptId)); |
| | | dto.setRent(getBaseMapper().statisticsAllRent(query)); |
| | | dto.setNopay(getBaseMapper().statisticsNoPay(query)); |
| | | dto.setPayed(getBaseMapper().statisticsPayed(query)); |
| | | dto.setOverdue(getBaseMapper().statisticsOverdue(query)); |
| | | return dto; |
| | | } |
| | | |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<ScreenRentRankVO> getStreetRentRank() { |
| | | return baseMapper.getStreetRentRank(); |
| | | public List<ScreenRentRankVO> getStreetRentRank(String businessDeptId) { |
| | | return baseMapper.getStreetRentRank(businessDeptId); |
| | | } |
| | | /** |
| | | * 查询季付账单 |
| | | * @param businessDeptId |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<TBill> getJiFuBillList(String businessDeptId) { |
| | | return baseMapper.getJiFuBillList(businessDeptId,null,null); |
| | | } |
| | | |
| | | /** |
| | | * 查询当前季度的季付账单 |
| | | * @param businessDeptId |
| | | * @param first |
| | | * @param last |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<TBill> getJiFuBillListByTime(String businessDeptId, Date first, Date last) { |
| | | return baseMapper.getJiFuBillList(businessDeptId,first,last); |
| | | } |
| | | |
| | | @Override |
| | | public void editAmount(TbillSaveDto bill) { |
| | | String requestId = UUID.fastUUID().toString(); |
| | | String lockkey = CacheConstants.BILL_UPDATE_LOCK_KEY + bill.getId(); |
| | | boolean isok = redisCache.trylockLoop(lockkey, requestId, 60); |
| | | if (isok){ |
| | | try { |
| | | TBill presist = getById(bill.getId()); |
| | | TBill save = new TBill(); |
| | | save.setId(bill.getId()); |
| | | BigDecimal preOutstand = presist.getOutstandingMoney(); |
| | | // 如果传入的金额小于0,则是扣减,如果大于0,是增加金额,增加金额只加入欠费金额中 |
| | | if (bill.getEditAmount().compareTo(BigDecimal.ZERO)<0 |
| | | && presist.getPayableFeesPenalty().compareTo(BigDecimal.ZERO)>0){ |
| | | BigDecimal prePayableFeesPenalty = presist.getPayableFeesPenalty(); |
| | | //违约金大于调整金额,够减 |
| | | if (prePayableFeesPenalty.compareTo(bill.getEditAmount().abs())>=0){ |
| | | BigDecimal afterPenalty = prePayableFeesPenalty.add(bill.getEditAmount()); |
| | | save.setPayableFeesPenalty(afterPenalty); |
| | | }else{ |
| | | BigDecimal afterPenalty = BigDecimal.ZERO; |
| | | save.setPayableFeesPenalty(afterPenalty); |
| | | } |
| | | } |
| | | BigDecimal afterOutstand = preOutstand.add(bill.getEditAmount()); |
| | | save.setOutstandingMoney(afterOutstand); |
| | | updateById(save); |
| | | }finally { |
| | | redisCache.unlock(lockkey,requestId); |
| | | } |
| | | } |
| | | |
| | | //todo 记录金额修改记录 |
| | | // TFlowManagement flow = new TFlowManagement(); |
| | | // flow.setPayType(3); |
| | | // flow.setPayer("管理员修改"); |
| | | // flow.setBusinessDeptId(presist.getBusinessDeptId()); |
| | | // flow.setPayTime(DateUtils.dateToLocalDateTime(new Date())); |
| | | // flow.setSysSerialNumber(OrderNos.getDid(30)); |
| | | // flow.setFlowType(1); |
| | | // flow.setPaymentBillId(back.getId()); |
| | | // flow.setDeductionMoney(back.getDeductionMoney()); |
| | | // flow.setFlowMoney(save.getOutstandingMoney()); |
| | | // flow.setRemainingMoney(back.getOutstandingMoney()); |
| | | // flow.setPreOutstand(back.getPreOutstand()); |
| | | // flow.setCreateBy(SecurityUtils.getUsername()); |
| | | // tFlowManagementService.save(flow); |
| | | } |
| | | |
| | | |
| | | } |