diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java
index 8d0c44f..8474d02 100644
--- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java
+++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/controller/HomeController.java
@@ -22,6 +22,9 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Map;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * 员工提成提成
  *
@@ -58,6 +61,17 @@ public class HomeController extends BaseController {
     public R<ReturnMoneyInfoVo> returnMoney(@RequestParam() Integer type) {
         return R.ok(homeService.returnMoney(type));
     }
+
+    /**
+     * 首页大盘数据:人员合同金额统计
+     * @param type 1本月 2上月 3本季度 4本年 5所有
+     * @return
+     */
+    @SaCheckPermission("business:salary:list")
+    @GetMapping("/getUserContractAmounts")
+    public R<List> getUserContractAmounts(@RequestParam() Integer type, @RequestParam() Long deptId)  {
+        return R.ok(homeService.getUserContractAmountsByDeptId(type,deptId));
+    }
     /**
      * 首页大盘数据:各渠道成交
      * @param type 1本月 2上月 3本季度 4本年 5所有
diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/UserContractAmountInfo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/UserContractAmountInfo.java
new file mode 100644
index 0000000..7610c3d
--- /dev/null
+++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/UserContractAmountInfo.java
@@ -0,0 +1,33 @@
+package com.pusong.business.domain.vo.home;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class UserContractAmountInfo {
+    /**
+     * 用户id
+     */
+    private Long userId;
+    /**
+     * 用户名字
+     */
+    private String nickName;
+    /**
+     * 合同编号
+     */
+    private String contractCode;
+    /**
+     * 是否为续签合同 0:否 1:是
+     */
+    private String isDue;
+    /**
+     * 合同类型
+     */
+    private String businessType;
+    /**
+     * 合同价格
+     */
+    private BigDecimal contractAmount;
+}
diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/UserContractAmountVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/UserContractAmountVo.java
new file mode 100644
index 0000000..361970b
--- /dev/null
+++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/home/UserContractAmountVo.java
@@ -0,0 +1,59 @@
+package com.pusong.business.domain.vo.home;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class UserContractAmountVo {
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    private String dateStr;
+    /**
+     * 用户名字
+     */
+    private String nickName;
+    /**
+     * 与其他人合同金额的占比
+     */
+    private String amountPer;
+    /**
+     * 用户所有合同总金额
+     */
+    private BigDecimal sumAmount=new BigDecimal(0);
+    /**
+     * 托管类型合同总金额 类型号:4
+     */
+    private BigDecimal tuoGuanAmount=new BigDecimal(0);
+    /**
+     * 续费类型合同总金额
+     */
+    private BigDecimal xuFeiAmount=new BigDecimal(0);
+    /**
+     * 软件定制类型合同总金额 类型号:9
+     */
+    private BigDecimal softwareDevAmount=new BigDecimal(0);
+    /**
+     * 其他类型合同总金额
+     */
+    private BigDecimal otherAmount=new BigDecimal(0);
+
+    public void addSumAmount(BigDecimal amount){
+        sumAmount=sumAmount.add(amount);
+    }
+    public void addTuoGuanAmount(BigDecimal amount){
+        tuoGuanAmount=tuoGuanAmount.add(amount);
+    }
+    public void addXuFeiAmount(BigDecimal amount){
+        xuFeiAmount=xuFeiAmount.add(amount);
+    }
+    public void addSoftwareDevAmount(BigDecimal amount){
+        softwareDevAmount=softwareDevAmount.add(amount);
+    }
+    public void addOtherAmount(BigDecimal amount) {
+        otherAmount=otherAmount.add(amount);
+    }
+}
diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractInfoMapper.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractInfoMapper.java
index 4f83d65..2e3f719 100644
--- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractInfoMapper.java
+++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/mapper/PsContractInfoMapper.java
@@ -10,6 +10,7 @@ import com.pusong.business.domain.vo.PsContractInfoVo;
 import com.pusong.business.domain.vo.PsCustomInfoVo;
 import com.pusong.business.domain.vo.PsSalaryContractVo;
 import com.pusong.business.domain.vo.home.ChannelPayInfo;
+import com.pusong.business.domain.vo.home.UserContractAmountInfo;
 import com.pusong.common.mybatis.annotation.DataColumn;
 import com.pusong.common.mybatis.annotation.DataPermission;
 import com.pusong.common.mybatis.core.mapper.BaseMapperPlus;
@@ -44,6 +45,7 @@ public interface PsContractInfoMapper extends BaseMapperPlus<PsContractInfo, PsC
     List<PsSalaryContract> querySalaryListByCodes(@Param(Constants.WRAPPER) Wrapper<PsContractInfo> queryWrapper);
 
     List<Map<String,Object>> homePageReturnMoneyInfo(@Param("queryParam") Map<String, Object> queryParam);
+    List<UserContractAmountInfo> getUserContractTypeAmountsByDeptId(@Param("queryParam") Map<String, Object> queryParam);
 
 
     //首页查询各个渠道成交的合同
diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java
index b3dc093..e6faed7 100644
--- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java
+++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/HomeService.java
@@ -4,6 +4,8 @@ import com.pusong.business.domain.vo.home.*;
 
 import java.util.Map;
 
+import java.util.List;
+
 /**
  * 首页相关接口
  */
