Browse Source

feat:催款详情

zhangwei 3 years ago
parent
commit
f55aa269b3

+ 1 - 1
src/main/java/com/winhc/repal/controller/RepalManageController.java

@@ -42,6 +42,6 @@ public class RepalManageController {
     @ApiOperation("查询催款账款详情")
     @GetMapping("/{repalBillId}")
     public BeanResponse<RepalManageBillDetailVO> querManageBillDetail(@PathVariable("repalBillId")Long repalBillId){
-        return BeanResponse.success(CodeMsg.SUCCESS,null);
+        return BeanResponse.success(CodeMsg.SUCCESS,repalBillService.querManageBillDetail(repalBillId));
     }
 }

+ 86 - 0
src/main/java/com/winhc/repal/entity/RepalVip.java

@@ -0,0 +1,86 @@
+package com.winhc.repal.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @description RepalVip实体对象
+ * @author Generator
+ * @date 2022-05-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("REPAL_VIP")
+@ApiModel(value="RepalVip实体对象", description="回款助手开通表")
+public class RepalVip implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "组织id")
+    @TableField("REPAL_GROUP_ID")
+    private Long repalGroupId;
+
+    @ApiModelProperty(value = "回款助手特权0:有特权;1:无特权")
+    @TableField("REPAL_VIP_SIGN")
+    private String repalVipSign;
+
+    @ApiModelProperty(value = "回款助手开始时间")
+    @TableField("REPAL_VIP_START_TIME")
+    private LocalDateTime repalVipStartTime;
+
+    @ApiModelProperty(value = "回款助手结束时间")
+    @TableField("REPAL_VIP_END_TIME")
+    private LocalDateTime repalVipEndTime;
+
+    @ApiModelProperty(value = "当前套餐")
+    @TableField("CURRENT_ORDER")
+    private String currentOrder;
+
+    @ApiModelProperty(value = "短信剩余次数")
+    @TableField("SMS_REMAIN_COUNT")
+    private Integer smsRemainCount;
+
+    @ApiModelProperty(value = "催款函剩余次数")
+    @TableField("LETTER_REMAIN_COUNT")
+    private Integer letterRemainCount;
+
+    @ApiModelProperty(value = "咨询剩余次数")
+    @TableField("CONSULT_REMAIN_COUNT")
+    private Integer consultRemainCount;
+
+    @ApiModelProperty(value = "诉讼剩余次数")
+    @TableField("LAWSUIT_REMAIN_COUNT")
+    private Integer lawsuitRemainCount;
+
+    @ApiModelProperty(value = "短信总次数")
+    @TableField("SMS_TOTAL_COUNT")
+    private Integer smsTotalCount;
+
+    @ApiModelProperty(value = "催款函总次数")
+    @TableField("LETTER_TOTAL_COUNT")
+    private Integer letterTotalCount;
+
+    @ApiModelProperty(value = "咨询总次数")
+    @TableField("CONSULT_TOTAL_COUNT")
+    private Integer consultTotalCount;
+
+    @ApiModelProperty(value = "诉讼总次数")
+    @TableField("LAWSUIT_TOTAL_COUNT")
+    private Integer lawsuitTotalCount;
+
+
+}

+ 33 - 0
src/main/java/com/winhc/repal/model/vo/RepalDynamicVO.java

@@ -0,0 +1,33 @@
+package com.winhc.repal.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author Aaron
+ * @date 2022/5/7 10:06
+ * @description
+ */
+@Data
+@ApiModel("催款动态")
+public class RepalDynamicVO {
+    @ApiModelProperty(value = "成员id")
+    private Long memberId;
+
+    @ApiModelProperty(value = "成员名字")
+    private String memberUserName;
+
+    @ApiModelProperty(value = "动态类型 1短信 2律师函 3咨询 4诉讼 5其他")
+    private Integer dynamicType;
+
+    @ApiModelProperty(value = "动态内容")
+    private String dynamicDesc;
+
+    @ApiModelProperty(value = "动态时间")
+    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
+    private LocalDateTime timeCreated;
+}

+ 5 - 1
src/main/java/com/winhc/repal/model/vo/RepalManageBillDetailVO.java

@@ -83,8 +83,12 @@ public class RepalManageBillDetailVO {
     private Integer assetsNum;
 
     @ApiModelProperty(value = "逾期天数/离收款日")
-    private Integer overdueDay;
+    private Long overdueDay;
 
+    @ApiModelProperty(value = "催款动态")
+    private List<RepalDynamicVO> repalDynamics;
 
+    @ApiModelProperty(value = "催款方式(剩余数量)")
+    private RepalVipVO repalVip;
 
 }

