Pārlūkot izejas kodu

首页部分接口

xda 3 gadi atpakaļ
vecāks
revīzija
211500e9e4

+ 3 - 1
.gitignore

@@ -22,4 +22,6 @@ HELP.md
 target/
 !.mvn/wrapper/maven-wrapper.jar
 !**/src/main/**
-!**/src/test/**
+!**/src/test/**
+
+.DS_Store

+ 14 - 9
src/main/java/com/winhc/repal/controller/RepalBookController.java

@@ -7,16 +7,14 @@ import com.winhc.repal.enums.PermissionEnum;
 import com.winhc.repal.model.dto.DeleteRepalBookDTO;
 import com.winhc.repal.model.dto.HomeTypeDTO;
 import com.winhc.repal.model.vo.HomeGradeVO;
+import com.winhc.repal.model.vo.HomeReceivableVO;
 import com.winhc.repal.model.vo.RepalBookInfoVO;
 import com.winhc.repal.service.RepalBookService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -38,11 +36,11 @@ public class RepalBookController {
     private RepalBookService repalBookService;
 
 
-//    @ApiOperation("首页应收/应付部分")
-//    @RequestMapping(value = "/home/receivable/{billType}", method = RequestMethod.POST)
-//    public BeanResponse<HomeReceivableVO> getHomeReceivable(@PathVariable("billType")Integer billType, HomeTypeDTO dto) {
-//
-//    }
+    @ApiOperation("首页应收/应付部分")
+    @RequestMapping(value = "/home/receivable/{billType}", method = RequestMethod.POST)
+    public BeanResponse<HomeReceivableVO> getHomeReceivable(@PathVariable("billType")Integer billType, HomeTypeDTO dto) {
+        return BeanResponse.success(CodeMsg.SUCCESS, repalBookService.getHomeReceivable(billType, dto));
+    }
 
 
     @ApiOperation("首页账本应收账款动态")
@@ -74,6 +72,13 @@ public class RepalBookController {
         return BeanResponse.success(CodeMsg.SUCCESS, repalBookService.getRepalBookInfoList());
     }
 
+    @ApiOperation("设置首页金额可见性,应收/应付")
+    @RequestMapping(value = "/visible/{type}", method = RequestMethod.POST)
+    public BeanResponse<Boolean> setBookVisible(@PathVariable("type") Integer type) {
+        return BeanResponse.success(CodeMsg.SUCCESS, repalBookService.setBookVisible(type));
+    }
+
+
 
 
 

+ 8 - 0
src/main/java/com/winhc/repal/entity/RepalGroupMember.java

@@ -53,6 +53,14 @@ public class RepalGroupMember implements Serializable {
     @TableField("ROLE_ID")
     private Long roleId;
 
+    @ApiModelProperty(value = "应收可见性")
+    @TableField("RECEIVABLE")
+    private Integer receivable;
+
+    @ApiModelProperty(value = "应付可见性")
+    @TableField("RECEIPT")
+    private Integer receipt;
+
     @ApiModelProperty(value = "是否删除,1删除。0否")
     @TableField("DELETED")
     private Integer deleted;

+ 38 - 0
src/main/java/com/winhc/repal/model/bo/HomeReceivableBO.java

@@ -0,0 +1,38 @@
+package com.winhc.repal.model.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @Description: HomeReceivableBO
+ * @Author: xda
+ * @Date: 2022/5/6 18:14
+ */
+@Data
+@ApiModel("首页应收/应付vo")
+@AllArgsConstructor
+public class HomeReceivableBO {
+
+    @ApiModelProperty("应收/应付金额")
+    private BigDecimal billMoney;
+
+    @ApiModelProperty("应收/应付数量")
+    private Integer billCount;
+
+    @ApiModelProperty("已逾期金额")
+    private BigDecimal overdueTotal;
+
+    @ApiModelProperty("逾期笔数")
+    private Integer overdueTotalCount;
+
+    @ApiModelProperty("总账款金额")
+    private BigDecimal totalBillMoney;
+
+    @ApiModelProperty("已收/已付金额")
+    private BigDecimal receiptMoney;
+
+}

+ 20 - 5
src/main/java/com/winhc/repal/model/vo/HomeReceivableVO.java

