123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541 |
- package com.winhc.repal.service.impl;
- import cn.hutool.core.collection.CollUtil;
- import cn.hutool.core.util.ObjectUtil;
- import cn.hutool.core.util.StrUtil;
- import com.alibaba.fastjson.JSON;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.module.login.usersession.UserBean;
- import com.winhc.common.enums.CodeMsg;
- import com.winhc.common.exception.CommonException;
- import com.winhc.common.model.base.VOPage;
- import com.winhc.repal.cloud.dto.QueryV8DynamicDTO;
- import com.winhc.repal.cloud.vo.V8DynamicVO;
- import com.winhc.repal.entity.*;
- import com.winhc.repal.enums.*;
- import com.winhc.repal.model.bo.BillRemindBO;
- import com.winhc.repal.model.bo.BookDynamicCountBO;
- import com.winhc.repal.model.cvt.RepalRemindHistoryConvert;
- import com.winhc.repal.model.dto.RepalRemindHistoryDTO;
- import com.winhc.repal.model.vo.*;
- import com.winhc.repal.repository.RepalRemindHistoryMapper;
- import com.winhc.repal.service.*;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.winhc.repal.util.RedisUtil;
- import com.winhc.repal.util.UserContextUtil;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.math.BigDecimal;
- import java.time.DayOfWeek;
- import java.time.LocalDate;
- import java.time.LocalDateTime;
- import java.time.ZoneOffset;
- import java.time.format.DateTimeFormatter;
- import java.time.temporal.ChronoUnit;
- import java.util.*;
- import java.util.concurrent.TimeUnit;
- import java.util.function.Function;
- import java.util.stream.Collectors;
- /**
- * @description RepalRemindHistory 接口实现类
- * @author Generator
- * @date 2022-04-08
- */
- @Service
- public class RepalRemindHistoryServiceImpl extends ServiceImpl<RepalRemindHistoryMapper, RepalRemindHistory> implements RepalRemindHistoryService {
- private static final String MESSAGE_PRIFIX = "winhc:repal:key_";
- @Autowired
- private RepalRemindDefinitionService repalRemindDefinitionService;
- @Autowired
- private MessageNoticeService messageNoticeService;
- @Autowired
- private RedisUtil redisUtil;
- @Autowired
- private ThirdPartyAccountService thirdPartyAccountService;
- @Autowired
- private RepalRemindReadInfoService repalRemindReadInfoService;
- @Autowired
- private RepalRemindHistoryMapper repalRemindHistoryMapper;
- @Autowired
- private RepalBillService repalBillService;
- @Autowired
- private RepalBillDiagnosisService repalBillDiagnosisService;
- @Autowired
- private CompanyService companyService;
- @Autowired
- private RepalCustomerService repalCustomerService;
- @Autowired
- private RepalBookService repalBookService;
- @Autowired
- private RepalRolePermissionService repalRolePermissionService;
- @Autowired
- private RepalGroupMemberService repalGroupMemberService;
- @Override
- public RepalBillRemindUnReadVO getRemindUnReadVO(List<RepalBill> repalBills,Long userId, LocalDateTime startTime ,LocalDateTime endTime) {
- RepalBillRemindUnReadVO result = new RepalBillRemindUnReadVO(0,0,0,0,0);
- for(RepalBill repalBill:repalBills){
- RepalRemindReadInfo repalRemindReadInfo = repalRemindReadInfoService.getReadInfoByUserId(userId,repalBill.getId(),repalBill.getRepalBookId());
- RepalBillRemindUnReadVO readVO = repalRemindHistoryMapper.getRemindUnReadVO(repalRemindReadInfo.getRiskRemindId(),
- repalRemindReadInfo.getRankRemindId(),repalRemindReadInfo.getOverdueRemindId(),
- repalRemindReadInfo.getFinanceRemindId(),repalBill.getRepalBookId(),repalBill.getId(),
- startTime, endTime);
- result.setUnreadRankCount(result.getUnreadRankCount()+readVO.getUnreadRankCount());
- result.setUnreadRiskCount(result.getUnreadRiskCount()+readVO.getUnreadRiskCount());
- result.setUnreadOverdueCount(result.getUnreadOverdueCount()+readVO.getUnreadOverdueCount());
- result.setUnreadFinanceCount(result.getUnreadFinanceCount()+readVO.getUnreadFinanceCount());
- }
- result.setUnreadTotalCount(result.getUnreadFinanceCount()+result.getUnreadRankCount()+result.getUnreadRiskCount()+result.getUnreadOverdueCount());
- return result;
- }
- @Override
- public boolean insertRankRemind(RepalBill repalBill, RepalBillDiagnosis diagnosis) {
- if (repalBill.getRepalBillStage() == null) {
- return true;
- }
- LocalDate endDate = repalBill.getEndDate();
- if (endDate == null) {
- endDate = LocalDate.now().minusDays(1);
- }
- OverdueEnum overdueEnum = getDaysBetween(endDate);
- LambdaQueryWrapper<RepalRemindDefinition> qw = Wrappers.lambdaQuery(RepalRemindDefinition.class);
- qw.eq(RepalRemindDefinition::getRemindType, RemindEnum.账款评级.name());
- if (RepalBillStatusEnum.PROGRESSING.getCode().equals(repalBill.getRepalBillStatus())
- || !RepalBillStageEnum.NON_PROSECUTE.getCode().equals(repalBill.getRepalBillStage())) {
- qw.eq(RepalRemindDefinition::getOpportunity, diagnosis.getDiagnosisGrade());
- } else {
- qw.eq(RepalRemindDefinition::getOpportunity, diagnosis.getDiagnosisGrade() + "+" + overdueEnum.getCode());
- }
- qw.eq(RepalRemindDefinition::getRepalBillStatus, repalBill.getRepalBillStatus());
- qw.eq(RepalRemindDefinition::getRepalBillStage, repalBill.getRepalBillStage());
- RepalRemindDefinition accountRemindDefinition = repalRemindDefinitionService.getOne(qw, false);
- if (accountRemindDefinition != null) {
- String changeStr = "下降";
- String changeStr1 = "下降";
- if (repalBill.getDiagnosisScore().compareTo(repalBill.getPreDiagnosisScore() == null ? new BigDecimal(0)
- : repalBill.getPreDiagnosisScore()) > 0) {
- changeStr = "上升";
- changeStr1 = "提高";
- }
- RepalRemindHistory accountRemindHistory = new RepalRemindHistory();
- accountRemindHistory.setCustId(repalBill.getCustomerId())
- .setRepalBookId(repalBill.getRepalBookId())
- .setRepalBillId(repalBill.getId())
- .setTrendId(diagnosis.getId().toString())
- .setTrendContent(repalBill.getPreDiagnosisId() != null ? repalBill.getPreDiagnosisId().toString() : null)
- .setRemindTime(LocalDateTime.now())
- .setCompanyName(repalBill.getCustomerName())
- .setRemindTitle(diagnosis.getDiagnosisGrade() + "(" + diagnosis.getDiagnosisScore().stripTrailingZeros().toPlainString() + "分)")
- .setRemindContent(StrUtil.format(accountRemindDefinition.getRemindContent(),
- changeStr,
- changeStr1,
- overdueEnum.name()))
- .setFunctionList(accountRemindDefinition.getFunctionList())
- .setRemindType(RemindEnum.账款评级.getCode());
- save(accountRemindHistory);
- //推送
- //查出组织下所有已经授权的成员
- List<ThirdPartyAccount> accounts = thirdPartyAccountService.list(Wrappers.lambdaQuery(ThirdPartyAccount.class)
- .eq(ThirdPartyAccount::getGroupId,repalBill.getRepalGroupId())
- .eq(ThirdPartyAccount::getDeleted,Dict.DeletedStatusEnunm.否.getCode())
- .eq(ThirdPartyAccount::getAppId,0)
- .isNotNull(ThirdPartyAccount::getMobileNo));
- List<String> mobiles = accounts.stream().map(ThirdPartyAccount::getMobileNo).collect(Collectors.toList());
- String redisKey = MESSAGE_PRIFIX + repalBill.getRepalGroupId() + "_" + RemindEnum.账款评级.getCode();
- if (CollUtil.isNotEmpty(mobiles) && redisUtil.get(redisKey) == null && repalBill.getPreDiagnosisId() != null) {
- for(String mobileNo:mobiles) {
- Map<String, String> paraMap = new HashMap<>();
- paraMap.put("company", repalBill.getCustomerName());
- paraMap.put("pregrade", repalBill.getPreDiagnosisGrade());
- paraMap.put("prescore", repalBill.getPreDiagnosisScore().toPlainString());
- paraMap.put("change", changeStr);
- paraMap.put("grade", repalBill.getDiagnosisGrade());
- paraMap.put("score", repalBill.getDiagnosisScore().toPlainString());
- paraMap.put("change1", changeStr1);
- messageNoticeService.sendSms(mobileNo, MsgNameEnum.评级变动短信提醒, paraMap);
- }
- redisUtil.setEx(redisKey, "done", calTTL(), TimeUnit.MILLISECONDS);
- }
- //掐头去尾压进accountbill.remindInfo中
- String remindContent = accountRemindHistory.getRemindContent();
- if (remindContent.length() > 100) {
- remindContent = remindContent.substring(0, 100);
- }
- accountRemindHistory.setFunctionList(null).setRemindContent(remindContent);
- repalBill.setRemindInfo(JSON.toJSONString(accountRemindHistory));
- }
- return true;
- }
- @Override
- public RepalRemindHistoryVO getDetailById(Long id, UserBean userBean) {
- RepalRemindHistory bean = getById(id);
- RepalRemindHistoryVO remindHistoryVO = RepalRemindHistoryConvert.EntityToVO(bean);
- RepalBill accountBill = repalBillService.getById(remindHistoryVO.getRepalBillId());
- //评级提醒返回本次评分 上次评分,以及动态监测
- if (RemindEnum.账款评级.getCode().equals(remindHistoryVO.getRemindType())) {
- RepalBillDiagnosis accountBillDiagnosis = repalBillDiagnosisService.getById(remindHistoryVO.getTrendId());
- if (ObjectUtil.isNotNull(accountBillDiagnosis)) {
- QueryV8DynamicDTO dynamicDto = new QueryV8DynamicDTO();
- remindHistoryVO.setDiagnosisGrade(accountBillDiagnosis.getDiagnosisGrade())
- .setDiagnosisScore(accountBillDiagnosis.getDiagnosisScore())
- .setDiagnosisDatetime(accountBillDiagnosis.getDiagnosisDatetime())
- .setDiagnosisRecordId(accountBillDiagnosis.getBizId());
- dynamicDto.setEndDate(accountBillDiagnosis.getDiagnosisDatetime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
- if (StrUtil.isNotEmpty(remindHistoryVO.getTrendContent())) {
- RepalBillDiagnosis preAccountDiagnosis = repalBillDiagnosisService.getById(remindHistoryVO.getTrendContent());
- if (ObjectUtil.isNotNull(preAccountDiagnosis)) {
- remindHistoryVO.setPreDiagnosisGrade(preAccountDiagnosis.getDiagnosisGrade())
- .setPreDiagnosisScore(preAccountDiagnosis.getDiagnosisScore())
- .setPreDiagnosisDatetime(preAccountDiagnosis.getDiagnosisDatetime());
- dynamicDto.setStartDate(preAccountDiagnosis.getDiagnosisDatetime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
- }
- }
- dynamicDto.setEntityNames(Collections.singletonList(accountBill.getCustomerName()));
- VOPage<V8DynamicVO> resultPage = companyService.queryDynamic(dynamicDto, 1, 10);
- if (ObjectUtil.isNull(resultPage) || ObjectUtil.isNull(resultPage.getDataList()) || CollUtil.isEmpty(resultPage.getDataList())) {
- DiagnosisDynamicVO dynamicVO = new DiagnosisDynamicVO();
- dynamicVO.setRtaDesc("该账款信息发生变动(欠款企业、金额有所调整)");
- dynamicVO.setCreateTime(accountBill.getTimeModified().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
- remindHistoryVO.setEsDynamics(Collections.singletonList(dynamicVO));
- }
- remindHistoryVO.setEsDynamics(resultPage.getDataList().stream().map(entity -> {
- DiagnosisDynamicVO diagnosisDynamicVO = new DiagnosisDynamicVO();
- diagnosisDynamicVO.setNewDynamicId(entity.getId());
- diagnosisDynamicVO.setRowKey(entity.getRowkey());
- diagnosisDynamicVO.setCreateTime(entity.getDynamicTime());
- String rtaDesc = DynamicEnum.getDescByTn(entity.getTn());
- diagnosisDynamicVO.setRtaDesc(rtaDesc);
- diagnosisDynamicVO.setTn(entity.getTn());
- diagnosisDynamicVO.setInfoType(entity.getInfoType());
- diagnosisDynamicVO.setNewRemindContent(JSON.toJSONString(entity.getDynamicJSON()));
- diagnosisDynamicVO.setRouting(DynamicEnum.getRoutingByTn(entity.getTn()));
- return diagnosisDynamicVO;
- }).collect(Collectors.toList()));
- }
- }
- //逾期提醒返回本次评分以及应收账款日期
- else if (RemindEnum.逾期提醒.getCode().equals(remindHistoryVO.getRemindType())) {
- RepalBillDiagnosis accountBillDiagnosis = repalBillDiagnosisService.getById(remindHistoryVO.getTrendId());
- if (ObjectUtil.isNotNull(accountBillDiagnosis)) {
- remindHistoryVO.setDiagnosisGrade(accountBillDiagnosis.getDiagnosisGrade())
- .setDiagnosisScore(accountBillDiagnosis.getDiagnosisScore())
- .setDiagnosisDatetime(accountBillDiagnosis.getDiagnosisDatetime());
- }
- remindHistoryVO.setEndDate(LocalDateTime.ofEpochSecond(Long.parseLong(remindHistoryVO.getTrendContent()) / 1000, 0, ZoneOffset.ofHours(8)));
- }
- RepalCustomer repalCustomer = repalCustomerService.getById(accountBill.getCustomerId());
- if(ObjectUtil.isNotNull(repalCustomer)) {
- remindHistoryVO.setCompanyId(repalCustomer.getCompanyId());
- }
- //更新已读状态,感觉用不到,还是加上吧
- repalRemindReadInfoService.updateReadInfoByUserId(userBean.getUserId(),bean.getRemindType(),accountBill.getId(),accountBill.getRepalBookId());
- return remindHistoryVO;
- }
- @Override
- public RepalRemindCountVO queryRemidCount(RepalRemindHistoryDTO dto, UserBean userBean) {
- //参数校验
- if(ObjectUtil.isNull(dto.getQueryType())){
- throw new CommonException(CodeMsg.VALIDATE_PARAMETER);
- }
- LocalDateTime localDateTime = LocalDateTime.now().withYear(2019);
- //添加查询时间的条件
- if (StrUtil.isBlank(dto.getTimeSlot()) || Dict.TIME_SLOT_ENUM.本月.getCode().equals(dto.getTimeSlot())) {
- localDateTime = LocalDateTime.now().withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0);
- }else if(StrUtil.isBlank(dto.getTimeSlot()) || Dict.TIME_SLOT_ENUM.本周.getCode().equals(dto.getTimeSlot())){
- localDateTime = LocalDateTime.now().with(DayOfWeek.MONDAY).withHour(0).withMinute(0).withSecond(0);
- }
- RepalRemindCountVO result = new RepalRemindCountVO(0,0,0,0,0,0,0,0,0,0);
- if(Dict.COUNT_QUERY_ENUM.账款.getCode().equals(dto.getQueryType())){
- if(ObjectUtil.isNull(dto.getRepalBillId())){
- throw new CommonException(CodeMsg.VALIDATE_PARAMETER);
- }
- RepalBill repalBill = repalBillService.getById(dto.getRepalBillId());
- RepalRemindReadInfo repalRemindReadInfo = repalRemindReadInfoService.getReadInfoByUserId(userBean.getUserId(), dto.getRepalBillId(), repalBill.getRepalBookId());
- result = repalRemindHistoryMapper.remindCount(repalBill.getId(),localDateTime,repalRemindReadInfo.getRiskRemindId(),repalRemindReadInfo.getRankRemindId(),repalRemindReadInfo.getOverdueRemindId(),repalRemindReadInfo.getFinanceRemindId());
- result.setUnreadTotalCount(result.getUnreadRankCount()+result.getUnreadRiskCount()+result.getUnreadOverdueCount()+result.getUnreadFinanceCount());
- }else if(Dict.COUNT_QUERY_ENUM.客户.getCode().equals(dto.getQueryType())){
- if(ObjectUtil.isNull(dto.getCustId())){
- throw new CommonException(CodeMsg.VALIDATE_PARAMETER);
- }
- //客户维度多账款
- List<RepalBill> repalBills = repalBillService.list(Wrappers.lambdaQuery(RepalBill.class).eq(RepalBill::getCustomerId,dto.getCustId()).eq(RepalBill::getDeleted, Dict.DeletedStatusEnunm.否.getCode()));
- for(RepalBill repalBill:repalBills){
- RepalRemindReadInfo repalRemindReadInfo = repalRemindReadInfoService.getReadInfoByUserId(userBean.getUserId(), dto.getRepalBillId(), repalBill.getRepalBookId());
- RepalRemindCountVO tmp = repalRemindHistoryMapper.remindCount(repalBill.getId(),localDateTime,repalRemindReadInfo.getRiskRemindId(),repalRemindReadInfo.getRankRemindId(),repalRemindReadInfo.getOverdueRemindId(),repalRemindReadInfo.getFinanceRemindId());
- result.setFinanceCount(result.getFinanceCount()+tmp.getFinanceCount());
- result.setRankCount(result.getRankCount()+tmp.getRankCount());
- result.setOverdueCount(result.getOverdueCount()+tmp.getOverdueCount());
- result.setRiskCount(result.getRiskCount()+tmp.getRiskCount());
- result.setUnreadRiskCount(result.getUnreadRiskCount()+tmp.getUnreadRiskCount());
- result.setUnreadRankCount(result.getUnreadRankCount()+tmp.getUnreadRankCount());
- result.setUnreadFinanceCount(result.getUnreadFinanceCount()+tmp.getUnreadFinanceCount());
- result.setUnreadOverdueCount(result.getUnreadOverdueCount()+tmp.getUnreadOverdueCount());
- result.setTotalCount(result.getTotalCount()+tmp.getTotalCount());
- result.setUnreadTotalCount(result.getUnreadTotalCount()+tmp.getUnreadTotalCount());
- }
- }else if(Dict.COUNT_QUERY_ENUM.用户.getCode().equals(dto.getQueryType())){
- //用户->组织->客户s->账款s
- RepalGroupMember repalGroupMember = repalGroupMemberService.getOne(Wrappers.lambdaQuery(RepalGroupMember.class)
- .eq(RepalGroupMember::getUserId,userBean.getUserId())
- .eq(RepalGroupMember::getDeleted,Dict.DeletedStatusEnunm.否.getCode()),false);
- if(repalGroupMember!=null){
- List<RepalCustomer> repalCustomers = repalCustomerService.list(Wrappers.lambdaQuery(RepalCustomer.class).eq(RepalCustomer::getRepalGroupId,repalGroupMember.getRepalGroupId()).eq(RepalCustomer::getDeleted,Dict.DeletedStatusEnunm.否.getCode()));
- List<RepalBill> repalBills = repalBillService.list(Wrappers.lambdaQuery(RepalBill.class).in(RepalBill::getCustomerId,repalCustomers.stream().map(RepalCustomer::getCustId).collect(Collectors.toList())).eq(RepalBill::getDeleted, Dict.DeletedStatusEnunm.否.getCode()));
- for(RepalBill repalBill:repalBills){
- RepalRemindReadInfo repalRemindReadInfo = repalRemindReadInfoService.getReadInfoByUserId(userBean.getUserId(), dto.getRepalBillId(), repalBill.getRepalBookId());
- RepalRemindCountVO tmp = repalRemindHistoryMapper.remindCount(repalBill.getId(),localDateTime,repalRemindReadInfo.getRiskRemindId(),repalRemindReadInfo.getRankRemindId(),repalRemindReadInfo.getOverdueRemindId(),repalRemindReadInfo.getFinanceRemindId());
- result.setFinanceCount(result.getFinanceCount()+tmp.getFinanceCount());
- result.setRankCount(result.getRankCount()+tmp.getRankCount());
- result.setOverdueCount(result.getOverdueCount()+tmp.getOverdueCount());
- result.setRiskCount(result.getRiskCount()+tmp.getRiskCount());
- result.setUnreadRiskCount(result.getUnreadRiskCount()+tmp.getUnreadRiskCount());
- result.setUnreadRankCount(result.getUnreadRankCount()+tmp.getUnreadRankCount());
- result.setUnreadFinanceCount(result.getUnreadFinanceCount()+tmp.getUnreadFinanceCount());
- result.setUnreadOverdueCount(result.getUnreadOverdueCount()+tmp.getUnreadOverdueCount());
- result.setTotalCount(result.getTotalCount()+tmp.getTotalCount());
- result.setUnreadTotalCount(result.getUnreadTotalCount()+tmp.getUnreadTotalCount());
- }
- }
- }
- return result;
- }
- @Override
- public VOPage<RepalRemindHistoryVO> find(RepalRemindHistoryDTO dto, Integer pageNum, Integer pageSize, UserBean userBean) {
- //权限
- boolean allFlag = repalRolePermissionService.checkUserPermission(UserContextUtil.getUser().getUserId(),PermissionEnum.QUERY_ALL_URGE.getCode());
- //参数校验
- if(ObjectUtil.isNull(dto.getQueryType())){
- throw new CommonException(CodeMsg.VALIDATE_PARAMETER);
- }
- LocalDateTime localDateTime = LocalDateTime.now().withYear(2019);
- //添加查询时间的条件
- if (StrUtil.isBlank(dto.getTimeSlot()) || Dict.TIME_SLOT_ENUM.本月.getCode().equals(dto.getTimeSlot())) {
- localDateTime = LocalDateTime.now().withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0);
- }else if(StrUtil.isBlank(dto.getTimeSlot()) || Dict.TIME_SLOT_ENUM.本周.getCode().equals(dto.getTimeSlot())){
- localDateTime = LocalDateTime.now().with(DayOfWeek.MONDAY).withHour(0).withMinute(0).withSecond(0);
- }
- VOPage<RepalRemindHistoryVO> result = new VOPage<>(pageNum,pageSize,0L,new ArrayList<>());
- LambdaQueryWrapper<RepalRemindHistory> qw = Wrappers.lambdaQuery(RepalRemindHistory.class);
- if (StrUtil.isNotBlank(dto.getRemindType())) {
- if (RemindEnum.财产线索.getCode().equals(dto.getRemindType())
- || RemindEnum.逾期提醒.getCode().equals(dto.getRemindType())
- || RemindEnum.账款评级.getCode().equals(dto.getRemindType())
- || RemindEnum.风险预警.getCode().equals(dto.getRemindType())) {
- qw.eq(RepalRemindHistory::getRemindType, dto.getRemindType());
- }
- }
- qw.ge(RepalRemindHistory::getRemindTime,localDateTime).orderByDesc(RepalRemindHistory::getId);
- if(Dict.COUNT_QUERY_ENUM.账款.getCode().equals(dto.getQueryType())){
- if(ObjectUtil.isNull(dto.getRepalBillId())){
- throw new CommonException(CodeMsg.VALIDATE_PARAMETER);
- }
- qw.eq(RepalRemindHistory::getRepalBillId,dto.getRepalBillId());
- IPage<RepalRemindHistory> pageAccountRemindHistory = page(new Page<>(pageNum, pageSize), qw);
- if(CollUtil.isNotEmpty(pageAccountRemindHistory.getRecords())){
- result = new VOPage<>(pageNum, pageSize, pageAccountRemindHistory.getTotal(), pageAccountRemindHistory.getRecords().stream()
- .map(RepalRemindHistoryConvert::EntityToVO).collect(Collectors.toList()));
- //更新已读未读状态
- RepalBill repalBill = repalBillService.getById(dto.getRepalBillId());
- RepalCustomer repalCustomer = repalCustomerService.getById(repalBill.getCustomerId());
- RepalRemindReadInfo repalRemindReadInfo = repalRemindReadInfoService.getReadInfoByUserId(userBean.getUserId(), dto.getRepalBillId(), repalBill.getRepalBookId());
- for(RepalRemindHistoryVO vo:result.getDataList()){
- vo.setCompanyId(repalCustomer.getCompanyId());
- vo.setReadStatus(Dict.ReadStatusEnum.已读.getCode());
- if(RemindEnum.逾期提醒.getCode().equals(vo.getRemindType()) && vo.getId() > repalRemindReadInfo.getOverdueRemindId()){
- vo.setReadStatus(Dict.ReadStatusEnum.未读.getCode());
- }else if(RemindEnum.财产线索.getCode().equals(vo.getRemindType()) && vo.getId() > repalRemindReadInfo.getFinanceRemindId()){
- vo.setReadStatus(Dict.ReadStatusEnum.未读.getCode());
- }else if(RemindEnum.风险预警.getCode().equals(vo.getRemindType()) && vo.getId() > repalRemindReadInfo.getRiskRemindId()){
- vo.setReadStatus(Dict.ReadStatusEnum.未读.getCode());
- }else if(RemindEnum.账款评级.getCode().equals(vo.getRemindType()) && vo.getId() > repalRemindReadInfo.getRankRemindId()){
- vo.setReadStatus(Dict.ReadStatusEnum.未读.getCode());
- }
- }
- //查询详细分类时更新已读id
- if(StrUtil.isNotBlank(dto.getRemindType())){
- repalRemindReadInfoService.updateReadInfoByUserId(userBean.getUserId(), dto.getRemindType(),dto.getRepalBillId(), repalBill.getRepalBookId());
- }
- }
- }else if(Dict.COUNT_QUERY_ENUM.客户.getCode().equals(dto.getQueryType())){
- if(ObjectUtil.isNull(dto.getCustId())){
- throw new CommonException(CodeMsg.VALIDATE_PARAMETER);
- }
- //客户维度多账款
- List<RepalBill> repalBills = repalBillService.list(Wrappers.lambdaQuery(RepalBill.class).eq(RepalBill::getCustomerId,dto.getCustId()).eq(RepalBill::getDeleted, Dict.DeletedStatusEnunm.否.getCode()));
- if(CollUtil.isEmpty(repalBills)){
- return new VOPage<>();
- }
- qw.in(RepalRemindHistory::getRepalBillId,repalBills.stream().map(RepalBill::getId).collect(Collectors.toList()));
- Map<String,RepalCustomer> repalCustomerMap = repalCustomerService.list(Wrappers.lambdaQuery(RepalCustomer.class).in(RepalCustomer::getCustId,repalBills.stream().map(RepalBill::getCustomerId).collect(Collectors.toList()))).stream().collect(Collectors.toMap(RepalCustomer::getCustName, Function.identity()));
- IPage<RepalRemindHistory> pageAccountRemindHistory = page(new Page<>(pageNum, pageSize), qw);
- if(CollUtil.isNotEmpty(pageAccountRemindHistory.getRecords())){
- result = new VOPage<>(pageNum, pageSize, pageAccountRemindHistory.getTotal(), pageAccountRemindHistory.getRecords().stream()
- .map(RepalRemindHistoryConvert::EntityToVO).collect(Collectors.toList()));
- Map<Long,RepalRemindReadInfo> readInfoMap = new HashMap<>();
- for(RepalRemindHistoryVO vo:result.getDataList()){
- if(repalCustomerMap.containsKey(vo.getCompanyName())){
- vo.setCompanyId(repalCustomerMap.get(vo.getCompanyName()).getCompanyId());
- }
- vo.setReadStatus(Dict.ReadStatusEnum.已读.getCode());
- RepalRemindReadInfo repalRemindReadInfo;
- if(readInfoMap.containsKey(vo.getRepalBillId())){
- repalRemindReadInfo = readInfoMap.get(vo.getRepalBillId());
- }else {
- repalRemindReadInfo = repalRemindReadInfoService.getReadInfoByUserId(userBean.getUserId(), vo.getRepalBillId(), vo.getRepalBookId());
- readInfoMap.put(vo.getRepalBillId(),repalRemindReadInfo);
- }
- if(RemindEnum.逾期提醒.getCode().equals(vo.getRemindType()) && vo.getId() > repalRemindReadInfo.getOverdueRemindId()){
- vo.setReadStatus(Dict.ReadStatusEnum.未读.getCode());
- }else if(RemindEnum.财产线索.getCode().equals(vo.getRemindType()) && vo.getId() > repalRemindReadInfo.getFinanceRemindId()){
- vo.setReadStatus(Dict.ReadStatusEnum.未读.getCode());
- }else if(RemindEnum.风险预警.getCode().equals(vo.getRemindType()) && vo.getId() > repalRemindReadInfo.getRiskRemindId()){
- vo.setReadStatus(Dict.ReadStatusEnum.未读.getCode());
- }else if(RemindEnum.账款评级.getCode().equals(vo.getRemindType()) && vo.getId() > repalRemindReadInfo.getRankRemindId()){
- vo.setReadStatus(Dict.ReadStatusEnum.未读.getCode());
- }
- }
- //查询详细分类时更新已读id
- if(StrUtil.isNotBlank(dto.getRemindType()) && CollUtil.isNotEmpty(readInfoMap)){
- for(RepalRemindReadInfo repalRemindReadInfo:readInfoMap.values()){
- repalRemindReadInfoService.updateReadInfoByUserId(userBean.getUserId(), dto.getRemindType(),repalRemindReadInfo.getRepalBillId(), repalRemindReadInfo.getRepalBookId());
- }
- }
- }
- }else if(Dict.COUNT_QUERY_ENUM.用户.getCode().equals(dto.getQueryType())){
- //用户->组织->客户s->账款s
- RepalGroupMember repalGroupMember = repalGroupMemberService.getOne(Wrappers.lambdaQuery(RepalGroupMember.class)
- .eq(RepalGroupMember::getUserId,userBean.getUserId())
- .eq(RepalGroupMember::getDeleted,Dict.DeletedStatusEnunm.否.getCode()),false);
- if(repalGroupMember!=null){
- List<RepalCustomer> repalCustomers = repalCustomerService.list(Wrappers.lambdaQuery(RepalCustomer.class).eq(RepalCustomer::getRepalGroupId,repalGroupMember.getRepalGroupId()).eq(RepalCustomer::getDeleted,Dict.DeletedStatusEnunm.否.getCode()));
- if(CollUtil.isEmpty(repalCustomers)){
- return new VOPage<>();
- }
- List<RepalBill> repalBills = repalBillService.list(Wrappers.lambdaQuery(RepalBill.class).in(RepalBill::getCustomerId,repalCustomers.stream().map(RepalCustomer::getCustId).collect(Collectors.toList())).eq(RepalBill::getDeleted, Dict.DeletedStatusEnunm.否.getCode()));
- if(CollUtil.isEmpty(repalBills)){
- return new VOPage<>();
- }
- Map<String,RepalCustomer> repalCustomerMap = repalCustomers.stream().collect(Collectors.toMap(RepalCustomer::getCustName, Function.identity(),(a,b)->a));
- qw.in(RepalRemindHistory::getRepalBillId,repalBills.stream().map(RepalBill::getId).collect(Collectors.toList()));
- qw.exists(!allFlag,"select 1 from REPAL_CUST_CHARGE_REL C WHERE C.CUST_ID = REPAL_REMIND_HISTORY.CUST_ID AND C.MEMBER_USER_ID = "+userBean.getUserId());
- IPage<RepalRemindHistory> pageAccountRemindHistory = page(new Page<>(pageNum, pageSize), qw);
- if(CollUtil.isNotEmpty(pageAccountRemindHistory.getRecords())){
- result = new VOPage<>(pageNum, pageSize, pageAccountRemindHistory.getTotal(), pageAccountRemindHistory.getRecords().stream()
- .map(RepalRemindHistoryConvert::EntityToVO).collect(Collectors.toList()));
- Map<Long,RepalRemindReadInfo> readInfoMap = new HashMap<>();
- for(RepalRemindHistoryVO vo:result.getDataList()){
- vo.setReadStatus(Dict.ReadStatusEnum.已读.getCode());
- if(repalCustomerMap.containsKey(vo.getCompanyName())){
- vo.setCompanyId(repalCustomerMap.get(vo.getCompanyName()).getCompanyId());
- }
- RepalRemindReadInfo repalRemindReadInfo;
- if(readInfoMap.containsKey(vo.getRepalBillId())){
- repalRemindReadInfo = readInfoMap.get(vo.getRepalBillId());
- }else {
- repalRemindReadInfo = repalRemindReadInfoService.getReadInfoByUserId(userBean.getUserId(), vo.getRepalBillId(), vo.getRepalBookId());
- readInfoMap.put(vo.getRepalBillId(),repalRemindReadInfo);
- }
- if(RemindEnum.逾期提醒.getCode().equals(vo.getRemindType()) && vo.getId() > repalRemindReadInfo.getOverdueRemindId()){
- vo.setReadStatus(Dict.ReadStatusEnum.未读.getCode());
- }else if(RemindEnum.财产线索.getCode().equals(vo.getRemindType()) && vo.getId() > repalRemindReadInfo.getFinanceRemindId()){
- vo.setReadStatus(Dict.ReadStatusEnum.未读.getCode());
- }else if(RemindEnum.风险预警.getCode().equals(vo.getRemindType()) && vo.getId() > repalRemindReadInfo.getRiskRemindId()){
- vo.setReadStatus(Dict.ReadStatusEnum.未读.getCode());
- }else if(RemindEnum.账款评级.getCode().equals(vo.getRemindType()) && vo.getId() > repalRemindReadInfo.getRankRemindId()){
- vo.setReadStatus(Dict.ReadStatusEnum.未读.getCode());
- }
- }
- //查询详细分类时更新已读id
- if(StrUtil.isNotBlank(dto.getRemindType()) && CollUtil.isNotEmpty(readInfoMap)){
- for(RepalRemindReadInfo repalRemindReadInfo:readInfoMap.values()){
- repalRemindReadInfoService.updateReadInfoByUserId(userBean.getUserId(), dto.getRemindType(),repalRemindReadInfo.getRepalBillId(), repalRemindReadInfo.getRepalBookId());
- }
- }
- }
- }
- }
- if (CollUtil.isNotEmpty(result.getDataList())) {
- result.getDataList().forEach(e -> {
- //逾期提醒返回本次评分以及应收账款日期
- if (RemindEnum.逾期提醒.getCode().equals(e.getRemindType())) {
- RepalBillDiagnosis accountBillDiagnosis = repalBillDiagnosisService.getById(e.getTrendId());
- if (ObjectUtil.isNotNull(accountBillDiagnosis)) {
- e.setDiagnosisGrade(accountBillDiagnosis.getDiagnosisGrade())
- .setDiagnosisScore(accountBillDiagnosis.getDiagnosisScore())
- .setDiagnosisDatetime(accountBillDiagnosis.getDiagnosisDatetime());
- }
- e.setEndDate(LocalDateTime.ofEpochSecond(Long.parseLong(e.getTrendContent()) / 1000, 0, ZoneOffset.ofHours(8)));
- }
- if (RemindEnum.账款评级.getCode().equals(e.getRemindType())) {
- RepalBillDiagnosis accountBillDiagnosis = repalBillDiagnosisService.getById(e.getTrendId());
- if (ObjectUtil.isNotNull(accountBillDiagnosis)) {
- e.setDiagnosisGrade(accountBillDiagnosis.getDiagnosisGrade())
- .setDiagnosisScore(accountBillDiagnosis.getDiagnosisScore())
- .setDiagnosisDatetime(accountBillDiagnosis.getDiagnosisDatetime())
- .setDiagnosisRecordId(accountBillDiagnosis.getBizId());
- if (StrUtil.isNotEmpty(e.getTrendContent())) {
- RepalBillDiagnosis preAccountDiagnosis = repalBillDiagnosisService.getById(e.getTrendContent());
- if (ObjectUtil.isNotNull(preAccountDiagnosis)) {
- e.setPreDiagnosisGrade(preAccountDiagnosis.getDiagnosisGrade())
- .setPreDiagnosisScore(preAccountDiagnosis.getDiagnosisScore())
- .setPreDiagnosisDatetime(preAccountDiagnosis.getDiagnosisDatetime());
- }
- }
- }
- }
- });
- }
- return result;
- }
- private OverdueEnum getDaysBetween(LocalDate endDate) {
- long delta = LocalDate.now().toEpochDay() - endDate.toEpochDay();
- OverdueEnum overdueEnum = OverdueEnum.其他;
- if (delta <= 0 && delta >= -7) {
- overdueEnum = OverdueEnum.即将逾期;
- } else if (delta > 0 && delta < 90) {
- overdueEnum = OverdueEnum.已逾期;
- } else if (delta >= 90 && delta < 180) {
- overdueEnum = OverdueEnum.已逾期三个月;
- } else if (delta >= 180 && delta < 365) {
- overdueEnum = OverdueEnum.已逾期半年;
- } else if (delta >= 365 && delta < 365 * 3) {
- overdueEnum = OverdueEnum.已逾期一年;
- } else if (delta >= 365 * 3) {
- overdueEnum = OverdueEnum.已逾期三年;
- }
- return overdueEnum;
- }
- /**
- * 计算当天剩余的毫秒时间
- * @return
- */
- private Long calTTL(){
- LocalDateTime midnight = LocalDateTime.now().plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0);
- return ChronoUnit.MILLIS.between(LocalDateTime.now(),midnight);
- }
- @Override
- public List<BookDynamicCountBO> getBookDynamicCount(Long repalBookId, Long userId, LocalDateTime startDateTime, LocalDateTime endDateTime) {
- return repalRemindHistoryMapper.getBookDynamicCount(repalBookId, userId, startDateTime, endDateTime);
- }
- @Override
- public RepalBillRemindUnReadVO getBillRemindUnReadVO(Long riskId, Long rankId, Long overdueId, Long financeId, Long repalBookId, Long repalBillId, LocalDateTime startTime, LocalDateTime endTime) {
- return repalRemindHistoryMapper.getRemindUnReadVO(riskId, rankId, overdueId, financeId, repalBookId, repalBillId, startTime, endTime);
- }
- }
|