+ 28 - 0
src/main/java/com/winhc/repal/model/vo/RepalVipVO.java

@@ -0,0 +1,28 @@
+package com.winhc.repal.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author Aaron
+ * @date 2022/5/7 10:08
+ * @description
+ */@Data
+@ApiModel("套餐情况")
+public class RepalVipVO {
+    @ApiModelProperty(value = "当前套餐")
+    private String currentOrder;
+
+    @ApiModelProperty(value = "短信剩余次数")
+    private Integer smsRemainCount = 0;
+
+    @ApiModelProperty(value = "催款函剩余次数")
+    private Integer letterRemainCount = 0;
+
+    @ApiModelProperty(value = "咨询剩余次数")
+    private Integer consultRemainCount = 0;
+
+    @ApiModelProperty(value = "诉讼剩余次数")
+    private Integer lawsuitRemainCount = 0;
+}

+ 13 - 0
src/main/java/com/winhc/repal/repository/RepalVipMapper.java

@@ -0,0 +1,13 @@
+package com.winhc.repal.repository;
+
+import com.winhc.repal.entity.RepalVip;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @description RepalVip Mapper 接口
+ * @author Generator
+ * @date 2022-05-07
+ */
+public interface RepalVipMapper extends BaseMapper<RepalVip> {
+
+}

+ 7 - 0
src/main/java/com/winhc/repal/service/RepalBillService.java

@@ -117,4 +117,11 @@ public interface RepalBillService extends IService<RepalBill> {
      * @return
      */
     VOPage<RepalManageBillPageVO>  queryManageBillPage(Integer pageNum, Integer pageSize);
+
+    /**
+     * 查询催款管理的详情
+     * @param repalBillId
+     * @return
+     */
+    RepalManageBillDetailVO querManageBillDetail(Long repalBillId);
 }

+ 14 - 0
src/main/java/com/winhc/repal/service/RepalVipService.java

@@ -0,0 +1,14 @@
+package com.winhc.repal.service;
+
+import com.winhc.repal.entity.RepalVip;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+
+/**
+ * @description RepalVip 接口类
+ * @author Generator
+ * @date 2022-05-07
+ */
+public interface RepalVipService extends IService<RepalVip> {
+
+}

+ 71 - 0
src/main/java/com/winhc/repal/service/impl/RepalBillServiceImpl.java

@@ -107,6 +107,9 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
     @Autowired
     private RepalDynamicService repalDynamicService;
 
+    @Autowired
+    private RepalVipService repalVipService;
+
 
     @Override
     public RepalBillInfoVO getRepalBillPage(GetRepalBillPageDTO dto) {
@@ -608,4 +611,72 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
         }
         return voPage;
     }
