Browse Source

新增首页部分接口

xda 3 years ago
parent
commit
4c41b5b754

+ 3 - 3
src/main/java/com/winhc/repal/controller/RepalBillController.java

@@ -59,9 +59,9 @@ public class RepalBillController {
     }
 
     @ApiOperation("终止账款")
-    @RequestMapping(value = "/break/{repalBillId}", method = RequestMethod.POST)
-    public BeanResponse<Boolean> breakRepalBill(@PathVariable("repalBillId") Long repalBillId) {
-        return BeanResponse.success(CodeMsg.SUCCESS, repalBillService.breakRepalBill(repalBillId));
+    @RequestMapping(value = "/break", method = RequestMethod.POST)
+    public BeanResponse<Boolean> breakRepalBill(@RequestBody BreakRepalBillDTO dto) {
+        return BeanResponse.success(CodeMsg.SUCCESS, repalBillService.breakRepalBill(dto));
     }
 
     @ApiOperation("修改账款信息")

+ 18 - 3
src/main/java/com/winhc/repal/controller/RepalBookController.java

@@ -3,7 +3,10 @@ package com.winhc.repal.controller;
 import com.winhc.common.base.BeanResponse;
 import com.winhc.common.enums.CodeMsg;
 
+import com.winhc.repal.model.dto.DeleteRepalBillDTO;
+import com.winhc.repal.model.dto.DeleteRepalBookDTO;
 import com.winhc.repal.model.vo.RepalBookHomeVO;
+import com.winhc.repal.model.vo.RepalBookInfoVO;
 import com.winhc.repal.service.RepalBookService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -32,9 +35,21 @@ public class RepalBookController {
 
 
     @ApiOperation("首页接口")
-    @RequestMapping(value = "/home", method = RequestMethod.GET)
-    public BeanResponse<RepalBookHomeVO> getRepalBillDetail(@PathVariable("repalBookId") Long repalBookId) {
-        return BeanResponse.success(CodeMsg.SUCCESS, repalBookService);
+    @RequestMapping(value = "/home/{repalGroupId}", method = RequestMethod.GET)
+    public BeanResponse<RepalBookHomeVO> getRepalHomeDetail(@PathVariable("repalGroupId") Long repalGroupId) {
+        return BeanResponse.success(CodeMsg.SUCCESS, repalBookService.getRepalHomeDetail(repalGroupId));
+    }
+
+    @ApiOperation("删除账本")
+    @RequestMapping(value = "/deleteRepalBook", method = RequestMethod.POST)
+    public BeanResponse<Boolean> deleteRepalBook(@RequestBody DeleteRepalBookDTO dto) {
+        return BeanResponse.success(CodeMsg.SUCCESS, repalBookService.deleteRepalBook(dto));
+    }
+
+    @ApiOperation("用户查看账本列表和count")
+    @RequestMapping(value = "/group/{repalGroupId}")
+    public BeanResponse<List<RepalBookInfoVO>> getRepalBookInfoList(@PathVariable("repalGroupId") Long repalGroupId) {
+        return BeanResponse.success(CodeMsg.SUCCESS, repalBookService.getRepalBookInfoList(repalGroupId));
     }
 
 

+ 4 - 0
src/main/java/com/winhc/repal/entity/RepalBill.java

@@ -162,6 +162,10 @@ public class RepalBill implements Serializable {
     @TableField("USER_ID")
     private Long userId;
 
+    @ApiModelProperty(value = "终止原因")
+    @TableField("BREAK_REASON")
+    private String breakReason;
+
     @ApiModelProperty(value = "是否删除,1删除。0否")
     @TableField("DELETED")
     private Integer deleted;

+ 4 - 0
src/main/java/com/winhc/repal/entity/RepalBook.java

@@ -36,6 +36,10 @@ public class RepalBook implements Serializable {
     @TableField("REPAL_GROUP_ID")
     private Long repalGroupId;
 
+    @ApiModelProperty(value = "账本name")
+    @TableField("REPAL_BOOK_NAME")
+    private String repalBookName;
+
     @ApiModelProperty(value = "收款公司name")
     @TableField("PAYEE_NAME")
     private String payeeName;

+ 21 - 0
src/main/java/com/winhc/repal/model/dto/BreakRepalBillDTO.java

@@ -0,0 +1,21 @@
+package com.winhc.repal.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Description: BreakRepalBillDTO
+ * @Author: xda
+ * @Date: 2022/4/18 12:35
+ */
+@Data
+@ApiModel("终止账款")
+public class BreakRepalBillDTO {
+
+    @ApiModelProperty("账款id")
+    private Long repalBillId;
+
+    @ApiModelProperty("终止原因")
+    private String breakReason;
+}

+ 21 - 0
src/main/java/com/winhc/repal/model/dto/DeleteRepalBookDTO.java

@@ -0,0 +1,21 @@
+package com.winhc.repal.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Description: DeleteRepalBookDTO
+ * @Author: xda
+ * @Date: 2022/4/18 09:56
+ */
+@Data
+@ApiModel("删除账本")
+public class DeleteRepalBookDTO {
+
+    @ApiModelProperty("账本id")
+    private Long repalBookId;
+
+    @ApiModelProperty("组织id")
+    private Long repalGroupId;
+}

+ 26 - 0
src/main/java/com/winhc/repal/model/vo/RepalBookInfoVO.java

@@ -0,0 +1,26 @@
+package com.winhc.repal.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * @Description: RepalBookInfoVO
+ * @Author: xda
+ * @Date: 2022/4/18 10:17
+ */
+@Data
+@ApiModel("账本相关信息")
+public class RepalBookInfoVO {
+
+    @ApiModelProperty("账本name")
+    private String repalBookName;
+
+    @ApiModelProperty("账本内账款数量")
+    private Integer repalBillCount;
+
+    @ApiModelProperty("账本id")
+    private Long repalBookId;
+
+}

+ 9 - 0
src/main/java/com/winhc/repal/repository/RepalBookMapper.java

@@ -2,12 +2,21 @@ package com.winhc.repal.repository;
 
 import com.winhc.repal.entity.RepalBook;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.winhc.repal.model.vo.RepalBookInfoVO;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
 
 /**
  * @description RepalBook Mapper 接口
  * @author Generator
  * @date 2022-04-08
  */
+@Repository
 public interface RepalBookMapper extends BaseMapper<RepalBook> {
 
+
+    List<RepalBookInfoVO> getRepalBookInfoList(Long repalGroupId);
+
+
 }

+ 13 - 4
src/main/java/com/winhc/repal/service/RepalBillService.java

@@ -62,13 +62,13 @@ public interface RepalBillService extends IService<RepalBill> {
     Boolean addRepalBill(AddRepalBillDTO dto);
     
     /**
-     * TODO
-     * @param repalBillId repalBillId 
+     * 终止账款
+     * @param dto dto
      * @return java.lang.Boolean
      * @author xda
-     * @date 2022/4/15 15:50 
+     * @date 2022/4/18 12:38
      */
-    Boolean breakRepalBill(Long repalBillId);
+    Boolean breakRepalBill(BreakRepalBillDTO dto);
 
     /**
      * 修改账款信息
@@ -78,4 +78,13 @@ public interface RepalBillService extends IService<RepalBill> {
      * @date 2022/4/15 16:48
      */
     Boolean updateRepalBill(UpdateRepalBillDTO dto);
+
+    /**
+     * 删除账本对应的账款以及责任人
+     * @param repalBookId repalBookId
+     * @return java.lang.Boolean
+     * @author xda
+     * @date 2022/4/18 12:12
+     */
+    Boolean deleteRepalBillByBookId(Long repalBookId);
 }

+ 28 - 3
src/main/java/com/winhc/repal/service/RepalBookService.java

@@ -2,7 +2,11 @@ package com.winhc.repal.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.winhc.repal.entity.RepalBook;
+import com.winhc.repal.model.dto.DeleteRepalBookDTO;
 import com.winhc.repal.model.vo.RepalBookHomeVO;
+import com.winhc.repal.model.vo.RepalBookInfoVO;
+
+import java.util.List;
 
 
 /**
@@ -14,11 +18,32 @@ public interface RepalBookService extends IService<RepalBook> {
 
 
     /**
-     *
+     * 个人首页账本信息
+     * @param repalGroupId repalGroupId
      * @return com.winhc.repal.model.vo.RepalBookHomeVO
      * @author xda
-     * @date 2022/4/14 18:26
+     * @date 2022/4/18 09:55
+     */
+    RepalBookHomeVO getRepalHomeDetail(Long repalGroupId);
+
+
+    /**
+     * 删除账本
+     * @param dto dto
+     * @return java.lang.Boolean
+     * @author xda
+     * @date 2022/4/18 10:04
+     */
+    Boolean deleteRepalBook(DeleteRepalBookDTO dto);
+
+
+    /**
+     * 获取账本列表信息
+     * @param repalBookGroupId repalBookGroupId
+     * @return java.util.List<com.winhc.repal.model.vo.RepalBookInfoVO>
+     * @author xda
+     * @date 2022/4/18 10:19
      */
-    RepalBookHomeVO getRepalBookHome();
+    List<RepalBookInfoVO> getRepalBookInfoList(Long repalBookGroupId);
 
 }

+ 10 - 0
src/main/java/com/winhc/repal/service/RepalResponsiblePersonService.java

@@ -33,4 +33,14 @@ public interface RepalResponsiblePersonService extends IService<RepalResponsible
      */
     List<String> getResponsiblePersonName(Long billId);
 
+
+    /**
+     * 删除账本下所有账款对应的责任人
+     * @param repalBookId repalBookId
+     * @return java.lang.Boolean
+     * @author xda
+     * @date 2022/4/18 12:15
+     */
+    Boolean deletePersonByBookId(Long repalBookId);
+
 }

+ 16 - 3
src/main/java/com/winhc/repal/service/impl/RepalBillServiceImpl.java

@@ -279,11 +279,12 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
     }
 
     @Override
-    public Boolean breakRepalBill(Long repalBillId) {
+    public Boolean breakRepalBill(BreakRepalBillDTO dto) {
         // 权限 todo 日志
         this.update(Wrappers.lambdaUpdate(RepalBill.class)
-                .eq(RepalBill::getId, repalBillId)
-                .set(RepalBill::getRepalBillStatus, RepalBillStatusEnum.END.getCode()));
+                .eq(RepalBill::getId, dto.getRepalBillId())
+                .set(RepalBill::getRepalBillStatus, RepalBillStatusEnum.END.getCode())
+                .set(StrUtil.isNotBlank(dto.getBreakReason()), RepalBill::getBreakReason, dto.getBreakReason()));
         return true;
     }
 
@@ -292,4 +293,16 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
     public Boolean updateRepalBill(UpdateRepalBillDTO dto) {
         return true;
     }
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean deleteRepalBillByBookId(Long repalBookId) {
+        this.update(Wrappers.lambdaUpdate(RepalBill.class)
+                .eq(RepalBill::getRepalBookId, repalBookId)
+                .set(RepalBill::getDeleted, DeletedStatusEnum.DELETE.getCode()));
+        // 责任人也删除
+        repalResponsiblePersonService.deletePersonByBookId(repalBookId);
+        return true;
+    }
 }

+ 45 - 2
src/main/java/com/winhc/repal/service/impl/RepalBookServiceImpl.java

@@ -1,11 +1,22 @@
 package com.winhc.repal.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.winhc.common.enums.CodeMsg;
+import com.winhc.common.exception.CommonException;
 import com.winhc.repal.entity.RepalBook;
+import com.winhc.repal.enums.DeletedStatusEnum;
+import com.winhc.repal.model.dto.DeleteRepalBookDTO;
 import com.winhc.repal.model.vo.RepalBookHomeVO;
+import com.winhc.repal.model.vo.RepalBookInfoVO;
 import com.winhc.repal.repository.RepalBookMapper;
+import com.winhc.repal.service.RepalBillService;
 import com.winhc.repal.service.RepalBookService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
 
 /**
  * @description RepalBook 接口实现类
@@ -15,9 +26,41 @@ import org.springframework.stereotype.Service;
 @Service
 public class RepalBookServiceImpl extends ServiceImpl<RepalBookMapper, RepalBook> implements RepalBookService {
 
+    @Autowired
+    private RepalBookMapper repalBookMapper;
+
+    @Autowired
+    private RepalBillService repalBillService;
+
+    @Override
+    public RepalBookHomeVO getRepalHomeDetail(Long repalGroupId) {
+        RepalBookHomeVO vo = new RepalBookHomeVO();
+        return vo;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean deleteRepalBook(DeleteRepalBookDTO dto) {
+        // todo 权限校验 操作日志
+        int count = this.count(Wrappers.lambdaQuery(RepalBook.class)
+                .eq(RepalBook::getRepalGroupId, dto.getRepalGroupId())
+                .eq(RepalBook::getDeleted, DeletedStatusEnum.NORMAL.getCode()));
+        if (count < 2) {
+            throw new CommonException(CodeMsg.FAILED, "必须保留一个账本哦~");
+        }
+        if (!this.update(Wrappers.lambdaUpdate(RepalBook.class)
+                .eq(RepalBook::getRepalGroupId, dto.getRepalGroupId())
+                .set(RepalBook::getDeleted, DeletedStatusEnum.NORMAL.getCode()))) {
+            throw new CommonException(CodeMsg.FAILED, "参数错误");
+        }
+        // 账款和账款关联责任人也删掉
+        repalBillService.deleteRepalBillByBookId(dto.getRepalBookId());
+        return true;
+    }
 
     @Override
-    public RepalBookHomeVO getRepalBookHome() {
-        return null;
+    public List<RepalBookInfoVO> getRepalBookInfoList(Long repalBookGroupId) {
+        // 管理员 or 普通权限 todo
+        return repalBookMapper.getRepalBookInfoList(repalBookGroupId);
     }
 }

+ 12 - 0
src/main/java/com/winhc/repal/service/impl/RepalResponsiblePersonServiceImpl.java

@@ -1,13 +1,16 @@
 package com.winhc.repal.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.winhc.repal.entity.RepalResponsiblePerson;
+import com.winhc.repal.enums.DeletedStatusEnum;
 import com.winhc.repal.model.vo.ResponsiblePersonNameVO;
 import com.winhc.repal.repository.RepalResponsiblePersonMapper;
 import com.winhc.repal.service.RepalResponsiblePersonService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.util.*;
@@ -44,4 +47,13 @@ public class RepalResponsiblePersonServiceImpl extends ServiceImpl<RepalResponsi
         }
         return nameList.stream().map(ResponsiblePersonNameVO::getUserName).collect(Collectors.toList());
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean deletePersonByBookId(Long repalBookId) {
+        this.update(Wrappers.lambdaUpdate(RepalResponsiblePerson.class)
+                .eq(RepalResponsiblePerson::getRepalBookId, repalBookId)
+                .set(RepalResponsiblePerson::getDeleted, DeletedStatusEnum.DELETE.getCode()));
+        return true;
+    }
 }

+ 11 - 0
src/main/resources/mapper/RepalBookMapper.xml

@@ -2,4 +2,15 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.winhc.repal.repository.RepalBookMapper">
 
+    <select id="getRepalBookInfoList" parameterType="java.lang.Long" resultType="com.winhc.repal.model.vo.RepalBookInfoVO">
+        SELECT tmp.repalBookId, tmp.repalBookName, SUM(tmp.repalBillId) AS repalBillCount FROM
+        (SELECT repalBook.ID AS repalBookId, repalBook.REPAL_BOOK_NAME AS repalBookName, repalBill.ID AS repalBillId FROM REPAL_BILL AS repalBill
+        LEFT JOIN REPAL_RESPONSIBLE_PERSON AS rPerson ON repalBill.ID = rPerson.REPAL_BILL_ID
+        LEFT JOIN REPAL_BOOK AS repalBook ON repalBill.REPAL_GROUP_ID = repalBook.ID
+        WHERE repalBill.REPAL_GROUP_ID = #{repalGroupId} AND repalBill.DELETED = 0)
+        AS tmp GROUP BY tmp.repalBookId, tmp.repalBookName
+    </select>
+
+
+
 </mapper>