瀏覽代碼

团队功能

wucl 2 年之前
父節點
當前提交
7987cf6f43
共有 36 個文件被更改,包括 940 次插入38 次删除
  1. 65 0
      biz-base/src/main/java/com/dayou/controller/PostCultivateController.java
  2. 97 0
      biz-base/src/main/java/com/dayou/controller/TeamController.java
  3. 83 0
      biz-base/src/main/java/com/dayou/controller/TeamMemberController.java
  4. 2 0
      dao/src/main/java/com/dayou/mapper/ItemMapper.java
  5. 4 0
      dao/src/main/java/com/dayou/mapper/PostCultivateMapper.java
  6. 21 0
      dao/src/main/java/com/dayou/mapper/TeamMapper.java
  7. 16 0
      dao/src/main/java/com/dayou/mapper/TeamMemberMapper.java
  8. 4 0
      dao/src/main/resources/mapper/ItemMapper.xml
  9. 8 0
      dao/src/main/resources/mapper/PaymentCollectionMapper.xml
  10. 45 1
      dao/src/main/resources/mapper/PostCultivateMapper.xml
  11. 58 0
      dao/src/main/resources/mapper/TeamMapper.xml
  12. 24 0
      dao/src/main/resources/mapper/TeamMemberMapper.xml
  13. 6 0
      domain/src/main/java/com/dayou/dto/ItemDTO.java
  14. 15 0
      domain/src/main/java/com/dayou/entity/PostCultivate.java
  15. 46 0
      domain/src/main/java/com/dayou/entity/Team.java
  16. 34 0
      domain/src/main/java/com/dayou/entity/TeamMember.java
  17. 7 0
      domain/src/main/java/com/dayou/vo/PaymentCollectionVO.java
  18. 31 0
      domain/src/main/java/com/dayou/vo/PostCultivateVO.java
  19. 26 0
      domain/src/main/java/com/dayou/vo/TeamMemberVO.java
  20. 28 0
      domain/src/main/java/com/dayou/vo/TeamVO.java
  21. 14 6
      service/src/main/java/com/dayou/brokerage/MarketerBrokerageCalculator.java
  22. 47 21
      service/src/main/java/com/dayou/brokerage/handler/LandMarketerBrokerageHandler.java
  23. 2 0
      service/src/main/java/com/dayou/service/IItemBrokerageGeneralService.java
  24. 2 0
      service/src/main/java/com/dayou/service/IItemService.java
  25. 13 6
      service/src/main/java/com/dayou/service/IPostCultivateService.java
  26. 28 0
      service/src/main/java/com/dayou/service/ITeamMemberService.java
  27. 29 0
      service/src/main/java/com/dayou/service/ITeamService.java
  28. 5 0
      service/src/main/java/com/dayou/service/impl/ItemBrokerageGeneralServiceImpl.java
  29. 11 2
      service/src/main/java/com/dayou/service/impl/ItemBrokerageSequenceServiceImpl.java
  30. 1 0
      service/src/main/java/com/dayou/service/impl/ItemServiceImpl.java
  31. 5 2
      service/src/main/java/com/dayou/service/impl/MarketStatServiceImpl.java
  32. 5 0
      service/src/main/java/com/dayou/service/impl/PaymentCollectionServiceImpl.java
  33. 20 0
      service/src/main/java/com/dayou/service/impl/PostCultivateServiceImpl.java
  34. 66 0
      service/src/main/java/com/dayou/service/impl/TeamMemberServiceImpl.java
  35. 71 0
      service/src/main/java/com/dayou/service/impl/TeamServiceImpl.java
  36. 1 0
      service/src/main/java/com/dayou/service/impl/UserTargetServiceImpl.java

+ 65 - 0
biz-base/src/main/java/com/dayou/controller/PostCultivateController.java

@@ -0,0 +1,65 @@
+package com.dayou.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dayou.common.RestResponse;
+import com.dayou.entity.PostCultivate;
+import com.dayou.service.IPostCultivateService;
+import com.dayou.vo.PostCultivateVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 岗位培育关系
+ *
+ * @author wucl
+ * @since 2023-01-10
+ */
+@RestController
+@RequestMapping("postCultivate")
+@Slf4j
+public class PostCultivateController {
+
+    @Autowired
+    private IPostCultivateService postCultivateService;
+
+    /**
+     * 岗位培育关系
+     */
+    @GetMapping("")
+    public RestResponse<Page<PostCultivateVO>> page(PostCultivateVO postCultivateVO, Page page){
+        Page<PostCultivateVO> xPage = postCultivateService.getPage(page,postCultivateVO);
+        return RestResponse.data(xPage);
+    }
+
+    /**
+     * 新增培育关系
+     * @param postCultivate
+     * @return
+     */
+    @PostMapping("")
+    public RestResponse<Boolean> add(@RequestBody PostCultivate postCultivate){
+        Boolean ret = postCultivateService.save(postCultivate);
+        return RestResponse.data(ret);
+    }
+
+    /**
+     * 修改培育关系
+     * @param postCultivate
+     * @return
+     */
+    @PutMapping("")
+    public RestResponse<Boolean> update(@RequestBody PostCultivate postCultivate){
+        boolean update = postCultivateService.update(postCultivate);
+        return RestResponse.data(update);
+    }
+
+    /**
+     * 删除培育关系
+     */
+    @DeleteMapping("/{id}")
+    public RestResponse<Boolean> delete(@PathVariable Long id) {
+        Boolean ret = postCultivateService.delete(id);
+        return RestResponse.data(ret);
+    }
+}

+ 97 - 0
biz-base/src/main/java/com/dayou/controller/TeamController.java

