浏览代码

代码提交

wucl 2 年之前
父节点
当前提交
2e593c118d
共有 27 个文件被更改,包括 431 次插入41 次删除
  1. 1 1
      biz-base/src/main/java/com/dayou/controller/CustomerController.java
  2. 2 2
      biz-base/src/main/java/com/dayou/controller/ItemController.java
  3. 5 2
      biz-base/src/main/java/com/dayou/controller/MarketStatController.java
  4. 1 0
      biz-base/src/main/java/com/dayou/controller/PaymentCollectionController.java
  5. 55 0
      biz-base/src/main/java/com/dayou/controller/UserTargetController.java
  6. 3 1
      dao/src/main/java/com/dayou/mapper/MarketStatMapper.java
  7. 21 0
      dao/src/main/java/com/dayou/mapper/UserTargetMapper.java
  8. 3 1
      dao/src/main/resources/mapper/BusinessOpportunityMapper.xml
  9. 9 1
      dao/src/main/resources/mapper/ItemMapper.xml
  10. 54 11
      dao/src/main/resources/mapper/MarketStatMapper.xml
  11. 12 1
      dao/src/main/resources/mapper/PaymentCollectionMapper.xml
  12. 2 1
      dao/src/main/resources/mapper/PostMapper.xml
  13. 31 0
      dao/src/main/resources/mapper/UserTargetMapper.xml
  14. 2 1
      dao/src/main/resources/mapper/VisitMapper.xml
  15. 1 1
      domain/src/main/java/com/dayou/annotation/DataPermission.java
  16. 18 0
      domain/src/main/java/com/dayou/dto/MarketStatDTO.java
  17. 5 2
      domain/src/main/java/com/dayou/entity/Item.java
  18. 52 0
      domain/src/main/java/com/dayou/entity/UserTarget.java
  19. 4 0
      domain/src/main/java/com/dayou/vo/PaymentCollectionVO.java
  20. 21 0
      domain/src/main/java/com/dayou/vo/UserTargetVO.java
  21. 1 5
      service/src/main/java/com/dayou/aspect/DataPermissionAop.java
  22. 2 1
      service/src/main/java/com/dayou/service/IMarketStatService.java
  23. 30 0
      service/src/main/java/com/dayou/service/IUserTargetService.java
  24. 10 7
      service/src/main/java/com/dayou/service/impl/ItemServiceImpl.java
  25. 3 2
      service/src/main/java/com/dayou/service/impl/MarketStatServiceImpl.java
  26. 73 0
      service/src/main/java/com/dayou/service/impl/UserTargetServiceImpl.java
  27. 10 1
      sql/20230213.sql

+ 1 - 1
biz-base/src/main/java/com/dayou/controller/CustomerController.java