@@ -12,7 +14,7 @@ public interface HomeService {
     MakeAmountVo selectMakeAmount(Integer type);
 
     ReturnMoneyInfoVo returnMoney(Integer type);
-
+    List getUserContractAmountsByDeptId(Integer type, Long deptId);
     /**
      * 首页大盘数据:各渠道成交
      * @param type
diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java
index 3b2ecf1..bf5402a 100644
--- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java
+++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/HomeServiceImpl.java
@@ -209,6 +209,89 @@ public class HomeServiceImpl implements HomeService {
         return res;
     }
 
+    /**
+     * 获取部门下各员工的合同总金额
+     * @param type 日期过滤规则
+     * @param deptId 部门id
+     * @return
+     */
+    public List getUserContractAmountsByDeptId(Integer type,Long deptId) {
+        Map<String, Object> mapParam = this.getDate(type);
+        LocalDate startDate = (LocalDate)mapParam.get("startDate");
+        LocalDate endDate = (LocalDate)mapParam.get("endDate");
+        String date = (String)mapParam.get("date");
+
+        Map<String,Object> queryParam=new HashMap<>();
+        queryParam.put("startDate",startDate);
+        queryParam.put("endDate",endDate);
+        queryParam.put("contractStatus",ContractStatusEnum.INIT.getCode());
+        queryParam.put("isCancel",CommonStatusEnum.SUCCESS.getCode());
+        queryParam.put("deptId",deptId);
+        //查询各类合同总金额
+        List<UserContractAmountInfo> list=psContractInfoMapper.getUserContractTypeAmountsByDeptId(queryParam);
+        Map<Long,UserContractAmountVo> res=new HashMap<>();
+        //记录合同编码,防止重复
+        Map<String,String> repeatContractCode=new HashMap<>();
+        for(UserContractAmountInfo obj:list){
+            UserContractAmountVo vo=res.get(obj.getUserId());
+
+            if(vo==null){
+                vo=new UserContractAmountVo();
+                vo.setUserId(obj.getUserId());
+                vo.setNickName(obj.getNickName());
+                vo.setDateStr(date);
+                res.put(obj.getUserId(),vo);
+            }
+            if(repeatContractCode.get(obj.getContractCode())==null){
+                repeatContractCode.put(obj.getContractCode(),obj.getContractCode());
+                vo.addSumAmount(obj.getContractAmount());
+            }
+
+            //托管合同金额累计
+            if(obj.getBusinessType()!=null&&obj.getBusinessType().equals("4")){
+                vo.addTuoGuanAmount(obj.getContractAmount());
+            } else
+            //软件开发合同金额累计
+            if (obj.getBusinessType()!=null&&obj.getBusinessType().equals("9")) {
+                vo.addSoftwareDevAmount(obj.getContractAmount());
+            } else
+            //其他合同金额累计
+            if(obj.getIsDue()==null||obj.getIsDue().equals("0")){
+                vo.addOtherAmount(obj.getContractAmount());
+            }
+
+            //续签合同金额累计
+            if(obj.getIsDue()!=null&&obj.getIsDue().equals("1")){
+                vo.addXuFeiAmount(obj.getContractAmount());
+            }
+
+        }
+
+        //构建表格第一行数据
+        UserContractAmountVo title= new UserContractAmountVo();
+        title.setNickName("总计");
+        title.setDateStr(date);
+        title.setOtherAmount(null);
+        title.setSoftwareDevAmount(null);
+        title.setTuoGuanAmount(null);
+        title.setXuFeiAmount(null);
+
+        //按总金额降序处理
+        List<UserContractAmountVo> listData=res.values().stream().sorted(
+                Comparator.comparing(UserContractAmountVo::getSumAmount,Comparator.reverseOrder())).collect(Collectors.toList());
+
+        for (UserContractAmountVo v:listData) {
+            title.addSumAmount(v.getSumAmount());
+        }
+        //计算金额占比
+        for (UserContractAmountVo v:listData) {
+            v.setAmountPer(v.getSumAmount().multiply(new BigDecimal("100.0")).divide(title.getSumAmount(),2, RoundingMode.HALF_UP).toPlainString()+"%");
+        }
+
+        listData.add(0,title);
+        return listData;
+    }
+
 
 
     /**
diff --git a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsContractInfoMapper.xml b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsContractInfoMapper.xml
index e721b2f..e3f9ad0 100644
--- a/pusong-modules/pusong-business/src/main/resources/mapper/business/PsContractInfoMapper.xml
+++ b/pusong-modules/pusong-business/src/main/resources/mapper/business/PsContractInfoMapper.xml
@@ -80,12 +80,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             info.apply_date >= #{queryParam.startDate} and
         </if>
         <if test="queryParam.endDate != null">
-            info.apply_date &lt;= #{queryParam.endDate} and
+            info.apply_date &lt; #{queryParam.endDate} and
         </if>
             info.contract_status != #{queryParam.contractStatus} and
             info.is_cancel != #{queryParam.isCancel}
     </select>
 
+    <select id="getUserContractTypeAmountsByDeptId" resultType="com.pusong.business.domain.vo.home.UserContractAmountInfo">
+        SELECT
+            u.user_id as userId,
+            u.nick_name as nickName,
+            bus.business_type as businessType,
+            IFNULL(info.contract_amount,0) as contractAmount,
+            info.is_due as isDue,
+            info.contract_code as contractCode
+        FROM sys_user u
+        LEFT JOIN ps_contract_info info on
+            u.user_id=info.custom_manager
+            and info.contract_status != #{queryParam.contractStatus}
+            and info.is_cancel != #{queryParam.isCancel}
+
+        <if test="queryParam.startDate != null">
+            and info.apply_date >= #{queryParam.startDate}
+        </if>
+        <if test="queryParam.endDate != null">
+            and info.apply_date &lt; #{queryParam.endDate}
+        </if>
+
+        LEFT JOIN ps_contract_business bus on bus.contract_code=info.contract_code
+        WHERE u.dept_id=#{queryParam.deptId}
+    </select>
+
 
     <select id="byChannel" resultType="com.pusong.business.domain.vo.home.ChannelPayInfo">
         select