@@ -2,7 +2,9 @@ package com.winhc.repal.model.vo;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 /**
  * @Description: HomeReceivableVO
@@ -11,13 +13,14 @@ import lombok.Data;
  */
 @Data
 @ApiModel("首页应收/应付vo")
+@AllArgsConstructor
 public class HomeReceivableVO {
 
     @ApiModelProperty("应收/应付金额,string")
-    private String totalMoneyStr;
+    private String billMoneyStr;
 
     @ApiModelProperty("应收/应付数量")
-    private Integer totalCount;
+    private Integer billCount;
 
     @ApiModelProperty("已逾期金额,string")
     private String overdueTotalStr;
@@ -32,7 +35,19 @@ public class HomeReceivableVO {
     private String totalBillMoneyStr;
 
     @ApiModelProperty("已收/已付金额,string")
-    private String receivableStr;
-
-
+    private String receiptMoneyStr;
+
+    @ApiModelProperty("可见性")
+    private Boolean visible;
+
+    public HomeReceivableVO() {
+        this.billMoneyStr = "00.00";
+        this.billCount = 0;
+        this.overdueTotalStr = "00.00";
+        this.overdueTotalCount = 0;
+        this.overdueRate = "0%";
+        this.totalBillMoneyStr = "00.00";
+        this.receiptMoneyStr = "00.00";
+        this.visible = true;
+    }
 }

+ 22 - 4
src/main/java/com/winhc/repal/repository/RepalBillMapper.java

@@ -3,11 +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.BillPageBO;
-import com.winhc.repal.model.bo.ManageBillInfoBO;
-import com.winhc.repal.model.bo.RepalManageBillPageBO;
-import com.winhc.repal.model.bo.TotalMoneyBO;
+import com.winhc.repal.model.bo.*;
 import com.winhc.repal.model.dto.GetRepalBillPageDTO;
+import com.winhc.repal.model.vo.HomeReceivableVO;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
@@ -131,4 +129,24 @@ public interface RepalBillMapper extends BaseMapper<RepalBill> {
                                       @Param("userId") Long userId,
                                       @Param("start") LocalDateTime start,
                                       @Param("end") LocalDateTime end);
+
+
+    /**
+     * 获取账本统计信息
+     * @param repalBillStatus repalBillStatus
+     * @param userId userId
+     * @param repalBookId repalBookId
+     * @param repalBillType repalBillType
+     * @param start start
+     * @param end end
+     * @return com.winhc.repal.model.bo.HomeReceivableBO
+     * @author xda
+     * @date 2022/5/9 13:22
+     */
+    HomeReceivableBO getBillTotal(@Param("repalBillStatus") Integer repalBillStatus,
+                                  @Param("userId") Long userId,
+                                  @Param("repalBookId") Long repalBookId,
+                                  @Param("repalBillType") Integer repalBillType,
+                                  @Param("start") LocalDateTime start,
+                                  @Param("end") LocalDateTime end);
 }

+ 14 - 0
src/main/java/com/winhc/repal/repository/RepalGroupMemberMapper.java

@@ -2,12 +2,26 @@ package com.winhc.repal.repository;
 
 import com.winhc.repal.entity.RepalGroupMember;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
 
 /**
  * @description RepalGroupMember Mapper 接口
  * @author Generator
  * @date 2022-04-13
  */
+@Repository
 public interface RepalGroupMemberMapper extends BaseMapper<RepalGroupMember> {
 
+    /**
+     * 修改可见性
+     * @param userId userId
+     * @param type type
+     * @return int
+     * @author xda
+     * @date 2022/5/9 11:14
+     */
+    int updateVisible(@Param("userId") Long userId, @Param("type") Integer type);
+
+
 }

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

@@ -3,6 +3,7 @@ package com.winhc.repal.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.winhc.common.model.base.VOPage;
 import com.winhc.repal.entity.RepalBill;
+import com.winhc.repal.model.bo.HomeReceivableBO;
 import com.winhc.repal.model.dto.*;
 import com.winhc.repal.model.vo.*;
 
@@ -149,4 +150,14 @@ public interface RepalBillService extends IService<RepalBill> {
      * @date 2022/5/7 18:28
      */
     List<String> getBillGradeByBookId(Long repalBookId, Long userId, LocalDateTime start, LocalDateTime end);
+
+    /**
+     * 获取
+     * @param repalBookId repalBookId
+     * @param repalBillType repalBillType
+     * @return com.winhc.repal.model.bo.HomeReceivableBO
+     * @author xda
+     * @date 2022/5/9 12:21
+     */
+    HomeReceivableBO getBillTotal(Integer repalBillStatus, Long userId, Long repalBookId, Integer repalBillType, LocalDateTime start, LocalDateTime end);
 }