@@ -92,7 +92,7 @@ public class CustomerController extends BaseController {
     /**
      * 客户表下拉列表
      */
-    @DataPermission(isJunior = false)
+    @DataPermission(child = false)
     @GetMapping("/simpleAll")
     public RestResponse<List<PullDownModel>> simpleAll(CustomerDTO customerDTO){
         LambdaQueryWrapper<Customer> lambdaQueryWrapper = new LambdaQueryWrapper<Customer>()

+ 2 - 2
biz-base/src/main/java/com/dayou/controller/ItemController.java

@@ -51,9 +51,9 @@ public class ItemController extends BaseController {
     }
 
     /**
-     * 项目信息表列表
+     * 我的项目列表
      */
-    @DataPermission(isJunior = false)
+    @DataPermission(child = false)
     @GetMapping("/mine")
     public RestResponse<Page<ItemVO>> xPage(ItemDTO item, Page page){
         Page<ItemVO> pages=itemService.selectPage(page,item);

+ 5 - 2
biz-base/src/main/java/com/dayou/controller/MarketStatController.java

@@ -1,6 +1,8 @@
 package com.dayou.controller;
 
+import com.dayou.annotation.DataPermission;
 import com.dayou.common.RestResponse;
+import com.dayou.dto.MarketStatDTO;
 import com.dayou.service.IMarketStatService;
 import com.dayou.vo.MarketStatVO;
 import lombok.extern.slf4j.Slf4j;
@@ -27,9 +29,10 @@ public class MarketStatController {
      * 市场首页统计数据
      * @return
      */
+    @DataPermission
     @GetMapping("")
-    public RestResponse<MarketStatVO> marketStat(){
-        MarketStatVO marketStatVO = marketStatService.marketStat();
+    public RestResponse<MarketStatVO> marketStat(MarketStatDTO dto){
+        MarketStatVO marketStatVO = marketStatService.marketStat(dto);
         return RestResponse.data(marketStatVO);
     }
 }

+ 1 - 0
biz-base/src/main/java/com/dayou/controller/PaymentCollectionController.java

@@ -44,6 +44,7 @@ public class PaymentCollectionController extends BaseController {
     /**
     * 回款记录列表
     */
+    @DataPermission
     @GetMapping("")
     public RestResponse<Page<PaymentCollectionVO>> page(PaymentCollectionVO paymentCollection, Page page){
         Page<PaymentCollectionVO> pages=paymentCollectionService.selectPage(page,paymentCollection);

+ 55 - 0
biz-base/src/main/java/com/dayou/controller/UserTargetController.java

@@ -0,0 +1,55 @@
+package com.dayou.controller;
+
+import com.dayou.annotation.DataPermission;
+import com.dayou.vo.UserTargetVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.dayou.service.IUserTargetService;
+import com.dayou.entity.UserTarget;
+import com.dayou.common.RestResponse;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 员工目标
+ *
+ * @author wucl
+ * @since 2023-02-14
+ */
+@RestController
+@RequestMapping("userTarget")
+@Slf4j
+public class UserTargetController extends BaseController {
+    @Autowired
+    private IUserTargetService userTargetService;
+
+    @DataPermission
+    @GetMapping("/list")
+    public RestResponse<List<UserTargetVO>> list(UserTargetVO userTargetVO){
+        List<UserTargetVO> result = userTargetService.getList(userTargetVO);
+        return RestResponse.data(result);
+    }
+
+    /**
+     * 员工目标详情
+     */
+    @GetMapping("/{id}")
+    public RestResponse<UserTarget> detail(@PathVariable Long id){
+        UserTarget xUserTarget =userTargetService.detail(id);
+        return RestResponse.data(xUserTarget);
+     }
+
+    /**
+     * 员工目标新增
+     */
+    @PostMapping("")
+    public RestResponse<Boolean> save(@RequestBody UserTarget userTarget) {
+        Boolean ret = userTargetService.add(userTarget);
+        return RestResponse.data(ret);
+    }
+
+}
+

+ 3 - 1
dao/src/main/java/com/dayou/mapper/MarketStatMapper.java

@@ -1,6 +1,8 @@
 package com.dayou.mapper;
 
+import com.dayou.dto.MarketStatDTO;
 import com.dayou.vo.MarketStatVO;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 类说明:
@@ -10,5 +12,5 @@ import com.dayou.vo.MarketStatVO;
  * created with IntelliJ IDEA.
  */
 public interface MarketStatMapper {
-    MarketStatVO marketStat();
+    MarketStatVO marketStat(@Param("dto") MarketStatDTO dto);
 }

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

@@ -0,0 +1,21 @@
+package com.dayou.mapper;
+
+import com.dayou.entity.UserTarget;
+import com.dayou.dao.CustomBaseMapper;
+import com.dayou.vo.UserTargetVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 员工目标 Mapper 接口
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-02-14
+ */
+public interface UserTargetMapper extends CustomBaseMapper<UserTarget> {
+
+    List<UserTargetVO> getList(@Param("userTargetVO") UserTargetVO userTargetVO);
+}

+ 3 - 1
dao/src/main/resources/mapper/BusinessOpportunityMapper.xml

@@ -15,6 +15,7 @@
         <result column="remark" property="remark" />
         <result column="state" property="state" />
         <result column="off_reason" property="offReason" />
+        <result column="user_id" property="userId" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
@@ -29,7 +30,8 @@
 	business_opportunity.estimate_date,
 	business_opportunity.remark,
 	business_opportunity.state,
-	business_opportunity.off_reason
+	business_opportunity.off_reason,
+    business_opportunity.user_id
     </sql>
 
     <select id="getPage" parameterType="com.dayou.vo.BusinessOpportunityVO" resultType="com.dayou.vo.BusinessOpportunityVO">

+ 9 - 1
dao/src/main/resources/mapper/ItemMapper.xml

@@ -25,6 +25,8 @@
         <result column="state" property="state" />
         <result column="department_id" property="departmentId" />
         <result column="contract_url" property="contractUrl" />
+        <result column="user_id" property="userId" />
+        <result column="customer_id" property="customerId" />
         <collection property="userIds" ofType="java.lang.Long" select="selectItemUserId" column="id"/>
     </resultMap>
 
@@ -35,7 +37,7 @@
         i.created,
         i.modified,
         i.business_no, i.oa_no, i.name,i.cate, i.business_source,i.belong_to,i.client_unit,
-        i.client_name, i.mobile, i.client_manager, i.skiller, i.sign_date, i.payment_method, i.amount, i.state,i.department_id,i.contract_url
+        i.client_name, i.mobile, i.client_manager, i.skiller, i.sign_date, i.payment_method, i.amount, i.state,i.department_id,i.contract_url,i.user_id,i.customer_id
     </sql>
 
     <select id="stat" resultType="com.dayou.vo.ItemStatVO">
@@ -69,6 +71,12 @@
         <if test="item!=null and item.name!=null and item.name!='' ">
             and i.name like concat ('%',#{item.name},'%')
         </if>
+        <if test="item!=null and item.businessNo!=null and item.businessNo!='' ">
+            and i.business_no like concat (#{item.businessNo},'%')
+        </if>
+        <if test="item!=null and item.clientManager!=null and item.clientManager!='' ">
+            and i.client_manager like concat ('%',#{item.clientManager},'%')
+        </if>
         <if test="item!=null and item.userIds!=null and item.userIds.size!=0">
             and i.user_id in
             <foreach collection="item.userIds" open="(" close=")" separator="," item="userId">

+ 54 - 11
dao/src/main/resources/mapper/MarketStatMapper.xml

@@ -2,23 +2,66 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.dayou.mapper.MarketStatMapper">
 
-   <select id="marketStat" resultType="com.dayou.vo.MarketStatVO">
+   <select id="marketStat" resultType="com.dayou.vo.MarketStatVO" parameterType="com.dayou.dto.MarketStatDTO">
       SELECT
-      ( SELECT VALUE FROM global_config WHERE field = 'YEAR_SALE_TARGET' AND NAME = 'MARKET' AND deleted = 0 ) AS yearSaleTarget,
-      ( SELECT VALUE FROM global_config WHERE field = 'YEAR_PAYMENT_TARGET' AND NAME = 'MARKET' AND deleted = 0 ) AS yearPaymentTarget,
-      ( SELECT count(*) FROM business_opportunity WHERE state = '跟进中' AND deleted = 0 ) AS businessNum,
-      (
-      SELECT
-      sum( amount )
+      ( SELECT sum(ifnull(sale_target,0)) FROM user_target
+          <where>
+       <if test="dto!=null and dto.userIds!=null and dto.userIds.size!=0">
+          and user_id in
+           <foreach collection="dto.userIds" open="(" close=")" separator="," item="userId">
+               #{userId}
+           </foreach>
+       </if> </where>) AS yearSaleTarget,
+      ( SELECT sum(ifnull(payment_target,0)) FROM user_target
+      <where>
+       <if test="dto!=null and dto.userIds!=null and dto.userIds.size!=0">
+           and user_id in
+           <foreach collection="dto.userIds" open="(" close=")" separator="," item="userId">
+               #{userId}
+           </foreach>
+       </if> </where>) AS yearPaymentTarget,
+      ( SELECT count(*) FROM business_opportunity WHERE state = '跟进中' AND deleted = 0
+            <if test="dto!=null and dto.userIds!=null and dto.userIds.size!=0">
+                and user_id in
+                <foreach collection="dto.userIds" open="(" close=")" separator="," item="userId">
+                    #{userId}
+                </foreach>
+            </if>
+        ) AS businessNum,
+      ( SELECT
+      ifnull(sum(amount ),0)
       FROM
       item
       WHERE
       deleted = 0
       AND sign_date &gt;= DATE_SUB( CURDATE(), INTERVAL dayofyear( now())- 1 DAY )
-      AND sign_date &lt;= concat( YEAR ( now()), '-12-31' )) AS yearSaleDone, ( SELECT sum( amount ) FROM payment_collection WHERE deleted = 0 AND payment_date &gt;= DATE_SUB( CURDATE(), INTERVAL dayofyear( now())- 1 DAY )
-      AND payment_date &lt;= concat( YEAR ( now()), '-12-31' )) AS yearPaymentDone, ( SELECT sum( amount ) FROM payment_collection WHERE deleted = 0 AND payment_date &gt;= concat( date_format( LAST_DAY( now()), '%Y-%m-' ), '01' )
-      AND payment_date &lt;= LAST_DAY(
-      now())) AS monthPaymentDone
+      AND sign_date &lt;= concat( YEAR ( now()), '-12-31' )
+      <if test="dto!=null and dto.userIds!=null and dto.userIds.size!=0">
+         and user_id in
+         <foreach collection="dto.userIds" open="(" close=")" separator="," item="userId">
+            #{userId}
+         </foreach>
+      </if>
+        ) AS yearSaleDone,
+      ( SELECT ifnull(sum( pc.amount ),0) FROM payment_collection pc left join item i on i.id = pc.item_id WHERE pc.deleted = 0 AND pc.payment_date &gt;= DATE_SUB( CURDATE(), INTERVAL dayofyear( now())- 1 DAY )
+      AND pc.payment_date &lt;= concat( YEAR ( now()), '-12-31' )
+      <if test="dto!=null and dto.userIds!=null and dto.userIds.size!=0">
+         and i.user_id in
+         <foreach collection="dto.userIds" open="(" close=")" separator="," item="userId">
+            #{userId}
+         </foreach>
+      </if>
+                                                         ) AS yearPaymentDone,
+          ( SELECT ifnull(sum( pc.amount ),0) FROM payment_collection pc left join item i on i.id = pc.item_id WHERE pc.deleted = 0 AND pc.payment_date >= concat( date_format( LAST_DAY( now()), '%Y-%m-' ), '01' )
+      AND pc.payment_date &lt;= LAST_DAY(
+      now())
+      <if test="dto!=null and dto.userIds!=null and dto.userIds.size!=0">
+         and i.user_id in
+         <foreach collection="dto.userIds" open="(" close=")" separator="," item="userId">
+            #{userId}
+         </foreach>
+      </if>
+        ) AS monthPaymentDone
    </select>
 
 </mapper>

+ 12 - 1
dao/src/main/resources/mapper/PaymentCollectionMapper.xml

@@ -36,7 +36,18 @@
         <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.year!=null">
+            and DATE_FORMAT(pc.payment_date,'%Y') = #{dto.year}
+        </if>
+        <if test="dto!=null and dto.month!=null">
+            and DATE_FORMAT(pc.payment_date,'%c') = #{dto.month}
+        </if>
+        <if test="dto!=null and dto.userIds!=null and dto.userIds.size!=0">
+            and i.user_id in
+            <foreach collection="dto.userIds" open="(" close=")" separator="," item="userId">
+                #{userId}
+            </foreach>
+        </if>
         order by pc.payment_date DESC
     </select>
     <select id="getItemPayment" parameterType="com.dayou.vo.PaymentCollectionVO" resultType="com.dayou.vo.ItemPaymentVO">

+ 2 - 1
dao/src/main/resources/mapper/PostMapper.xml

@@ -11,6 +11,7 @@
         <result column="name" property="name" />
         <result column="department_id" property="departmentId" />
         <result column="duty" property="duty" />
+        <result column="parent_id" property="parentId" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
@@ -19,7 +20,7 @@
         deleted,
         created,
         modified,
-        name, department_id, duty
+        name, department_id, duty,parent_id
     </sql>
 
     <insert id="upsert" parameterType="com.dayou.entity.Post">

+ 31 - 0
dao/src/main/resources/mapper/UserTargetMapper.xml

@@ -0,0 +1,31 @@
+<?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.UserTargetMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.dayou.entity.UserTarget">
+        <result column="id" property="id" />
+        <result column="sale_target" property="saleTarget" />
+        <result column="payment_target" property="paymentTarget" />
+        <result column="user_id" property="userId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id,
+        sale_target, payment_target, user_id
+    </sql>
+
+    <select id="getList" parameterType="com.dayou.vo.UserTargetVO" resultType="com.dayou.vo.UserTargetVO">
+        select ut.id,
+               ut.sale_target, ut.payment_target, ut.user_id ,u.name as userName
+            from user_target ut left join user u on u.id = ut.user_id
+            where u.deleted = 0
+        <if test="userTargetVO!=null and userTargetVO.userIds!=null and userTargetVO.userIds.size!=0">
+            and ut.user_id in
+            <foreach collection="userTargetVO.userIds" open="(" close=")" separator="," item="userId">
+                #{userId}
+            </foreach>
+        </if>
+    </select>
+</mapper>

+ 2 - 1
dao/src/main/resources/mapper/VisitMapper.xml

@@ -13,6 +13,7 @@
         <result column="visit_time" property="visitTime" />
         <result column="spot" property="spot" />
         <result column="content" property="content" />
+        <result column="user_id" property="userId" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
@@ -21,7 +22,7 @@
         v.deleted,
         v.created,
         v.modified,
-        v.customer_id, v.visit_type, v.visit_time, v.spot, v.content
+        v.customer_id, v.visit_type, v.visit_time, v.spot, v.content,v.user_id
     </sql>
 
     <select id="page" parameterType="com.dayou.vo.VisitVO" resultType="com.dayou.vo.VisitVO">

+ 1 - 1
domain/src/main/java/com/dayou/annotation/DataPermission.java

@@ -18,5 +18,5 @@ public @interface DataPermission {
      * 是否包含下级岗位
      * @return
      */
-    public boolean isJunior() default true;
+    public boolean child() default true;
 }

+ 18 - 0
domain/src/main/java/com/dayou/dto/MarketStatDTO.java

@@ -0,0 +1,18 @@
+package com.dayou.dto;
+
+import lombok.Data;
+
+import java.util.Set;
+
+/**
+ * 类说明:
+ *
+ * @author: wucl
+ * @since: 2023/2/14
+ * created with IntelliJ IDEA.
+ */
+@Data
+public class MarketStatDTO {
+
+    private Set<Long> userIds;
+}

+ 5 - 2
domain/src/main/java/com/dayou/entity/Item.java

@@ -75,7 +75,7 @@ public class Item extends BaseEntity {
      * 委托人
      */
     @ImportCell
-    @ExportCell(columnName = "委托人")
+    @ExportCell(columnName = "客户名字")
     private String clientName;
 
     /**
@@ -140,5 +140,8 @@ public class Item extends BaseEntity {
      */
     private Long userId;
 
-
+    /**
+     * 客户id
+     */
+    private Long customerId;
 }

+ 52 - 0
domain/src/main/java/com/dayou/entity/UserTarget.java

@@ -0,0 +1,52 @@
+package com.dayou.entity;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+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-02-14
+ */
+@Data
+@ExcelSheet(sheetName = "员工目标")
+public class UserTarget {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键自增id
+     *
+     * @ignore
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    protected Long id;
+
+    /**
+     * 本年签约目标
+     */
+    @ImportCell
+    @ExportCell(columnName = "本年签约目标")
+    private Double saleTarget;
+
+    /**
+     * 本年回款目标
+     */
+    @ImportCell
+    @ExportCell(columnName = "本年回款目标")
+    private Double paymentTarget;
+
+    /**
+     * 员工id
+     */
+    private Long userId;
+
+
+}

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

@@ -19,4 +19,8 @@ public class PaymentCollectionVO extends PaymentCollection {
 
     private Set<Long> userIds;
 
+    private Integer year;
+
+    private Integer month;
+
 }

+ 21 - 0
domain/src/main/java/com/dayou/vo/UserTargetVO.java

@@ -0,0 +1,21 @@
+package com.dayou.vo;
+
+import com.dayou.entity.UserTarget;
+import lombok.Data;
+
+import java.util.Set;
+
+/**
+ * 类说明:
+ *
+ * @author: wucl
+ * @since: 2023/2/14
+ * created with IntelliJ IDEA.
+ */
+@Data
+public class UserTargetVO extends UserTarget {
+
+    private String userName;
+
+    private Set<Long> userIds;
+}

+ 1 - 5
service/src/main/java/com/dayou/aspect/DataPermissionAop.java

@@ -1,15 +1,12 @@
 package com.dayou.aspect;
 
 import com.dayou.annotation.DataPermission;
-import com.dayou.common.SimpleListModel;
 import com.dayou.service.IUserService;
 import com.dayou.utils.LoginContext;
 import lombok.extern.slf4j.Slf4j;
-import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.Around;
 import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Before;
 import org.aspectj.lang.annotation.Pointcut;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -17,7 +14,6 @@ import org.springframework.stereotype.Component;
 import java.lang.reflect.Field;
 import java.util.Arrays;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Set;
 
 /**
@@ -45,7 +41,7 @@ public class DataPermissionAop {
     public Object  beforeHandle(ProceedingJoinPoint joinPoint, DataPermission dataPermission) throws Throwable {
         Set<Long> users = new HashSet<>();
         Long userId = LoginContext.getUserId();
-        if (dataPermission.isJunior()){
+        if (dataPermission.child()){
             //根据当前登录人获取下属员工id
             users = userService.getJuniorUserId(userId);
         }

+ 2 - 1
service/src/main/java/com/dayou/service/IMarketStatService.java

@@ -1,5 +1,6 @@
 package com.dayou.service;
 
+import com.dayou.dto.MarketStatDTO;
 import com.dayou.vo.MarketStatVO;
 
 /**
@@ -10,5 +11,5 @@ import com.dayou.vo.MarketStatVO;
  * created with IntelliJ IDEA.
  */
 public interface IMarketStatService {
-    MarketStatVO marketStat();
+    MarketStatVO marketStat(MarketStatDTO dto);
 }

+ 30 - 0
service/src/main/java/com/dayou/service/IUserTargetService.java

@@ -0,0 +1,30 @@
+package com.dayou.service;
+import com.dayou.entity.UserTarget;
+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.UserTargetVO;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 员工目标 服务类
+ * </p>
+ *
+ * @author wucl
+ * @since 2023-02-14
+ */
+public interface IUserTargetService extends IService<UserTarget> {
+
+
+        UserTarget detail(Long id);
+
+        Boolean add(UserTarget userTarget);
+
+        Boolean update(UserTarget userTarget);
+
+        List<UserTargetVO> getList(UserTargetVO userTargetVO);
+}

+ 10 - 7
service/src/main/java/com/dayou/service/impl/ItemServiceImpl.java

@@ -94,13 +94,16 @@ public class ItemServiceImpl extends ServiceImpl<ItemMapper, Item> implements II
         itemDTO.setUserId(LoginContext.getUserId());
         this.save(itemDTO);
         Set<Long> userIds = itemDTO.getUserIds();
-        Set<ItemUser> itemUsers = userIds.stream().map(x -> {
-            ItemUser itemUser = new ItemUser();
-            itemUser.setItemId(itemDTO.getId());
-            itemUser.setUserId(x);
-            return itemUser;
-        }).collect(Collectors.toSet());
-        return  iItemUserService.saveBatch(itemUsers);
+        if (CollectionUtils.isNotEmpty(userIds)){
+            Set<ItemUser> itemUsers = userIds.stream().map(x -> {
+                ItemUser itemUser = new ItemUser();
+                itemUser.setItemId(itemDTO.getId());
+                itemUser.setUserId(x);
+                return itemUser;
+            }).collect(Collectors.toSet());
+            return  iItemUserService.saveBatch(itemUsers);
+        }
+        return Boolean.TRUE;
     }
 
     @Transactional

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

@@ -1,5 +1,6 @@
 package com.dayou.service.impl;
 
+import com.dayou.dto.MarketStatDTO;
 import com.dayou.mapper.MarketStatMapper;
 import com.dayou.service.IMarketStatService;
 import com.dayou.vo.MarketStatVO;
@@ -20,7 +21,7 @@ public class MarketStatServiceImpl implements IMarketStatService {
     private MarketStatMapper marketStatMapper;
 
     @Override
-    public MarketStatVO marketStat() {
-        return marketStatMapper.marketStat();
+    public MarketStatVO marketStat(MarketStatDTO dto) {
+        return marketStatMapper.marketStat(dto);
     }
 }

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

@@ -0,0 +1,73 @@
+package com.dayou.service.impl;
+
+import com.dayou.entity.UserTarget;
+import com.dayou.mapper.UserTargetMapper;
+import com.dayou.service.IUserTargetService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dayou.utils.LoginContext;
+import com.dayou.vo.UserTargetVO;
+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-02-14
+ */
+@Service
+public class UserTargetServiceImpl extends ServiceImpl<UserTargetMapper, UserTarget> implements IUserTargetService {
+
+
+    @Autowired
+    private UserTargetMapper userTargetMapper;
+    @Override
+    public UserTarget detail(Long id){
+        return this.getById(id);
+    }
+
+    @Override
+    public Boolean add(UserTarget userTarget){
+        Long userId = LoginContext.getUserId();
+        UserTarget ut = this.getOne(new LambdaQueryWrapper<UserTarget>().eq(UserTarget::getUserId, userId));
+        if (ut==null){
+            userTarget.setUserId(userId);
+           return this.save(userTarget);
+        }
+        ut.setSaleTarget(userTarget.getSaleTarget());
+        ut.setPaymentTarget(userTarget.getPaymentTarget());
+        return  this.updateById(ut);
+    }
+
+    @Override
+    public Boolean update(UserTarget userTarget){
+        return  this.updateById(userTarget);
+    }
+
+    @Override
+    public List<UserTargetVO> getList(UserTargetVO userTargetVO) {
+        List<UserTargetVO> list = userTargetMapper.getList(userTargetVO);
+        return list;
+    }
+
+}

+ 10 - 1
sql/20230213.sql

@@ -2,4 +2,13 @@ alter table post add COLUMN parent_id bigint(20) DEFAULT NULL comment '父级岗
 alter table customer add COLUMN user_id bigint(20) DEFAULT NULL comment '所属员工id';
 alter table visit add COLUMN user_id bigint(20) DEFAULT NULL comment '所属员工id';
 alter table business_opportunity add COLUMN user_id bigint(20) DEFAULT NULL comment '所属员工id';
-alter table item add COLUMN user_id bigint(20) DEFAULT NULL comment '所属员工id(客户经理)';
+alter table item add COLUMN user_id bigint(20) DEFAULT NULL comment '所属员工id(客户经理)';
+alter table item add COLUMN customer_id bigint(20) DEFAULT NULL comment '客户id';
+
+CREATE TABLE `user_target` (
+    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+    `sale_target` double(128,2) DEFAULT NULL COMMENT '本年签约目标',
+  `payment_target` double(128,2) DEFAULT NULL COMMENT '本年回款目标',
+  `user_id` bigint(20) NOT NULL COMMENT '员工id',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='员工目标';