Sfoglia il codice sorgente

渠道查詢優化

hxl13994548489 2 anni fa
parent
commit
5dbebc7e16

+ 4 - 0
src/main/java/com/ydtech/modules/admin/model/dto/QxFrontlineAgentDto.java

@@ -85,6 +85,10 @@ public class QxFrontlineAgentDto implements Serializable {
     @ApiModelProperty(value = "结束时间")
     private String createtimeStart;
 
+    /***
+     *  角色id
+     */
+    private String roleId;
 
 }
 

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

@@ -68,7 +68,7 @@ public class QxFrontlineAgentVo implements Serializable {
     @ApiModelProperty(value = "结束时间")
     private String createtimeStart;
 
-
-
+    @ApiModelProperty(value = "类型  1 近1天 2近7天 3.近30天")
+    private String days;
 
 }

+ 49 - 21
src/main/java/com/ydtech/modules/admin/service/impl/UserReportServiceImpl.java

@@ -21,6 +21,7 @@ import com.ydtech.modules.admin.model.vo.HouLinePersonnelReportVo;
 import com.ydtech.modules.admin.model.vo.QxFrontlineAgentVo;
 import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
 import com.ydtech.modules.admin.service.UserReportService;
+import com.ydtech.modules.admin.utils.SliceUpDateUtil;
 import com.ydtech.modules.base.model.vo.PageVo;
 import com.ydtech.modules.esm.dao.EsmUserReferrerMapper;
 import com.ydtech.modules.esm.model.EsmUserReferrer;