+ 22 - 0
src/main/java/com/winhc/repal/service/RepalBookService.java

@@ -5,6 +5,7 @@ import com.winhc.repal.entity.RepalBook;
 import com.winhc.repal.model.dto.DeleteRepalBookDTO;
 import com.winhc.repal.model.dto.HomeTypeDTO;
 import com.winhc.repal.model.vo.HomeGradeVO;
+import com.winhc.repal.model.vo.HomeReceivableVO;
 import com.winhc.repal.model.vo.RepalBookInfoVO;
 
 import java.util.List;
@@ -18,6 +19,17 @@ import java.util.List;
 public interface RepalBookService extends IService<RepalBook> {
 
 
+    /**
+     * 获取应收付金额和笔数
+     * @param repalBillType repalBillType
+     * @param dto dto
+     * @return com.winhc.repal.model.vo.HomeReceivableVO
+     * @author xda
+     * @date 2022/5/9 10:23
+     */
+    HomeReceivableVO getHomeReceivable(Integer repalBillType, HomeTypeDTO dto);
+
+
 
     /**
      * 删除账本
@@ -56,4 +68,14 @@ public interface RepalBookService extends IService<RepalBook> {
     List<HomeGradeVO> getGradeRateList(HomeTypeDTO dto);
 
 
+    /**
+     * 设置账本可见性
+     * @param type type
+     * @return java.lang.Boolean
+     * @author xda
+     * @date 2022/5/9 11:11
+     */
+    Boolean setBookVisible(Integer type);
+
+
 }

+ 20 - 0
src/main/java/com/winhc/repal/service/RepalGroupMemberService.java

@@ -33,4 +33,24 @@ public interface RepalGroupMemberService extends IService<RepalGroupMember> {
      */
     Boolean addGroupMember(Long userId, String userName, Long groupId, Long roleId, Integer roleType);
 
+
+    /**
+     * 修改可见性
+     * @param type type
+     * @return java.lang.Boolean
+     * @author xda
+     * @date 2022/5/9 11:13
+     */
+    Boolean updateVisible(Integer type);
+
+    /**
+     * 获取可见性
+     * @param type type
+     * @return java.lang.Boolean
+     * @author xda
+     * @date 2022/5/9 11:26
+     */
+    Boolean getMemberVisible(Integer type);
+
+
 }

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

@@ -372,7 +372,7 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
             repalBook.setRepalGroupId(groupId);
             repalBook.setCustomerId(customer.getCustId());
             repalBook.setCustomerName(customer.getCustName());
-            repalBook.setRepalBookName(customer.getCustName());
+            repalBook.setRepalBookName("默认账本");
             repalBook.setCompanyId(customer.getCompanyId());
             repalBook.setUserId(UserContextUtil.getUser().getUserId());
             repalBookService.save(repalBook);
@@ -698,4 +698,9 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
     public List<String> getBillGradeByBookId(Long repalBookId, Long userId, LocalDateTime start, LocalDateTime end) {
         return repalBillMapper.getBillGradeByBookId(repalBookId, userId, start, end);
     }
+
+    @Override
+    public HomeReceivableBO getBillTotal(Integer repalBillStatus, Long userId, Long repalBookId, Integer repalBillType, LocalDateTime start, LocalDateTime end) {
+        return repalBillMapper.getBillTotal(repalBillStatus, userId, repalBookId, repalBillType, start, end);
+    }
 }

+ 46 - 1
src/main/java/com/winhc/repal/service/impl/RepalBookServiceImpl.java

@@ -7,13 +7,17 @@ import com.winhc.common.enums.CodeMsg;
 import com.winhc.common.exception.CommonException;
 import com.winhc.repal.entity.RepalBill;
 import com.winhc.repal.entity.RepalBook;
+import com.winhc.repal.entity.RepalGroupMember;
 import com.winhc.repal.enums.DeletedStatusEnum;
 import com.winhc.repal.enums.PermissionEnum;