@@ -0,0 +1,97 @@
+package com.dayou.controller;
+
+import com.dayou.vo.TeamVO;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.web.bind.annotation.RestController;
+import com.dayou.controller.BaseController;
+import com.dayou.service.ITeamService;
+import com.dayou.entity.Team;
+import com.dayou.common.RestResponse;
+import org.springframework.web.bind.annotation.*;
+import com.dayou.common.PullDownModel;
+import com.dayou.utils.ConvertUtil;
+import com.dayou.utils.HttpKit;
+import com.dayou.exception.ErrorCode;
+import java.util.Date;
+import java.util.List;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springframework.http.MediaType;
+import org.springframework.web.multipart.MultipartFile;
+/**
+ * 团队
+ *
+ * @author wucl
+ * @since 2023-04-07
+ */
+@RestController
+@RequestMapping("team")
+@Slf4j
+public class TeamController extends BaseController {
+    @Autowired
+    private ITeamService teamService;
+
+    /**
+    * 团队列表
+    */
+    @GetMapping("")
+    public RestResponse<Page<TeamVO>> page(TeamVO teamVO, Page page){
+        Page<TeamVO> pages=teamService.selectPage(page,teamVO);
+        return RestResponse.data(pages);
+    }
+
+    /**
+     * 团队详情
+     */
+    @GetMapping("/{id}")
+    public RestResponse<Team> detail(@PathVariable Long id){
+        Team xTeam =teamService.detail(id);
+        return RestResponse.data(xTeam);
+     }
+
+    /**
+     * 团队新增
+     */
+    @PostMapping("")
+    public RestResponse<Boolean> save(@RequestBody Team team) {
+        Boolean ret = teamService.add(team);
+        return RestResponse.data(ret);
+    }
+
+    /**
+     * 团队更新
+     */
+    @PutMapping("")
+    public RestResponse<Boolean> update(@RequestBody Team team) {
+        Boolean ret = teamService.update(team);
+        return RestResponse.data(ret);
+    }
+
+    /**
+     * 团队删除
+     */
+    @DeleteMapping("/{id}")
+    public RestResponse<Boolean> delete(@PathVariable Long id) {
+        Boolean ret = teamService.delete(id);
+        return RestResponse.data(ret);
+    }
+
+
+    /**
+     * 团队下拉列表
+     */
+    @GetMapping("/simpleAll")
+    public RestResponse<List<PullDownModel>> simpleAll(){
+        LambdaQueryWrapper<Team> lambdaQueryWrapper = new LambdaQueryWrapper<Team>()
+        .select(Team::getId,Team::getName)
+        .eq(Team::getDeleted,false);
+        List<Team> list= teamService.list(lambdaQueryWrapper);
+        List<PullDownModel> ret=ConvertUtil.copyList(list, PullDownModel.class);
+        return RestResponse.data(ret);
+    }
+}
+

+ 83 - 0
biz-base/src/main/java/com/dayou/controller/TeamMemberController.java

@@ -0,0 +1,83 @@
+package com.dayou.controller;
+
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.web.bind.annotation.RestController;
+import com.dayou.controller.BaseController;
+import com.dayou.service.ITeamMemberService;
+import com.dayou.entity.TeamMember;
+import com.dayou.common.RestResponse;
+import org.springframework.web.bind.annotation.*;
+import com.dayou.utils.ConvertUtil;
+import com.dayou.utils.HttpKit;
+import com.dayou.exception.ErrorCode;
+import java.util.Date;
+import java.util.List;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springframework.http.MediaType;
+import org.springframework.web.multipart.MultipartFile;
+/**
+ * 团队成员
+ *
+ * @author wucl
+ * @since 2023-04-07
+ */
+@RestController
+@RequestMapping("teamMember")
+@Slf4j
+public class TeamMemberController extends BaseController {
+    @Autowired
+    private ITeamMemberService teamMemberService;
+
+    /**
+    * 团队成员列表
+    */
+    @GetMapping("")
+    public RestResponse<Page<TeamMember>> page(TeamMember teamMember, Page page){
+        Page<TeamMember> pages=teamMemberService.selectPage(page,teamMember);
+        return RestResponse.data(pages);
+    }
+
+    /**
+     * 团队成员详情
+     */
+    @GetMapping("/{id}")
+    public RestResponse<TeamMember> detail(@PathVariable Long id){
+        TeamMember xTeamMember =teamMemberService.detail(id);
+        return RestResponse.data(xTeamMember);
+     }
+
+    /**
+     * 团队成员新增
+     */
+    @PostMapping("")
+    public RestResponse<Boolean> save(@RequestBody TeamMember teamMember) {
+        Boolean ret = teamMemberService.add(teamMember);
+        return RestResponse.data(ret);
+    }
+
+    /**
+     * 团队成员更新
+     */
+    @PutMapping("")
+    public RestResponse<Boolean> update(@RequestBody TeamMember teamMember) {
+        Boolean ret = teamMemberService.update(teamMember);
+        return RestResponse.data(ret);
+    }
+
+    /**
+     * 团队成员删除
+     */
+    @DeleteMapping("/{id}")
+    public RestResponse<Boolean> delete(@PathVariable Long id) {
+        Boolean ret = teamMemberService.delete(id);
+        return RestResponse.data(ret);
+    }
+
+
+}
+

+ 2 - 0
dao/src/main/java/com/dayou/mapper/ItemMapper.java

@@ -41,4 +41,6 @@ public interface ItemMapper extends CustomBaseMapper<Item> {
     List<ItemVO> xList(@Param("item") ItemDTO item);
 
     List<ItemVO> xMineList( @Param("item") ItemDTO item);
+
+    ItemDTO  getItemByBrokerageGeneralId(@Param("generalId") Long generalId);
 }

+ 4 - 0
dao/src/main/java/com/dayou/mapper/PostCultivateMapper.java

@@ -1,7 +1,10 @@
 package com.dayou.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dayou.entity.PostCultivate;
 import com.dayou.dao.CustomBaseMapper;
+import com.dayou.vo.PostCultivateVO;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +16,5 @@ import com.dayou.dao.CustomBaseMapper;
  */
 public interface PostCultivateMapper extends CustomBaseMapper<PostCultivate> {
 
+    Page<PostCultivateVO> getPage(Page page, @Param("vo") PostCultivateVO postCultivateVO);
 }

+ 21 - 0
dao/src/main/java/com/dayou/mapper/TeamMapper.java

@@ -0,0 +1,21 @@
+package com.dayou.mapper;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dayou.entity.Team;
+import com.dayou.dao.CustomBaseMapper;
+import com.dayou.vo.TeamVO;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.web.bind.annotation.PostMapping;
+
+/**
+ * <p>
+ * 团队 Mapper 接口
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-04-07
+ */
+public interface TeamMapper extends CustomBaseMapper<Team> {
+
+    Page<TeamVO> getPage(Page page, @Param("vo") TeamVO teamVO);
+}

+ 16 - 0
dao/src/main/java/com/dayou/mapper/TeamMemberMapper.java

