Kaynağa Gözat

feat:短信催款

zhangwei 2 yıl önce
ebeveyn
işleme
238ec56521

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

@@ -54,7 +54,7 @@ public class RepalManageController {
     }
 
     @ApiOperation("添加催款动态")
-    @PostMapping
+    @PostMapping("/dynamic")
     public BeanResponse<Boolean> addDynamic(@RequestBody DynamicContentDTO dto){
         return BeanResponse.success(CodeMsg.SUCCESS,repalDynamicService.addDynamic(dto));
     }
@@ -66,7 +66,7 @@ public class RepalManageController {
     }
 
     @ApiOperation("短信催款")
-    @PostMapping("/urge/sms")
+    @PostMapping("/sms/urge")
     public BeanResponse<Boolean> urgeBySms(@RequestBody RepalSmsDTO dto){
         return BeanResponse.success(CodeMsg.SUCCESS,repalDynamicService.urgeBySms(dto));
     }

+ 1 - 1
src/main/java/com/winhc/repal/enums/RepalMsgTemplateEnum.java

@@ -9,7 +9,7 @@ public enum RepalMsgTemplateEnum {
     /**
      * 催款短信
      */
-    短信模板一("尊敬的{},您好!您(贵司)与我司上海某某科技有限公司有一笔账款未处理 账款总金额:¥{};逾期金额:¥{};到期时间:{},{}。为避免产生不良影响,请您尽快结清款项,若逾期时间过长,我司将采取法律手段!",1);
+    短信模板一("尊敬的{},您好!您(贵司)与我司{}有一笔账款未处理 账款总金额:¥{};逾期金额:¥{};到期时间:{},{}。为避免产生不良影响,请您尽快结清款项,若逾期时间过长,我司将采取法律手段!",1);
 
     private String content;
 

+ 2 - 1
src/main/java/com/winhc/repal/service/impl/RepalBillServiceImpl.java

@@ -1,6 +1,7 @@
 package com.winhc.repal.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -567,7 +568,7 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
         LocalDate startTime = LocalDate.now().plusDays(7);
         ManageBillInfoBO manageBillInfo = repalBillMapper.getManageBillInfo(allFlag,userContextBO.getUserId(),repalGroupMember.getRepalGroupId(),startTime);
         RepalManageBillInfoVO repalManageBillInfoVO = new RepalManageBillInfoVO();
-        if(ObjectUtil.isNull(manageBillInfo.getTotalMoney()) || BigDecimal.ZERO.equals(manageBillInfo.getTotalMoney())){
+        if(ObjectUtil.isNull(manageBillInfo.getTotalMoney()) || NumberUtil.equals(BigDecimal.ZERO,manageBillInfo.getTotalMoney())){
             repalManageBillInfoVO.setOverdueScaleStr("0");
             repalManageBillInfoVO.setTotalOverdueCount(0);
             repalManageBillInfoVO.setTotalOverdueStr("0");

+ 39 - 0
src/main/java/com/winhc/repal/service/impl/RepalCustomerServiceImpl.java

@@ -561,15 +561,54 @@ public class RepalCustomerServiceImpl extends ServiceImpl<RepalCustomerMapper, R
             BeanUtils.copyProperties(dto,repalLink);
             repalLinkService.save(repalLink);
             BeanUtils.copyProperties(repalLink,result);
+            //操作记录
+            RepalBillOperLog repalBillOperLog = new RepalBillOperLog();
+            List<RepalOperLogContentVO> operLogContents = new ArrayList<>();
+            RepalOperLogContentVO contentVO = new RepalOperLogContentVO();
+            contentVO.setPropertyName("links");
+            contentVO.setPropertyCN("联系人");
+            contentVO.setNewValue(JSON.toJSONString(repalLink));
+            operLogContents.add(contentVO);
+
+            Dict.ActionCodeEnum actionCodeEnum = Dict.ActionCodeEnum.修改客户;
+            repalBillOperLog.setActionCode(actionCodeEnum.getCode());
+            repalBillOperLog.setUserId(UserContextUtil.getUser().getUserId());
+            repalBillOperLog.setOperTime(LocalDateTime.now());
+            repalBillOperLog.setBizId(String.valueOf(dto.getCustId()));
+            repalBillOperLog.setBizType(actionCodeEnum.getBizType());
+            repalBillOperLog.setActionName(actionCodeEnum.name());
+            repalBillOperLog.setActionContent(JSON.toJSONString(operLogContents));
+            repalBillOperLogService.save(repalBillOperLog);
         }else {
             RepalLink repalLink = repalLinkService.getById(dto.getId());
             if(ObjectUtil.isNull(repalLink)){
                 throw new CommonException(CodeMsg.FAILED,"负责人不存在");
             }
+            String oldValue = JSON.toJSONString(repalLink);
             repalLink.setName(dto.getName());
             repalLink.setMobileNo(dto.getMobileNo());
             repalLinkService.updateById(repalLink);
             BeanUtils.copyProperties(repalLink,result);
+
+            //操作记录
+            RepalBillOperLog repalBillOperLog = new RepalBillOperLog();
+            List<RepalOperLogContentVO> operLogContents = new ArrayList<>();
+            RepalOperLogContentVO contentVO = new RepalOperLogContentVO();
+            contentVO.setPropertyName("links");
+            contentVO.setPropertyCN("联系人");
+            contentVO.setOldValue(oldValue);
+            contentVO.setNewValue(JSON.toJSONString(repalLink));
+            operLogContents.add(contentVO);
+
+            Dict.ActionCodeEnum actionCodeEnum = Dict.ActionCodeEnum.修改客户;
+            repalBillOperLog.setActionCode(actionCodeEnum.getCode());
+            repalBillOperLog.setUserId(UserContextUtil.getUser().getUserId());
+            repalBillOperLog.setOperTime(LocalDateTime.now());
+            repalBillOperLog.setBizId(String.valueOf(dto.getCustId()));
+            repalBillOperLog.setBizType(actionCodeEnum.getBizType());
+            repalBillOperLog.setActionName(actionCodeEnum.name());
+            repalBillOperLog.setActionContent(JSON.toJSONString(operLogContents));
+            repalBillOperLogService.save(repalBillOperLog);
         }
         return result;
     }

+ 10 - 4
src/main/java/com/winhc/repal/service/impl/RepalDynamicServiceImpl.java

@@ -8,6 +8,7 @@ import com.winhc.common.enums.CodeMsg;
 import com.winhc.common.exception.CommonException;
 import com.winhc.repal.entity.RepalBill;
 import com.winhc.repal.entity.RepalDynamic;
+import com.winhc.repal.entity.RepalGroup;
 import com.winhc.repal.enums.*;
 import com.winhc.repal.model.bo.UserContextBO;
 import com.winhc.repal.model.dto.DynamicContentDTO;
@@ -15,11 +16,8 @@ import com.winhc.repal.model.dto.RepalSmsDTO;
 import com.winhc.repal.model.vo.RepalLinkVO;
 import com.winhc.repal.model.vo.RepalSmsTemplateVO;
 import com.winhc.repal.repository.RepalDynamicMapper;
-import com.winhc.repal.service.MessageNoticeService;
-import com.winhc.repal.service.RepalBillService;
-import com.winhc.repal.service.RepalDynamicService;
+import com.winhc.repal.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.winhc.repal.service.RepalRolePermissionService;
 import com.winhc.repal.util.UserContextUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -45,6 +43,9 @@ public class RepalDynamicServiceImpl extends ServiceImpl<RepalDynamicMapper, Rep
     @Autowired
     private MessageNoticeService messageNoticeService;
 
+    @Autowired
+    private RepalGroupService repalGroupService;
+
     @Override
     public Boolean addDynamic(DynamicContentDTO dto) {
         UserContextBO userContextBO = UserContextUtil.getUser();
@@ -63,6 +64,10 @@ public class RepalDynamicServiceImpl extends ServiceImpl<RepalDynamicMapper, Rep
         if(ObjectUtil.isNull(repalBill)){
             throw new CommonException(CodeMsg.VALIDATE_PARAMETER,"账款不存在");
         }
+        RepalGroup repalGroup = repalGroupService.getById(repalBill.getRepalGroupId());
+        if(ObjectUtil.isNull(repalGroup)){
+            throw new CommonException(CodeMsg.VALIDATE_PARAMETER,"组织不存在");
+        }
         //目前只有一个,估计也只有一个
         RepalSmsTemplateVO result = new RepalSmsTemplateVO();
         DecimalFormat df = new DecimalFormat("#,###.00");
@@ -70,6 +75,7 @@ public class RepalDynamicServiceImpl extends ServiceImpl<RepalDynamicMapper, Rep
         String overdueStr = RepalBillStatusEnum.PROGRESSING.getCode().equals(repalBill.getRepalBillStatus()) ? "还有"+dayBetween+"天即将逾期":"已逾期"+dayBetween+"天";
         String content = StrUtil.format(RepalMsgTemplateEnum.短信模板一.getContent(),
                 repalBill.getCustomerName(),
+                repalGroup.getGroupName(),
                 df.format(repalBill.getTotalMoney()),
                 df.format(repalBill.getReceivable()),
                 repalBill.getEndDate().format(DateTimeFormatter.ISO_LOCAL_DATE),

+ 22 - 1
src/main/resources/mapper/RepalBillMapper.xml

@@ -171,7 +171,28 @@
                  )  as totalMoney from dual
     </select>
     <select id="getManageBillPage" resultType="com.winhc.repal.model.bo.RepalManageBillPageBO">
-
+        SELECT
+        A.ID AS repalBillId,
+        A.REPAL_BOOK_ID AS repalBookId,
+        B.REPAL_BOOK_NAME AS repalBookName,
+        A.REPAL_BILL_STATUS AS repalBillStatus,
+        A.END_DATE AS endDate,
+        C.CUST_PROPERTY AS custProperty,
+        C.CUST_NAME AS customerName,
+        A.TOTAL_MONEY AS totalMoney,
+        A.RECEIVABLE AS receivable
+        FROM
+        REPAL_BILL A
+        LEFT JOIN REPAL_BOOK B ON A.REPAL_BOOK_ID = B.ID
+        LEFT JOIN REPAL_CUSTOMER C ON A.CUSTOMER_ID = C.CUST_ID
+        WHERE
+        A.REPAL_GROUP_ID = #{groupId}
+        AND A.DELETED = 0
+        AND ((A.REPAL_BILL_STATUS = 1
+        AND A.END_DATE <![CDATA[<=]]> #{startTime}) or A.REPAL_BILL_STATUS = 2)
+        <if test="!allFlag">
+            AND EXISTS ( SELECT 1 FROM REPAL_RESPONSIBLE_PERSON D WHERE D.REPAL_BILL_ID = A.ID AND D.USER_ID = #{userId})
+        </if>
     </select>