Explorar el Código

渠道人力相关数据统计

hxl13994548489 hace 2 años
padre
commit
c7bdee003c

+ 1 - 1
src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java

@@ -27,7 +27,7 @@ import java.util.List;
 @Repository
 public interface SysUserMapper extends BaseMapper<SysUser> {
 
-    String userSql = "select t1.id as userId,t1.name as name,t1.mobile as mobile,t1.`status` as `status`,t2.id as deptId,t2.`name` as deptName,sd2.id as pDeptId,sd2.`name` as pDeptName,t4.id as roleId,t4.`name` as roleName " +
+    String userSql = "select t1.id as userId,t1.name as name,t1.mobile as mobile,t1.`status` as `status`,t2.id as deptId,t2.`name` as deptName,sd2.id as pDeptId,sd2.`name` as pDeptName,t4.id as roleId,t4.`name` as roleName ,t1.create_time as createTime " +
             "            from sys_user t1 " +
             "			 left join sys_dept t2 on t1.dept_id=t2.id " +
             "            left join sys_dept sd2 on sd2.id=t2.parent_id  " +

+ 3 - 0
src/main/java/com/ydtech/modules/admin/model/vo/QxFrontlineAgentVo.java

@@ -72,5 +72,8 @@ public class QxFrontlineAgentVo implements Serializable {
     private String days;
 
 
+    @ApiModelProperty(value = "月份")
+    private String month;
+
 
 }

+ 5 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysUserBaseVO.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.admin.model.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -79,4 +80,8 @@ public class SysUserBaseVO {
     @ApiModelProperty(value = "四级机构名称")
     private String levelFourDeptName;
 
+    @ApiModelProperty(value = "注冊时间")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
 }

+ 56 - 35
src/main/java/com/ydtech/modules/admin/service/impl/UserReportServiceImpl.java

@@ -32,6 +32,7 @@ import com.ydtech.modules.fnc.entity.SettlementDocumentaryFeesSumEntity;
 import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.utils.StringUtils;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -711,34 +712,26 @@ public class UserReportServiceImpl implements UserReportService {
     public QxFrontlineAgentDto getByUserId(String userId) {
         SysUserBaseVO sysUserBaseVO = sysUserMapper.selectUserById(userId);
         QxFrontlineAgentDto qxFrontlineAgentDto = new QxFrontlineAgentDto();
-
-        HashMap<String, List<String>> humanResourcesIdList = new HashMap<>();
-        HashMap<String, Integer> humanResources = new HashMap<>();
-
         if(ObjectUtils.isNotEmpty(sysUserBaseVO)){
             qxFrontlineAgentDto.setName(sysUserBaseVO.getName());
             qxFrontlineAgentDto.setUserId(sysUserBaseVO.getUserId());
-            qxFrontlineAgentDto.setUserPhone(sysUserBaseVO.getPDeptId());
-            qxFrontlineAgentDto.setUserDate(sysUserBaseVO.getSubmitTime());
+            qxFrontlineAgentDto.setUserPhone(sysUserBaseVO.getMobile());
+            qxFrontlineAgentDto.setUserDate(sysUserBaseVO.getCreateTime());
         }
-        List<EsmUserReferrerDTO> employeeIncreaseReportDtos = esmUserReferrerMapper.getbyUserNextLevel(null);
-        Map<String, EsmUserReferrerDTO> collect = employeeIncreaseReportDtos.stream().collect(Collectors.toMap(EsmUserReferrerDTO::getId, Function.identity()));
-        Set<String> visited = new HashSet<>();
-        for (EsmUserReferrerDTO item : employeeIncreaseReportDtos) {
-            Integer count = this.nextLevelUser(item.getId(), collect, visited);
-            humanResources.put(item.getId(), count);
-            List<String> ids = new ArrayList<>();
-            humanResourcesIdList.put(item.getId(), this.nextLevelUserList(item.getId(), collect, visited, ids));
+        //查询出单人力
+        List<SysUserTeamDto> users = esmUserReferrerMapper.getUserIdsByUserId(userId);
+        List<String> userIds =new ArrayList<String>();
+        if(users!=null && users.size()>0){
+            userIds = users.stream().map(SysUserTeamDto::getId).collect(Collectors.toList());
         }
-
-        if (humanResourcesIdList.containsKey(userId)) {
-            if (!CollectionUtils.isEmpty(humanResourcesIdList.get(userId))) {
-                //出单人力
-                List<String> ids = humanResourcesIdList.get(userId);
-                QxFrontlineAgentDto orderManpower = insAreaCompanyService.getOrderManpower(ids);
-                String orderManpower1 = orderManpower.getOrderManpower();//出单人力
-                qxFrontlineAgentDto.setOrderManpower(orderManpower1);
-            }
+        userIds.add(userId);
+        QxFrontlineAgentDto orderManpower = insAreaCompanyService.getOrderManpower(userIds);
+        if(orderManpower==null){
+            qxFrontlineAgentDto.setOrderManpower("0");
+            qxFrontlineAgentDto.setTotalPremium("0");
+        }else{
+            qxFrontlineAgentDto.setOrderManpower(orderManpower.getOrderManpower());
+            qxFrontlineAgentDto.setTotalPremium(orderManpower.getTotalPremium());
         }
         return qxFrontlineAgentDto;
     }
@@ -766,29 +759,57 @@ public class UserReportServiceImpl implements UserReportService {
         List<QxFrontlineAgentDto> resultList = new ArrayList<>();
         HashMap<String, String> map = getDateMapByType(qxFrontlineAgentVo.getDays(), qxFrontlineAgentVo.getCreatetimeStart(), qxFrontlineAgentVo.getCreatetimeEnd());
         String userId = qxFrontlineAgentVo.getUserId();
-//      判断是否是团队长
+        qxFrontlineAgentVo.setCreatetimeStart(map.get("startDate"));
+        qxFrontlineAgentVo.setCreatetimeEnd(map.get("endDate"));
+        //      判断是否是团队长
         QueryWrapper<SysUserRole> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("user_id", userId);
         SysUserRole sysUserRole = sysUserRoleMapper.selectOne(queryWrapper);
+        SysUser sysUser = sysUserMapper.selectById(userId);
         if (ObjectUtils.isNotEmpty(sysUserRole) && StringUtils.isNotEmpty(sysUserRole.getRoleId().toString()) && "21".equals(sysUserRole.getRoleId().toString())) { //负责人
             QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
             wrapper.eq("operatorCode", userId);
             wrapper.eq("status", "1");
             List<SysUser> sysUsers = sysUserMapper.selectList(wrapper);
-            SysUser sysUser = new SysUser();
-            sysUser.setId(userId);
+            if(sysUsers==null){
+                sysUsers =new ArrayList<>();
+            }
             sysUsers.add(sysUser);
-            if (!sysUsers.isEmpty()) {
-                for (SysUser  itemUser  :sysUsers){
-                    QxFrontlineAgentDto qxFrontlineAgentDto = new QxFrontlineAgentDto();
-                    qxFrontlineAgentDto.setIds(new ArrayList<>());
-                    qxFrontlineAgentDto.setCreatetimeEnd(qxFrontlineAgentVo.getCreatetimeEnd());
-                    qxFrontlineAgentDto.setCreatetimeStart(qxFrontlineAgentVo.getCreatetimeStart());
-                    qxFrontlineAgentDto.getIds().add(itemUser.getId());
-                    QxFrontlineAgentDto taskStatisticsDto = insAreaCompanyMapper.getChannelOrderManpowerNew(qxFrontlineAgentDto);
-                    resultList.add(taskStatisticsDto);
+            for (SysUser  user  :sysUsers){
+                QxFrontlineAgentDto qxFrontlineAgentDto = new QxFrontlineAgentDto();
+                qxFrontlineAgentDto.setIds(new ArrayList<>());
+                qxFrontlineAgentDto.setCreatetimeEnd(qxFrontlineAgentVo.getCreatetimeEnd());
+                qxFrontlineAgentDto.setCreatetimeStart(qxFrontlineAgentVo.getCreatetimeStart());
+                qxFrontlineAgentDto.getIds().add(user.getId());
+                QxFrontlineAgentDto taskStatisticsDto = insAreaCompanyMapper.getChannelOrderManpowerNew(qxFrontlineAgentDto);
+                if(taskStatisticsDto==null){
+                    taskStatisticsDto =new QxFrontlineAgentDto();
+                    taskStatisticsDto.setName(user.getName());
+                    taskStatisticsDto.setUserId(user.getId());
+                    taskStatisticsDto.setUnderwritingCount("0");
+                    taskStatisticsDto.setOrderNumber("0");
+                    taskStatisticsDto.setQutationInsureCount(new BigDecimal("0"));
+                    taskStatisticsDto.setTotalPremium("0");
                 }
+                resultList.add(taskStatisticsDto);
+            }
+        } else{
+            QxFrontlineAgentDto qxFrontlineAgentDto = new QxFrontlineAgentDto();
+            qxFrontlineAgentDto.setIds(new ArrayList<>());
+            qxFrontlineAgentDto.setCreatetimeEnd(qxFrontlineAgentVo.getCreatetimeEnd());
+            qxFrontlineAgentDto.setCreatetimeStart(qxFrontlineAgentVo.getCreatetimeStart());
+            qxFrontlineAgentDto.getIds().add(userId);
+            QxFrontlineAgentDto taskStatisticsDto = insAreaCompanyMapper.getChannelOrderManpowerNew(qxFrontlineAgentDto);
+            if(taskStatisticsDto==null){
+                taskStatisticsDto =new QxFrontlineAgentDto();
+                taskStatisticsDto.setName(sysUser.getName());
+                taskStatisticsDto.setUserId(sysUser.getId());
+                taskStatisticsDto.setUnderwritingCount("0");
+                taskStatisticsDto.setOrderNumber("0");
+                taskStatisticsDto.setQutationInsureCount(new BigDecimal("0"));
+                taskStatisticsDto.setTotalPremium("0");
             }
+            resultList.add(taskStatisticsDto);
         }
         return HttpResult.ok(resultList);
     }

+ 12 - 6
src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

@@ -1269,12 +1269,15 @@
         SELECT
         count( a.numberUserId ) as "orderManpower",
         IFNULL(sum( a.orderAmount ),0) as "totalPremium",
-        TRIM(TRAILING '0' FROM sum( a.orderAmount )/ count( a.numberUserId )) AS "averagePremium"
+        ROUND(sum( a.orderAmount )/ count( a.numberUserId ),2) AS "averagePremium"
         FROM
         (
         SELECT
         count( io.userid ) AS "numberUserId",
-        SUM(IFNULL(iac.sumpremium, 0))  AS "orderAmount"
+        SUM(IFNULL(iac.jqpremium, 0)
+        +IFNULL(iac.sypremium, 0)
+        +IFNULL(iac.jypremium, 0)
+        )  AS "orderAmount"
         FROM
         `ins_area_company` iac
         LEFT JOIN ins_orders io ON io.orderno = iac.orderno
@@ -1287,7 +1290,7 @@
                 </foreach>
             </if>
             <if test="vo.createtimeStart  != null  and  vo.createtimeStart!=''  and vo.createtimeEnd  != null  and  vo.createtimeEnd!=''">
-                AND iac.signing_time BETWEEN #{vo.createtimeStart} AND #{vo.createtimeEnd}
+                AND iac.createtime BETWEEN #{vo.createtimeStart} AND #{vo.createtimeEnd}
             </if>
         </where>
         GROUP BY
@@ -1330,10 +1333,10 @@
                 </foreach>
             </if>
             <if test="vo.createtimeStart  != null  and  vo.createtimeStart!=''  and vo.createtimeEnd  != null  and  vo.createtimeEnd!=''">
-                AND iac.signing_time BETWEEN #{vo.createtimeStart} AND #{vo.createtimeEnd}
+                AND iac.createtime BETWEEN #{vo.createtimeStart} AND #{vo.createtimeEnd}
             </if>
         <if test="vo.beginDate  != null  and  vo.beginDate!=''  and vo.endDate  != null  and  vo.endDate!=''">
-                AND iac.signing_time BETWEEN #{vo.beginDate} AND #{vo.endDate}
+                AND iac.createtime BETWEEN #{vo.beginDate} AND #{vo.endDate}
             </if>
         </where>
         GROUP BY
@@ -1545,7 +1548,10 @@
 
     <select id="getOrderPremiumByUserIds" resultType="Double">
         SELECT
-        IFNULL(sum( IFNULL( iac.sumpremium, 0 ) ),0) AS "totalPremium"
+         SUM(IFNULL(iac.jqpremium, 0)
+          +IFNULL(iac.sypremium, 0)
+          +IFNULL(iac.jypremium, 0)
+         ) AS "totalPremium"
         FROM
         `ins_area_company` iac
         LEFT JOIN ins_orders io ON io.orderno = iac.orderno