@@ -0,0 +1,16 @@
+package com.dayou.mapper;
+
+import com.dayou.entity.TeamMember;
+import com.dayou.dao.CustomBaseMapper;
+
+/**
+ * <p>
+ * 团队成员 Mapper 接口
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-04-07
+ */
+public interface TeamMemberMapper extends CustomBaseMapper<TeamMember> {
+
+}

+ 4 - 0
dao/src/main/resources/mapper/ItemMapper.xml

@@ -370,4 +370,8 @@
         </if>
         order by i.id DESC
     </select>
+
+    <select id="getItemByBrokerageGeneralId" parameterType="java.lang.Long" resultType="com.dayou.dto.ItemDTO">
+        select <include refid="Base_Column_List"/>,ibg.brokerage_rate as ratio from item_brokerage_general ibg left join item i on i.id = ibg.item_id where i.deleted = 0 and ibg.deleted = 0 and ibg.id = #{generalId}
+    </select>
 </mapper>

+ 8 - 0
dao/src/main/resources/mapper/PaymentCollectionMapper.xml

@@ -36,6 +36,14 @@
         <if test="dto!=null and dto.name!=null and dto.name!=''">
             and pc.name like concat ('%',#{dto.name},'%')
         </if>
+        <if test="dto!=null and dto.isCurYear!=null and dto.isCurYear==true">
+            AND pc.payment_date &gt;= concat( YEAR ( now())- 1, '-12-23' )
+            AND pc.payment_date &lt;= concat( YEAR ( now()), '-12-22' )
+        </if>
+        <if test="dto!=null and dto.isCurMonth!=null and dto.isCurMonth==true">
+            AND pc.payment_date &gt;= #{dto.lastMonth23}
+            AND pc.payment_date &lt;= concat( date_format( LAST_DAY( now()), '%Y-%m-' ), '22' )
+        </if>
         <if test="dto!=null and dto.year!=null">
             and DATE_FORMAT(pc.payment_date,'%Y') = #{dto.year}
         </if>

+ 45 - 1
dao/src/main/resources/mapper/PostCultivateMapper.xml

@@ -20,7 +20,51 @@
         deleted,
         created,
         modified,
-        user_id, user_post_id, parent_user_id, parent_user_post_id
+        user_id, user_post_id, user_department_id, parent_user_id, parent_user_post_id,parent_user_department_id,alias
     </sql>
 
+    <select id="getPage" parameterType="com.dayou.vo.PostCultivateVO" resultType="com.dayou.vo.PostCultivateVO">
+        SELECT
+            pc.id,
+            u.id as user_id,
+            u.NAME as userName,
+            p.NAME AS userPostName,
+            pc.parentUserName AS parentUserName,
+            pc.parentUserPostName AS parentUserPostName,
+            pc.alias as alias,
+            pc.created
+        FROM
+            user_post up
+                LEFT JOIN post p ON p.id = up.post_id
+                LEFT JOIN department d ON d.id = p.department_id
+                LEFT JOIN user u ON u.id = up.user_id
+                left join (
+                SELECT
+                    pc.id,
+                    u2.id as userId,
+                    p2.id as postId,
+                    u2.NAME AS parentUserName,
+                    p2.NAME AS parentUserPostName,
+                    pc.alias,
+                    pc.user_id,
+                    pc.created
+                FROM
+                    `post_cultivate` pc
+
+                        LEFT JOIN user u2 ON u2.id = pc.parent_user_id
+
+                        LEFT JOIN post p2 ON p2.id = pc.parent_user_post_id
+                WHERE
+                    pc.deleted = 0
+                  AND u2.deleted = 0
+                  AND p2.deleted = 0
+            ) pc on pc.user_id = u.id
+        WHERE
+            d.NAME = #{vo.departmentName}
+          AND up.deleted = 0
+          AND p.deleted = 0
+          AND u.deleted = 0
+          AND d.deleted = 0
+        order by pc.id desc
+    </select>
 </mapper>

+ 58 - 0
dao/src/main/resources/mapper/TeamMapper.xml

@@ -0,0 +1,58 @@
+<?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.dayou.mapper.TeamMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.dayou.vo.TeamVO">
+        <result column="id" property="id" />
+        <result column="deleted" property="deleted" />
+        <result column="created" property="created" />
+        <result column="modified" property="modified" />
+        <result column="name" property="name" />
+        <result column="supervisor_id" property="supervisorId" />
+        <result column="cultivate_id" property="cultivateId" />
+        <result column="department_id" property="departmentId" />
+        <result column="supervisorName" property="supervisorName" />
+        <result column="cultivateName" property="cultivateName" />
+        <result column="departmentName" property="departmentName" />
+        <result column="cultivatePost" property="cultivatePost"/>
+        <collection property="members" ofType="java.lang.Long" select="selectTeamMember" column="id"/>
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        t.id,
+        t.deleted,
+        t.created,
+        t.modified,
+        t.name, t.supervisor_id,t.cultivate_id, t.department_id
+    </sql>
+
+    <select id="getPage" parameterType="com.dayou.vo.TeamVO" resultMap="BaseResultMap">
+        select <include refid="Base_Column_List"/> ,u.name as supervisorName ,u1.name as cultivateName ,d.name as departmentName,p.name as cultivatePost
+        from team t left join user u on u.id = t.supervisor_id left join user u1 on u1.id = t.cultivate_id
+        left join department d on d.id = t.department_id LEFT JOIN user_post up ON up.user_id = t.cultivate_id
+        LEFT JOIN post p ON p.id = up.post_id
+        where t.deleted = 0 and u.deleted =0 and u1.deleted = 0 and d.deleted = 0 and d.name = #{vo.departmentName}
+    </select>
+
+    <select id="selectTeamMember" parameterType="java.lang.Long" resultType="com.dayou.vo.TeamMemberVO">
+        SELECT
+            tm.*,
+            t.name as teamName,
+            t.supervisor_id as supervisorId,
+            u1.name as supervisorName,
+            u.name as memberName,
+            p.name as memberPost
+        FROM
+            team_member tm
+                LEFT JOIN team t ON t.id = tm.team_id
+                LEFT JOIN user u ON u.id = tm.member_id
+                LEFT JOIN user u1 ON u1.id = t.supervisor_id
+                LEFT JOIN user_post up ON up.user_id = tm.member_id
+                LEFT JOIN post p ON p.id = up.post_id
+        WHERE
+             tm.deleted = 0 and u.deleted = 0 and u1.deleted = 0 and up.deleted = 0 and p.deleted = 0
+            and tm.team_id =#{id}
+    </select>
+</mapper>

+ 24 - 0
dao/src/main/resources/mapper/TeamMemberMapper.xml

@@ -0,0 +1,24 @@
+<?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.dayou.mapper.TeamMemberMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.dayou.entity.TeamMember">
+        <result column="id" property="id" />
+        <result column="deleted" property="deleted" />
+        <result column="created" property="created" />
+        <result column="modified" property="modified" />
+        <result column="member_id" property="memberId" />
+        <result column="team_id" property="teamId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id,
+        deleted,
+        created,
+        modified,
+        member_id, team_id
+    </sql>
+
+</mapper>

+ 6 - 0
domain/src/main/java/com/dayou/dto/ItemDTO.java

@@ -4,6 +4,7 @@ import com.dayou.entity.Item;
 import com.dayou.enums.MergeKeyInterface;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Set;
 
@@ -34,6 +35,11 @@ public class ItemDTO extends Item implements MergeKeyInterface {
      */
     private Boolean isCurYear;
 
+    /**
+     * 项目类型提成率
+     */
+    private BigDecimal ratio;
+
     @Override
     public String mergeKey() {
         return super.getCate() +MERGE_SYMBOL+ super.getBusinessSource();

+ 15 - 0
domain/src/main/java/com/dayou/entity/PostCultivate.java

@@ -31,6 +31,11 @@ public class PostCultivate extends BaseEntity {
     private Long userPostId;
 
     /**
+     * 用户部门id
+     */
+    private Long userDepartmentId;
+
+    /**
      * 父级用户id
      */
     private Long parentUserId;
@@ -40,5 +45,15 @@ public class PostCultivate extends BaseEntity {
      */
     private Long parentUserPostId;
 
+    /**
+     * 父级用户部门id
+     */
+    private Long parentUserDepartmentId;
+
+    /**
+     * 团队别名
+     */
+    private String alias;
+
 
 }

+ 46 - 0
domain/src/main/java/com/dayou/entity/Team.java

@@ -0,0 +1,46 @@
+package com.dayou.entity;
+import com.dayou.common.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.dayou.annotation.ExcelSheet;
+import com.dayou.annotation.ExportCell;
+import com.dayou.annotation.ImportCell;
+/**
+ * <p>
+ * 团队
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-04-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ExcelSheet(sheetName = "团队")
+public class Team extends BaseEntity {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 名字
+     */
+    @ImportCell
+    @ExportCell(columnName = "名字")
+    private String name;
+
+    /**
+     * 主管id
+     */
+    private Long supervisorId;
+
+    /**
+     * 培育者id
+     */
+    private Long cultivateId;
+
+    /**
+     * 所属部门id
+     */
+    private Long departmentId;
+
+
+}

+ 34 - 0
domain/src/main/java/com/dayou/entity/TeamMember.java

@@ -0,0 +1,34 @@
+package com.dayou.entity;
+import com.dayou.common.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.dayou.annotation.ExcelSheet;
+import com.dayou.annotation.ExportCell;
+import com.dayou.annotation.ImportCell;
+/**
+ * <p>
+ * 团队成员
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-04-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ExcelSheet(sheetName = "团队成员")
+public class TeamMember extends BaseEntity {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 成员id
+     */
+    private Long memberId;
+
+    /**
+     * 团队id
+     */
+    private Long teamId;
+
+
+}

+ 7 - 0
domain/src/main/java/com/dayou/vo/PaymentCollectionVO.java

@@ -3,6 +3,7 @@ package com.dayou.vo;
 import com.dayou.entity.PaymentCollection;
 import lombok.Data;
 
+import java.time.LocalDate;
 import java.util.Set;
 
 /**
@@ -23,4 +24,10 @@ public class PaymentCollectionVO extends PaymentCollection {
 
     private Integer month;
 
+    private Boolean isCurYear = false;
+
+    private Boolean isCurMonth = false;
+
+    private LocalDate lastMonth23;
+
 }

+ 31 - 0
domain/src/main/java/com/dayou/vo/PostCultivateVO.java

@@ -0,0 +1,31 @@
+package com.dayou.vo;
+
+import com.dayou.entity.PostCultivate;
+import lombok.Data;
+
+/**
+ * 类说明:
+ *
+ * @author: wucl
+ * @since: 2023/4/7
+ * created with IntelliJ IDEA.
+ */
+@Data
+public class PostCultivateVO extends PostCultivate {
+
+    private String userName;
+
+    private String userPostName;
+
+    private String userDepartmentName;
+
+    private String parentUserName;
+
+    private String parentUserPostName;
+
+    private String parentUserDepartmentName;
+    /**
+     * 入参用
+     */
+    private String departmentName;
+}

+ 26 - 0
domain/src/main/java/com/dayou/vo/TeamMemberVO.java

@@ -0,0 +1,26 @@
+package com.dayou.vo;
+
+import com.dayou.entity.TeamMember;
+import lombok.Data;
+
+/**
+ * 类说明:
+ *
+ * @author: wucl
+ * @since: 2023/4/7
+ * created with IntelliJ IDEA.
+ */
+@Data
+public class TeamMemberVO extends TeamMember {
+
+    private String teamName;
+
+    private Long supervisorId;
+
+    private String supervisorName;
+
+    private String memberName;
+
+    private String memberPost;
+
+}

+ 28 - 0
domain/src/main/java/com/dayou/vo/TeamVO.java

@@ -0,0 +1,28 @@
+package com.dayou.vo;
+
+import com.dayou.entity.Team;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 类说明:
+ *
+ * @author: wucl
+ * @since: 2023/4/7
+ * created with IntelliJ IDEA.
+ */
+@Data
+public class TeamVO extends Team {
+
+    private String supervisorName;
+
+    private String cultivateName;
+
+    private String cultivatePost;
+
+    private String departmentName;
+
+    private List<TeamMemberVO> members;
+
+}

+ 14 - 6
service/src/main/java/com/dayou/brokerage/MarketerBrokerageCalculator.java

@@ -29,21 +29,29 @@ public interface MarketerBrokerageCalculator extends BrokerageCalculator {
     Set<ItemBrokerageDetail> predictTeamShareAmount(BrokerageDetailBO bo, Set<LeaderRatioBO> leaderRatioBOSet);
 
     /**
+     * 预估提成金额(团队抽成计算)
+     */
+    BigDecimal actualTeamShareAmount(ItemBrokerageDetail itemBrokerageDetail);
+
+    /**
      * 营销主管提成计算
-     * @param bo
-     * @param leaderRatioBO 岗位抽成率对象
+     * @param signAmount 合同签约金额
+     * @param userId 提成用户id
+     * @param postRatio 岗位提成率
      * @param ratio 项目提成系数
      * @return
      */
-    BigDecimal supervisorAmount(BrokerageDetailBO bo,LeaderRatioBO leaderRatioBO,BigDecimal ratio);
+    BigDecimal supervisorAmount(BigDecimal signAmount, Long userId ,BigDecimal postRatio, BigDecimal ratio);
 
     /**
      * 市场部部门经理提成计算
-     * @param bo
-     * @param leaderRatioBO 岗位抽成率对象
+     * @param signAmount 合同签约金额
+     * @param marketerId 客户经理id
+     * @param managerId  营销经理id
+     * @param postRatio  岗位提成率
      * @return
      */
-    BigDecimal managerAmount(BrokerageDetailBO bo,LeaderRatioBO leaderRatioBO);
+    BigDecimal managerAmount(BigDecimal signAmount,Long marketerId, Long managerId,BigDecimal postRatio);
 
     /**
      * 市场人员实际提成金额

+ 47 - 21
service/src/main/java/com/dayou/brokerage/handler/LandMarketerBrokerageHandler.java

@@ -1,5 +1,6 @@
 package com.dayou.brokerage.handler;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.dayou.bo.BrokerageDetailBO;
 import com.dayou.bo.LeaderRatioBO;
 import com.dayou.brokerage.BrokerageCalculateSupport;
@@ -7,14 +8,15 @@ import com.dayou.brokerage.MarketerBrokerageCalculator;
 import com.dayou.brokerage.constants.BrokerageMode;
 import com.dayou.brokerage.constants.BrokerageRule;
 import com.dayou.brokerage.constants.BrokerageState;
+import com.dayou.common.BaseEntity;
+import com.dayou.dto.ItemDTO;
+import com.dayou.entity.BrokeragePostRatio;
+import com.dayou.entity.Item;
 import com.dayou.entity.ItemBrokerageDetail;
 import com.dayou.entity.UserTarget;
 import com.dayou.enums.GlobalConfigEnum;
 import com.dayou.exception.BusinessException;
-import com.dayou.service.IMarketStatService;
-import com.dayou.service.IPostCultivateService;
-import com.dayou.service.IUserService;
-import com.dayou.service.IUserTargetService;
+import com.dayou.service.*;
 import com.google.common.cache.LoadingCache;
 import com.google.common.collect.Sets;
 import lombok.extern.slf4j.Slf4j;
@@ -23,8 +25,10 @@ import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
+import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.ExecutionException;
+import java.util.function.Supplier;
 import java.util.stream.Collectors;
 
 import static com.dayou.brokerage.constants.BrokerageMsg.*;
@@ -58,6 +62,12 @@ public class LandMarketerBrokerageHandler extends BrokerageCalculateSupport impl
     
     @Autowired
     private IUserService userService;
+    
+    @Autowired
+    private IBrokeragePostRatioService brokeragePostRatioService;
+
+    @Autowired
+    private IItemBrokerageGeneralService generalService;
 
     @Override
     public BrokerageDetailBO predictPersonalAmount(BrokerageDetailBO bo) {
@@ -102,6 +112,7 @@ public class LandMarketerBrokerageHandler extends BrokerageCalculateSupport impl
                 checkItemBrokerageStatus(bo);
                 itemBrokerageDetails = leaderRatioBOSet.stream().map(x -> {
                     ItemBrokerageDetail itemBrokerageDetail = new ItemBrokerageDetail();
+                    itemBrokerageDetail.setGeneralId(bo.getGeneralId());
                     itemBrokerageDetail.setUserId(x.getUserId());
                     itemBrokerageDetail.setAheadAmount(BigDecimal.ZERO);
                     itemBrokerageDetail.setAdvanceAmount(BigDecimal.ZERO);
@@ -110,13 +121,12 @@ public class LandMarketerBrokerageHandler extends BrokerageCalculateSupport impl
                     BrokerageRule brokerageRuleEnum = BrokerageRule.brokerageRule(x.getBrokerageRule());
                     switch (brokerageRuleEnum){
                         case LAND_SUPERVISOR_RULE:
-                            itemBrokerageDetail.setPredictAmount(supervisorAmount(bo, x, ratio));
+                            itemBrokerageDetail.setPredictAmount(supervisorAmount(bo.getAmount(),x.getUserId(),x.getRatio(),ratio));
                             break;
                         case LAND_MANAGER_RULE:
-                            itemBrokerageDetail.setPredictAmount(managerAmount(bo, x));
+                            itemBrokerageDetail.setPredictAmount(managerAmount(bo.getAmount(),bo.getUserId(),x.getUserId(),x.getRatio()));
                             break;
                     }
-                    itemBrokerageDetail.setActualAmount(actualAmount(itemBrokerageDetail.getPredictAmount()));
                     return itemBrokerageDetail;
                 }).collect(Collectors.toSet());
 
@@ -130,14 +140,30 @@ public class LandMarketerBrokerageHandler extends BrokerageCalculateSupport impl
     }
 
     @Override
-    public BigDecimal supervisorAmount(BrokerageDetailBO bo, LeaderRatioBO leaderRatioBO,BigDecimal ratio) {
+    public BigDecimal actualTeamShareAmount(ItemBrokerageDetail itemBrokerageDetail) {
+        BrokeragePostRatio postRatio = brokeragePostRatioService.getOne(new LambdaQueryWrapper<BrokeragePostRatio>()
+                .eq(BrokeragePostRatio::getBrokerageRule, itemBrokerageDetail.getBrokerageRule()).eq(BaseEntity::getDeleted, Boolean.FALSE));
+        if (postRatio!=null && postRatio.getBrokerageRatio()!=null){
+            ItemDTO  itemDTO = generalService.getItemByBrokerageGeneralId(itemBrokerageDetail.getGeneralId());
+            BrokerageRule brokerageRuleEnum = BrokerageRule.brokerageRule(itemBrokerageDetail.getBrokerageRule());
+            switch (brokerageRuleEnum){
+                case LAND_SUPERVISOR_RULE:
+                    return supervisorAmount(itemDTO.getAmount(), itemBrokerageDetail.getUserId(),postRatio.getBrokerageRatio(), itemDTO.getRatio());
+                case LAND_MANAGER_RULE:
+                    return managerAmount(itemDTO.getAmount(),itemDTO.getUserId(),itemBrokerageDetail.getUserId(),postRatio.getBrokerageRatio());
+            }
+        }
+        return BigDecimal.ZERO;
+    }
+
+    @Override
+    public BigDecimal supervisorAmount(BigDecimal signAmount,Long supervisorId,BigDecimal postRatio, BigDecimal ratio) {
         //营销主管的团队提成规则 : (合同额(团队签的)*项目类型提成系数 * 40% *0.5 )+ [合同额(团队签的)*项目类型提成系数*40%*0.5 * 实发系数(取决于团队回款目标是否完成)]
-        BigDecimal amount = bo.getAmount()
+        BigDecimal amount = signAmount
                 .multiply(ratio.divide(HUNDRED))
-                .multiply(leaderRatioBO.getRatio().divide(HUNDRED))
+                .multiply(postRatio.divide(HUNDRED))
                 .multiply(SUPERVISOR_BROKERAGE_SCALE);
 
-        Long supervisorId = leaderRatioBO.getUserId();
         //团队回款目标
         BigDecimal teamPaymentTarget = BigDecimal.valueOf(userTargetService.getTeamTarget(supervisorId).getPaymentTarget());
         BigDecimal teamCurrentYearPayment = marketStatService.currentYearTeamPayment(supervisorId);
@@ -148,23 +174,23 @@ public class LandMarketerBrokerageHandler extends BrokerageCalculateSupport impl
     }
 
     @Override
-    public BigDecimal managerAmount(BrokerageDetailBO bo, LeaderRatioBO leaderRatioBO) {
+    public BigDecimal managerAmount(BigDecimal signAmount,Long marketerId, Long managerId,BigDecimal postRatio) {
         //部门经理的团队提成规则 :部门产值*3%+区域产值1.5%  +  (部门产值*浮动提成比例*0.2)+(部门产值*浮动提成比例*0.8*实发比例) 实发比例(取决于团队回款目标是否完成)
         //部门产值
-        BigDecimal departmentAmount = bo.getAmount()
-                .multiply(leaderRatioBO.getRatio().divide(HUNDRED))
+        BigDecimal departmentAmount = signAmount
+                .multiply(postRatio.divide(HUNDRED))
                 .multiply(new BigDecimal("2"));
         BigDecimal areaAmount = BigDecimal.ZERO;
         //开单人员的营销主管集合
-        Set<LeaderRatioBO> leaders = userService.getLeaderRatioBO(bo.getUserId()).stream().filter(x->x.getPostName().equals(SUPERVISOR)).collect(Collectors.toSet());
+        Set<LeaderRatioBO> leaders = userService.getLeaderRatioBO(marketerId).stream().filter(x->x.getPostName().equals(SUPERVISOR)).collect(Collectors.toSet());
 
         if (!CollectionUtils.isEmpty(leaders)){
             //区域产值
-            areaAmount = bo.getAmount().multiply(leaderRatioBO.getRatio().divide(HUNDRED));
+            areaAmount = signAmount.multiply(postRatio.divide(HUNDRED));
         }
 
         // 获取发展的营销主管个数
-        Integer cultivateNum = postCultivateService.countCultivate(SUPERVISOR, leaderRatioBO.getUserId());
+        Integer cultivateNum = postCultivateService.countCultivate(SUPERVISOR, managerId);
         BigDecimal cultivateRate ;
         if (cultivateNum<4){
             cultivateRate = CULTIVATE_LOW_4;
@@ -173,13 +199,13 @@ public class LandMarketerBrokerageHandler extends BrokerageCalculateSupport impl
         }else {
             cultivateRate = CULTIVATE_HIGH_6;
         }
-        BigDecimal floatAmount = bo.getAmount().multiply(cultivateRate).multiply(MANAGER_FLOAT_RATIO_2);
+        BigDecimal floatAmount = signAmount.multiply(cultivateRate).multiply(MANAGER_FLOAT_RATIO_2);
 
         //团队回款目标
-        BigDecimal teamPaymentTarget = BigDecimal.valueOf(userTargetService.getTeamTarget(leaderRatioBO.getUserId()).getPaymentTarget());
-        BigDecimal teamCurrentYearPayment = marketStatService.currentYearTeamPayment(leaderRatioBO.getUserId());
+        BigDecimal teamPaymentTarget = BigDecimal.valueOf(userTargetService.getTeamTarget(managerId).getPaymentTarget());
+        BigDecimal teamCurrentYearPayment = marketStatService.currentYearTeamPayment(managerId);
         if (checkTeamMonthlyPayment(teamCurrentYearPayment, teamPaymentTarget)){
-            floatAmount = floatAmount.add(bo.getAmount().multiply(cultivateRate).multiply(MANAGER_FLOAT_RATIO_8));
+            floatAmount = floatAmount.add(signAmount.multiply(cultivateRate).multiply(MANAGER_FLOAT_RATIO_8));
         }
         return departmentAmount.add(areaAmount).add(floatAmount);
     }

+ 2 - 0
service/src/main/java/com/dayou/service/IItemBrokerageGeneralService.java

@@ -70,4 +70,6 @@ public interface IItemBrokerageGeneralService extends IService<ItemBrokerageGene
     void toSettleMarketerBrokerage(Long paymentId);
 
     void updateAheadStatus(Long userId);
+
+    ItemDTO getItemByBrokerageGeneralId(Long generalId);
 }

+ 2 - 0
service/src/main/java/com/dayou/service/IItemService.java

@@ -45,4 +45,6 @@ public interface IItemService extends IService<Item> {
         List<ItemVO> xList(ItemDTO item);
 
         List<ItemVO> xMineList(ItemDTO item);
+
+
 }

+ 13 - 6
service/src/main/java/com/dayou/service/IPostCultivateService.java

@@ -3,6 +3,7 @@ import com.dayou.entity.PostCultivate;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.dayou.vo.PostCultivateVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
 /**
@@ -16,10 +17,16 @@ import org.springframework.web.multipart.MultipartFile;
 public interface IPostCultivateService extends IService<PostCultivate> {
 
 
-        /**
-         * 计算某个用户培育某岗位人数
-         * @param postName
-         * @return
-         */
-        Integer countCultivate(String postName,Long userId);
+    /**
+     * 计算某个用户培育某岗位人数
+     * @param postName
+     * @return
+     */
+    Integer countCultivate(String postName,Long userId);
+
+    Page<PostCultivateVO> getPage(Page page, PostCultivateVO postCultivateVO);
+    
+    Boolean update(PostCultivate postCultivate);
+
+    Boolean delete(Long id);
 }

+ 28 - 0
service/src/main/java/com/dayou/service/ITeamMemberService.java

@@ -0,0 +1,28 @@
+package com.dayou.service;
+import com.dayou.entity.TeamMember;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.web.multipart.MultipartFile;
+/**
+ * <p>
+ * 团队成员 服务类
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-04-07
+ */
+public interface ITeamMemberService extends IService<TeamMember> {
+
+        Page<TeamMember> selectPage(Page page,TeamMember teamMember);
+
+        TeamMember detail(Long id);
+
+        Boolean add(TeamMember teamMember);
+
+        Boolean update(TeamMember teamMember);
+
+        Boolean delete(Long id);
+
+}

+ 29 - 0
service/src/main/java/com/dayou/service/ITeamService.java

@@ -0,0 +1,29 @@
+package com.dayou.service;
+import com.dayou.entity.Team;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.dayou.vo.TeamVO;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.web.multipart.MultipartFile;
+/**
+ * <p>
+ * 团队 服务类
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-04-07
+ */
+public interface ITeamService extends IService<Team> {
+
+        Page<TeamVO> selectPage(Page page, TeamVO teamVO);
+
+        Team detail(Long id);
+
+        Boolean add(Team team);
+
+        Boolean update(Team team);
+
+        Boolean delete(Long id);
+
+}

+ 5 - 0
service/src/main/java/com/dayou/service/impl/ItemBrokerageGeneralServiceImpl.java

@@ -491,4 +491,9 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
         }
     }
 