+
+    @Override
+    public RepalManageBillDetailVO querManageBillDetail(Long repalBillId) {
+        //不校验权限,默认看到列表的时候已经通过
+        RepalBill repalBill = this.getById(repalBillId);
+        RepalManageBillDetailVO vo = new RepalManageBillDetailVO();
+        BeanUtils.copyProperties(repalBill, vo);
+
+        vo.setRepalBillId(repalBill.getId());
+        RepalCustomer repalCustomer = repalCustomerService.getById(repalBill.getCustomerId());
+        vo.setCompanyId(repalCustomer.getCompanyId());
+        vo.setCustProperty(repalCustomer.getCustProperty());
+        List<String> nameList = repalResponsiblePersonService.getResponsiblePersonName(vo.getRepalBillId());
+        vo.setResponsiblePersonName(nameList);
+        vo.setTotalMoneyStr(repalBill.getTotalMoney().stripTrailingZeros().toPlainString());
+        vo.setReceiptStr(repalBill.getReceipt().stripTrailingZeros().toPlainString());
+        vo.setReceivableStr(repalBill.getReceivable().stripTrailingZeros().toPlainString());
+        vo.setOverdueDay(Math.abs(LocalDate.now().toEpochDay()-repalBill.getEndDate().toEpochDay()));
+        // 评分趋势
+        vo.setDiagnosisScoreTrend(DiagnosisUtil.getDiagnosisScoreTrend(repalBill.getPreDiagnosisScore(), repalBill.getDiagnosisScore(), repalBill.getPreDiagnosisGrade(), repalBill.getDiagnosisGrade()));
+        if (Objects.nonNull(repalBill.getDiagnosisScore())) {
+            vo.setDiagnosisGradeDesc(DiagnosisUtil.getGradeConclusion(repalBill.getDiagnosisScore()));
+            vo.setDiagnosisScore(repalBill.getDiagnosisScore().stripTrailingZeros().toPlainString());
+        }
+
+        // companyId
+        if (StrUtil.isNotBlank(vo.getCompanyId())) {
+            // 财产数量
+            ApiDataResult<List<FinanceDynamicNumVO>> financeResult = dataMiddlewareService.getFinanceDynamicNumV8List(new GetFinanceDynamicNumDTO().setCompanyIdList(Collections.singletonList(vo.getCompanyId())));
+            if (Objects.nonNull(financeResult) && CollUtil.isNotEmpty(financeResult.getData())) {
+                vo.setAssetsNum(financeResult.getData().get(0).getFinanceDynamicNum());
+            }
+            // 风险数量
+            ApiDataResult<List<CompanyRiskNumVO>> riskResult = dataMiddlewareService.getCompanyRiskNumList(new GetCompanyRiskNumDTO(Collections.singletonList(vo.getCompanyId())));
+            if (Objects.nonNull(riskResult) && CollUtil.isNotEmpty(riskResult.getData())) {
+                vo.setRiskNum(riskResult.getData().get(0).getRiskNum());
+            }
+            // 失信限高标签
+            ApiDataResult<List<CreditPunishmentLabelListVO>> labelResult = dataMiddlewareService.getCreditPunishmentLabelList(new GetCreditPunishmentLabelDTO(Collections.singletonList(vo.getCompanyId())));
+            if (Objects.nonNull(labelResult) && CollUtil.isNotEmpty(labelResult.getData())) {
+                vo.setLabelList(labelResult.getData().get(0).getLabelList());
+            }
+        }
+        //查询套餐剩余qingk
+        RepalVip repalVip = repalVipService.getOne(Wrappers.lambdaQuery(RepalVip.class).eq(RepalVip::getRepalGroupId,repalCustomer.getRepalGroupId()),false);
+        RepalVipVO repalVipVO = new RepalVipVO();
+        if(ObjectUtil.isNotNull(repalVip)){
+            BeanUtils.copyProperties(repalVip,repalVipVO);
+        }
+        vo.setRepalVip(repalVipVO);
+        //查询催款动态列表
+        List<RepalDynamic> dynamics = repalDynamicService.list(Wrappers.lambdaQuery(RepalDynamic.class).eq(RepalDynamic::getRepalBillId,repalBillId).orderByDesc(RepalDynamic::getId));
+        if(CollUtil.isNotEmpty(dynamics)){
+            List<RepalDynamicVO> repalDynamicVOs = new ArrayList<>(dynamics.size());
+            vo.setRepalDynamics(repalDynamicVOs);
+            Map<Long,RepalGroupMember> memberMap = repalGroupMemberService.list(Wrappers.lambdaQuery(RepalGroupMember.class).in(RepalGroupMember::getUserId,dynamics.stream().map(RepalDynamic::getMemberId).distinct().collect(Collectors.toList()))).stream().collect(Collectors.toMap(RepalGroupMember::getUserId,Function.identity()));
+            for(RepalDynamic dynamic:dynamics){
+                RepalDynamicVO repalDynamicVO = new RepalDynamicVO();
+                repalDynamicVOs.add(repalDynamicVO);
+                BeanUtils.copyProperties(dynamic,repalDynamicVO);
+                if(memberMap.containsKey(dynamic.getMemberId())){
+                    RepalGroupMember repalGroupMember = memberMap.get(dynamic.getMemberId());
+                    repalDynamicVO.setMemberUserName(repalGroupMember.getMemberUserName());
+                }
+            }
+        }
+        return vo;
+    }
 }

+ 18 - 0
src/main/java/com/winhc/repal/service/impl/RepalVipServiceImpl.java

@@ -0,0 +1,18 @@
+package com.winhc.repal.service.impl;
+
+import com.winhc.repal.entity.RepalVip;
+import com.winhc.repal.repository.RepalVipMapper;
+import com.winhc.repal.service.RepalVipService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * @description RepalVip 接口实现类
+ * @author Generator
+ * @date 2022-05-07
+ */
+@Service
+public class RepalVipServiceImpl extends ServiceImpl<RepalVipMapper, RepalVip> implements RepalVipService {
+
+
+}

+ 5 - 0
src/main/resources/mapper/RepalVipMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.winhc.repal.repository.RepalVipMapper">
+
+</mapper>