+import com.winhc.repal.enums.RepalBillStatusEnum;
+import com.winhc.repal.enums.RepalBillTypeEnum;
 import com.winhc.repal.model.bo.BookDynamicCountBO;
-import com.winhc.repal.model.bo.UserBillUnreadInfoBO;
+import com.winhc.repal.model.bo.HomeReceivableBO;
 import com.winhc.repal.model.dto.DeleteRepalBookDTO;
 import com.winhc.repal.model.dto.HomeTypeDTO;
 import com.winhc.repal.model.vo.HomeGradeVO;
+import com.winhc.repal.model.vo.HomeReceivableVO;
 import com.winhc.repal.model.vo.RepalBillRemindUnReadVO;
 import com.winhc.repal.model.vo.RepalBookInfoVO;
 import com.winhc.repal.repository.RepalBookMapper;
@@ -25,6 +29,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
@@ -62,6 +68,38 @@ public class RepalBookServiceImpl extends ServiceImpl<RepalBookMapper, RepalBook
     @Autowired
     private RepalResponsiblePersonService repalResponsiblePersonService;
 
+    @Override
+    public HomeReceivableVO getHomeReceivable(Integer repalBillType, HomeTypeDTO dto) {
+        HomeReceivableVO vo = new HomeReceivableVO();
+        boolean allFlag = repalRolePermissionService.checkUserPermission(UserContextUtil.getUser().getUserId(), PermissionEnum.QUERY_ALL_RECEIVABLE.getCode());
+        // 所有
+        LocalDateTime start = null;
+        LocalDateTime end = null;
+        if (Integer.valueOf(1).equals(dto.getQueryType())) {
+            LocalDate now = LocalDate.now();
+            start = LocalDateTime.of(now.minusDays(7), LocalTime.MIN);
+            end = LocalDateTime.of(now, LocalTime.MAX);
+        }
+        if (Integer.valueOf(2).equals(dto.getQueryType())) {
+            LocalDate now = LocalDate.now();
+            start = LocalDateTime.of(now.minusDays(30), LocalTime.MIN);
+            end = LocalDateTime.of(now, LocalTime.MAX);
+        }
+        HomeReceivableBO receivableBO = repalBillService.getBillTotal(null, allFlag ? null : UserContextUtil.getUser().getUserId(), dto.getRepalBookId(), repalBillType, start, end);
+        HomeReceivableBO overdueBO = repalBillService.getBillTotal(RepalBillStatusEnum.OVERDUE.getCode(), allFlag ? null : UserContextUtil.getUser().getUserId(), dto.getRepalBookId(), repalBillType, start, end);
+        vo.setBillMoneyStr(receivableBO.getBillMoney().setScale(2).toString());
+        vo.setBillCount(receivableBO.getBillCount());
+        vo.setOverdueTotalStr(overdueBO.getOverdueTotal().setScale(2).toString());
+        vo.setOverdueTotalCount(overdueBO.getOverdueTotalCount());
+        vo.setTotalBillMoneyStr(receivableBO.getTotalBillMoney().setScale(2).toString());
+        vo.setReceiptMoneyStr(receivableBO.getReceiptMoney().setScale(2).toPlainString());
+        // 金额不为0计算逾期率
+        if (BigDecimal.ZERO.compareTo(receivableBO.getTotalBillMoney()) != 0 && BigDecimal.ZERO.compareTo(overdueBO.getOverdueTotal()) != 0) {
+            vo.setOverdueRate(overdueBO.getOverdueTotal().multiply(new BigDecimal(100)).divide(receivableBO.getTotalBillMoney(), 0, RoundingMode.HALF_UP).toString());
+        }
+        vo.setVisible(repalGroupMemberService.getMemberVisible(repalBillType));
+        return vo;
+    }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -147,4 +185,11 @@ public class RepalBookServiceImpl extends ServiceImpl<RepalBookMapper, RepalBook
         }
         return BillGradeUtil.getGradeList(gradeList);
     }
+
+    @Override
+    public Boolean setBookVisible(Integer type) {
+        repalGroupMemberService.updateVisible(type);
+        return true;
+    }
+
 }

+ 19 - 0
src/main/java/com/winhc/repal/service/impl/RepalGroupMemberServiceImpl.java