+    @Override
+    public ItemDTO getItemByBrokerageGeneralId(Long generalId) {
+        return itemMapper.getItemByBrokerageGeneralId(generalId);
+    }
+
 }

+ 11 - 2
service/src/main/java/com/dayou/service/impl/ItemBrokerageSequenceServiceImpl.java

@@ -1,5 +1,6 @@
 package com.dayou.service.impl;
 
+import com.dayou.brokerage.MarketerBrokerageCalculator;
 import com.dayou.brokerage.constants.BrokerageBusiness;
 import com.dayou.brokerage.constants.BrokerageMode;
 import com.dayou.brokerage.constants.BrokerageRule;
@@ -62,6 +63,9 @@ public class ItemBrokerageSequenceServiceImpl extends ServiceImpl<ItemBrokerageS
     @Autowired
     private ItemBrokerageSequenceMapper brokerageSequenceMapper;
 
+    @Autowired
+    private MarketerBrokerageCalculator landMarketerBrokerageHandler;
+
     @Override
     @SuppressWarnings("unchecked")
     public Page<BrokerageSequenceVO> selectPage(Page page, BrokerageSequenceVO itemBrokerageSequence){
@@ -142,14 +146,19 @@ public class ItemBrokerageSequenceServiceImpl extends ServiceImpl<ItemBrokerageS
                             && (x.getBrokerageRule().equals(BrokerageRule.LAND_MARKETER_RULE.getCode())
                             || x.getBrokerageRule().equals(BrokerageRule.LAND_MANAGER_RULE.getCode())
                             || x.getBrokerageRule().equals(BrokerageRule.LAND_SUPERVISOR_RULE.getCode()))) {
-                        //减去已预提金额
+                        //减去已预提金额 ,这个地方需要再次根据 [结算时间节点] 去重新计算 营销主管和营销经理的 实际提成金额,因为 回款金额等因素可能有变动。
+                        //客户经理的实际提成金额则根据预估计算时得出的金额为准
                         BigDecimal actualAmount = x.getActualAmount();
+                        if (x.getBrokerageRule().equals(BrokerageRule.LAND_MANAGER_RULE.getCode()) || x.getBrokerageRule().equals(BrokerageRule.LAND_SUPERVISOR_RULE.getCode())){
+                            actualAmount = landMarketerBrokerageHandler.actualTeamShareAmount(x);
+                        }
                         if (general.getMarketerAdvanceBrokerageDone()) {
                             actualAmount = x.getActualAmount().subtract(x.getAheadAmount());
                         }
                         ItemBrokerageSequenceDetail sequenceDetail = ItemBrokerageSequenceDetail.builder()
                                 .brokerageDetailId(x.getId()).userId(x.getUserId()).brokerageCate(BrokerageBusiness.SETTLE.getCode()).brokerageAmount(actualAmount).generalId(x.getGeneralId()).build();
-                        x.setAdvanceAmount(x.getActualAmount());
+                        x.setAdvanceAmount(actualAmount);
+                        x.setActualAmount(actualAmount);
                         toUpdateItemBrokerageDetails.add(x);
                         return sequenceDetail;
                     } else if (general.getParticipantStatus().equals(BrokerageState.NOT_SETTLE.getCode()) && x.getBrokerageRule().equals(BrokerageRule.LAND_OTHER_RULE.getCode())) {

+ 1 - 0
service/src/main/java/com/dayou/service/impl/ItemServiceImpl.java

@@ -152,6 +152,7 @@ public class ItemServiceImpl extends ServiceImpl<ItemMapper, Item> implements II
         return list;
     }
 