@@ -195,6 +196,9 @@ public class UserReportServiceImpl implements UserReportService {
     @Override
     public HttpResult<IPage<QxFrontlineAgentDto>> queryQxFrontlineAgent(QxFrontlineAgentVo qxFrontlineAgentVo) {
         try {
+            HashMap<String, String> map = getDateMapByType(qxFrontlineAgentVo.getDays(), qxFrontlineAgentVo.getCreatetimeStart(), qxFrontlineAgentVo.getCreatetimeEnd());
+            qxFrontlineAgentVo.setCreatetimeStart(map.get("startDate"));
+            qxFrontlineAgentVo.setCreatetimeEnd(map.get("endDate"));
             PageVo<SettlementDocumentaryFeesSumEntity> pageVo = new PageVo<>();
             Page page = new Page(qxFrontlineAgentVo.getPageNum(), qxFrontlineAgentVo.getPageSize());
             pageVo.setPageNum(qxFrontlineAgentVo.getPageNum());
@@ -212,6 +216,38 @@ public class UserReportServiceImpl implements UserReportService {
             return HttpResult.error("查询异常");
         }
     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/6/19 11:57
+     *  @Description:  通过时间类型判断
+     */
+    private static HashMap<String,String> getDateMapByType(String type, String startDate, String endDate) {
+        HashMap<String,String> map =new HashMap<>();
+        String  startDateStr="";
+        String  endDateStr="";
+        if(org.apache.commons.lang3.StringUtils.isNotBlank(startDate) && org.apache.commons.lang3.StringUtils.isNotBlank(endDate)){
+            startDateStr= org.apache.commons.lang3.StringUtils.isNotBlank(startDate)?startDate+" 00:00:00":null;
+            endDateStr= org.apache.commons.lang3.StringUtils.isNotBlank(endDate)?endDate+" 23:59:59":null;
+        }else{
+            if("1".equals(type)){
+                // 近1天
+                startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),5)+" 00:00:00";
+                endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+            }else if("2".equals(type)){
+                // 近7天
+                startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),1)+" 00:00:00";
+                endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+            }else if("3".equals(type)){
+                // 近30天
+                startDateStr=SliceUpDateUtil.getBeforeDay(new Date(),6)+" 00:00:00";
+                endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+            }
+        }
+        map.put("startDate",startDateStr);
+        map.put("endDate",endDateStr);
+        return map;
+    }
 
     private void agentPerson(List<QxFrontlineAgentDto> sysUserList,QxFrontlineAgentVo qxFrontlineAgentVo) {
         HashMap<String, Integer> humanResources = new HashMap<>();
@@ -260,32 +296,24 @@ public class UserReportServiceImpl implements UserReportService {
         for (QxFrontlineAgentDto  item  : sysUserList){
 //            是否是团队长
             String userId = item.getUserId();
-            QueryWrapper<SysUserRole> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("user_id",userId);
-            SysUserRole sysUserRole = sysUserRoleMapper.selectOne(queryWrapper);
-            if(ObjectUtils.isNotEmpty(sysUserRole) && StringUtils.isNotEmpty(sysUserRole.getRoleId().toString()) && "21".equals(sysUserRole.getRoleId().toString())){//团队长
+            String roleId = item.getRoleId();
+            if(StringUtils.isNotBlank(roleId) && "21".equals(roleId)){//团队长
                 QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
                 wrapper.eq("operatorCode", userId);
                 wrapper.eq("status", "1");
                 List<SysUser> sysUsers = sysUserMapper.selectList(wrapper);
-                List<String> collect = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
-                QxFrontlineAgentDto qxFrontlineAgentDto = new QxFrontlineAgentDto();
-                qxFrontlineAgentDto.setIds(new ArrayList<>());
-
-                if (!collect.isEmpty()) {
-                    qxFrontlineAgentDto.setCreatetimeEnd(qxFrontlineAgentVo.getCreatetimeEnd());
-                    qxFrontlineAgentDto.setCreatetimeStart(qxFrontlineAgentVo.getCreatetimeStart());
-                    qxFrontlineAgentDto.getIds().addAll(collect);
-                    QxFrontlineAgentDto taskStatisticsDto = insAreaCompanyMapper.getOrderManpowerNew(qxFrontlineAgentDto);
-                    item.setTotalPremium(taskStatisticsDto.getTotalPremium());
-                }else {
-                    collect.add(userId);
-                    qxFrontlineAgentDto.setCreatetimeEnd(qxFrontlineAgentVo.getCreatetimeEnd());
-                    qxFrontlineAgentDto.setCreatetimeStart(qxFrontlineAgentVo.getCreatetimeStart());
-                    qxFrontlineAgentDto.getIds().addAll(collect);
-                    QxFrontlineAgentDto taskStatisticsDto = insAreaCompanyMapper.getOrderManpowerNew(qxFrontlineAgentDto);
-                    item.setTotalPremium(taskStatisticsDto.getTotalPremium());
+                List<String> collect =new ArrayList<>();
+                if(sysUsers!=null && sysUsers.size()>0){
+                    collect = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
                 }
+                QxFrontlineAgentDto qxFrontlineAgentDto = new QxFrontlineAgentDto();
+                collect.add(userId);
+                qxFrontlineAgentDto.setCreatetimeEnd(qxFrontlineAgentVo.getCreatetimeEnd());
+                qxFrontlineAgentDto.setCreatetimeStart(qxFrontlineAgentVo.getCreatetimeStart());
+                qxFrontlineAgentDto.setIds(collect);
+                QxFrontlineAgentDto taskStatisticsDto = insAreaCompanyMapper.getOrderManpowerNew(qxFrontlineAgentDto);
+                item.setAveragePremium(taskStatisticsDto.getAveragePremium());
+                item.setTotalPremium(taskStatisticsDto.getTotalPremium());
             }
         }
     }

+ 4 - 0
src/main/java/com/ydtech/modules/admin/utils/SliceUpDateUtil.java

@@ -195,6 +195,10 @@ public class SliceUpDateUtil {
             c.add(Calendar.MONTH, -3);
         }else if(4==type){
             c.add(Calendar.MONTH, -6);
+        }else if(5==type){
+            c.add(Calendar.DATE, - 1);
+        }else if(6==type){
+            c.add(Calendar.DATE, - 30);
         }
         return format.format(c.getTime());
     }

+ 3 - 1
src/main/resources/mapper/modules/admin/SysUserMapper.xml

@@ -1332,11 +1332,13 @@
             su.name as "name",
             su.id  as "userId",
             su.dept_id  as "deptId",
-            inf.file_path  as "filePath"
+            inf.file_path  as "filePath",
+            sur.role_id AS roleId
         FROM
             sys_user su
                 LEFT JOIN sys_dept sd ON sd.id = su.dept_id
                 LEFT JOIN  ins_upload_files   inf on  su.head_sculpture  =inf.id
+                LEFT JOIN sys_user_role sur ON sur.user_id = su.id
         <where>
             su.id  LIKE '%M%'
             and su.status = '1'

+ 2 - 1
src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

@@ -1281,7 +1281,7 @@
         SELECT
         count( a.numberUserId ) as "orderManpower",
         sum( a.orderAmount ) as "totalPremium",
-        sum( a.orderAmount )/  count( a.numberUserId ) as "averagePremium"
+        TRIM(TRAILING '0' FROM sum( a.orderAmount )/ count( a.numberUserId )) AS "averagePremium"
         FROM
         (
         SELECT
@@ -1307,6 +1307,7 @@
         GROUP BY
         io.userid
         ) a
+        order by  sum( a.orderAmount ) desc
     </select>