فهرست منبع

项目下拉列表添加排序

fuyuchuan 7 ماه پیش
والد
کامیت
e573734010

+ 1 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/PmProjectController.java

@@ -43,7 +43,7 @@ public class PmProjectController {
     }
 
     /**
-     * 分页
+     * 项目列表分页
      *
      * @param projectName
      * @param projectType

+ 6 - 2
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/PmProject.java

@@ -2,6 +2,7 @@ package com.usky.iot.domain;
 
 import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import java.io.Serializable;
@@ -108,6 +109,9 @@ public class PmProject implements Serializable {
      */
     private Integer delFlag;
 
-
-
+    /**
+     * 提交次数
+     */
+    @TableField(exist = false)
+    private Long submissions;
 }

+ 1 - 3
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/PmWorkContentMapper.java

@@ -7,6 +7,7 @@ import com.usky.iot.service.vo.WorkHoursStatisticsVO;
 import com.usky.iot.service.vo.WorkTimeExportVO;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -35,10 +36,7 @@ public interface PmWorkContentMapper extends CrudMapper<PmWorkContent> {
     /**
      * 人员查询时增加部门隔离,项目维度不需要
      *
-     * @param startTime
-     * @param endTime
      * @param userId
-     * @param tenantId
      * @return
      */
 /*

+ 43 - 3
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/PmProjectServiceImpl.java

@@ -118,23 +118,59 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
     }
 
     /**
-     * 添加工作报告下拉框
+     * 添加工作报告项目下拉框
      * 查询当前租户所有项目
      *
      * @return 只返回项目id和名称
      */
     @Override
     public List<PmProject> queryProject() {
+        Integer tenantId = SecurityUtils.getTenantId();
+        Long userId = SecurityUtils.getUserId();
         LambdaQueryWrapper<PmProject> wrapper = Wrappers.lambdaQuery();
         wrapper.select(PmProject::getId, PmProject::getProjectName)
-                .eq(PmProject::getTenantId, SecurityUtils.getTenantId())
+                .eq(PmProject::getTenantId, tenantId)
                 .eq(PmProject::getDelFlag, 0)
                 .and(qw -> qw
-                        .eq(PmProject::getProjectHead, SecurityUtils.getUserId())
+                        .eq(PmProject::getProjectHead, userId)
                         .or().apply("FIND_IN_SET('" + SecurityUtils.getUserId() + "', project_member) > 0")
                 )
                 .in(PmProject::getProjectStatus, 1, 2, 3);
         List<PmProject> list = this.list(wrapper);
+        if (list.isEmpty()){
+            return list;
+        }
+
+        List<Integer> projectIds = list.stream().map(PmProject::getId).collect(Collectors.toList());
+        LambdaQueryWrapper<PmWorkContent> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.select(PmWorkContent::getProjectId)
+                .eq(PmWorkContent::getSubmitterId, userId)
+                .in(PmWorkContent::getProjectId, projectIds)
+                .between(PmWorkContent::getCreateTime, LocalDateTime.now().minusDays(29), LocalDateTime.now());
+        List<PmWorkContent> pmWorkContents = pmWorkContentMapper.selectList(queryWrapper);
+        if (pmWorkContents.isEmpty()){
+            for (PmProject project : list){
+                project.setSubmissions(0L);
+            }
+            return list;
+        }
+
+        Map<Integer, Long> projectIdCountMap = pmWorkContents.stream()
+                .collect(Collectors.groupingBy(PmWorkContent::getProjectId, Collectors.counting()));
+
+        for (PmProject project : list) {
+            Integer id = project.getId();
+            Long aLong = projectIdCountMap.getOrDefault(id,0L);
+            project.setSubmissions(aLong);
+        }
+        //降序排序
+        Collections.sort(list, new Comparator<PmProject>() {
+            @Override
+            public int compare(PmProject p1, PmProject p2) {
+                return Long.compare(p2.getSubmissions(), p1.getSubmissions());
+            }
+        });
+
         return list;
     }
 
@@ -189,6 +225,10 @@ public class PmProjectServiceImpl extends AbstractCrudService<PmProjectMapper, P
             lambdaQuery.eq(PmProject::getProjectStatus, projectStatus);
         }
         lambdaQuery.orderByDesc(PmProject::getCreateTime);
+        List<PmProject> pmProjects = pmProjectMapper.selectList(lambdaQuery);
+        if (pmProjects.isEmpty()){
+            return new CommonPage<>(pmProjects, 0, pageSize, pageNum);
+        }
 
         // 替换创建人和更新人名字(username→nickname)
         LambdaQueryWrapper<SysUser> query = Wrappers.lambdaQuery();

+ 14 - 2
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/PmWorkContentServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.datascope.annotation.DataScope;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.domain.R;
 import com.usky.common.core.exception.BusinessException;
@@ -429,6 +430,7 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
         LocalDate start = null;
         LocalDate end = null;
         List<Integer> reportIds = new ArrayList<>();
+        CommonPage<PmWorkReport> returnPage = new CommonPage<>(new ArrayList<>(), 0, pageSize, pageNum);
         if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)) {
             DateTimeFormatter formatter = null;
             try {
@@ -451,7 +453,10 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
             reportIds.addAll(pmWorkContentMapper.selectList(contentLambdaQuery).stream().map(PmWorkContent::getReportId).collect(Collectors.toList()));
         }
 
-        CommonPage<PmWorkReport> returnPage = new CommonPage<>(new ArrayList<>(), 0, pageSize, pageNum);
+        if (reportIds.isEmpty()){
+            return returnPage;
+        }
+
         List<PmWorkContent> pmWorkContentList = new ArrayList<>();
         // Integer tenantId = SecurityUtils.getTenantId();
         Long userId = SecurityUtils.getUserId();
@@ -671,6 +676,13 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
         return pmWorkReportList.stream().map(PmWorkReport::getId).collect(Collectors.toList());
     }
 
+    /**
+     * @description: 项目查询
+     * @author: fu
+     * @date: 2024/8/8 19:22
+     * @param: [startDate, endDate]
+     * @return: java.util.List<java.lang.Integer>
+     **/
     private List<PmProject> projects(Integer projectId) {
         Integer tenantId = SecurityUtils.getTenantId();
         Long deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId();
@@ -748,7 +760,7 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
         List<ProjectWorkTimeVO> projectWorkTime = new ArrayList<>();
         List<UserWorkTimeVO> userWorkTimeVO = new ArrayList<>();
         List<Object> returnList = new ArrayList<>();
-        if (StringUtils.isBlank(startDate) && StringUtils.isBlank(endDate)) {
+        if (StringUtils.isBlank(startDate) || StringUtils.isBlank(endDate)) {
             throw new BusinessException("请设置查询时间范围!");
         }