+
     /**
      * 获取项目状态
      * @param id 项目id

+ 5 - 2
service/src/main/java/com/dayou/service/impl/MarketStatServiceImpl.java

@@ -1,5 +1,6 @@
 package com.dayou.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.dayou.dto.MarketStatDTO;
 import com.dayou.mapper.MarketStatMapper;
 import com.dayou.service.IMarketStatService;
@@ -58,8 +59,10 @@ public class MarketStatServiceImpl implements IMarketStatService {
     @Override
     public BigDecimal currentYearTeamPayment(Long userId) {
         Set<Long> juniorUserId = userService.getJuniorUserId(userId);
-        BigDecimal currentYearTeamPayment = marketStatMapper.currentYearTeamPayment(juniorUserId);
-        return currentYearTeamPayment;
+        if (CollectionUtils.isNotEmpty(juniorUserId)){
+            return marketStatMapper.currentYearTeamPayment(juniorUserId);
+        }
+        return BigDecimal.ZERO;
     }
 
 

+ 5 - 0
service/src/main/java/com/dayou/service/impl/PaymentCollectionServiceImpl.java

@@ -14,6 +14,7 @@ import com.dayou.mapper.PaymentCollectionMapper;
 import com.dayou.service.IItemService;
 import com.dayou.service.IPaymentCollectionService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dayou.utils.DateUtils;
 import com.dayou.vo.ItemPaymentVO;
 import com.dayou.vo.PaymentCollectionVO;
 import com.sun.org.apache.xpath.internal.operations.Bool;
@@ -35,6 +36,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.List;
 import java.util.ArrayList;
 import java.util.stream.Collectors;
@@ -62,6 +64,9 @@ public class PaymentCollectionServiceImpl extends ServiceImpl<PaymentCollectionM
     @Override
     @SuppressWarnings("unchecked")
     public Page<PaymentCollectionVO> selectPage(Page page, PaymentCollectionVO paymentCollection){
+        if (paymentCollection.getIsCurMonth()){
+            paymentCollection.setLastMonth23(DateUtils.getLastMonth23(LocalDate.now().getYear(), LocalDate.now().getMonthValue() - 1));
+        }
         return paymentCollectionMapper.page(page, paymentCollection);
     }
 

+ 20 - 0
service/src/main/java/com/dayou/service/impl/PostCultivateServiceImpl.java

@@ -7,6 +7,7 @@ import com.dayou.service.IPostCultivateService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayou.service.IPostService;
 import com.dayou.utils.LoginContext;
+import com.dayou.vo.PostCultivateVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -47,9 +48,28 @@ public class PostCultivateServiceImpl extends ServiceImpl<PostCultivateMapper, P
     @Autowired
     private IPostService postService;
 
+    @Autowired
+    private PostCultivateMapper postCultivateMapper;
+
     @Override
     public Integer countCultivate(String postName,Long userId) {
         Post post = postService.getOne(new LambdaQueryWrapper<Post>().eq(Post::getName, postName));
         return  this.count(new LambdaQueryWrapper<PostCultivate>().eq(PostCultivate::getParentUserId, userId).eq(PostCultivate::getUserPostId, post.getId()));
     }
+
+    @Override
+    public Page<PostCultivateVO> getPage(Page page, PostCultivateVO postCultivateVO) {
+        Page<PostCultivateVO>  xPage = postCultivateMapper.getPage(page,postCultivateVO);
+        return xPage;
+    }
+
+    @Override
+    public Boolean update(PostCultivate postCultivate) {
+        return this.updateById(postCultivate);
+    }
+
+    @Override
+    public Boolean delete(Long id) {
+        return this.removeById(id);
+    }
 }

+ 66 - 0
service/src/main/java/com/dayou/service/impl/TeamMemberServiceImpl.java

@@ -0,0 +1,66 @@
+package com.dayou.service.impl;
+
+import com.dayou.entity.TeamMember;
+import com.dayou.mapper.TeamMemberMapper;
+import com.dayou.service.ITeamMemberService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.dayou.utils.ExcelUtil;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.web.multipart.MultipartFile;
+import java.util.List;
+import java.util.ArrayList;
+import org.springframework.transaction.annotation.Transactional;
+import com.dayou.enums.BatchTaskTypeEnum;
+
+/**
+ * <p>
+ * 团队成员 服务实现类
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-04-07
+ */
+@Service
+public class TeamMemberServiceImpl extends ServiceImpl<TeamMemberMapper, TeamMember> implements ITeamMemberService {
+
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public Page<TeamMember> selectPage(Page page,TeamMember teamMember){
+        return this.page(page, new QueryWrapper<TeamMember>(teamMember));
+    }
+
+
+    @Override
+    public TeamMember detail(Long id){
+        return this.getById(id);
+    }
+
+    @Override
+    public Boolean add(TeamMember teamMember){
+        return  this.save(teamMember);
+    }
+
+    @Override
+    public Boolean update(TeamMember teamMember){
+        return  this.updateById(teamMember);
+    }
+
+    @Override
+    public Boolean delete(Long id){
+        //逻辑删除
+        return this.removeById(id);
+    }
+}

