Sfoglia il codice sorgente

账款列表修改

xda 3 anni fa
parent
commit
023b5417bc

+ 48 - 0
src/main/java/com/winhc/repal/enums/PermissionEnum.java

@@ -0,0 +1,48 @@
+package com.winhc.repal.enums;
+
+/**
+ * @Description: PermissionEnum
+ * @Author: xda
+ * @Date: 2022/4/29 09:24
+ */
+public enum PermissionEnum {
+
+    /**
+     *  权限
+     */
+    ROLE_SETUP("ROLE_SETUP", "角色设置"),
+    MEMBER_MANAGER("MEMBER_MANAGER", "成员管理"),
+    QUERY_ALL_RECEIVABLE("QUERY_ALL_RECEIVABLE", "查看全部应收"),
+    ADD_RECEIVABLE("ADD_RECEIVABLE", "添加应收"),
+    UPDATE_RECEIVABLE("UPDATE_RECEIVABLE", "编辑应收"),
+    QUERY_ALL_RECEIPT("QUERY_ALL_RECEIPT", "查看全部应付"),
+    ADD_RECEIPT("ADD_RECEIPT", "添加应付"),
+    UPDATE_RECEIPT("UPDATE_RECEIPT", "编辑应付"),
+    QUERY_ALL_CUST("QUERY_ALL_CUST", "查看全部客户"),
+    ADD_CUST("ADD_CUST", "添加客户"),
+    UPDATE_CUST("UPDATE_CUST", "编辑客户信息"),
+    QUERY_ALL_SUPPLY("QUERY_ALL_SUPPLY", "查看全部供应商"),
+    ADD_SUPPLY("ADD_SUPPLY", "添加供应商"),
+    UPDATE_SUPPLY("UPDATE_SUPPLY", "编辑供应商信息"),
+    QUERY_ALL_URGE("QUERY_ALL_URGE", "查看全部催款信息"),
+    URGE_BILL("URGE_BILL", "URGE_BILL");
+
+
+
+    private final String code;
+
+    private final String msg;
+
+    PermissionEnum(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+}

+ 52 - 0
src/main/java/com/winhc/repal/model/bo/BillPageBO.java

@@ -0,0 +1,52 @@
+package com.winhc.repal.model.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+
+/**
+ * @Description: BillPageDTO
+ * @Author: xda
+ * @Date: 2022/4/29 16:01
+ */
+@Data
+public class BillPageBO {
+
+    @ApiModelProperty(value = "组织id", required = true)
+    private Long repalGroupId;
+
+    @ApiModelProperty(value = "账本id", required = true)
+    private Long repalBookId;
+
+    @ApiModelProperty("排序类型。1日期升序。2日期降序。3总金额升序。4总金额降序")
+    private Integer sortedType;
+
+    @ApiModelProperty(value = "开始日期yyyy-MM-dd,string")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate startDate;
+
+    @ApiModelProperty(value = "结束日期yyyy-MM-dd,string")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate endDate;
+
+    @ApiModelProperty(value = "账款逾期状态,[1]进行中,[2]即将逾期(7天内),[3]已逾期.[4]已结清。[5]已终止")
+    private Integer overdueStatus;
+
+    @ApiModelProperty(value = "[1]风险预警。[2]财产提醒。[3]评级动态。[4]逾期动态")
+    private Integer dynamicType;
+
+    @ApiModelProperty(value = "评估等级,[ABCD]")
+    private String diagnosisGrade;
+
+    @ApiModelProperty(value = "账款类型。[1]应收,[2]应付", required = true)
+    private Integer repalBillType;
+
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+
+    @ApiModelProperty(value = "是否查询账本下所有")
+    private Boolean allFlag;
+
+}

+ 18 - 0
src/main/java/com/winhc/repal/model/bo/TotalMoneyBO.java

@@ -0,0 +1,18 @@
+package com.winhc.repal.model.bo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @Description: TotalMoneyBO
+ * @Author: xda
+ * @Date: 2022/4/29 09:45
+ */
+@Data
+public class TotalMoneyBO {
+
+    private Integer totalCount;
+
+    private BigDecimal totalMoney;
+}

+ 5 - 2
src/main/java/com/winhc/repal/model/dto/GetRepalBillPageDTO.java

@@ -19,10 +19,10 @@ import java.time.LocalDate;
 @ApiModel("获取账本下的账款列表")
 public class GetRepalBillPageDTO extends PageRequest {
 
-    @ApiModelProperty(value = "组织id")
+    @ApiModelProperty(value = "组织id", required = true)
     private Long repalGroupId;
 
-    @ApiModelProperty("账本id")
+    @ApiModelProperty(value = "账本id", required = true)
     private Long repalBookId;
 
     @ApiModelProperty("排序类型。1日期升序。2日期降序。3总金额升序。4总金额降序")
@@ -48,6 +48,9 @@ public class GetRepalBillPageDTO extends PageRequest {
     @ApiModelProperty(value = "评估等级,[ABCD]")
     private String diagnosisGrade;
 
+    @ApiModelProperty(value = "账款类型。[1]应收,[2]应付", required = true)
+    private Integer repalBillType;
+
 
 
 

+ 2 - 2
src/main/java/com/winhc/repal/model/vo/RepalBillInfoVO.java

@@ -21,10 +21,10 @@ public class RepalBillInfoVO {
     private Integer totalOverdueCount;
 
     @ApiModelProperty("总待收/总待付金额")
-    private Integer totalReceivableStr;
+    private String totalBillStr;
 
     @ApiModelProperty("总待收/总待付笔数")
-    private Integer totalReceivableCount;
+    private Integer totalBillCount;
 
     @ApiModelProperty("账款分页信息")
     private VOPage<RepalBillPageVO> page;

+ 34 - 0
src/main/java/com/winhc/repal/repository/RepalBillMapper.java

@@ -3,7 +3,9 @@ package com.winhc.repal.repository;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.winhc.repal.entity.RepalBill;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.winhc.repal.model.bo.TotalMoneyBO;
 import com.winhc.repal.model.dto.GetRepalBillPageDTO;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 /**
@@ -26,4 +28,36 @@ public interface RepalBillMapper extends BaseMapper<RepalBill> {
     Page<RepalBill> getRepalBillPage(Page<RepalBill> page, GetRepalBillPageDTO dto);
 
 
+    /**
+     * 获取对应类型的总金额和笔数
+     * @param repalGroupId repalGroupId
+     * @param repalGroupType repalGroupType
+     * @param repalBillStatus repalBillStatus
+     * @return com.winhc.repal.model.bo.TotalMoneyBO
+     * @author xda
+     * @date 2022/4/29 09:55
+     */
+    TotalMoneyBO getTotalMoneyByGroup(@Param("repalGroupId") Long repalGroupId,
+                                      @Param("repalGroupType") Integer repalGroupType,
+                                      @Param("repalBillStatus") Integer repalBillStatus,
+                                      @Param("repalBookId") Long repalBookId);
+
+    /**
+     * 获取用户所负责的账款信息金额和count
+     * @param userId userId
+     * @param repalGroupId repalGroupId
+     * @param repalGroupType repalGroupType
+     * @param repalBillStatus repalBillStatus
+     * @param repalBookId repalBookId
+     * @return com.winhc.repal.model.bo.TotalMoneyBO
+     * @author xda
+     * @date 2022/4/29 14:19
+     */
+    TotalMoneyBO getTotalMoneyByUser(@Param("userId") Long userId,
+                                     @Param("repalGroupId") Long repalGroupId,
+                                     @Param("repalGroupType") Integer repalGroupType,
+                                     @Param("repalBillStatus") Integer repalBillStatus,
+                                     @Param("repalBookId") Long repalBookId);
+
+
 }

+ 57 - 14
src/main/java/com/winhc/repal/service/impl/RepalBillServiceImpl.java

@@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -20,10 +19,9 @@ import com.winhc.repal.cloud.vo.CompanyRiskNumVO;
 import com.winhc.repal.cloud.vo.DiagnosisRecordVO;
 import com.winhc.repal.cloud.vo.FinanceDynamicNumVO;
 import com.winhc.repal.entity.*;
-import com.winhc.repal.enums.CustPropertyEnum;
-import com.winhc.repal.enums.DeletedStatusEnum;
-import com.winhc.repal.enums.RefreshStatusEnum;
-import com.winhc.repal.enums.RepalBillStatusEnum;
+import com.winhc.repal.enums.*;
+import com.winhc.repal.model.bo.BillPageBO;
+import com.winhc.repal.model.bo.TotalMoneyBO;
 import com.winhc.repal.model.dto.*;
 import com.winhc.repal.model.vo.RepalBillDetailVO;
 import com.winhc.repal.model.vo.RepalBillInfoVO;
@@ -41,8 +39,10 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.time.DayOfWeek;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -84,6 +84,15 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
     @Autowired
     private RepalBookService repalBookService;
 
+    @Autowired
+    private RepalRolePermissionService repalRolePermissionService;
+
+
+    public static void main(String[] args) {
+        System.out.println(LocalDate.now().with(DayOfWeek.MONDAY));
+        System.out.println(LocalDate.now().with(DayOfWeek.SUNDAY));
+
+    }
 
 
     @Override
@@ -95,16 +104,50 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
         voPage.setPageSize(dto.getPageSize());
         voPage.setPageNum(dto.getPageNum());
         RepalBillInfoVO infoVO = new RepalBillInfoVO();
-        //infoVO.setTotalOverdueCount();
-        //infoVO.setTotalOverdueStr();
-
-        //infoVO.setTotalReceivableCount();
-        //infoVO.setTotalReceivableStr();
-
-
-        // 管理员查看所有   todo
-        LOGGER.info("角色:[]");
+        boolean allFlag = repalRolePermissionService.checkUserPermission(UserContextUtil.getUser().getUserId(),
+                RepalBillTypeEnum.RECEIVABLE.getCode().equals(dto.getRepalBillType()) ? PermissionEnum.QUERY_ALL_RECEIVABLE.getCode() : PermissionEnum.QUERY_ALL_RECEIPT.getCode());
+        TotalMoneyBO totalMoneyBO;
+        TotalMoneyBO overdueBO;
+        if (allFlag) {
+            totalMoneyBO = repalBillMapper.getTotalMoneyByGroup(dto.getRepalGroupId(), dto.getRepalBillType(), RepalBillStatusEnum.PROGRESSING.getCode(), dto.getRepalBookId());
+            overdueBO = repalBillMapper.getTotalMoneyByGroup(dto.getRepalGroupId(), dto.getRepalBillType(), RepalBillStatusEnum.OVERDUE.getCode(), dto.getRepalBookId());
+        } else {
+            // 只查询自己负责的
+            totalMoneyBO = repalBillMapper.getTotalMoneyByUser(UserContextUtil.getUser().getUserId(), dto.getRepalGroupId(), dto.getRepalBillType(), RepalBillStatusEnum.PROGRESSING.getCode(), dto.getRepalBookId());
+            overdueBO = repalBillMapper.getTotalMoneyByUser(UserContextUtil.getUser().getUserId(), dto.getRepalGroupId(), dto.getRepalBillType(), RepalBillStatusEnum.OVERDUE.getCode(), dto.getRepalBookId());
+        }
+        infoVO.setTotalBillStr(totalMoneyBO.getTotalMoney().stripTrailingZeros().toPlainString());
+        infoVO.setTotalBillCount(totalMoneyBO.getTotalCount());
+        infoVO.setTotalOverdueCount(overdueBO.getTotalCount());
+        infoVO.setTotalOverdueStr(overdueBO.getTotalMoney().stripTrailingZeros().toPlainString());
+        // 分页数据
         Page<RepalBill> repalBillPage = new Page<>(dto.getPageNum(),dto.getPageSize());
+        BillPageBO billPageBO = new BillPageBO();
+        BeanUtils.copyProperties(dto, billPageBO);
+        billPageBO.setUserId(UserContextUtil.getUser().getUserId());
+        billPageBO.setAllFlag(allFlag);
+        // 对应1-4到期时间
+        if (Objects.nonNull(dto.getOverdueType())) {
+            switch (dto.getOverdueType()) {
+                case 1:
+                    billPageBO.setStartDate(LocalDate.now());
+                    billPageBO.setEndDate(billPageBO.getStartDate());
+                    break;
+                case 2:
+                    billPageBO.setStartDate(LocalDate.now().with(DayOfWeek.MONDAY));
+                    billPageBO.setEndDate(LocalDate.now().with(DayOfWeek.SUNDAY));
+                    break;
+                case 3:
+                    billPageBO.setStartDate(LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()));
+                    billPageBO.setEndDate(LocalDate.now().with(TemporalAdjusters.lastDayOfMonth()));
+                case 4:
+                    billPageBO.setStartDate(LocalDate.now().with(TemporalAdjusters.firstDayOfYear()));
+                    billPageBO.setEndDate(LocalDate.now().with(TemporalAdjusters.lastDayOfYear()));
+                    break;
+                default:
+                    break;
+            }
+        }
         repalBillPage = repalBillMapper.getRepalBillPage(repalBillPage, dto);
         voPage.setTotalPage(Math.toIntExact(repalBillPage.getPages()));
         voPage.setTotalNum(repalBillPage.getTotal());

+ 106 - 7
src/main/resources/mapper/RepalBillMapper.xml

@@ -3,14 +3,113 @@
 <mapper namespace="com.winhc.repal.repository.RepalBillMapper">
 
 
-    <select id="getRepalBillPage" resultType="com.winhc.repal.entity.RepalBill" parameterType="com.winhc.repal.model.dto.GetRepalBillPageDTO">
-        SELECT bill.* FROM REPAL_RESPONSIBLE_PERSON AS rPerson
-        LEFT JOIN REPAL_BILL AS bill ON rPerson.REPAL_BILL_ID = bill.ID
-        where rPerson.USER_ID = #{userId}
-        AND rPerson.REPAL_GROUP_ID = #{repalGroupId}
-        AND rPerson.REPAL_BOOK_ID = #{repalBookId}
-        AND rPerson.DELETED = 0
+    <select id="getRepalBillPage" resultType="com.winhc.repal.entity.RepalBill" parameterType="com.winhc.repal.model.bo.BillPageBO">
+        SELECT bill.* FROM REPAL_BILL AS bill
+        <if test="!param2.allFlag">
+            LEFT JOIN REPAL_RESPONSIBLE_PERSON AS person ON person.REPAL_BILL_ID = bill.ID
+        </if>
+        <if test="param2.dynamicType != null">
+            LEFT JOIN REPAL_REMIND_READ_INFO ri ON bill.id = ri.REPAL_BILL_ID AND ri.USER_ID = #{param2.userId}
+        </if>
+        <where>
+        <if test="!param2.allFlag">
+            AND person.USER_ID = #{param2.userId}
+            AND person.DELETED = 0
+        </if>
+        AND bill.REPAL_BOOK_ID = #{param2.repalBookId}
+        AND bill.REPAL_GROUP_ID = #{param2.repalGroupId}
+        AND bill.DELETED = 0
+        AND bill.REPAL_BILL_TYPE = #{param2.repalBillType}
+        <if test="param2.overdueStatus != null">
+           <if test="param2.overdueStatus == 1">
+               AND bill.REPAL_BILL_STATUS = 1
+           </if>
+           <if test="param2.overdueStatus == 2">
+               AND bill.REPAL_BILL_STATUS = 1 AND bill.END_DATE >= date_sub(CURDATE(), interval 7 day) and bill.END_DATE <![CDATA[<=]]> CURDATE()
+           </if>
+           <if test="param2.overdueStatus == 3">
+               AND bill.REPAL_BILL_STATUS = 2
+           </if>
+           <if test="param2.overdueStatus == 4">
+               AND bill.REPAL_BILL_STATUS = 3
+           </if>
+           <if test="param2.overdueStatus == 5">
+               AND bill.REPAL_BILL_STATUS = 4
+           </if>
+        </if>
+        <if test="param2.diagnosisGrade != null">
+            AND bill.DIAGNOSIS_GRADE = #{param2.diagnosisGrade}
+        </if>
+        <if test="param2.startDate != null">
+            AND bill.END_DATE >= #{param2.startDate}
+        </if>
+        <if test="param2.endDate != null">
+            AND bill.END_DATE <![CDATA[<=]]> #{param2.endDate}
+        </if>
+        <if test="param2.dynamicType != null">
+            AND EXISTS (SELECT 1 FROM REPAL_REMIND_HISTORY his WHERE
+            <if test="param2.dynamicType == 1">
+                his.REMIND_TYPE = 'RISK' AND his.id > ri.RISK_REMIND_ID
+            </if>
+            <if test="param2.dynamicType == 2">
+                his.REMIND_TYPE = 'FINANCE' AND his.id > ri.FINANCE_REMIND_ID
+            </if>
+            <if test="param2.dynamicType == 3">
+                his.REMIND_TYPE = 'RANK' AND his.id > ri.RANK_REMIND_ID
+            </if>
+            <if test="param2.dynamicType == 4">
+                his.REMIND_TYPE = 'OVERDUE' AND his.id > ri.OVERDUE_REMIND_ID
+            </if>
+            and his.REPAL_BILL_ID = bill.ID)
+        </if>
+        </where>
+        <if test="param2.sortedType != null">
+            <if test="param2.sortedType == 1">
+                ORDER BY bill.END_DATE, bill.ID
+            </if>
+            <if test="param2.sortedType == 2">
+                ORDER BY bill.END_DATE DESC, bill.ID DESC
+            </if>
+            <if test="param2.sortedType == 3">
+                ORDER BY bill.TOTAL_MONEY, bill.ID
+            </if>
+            <if test="param2.sortedType == 4">
+                ORDER BY bill.TOTAL_MONEY DESC, bill.ID DESC
+            </if>
+        </if>
+        <if test="param2.sortedType == null">
+            ORDER BY bill.ID DESC
+        </if>
+    </select>
+    
+    
+    <select id="getTotalMoneyByGroup" resultType="com.winhc.repal.model.bo.TotalMoneyBO">
+        SELECT COUNT(*) AS totalCount, IFNULL(SUM(RECEIVABLE),0) AS totalMoney FROM REPAL_BILL
+        WHERE REPAL_GROUP_ID = #{repalGroupId} AND
+        <if test="repalBillStatus == 1">
+            REPAL_BILL_STATUS = 1
+        </if>
+        <if test="repalBillStatus == 2">
+            REPAL_BILL_STATUS IN (1,2)
+        </if>
+        AND REPAL_BILL_TYPE = #{repalGroupType}
+        AND REPAL_BOOK_ID = #{repalBookId}
     </select>
 
+    <select id="getTotalMoneyByUser" resultType="com.winhc.repal.model.bo.TotalMoneyBO">
+        SELECT COUNT(*) AS totalCount, IFNULL(SUM(bill.RECEIVABLE), 0)  FROM REPAL_RESPONSIBLE_PERSON AS person
+        LEFT JOIN REPAL_BILL AS bill ON person.REPAL_BILL_ID = bill.ID
+        WHERE person.USER_ID = #{userId} AND person.DELETED = 0
+        AND
+        <if test="repalBillStatus == 1">
+            bill.REPAL_BILL_STATUS = 1
+        </if>
+        <if test="repalBillStatus == 2">
+            bill.REPAL_BILL_STATUS IN (1,2)
+        </if>
+        AND bill.REPAL_GROUP_ID = #{repalGroupId}
+        AND bill.REPAL_BOOK_ID = #{repalBookId}
+        AND bill.REPAL_BILL_TYPE = #{repalGroupType}
 
+    </select>
 </mapper>