@@ -6,9 +6,11 @@ import com.winhc.common.enums.CodeMsg;
 import com.winhc.common.exception.CommonException;
 import com.winhc.repal.entity.RepalGroupMember;
 import com.winhc.repal.enums.DeletedStatusEnum;
+import com.winhc.repal.enums.RepalBillTypeEnum;
 import com.winhc.repal.repository.RepalGroupMemberMapper;
 import com.winhc.repal.service.RepalGroupMemberService;
 import com.winhc.repal.service.UserExtService;
+import com.winhc.repal.util.UserContextUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -25,6 +27,9 @@ public class RepalGroupMemberServiceImpl extends ServiceImpl<RepalGroupMemberMap
     @Autowired
     private UserExtService userExtService;
 
+    @Autowired
+    private RepalGroupMemberMapper repalGroupMemberMapper;
+
     @Override
     public Long getUserGroupId(Long userId) {
         RepalGroupMember repalGroupMember = this.getOne(Wrappers.lambdaQuery(RepalGroupMember.class)
@@ -47,4 +52,18 @@ public class RepalGroupMemberServiceImpl extends ServiceImpl<RepalGroupMemberMap
         this.save(member);
         return true;
     }
+
+    @Override
+    public Boolean updateVisible(Integer type) {
+        repalGroupMemberMapper.updateVisible(UserContextUtil.getUser().getUserId(), type);
+        return true;
+    }
+
+    @Override
+    public Boolean getMemberVisible(Integer type) {
+        RepalGroupMember member = this.getOne(Wrappers.lambdaQuery(RepalGroupMember.class)
+                .eq(RepalGroupMember::getUserId, UserContextUtil.getUser().getUserId())
+                .eq(RepalGroupMember::getDeleted, DeletedStatusEnum.NORMAL.getCode()));
+        return (RepalBillTypeEnum.RECEIVABLE.getCode().equals(type) ? member.getReceivable() : member.getReceipt()) > 0;
+    }
 }

+ 32 - 0
src/main/resources/mapper/RepalBillMapper.xml

@@ -202,4 +202,36 @@
             AND rPerson.USER_ID = #{userId}
         </if>
     </select>
+
+    <select id="getBillTotal" resultType="com.winhc.repal.model.bo.HomeReceivableBO">
+        SELECT
+               <if test="repalBillStatus == null">
+                   IFNULL(SUM(bill.RECEIVABLE), 0)  AS billMoney
+                   IFNULL(SUM(bill.RECEIPT), 0) AS receiptMoney,
+                   IFNULL(SUM(bill.TOTAL_MONEY), 0) AS totalBillMoney,
+                   IFNULL(COUNT(bill.ID), 0) AS billCount,
+               </if>
+               <if test="repalBillStatus == 2">
+                   IFNULL(SUM(bill.RECEIPT), 0) AS overdueTotal,
+                   IFNULL(COUNT(bill.ID), 0) AS overdueTotalCount,
+               </if>
+        FROM REPAL_BILL AS bill
+        <if test="userId != null">
+            LEFT JOIN REPAL_RESPONSIBLE_PERSON AS rPerson ON bill.ID = rPerson.REPAL_BILL_ID
+        </if>
+        WHERE bill.REPAL_BOOK_ID = #{repalBookId}
+        <if test="repalBillStatus == 2">
+            bill.repalBillStatus = 2
+        </if>
+        AND bill.REPAL_BILL_TYPE = #{repalBillType}
+        <if test="userId != null">
+            AND rPerson.USER_ID = #{userId}
+        </if>
+        <if test="start != null">
+            AND  bill.TIME_CREATED >= #{start}
+        </if>
+        <if test="end != null">
+            AND  bill.TIME_CREATED <![CDATA[<=]]>#{start}
+        </if>
+    </select>
 </mapper>

+ 13 - 0
src/main/resources/mapper/RepalGroupMemberMapper.xml

@@ -2,4 +2,17 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.winhc.repal.repository.RepalGroupMemberMapper">
 
+    <update id="updateVisible">
+        UPDATE REPAL_GROUP_MEMBER SET
+            <if test="type == 1">
+                RECEIVABLE = ABS(RECEIVABLE - 1)
+            </if>
+            <if test="type == 2">
+                RECEIPT = ABS(RECEIPT - 1)
+            </if>
+        WHERE USER_ID = #{userId} AND DELETED = 0
+    </update>
+
+
+
 </mapper>