+ 71 - 0
service/src/main/java/com/dayou/service/impl/TeamServiceImpl.java

@@ -0,0 +1,71 @@
+package com.dayou.service.impl;
+
+import com.dayou.entity.Team;
+import com.dayou.mapper.TeamMapper;
+import com.dayou.service.ITeamService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dayou.vo.TeamVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.dayou.utils.ExcelUtil;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.web.multipart.MultipartFile;
+import java.util.List;
+import java.util.ArrayList;
+import org.springframework.transaction.annotation.Transactional;
+import com.dayou.enums.BatchTaskTypeEnum;
+
+/**
+ * <p>
+ * 团队 服务实现类
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-04-07
+ */
+@Service
+public class TeamServiceImpl extends ServiceImpl<TeamMapper, Team> implements ITeamService {
+
+    @Autowired
+    private TeamMapper teamMapper;
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public Page<TeamVO> selectPage(Page page, TeamVO teamVO){
+        Page<TeamVO> xPage = teamMapper.getPage(page,teamVO);
+        return xPage;
+    }
+
+
+    @Override
+    public Team detail(Long id){
+        return this.getById(id);
+    }
+
+    @Override
+    public Boolean add(Team team){
+        return  this.save(team);
+    }
+
+    @Override
+    public Boolean update(Team team){
+        return  this.updateById(team);
+    }
+
+    @Override
+    public Boolean delete(Long id){
+        //逻辑删除
+        return this.removeById(id);
+    }
+}

+ 1 - 0
service/src/main/java/com/dayou/service/impl/UserTargetServiceImpl.java

@@ -74,6 +74,7 @@ public class UserTargetServiceImpl extends ServiceImpl<UserTargetMapper, UserTar
     public UserTarget getUserTarget(Long userId) {
         UserTarget userTarget = this.getOne(new LambdaQueryWrapper<UserTarget>().eq(UserTarget::getUserId, userId));
         if (userTarget==null || userTarget.getPaymentTarget()==null){
+            userTarget = new UserTarget();
             userTarget.setSaleTarget(0d);
             userTarget.setPaymentTarget(0d);
             log.info("客户经理id[{}]未设置年回款目标。", userId);