Sfoglia il codice sorgente

Merge branch 'fu-dev' of uskycloud/usky-modules into server-165

hanzhengyi 8 mesi fa
parent
commit
5f860c3967

+ 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

+ 13 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/PmWorkReportController.java

@@ -5,6 +5,7 @@ import com.aliyuncs.exceptions.ClientException;
 import com.usky.common.core.bean.ApiResult;
 import com.usky.iot.domain.PmWorkReport;
 import com.usky.iot.service.PmWorkReportService;
+import com.usky.iot.service.config.DingTalkAndMessage;
 import com.usky.iot.service.vo.PmProjectTotalWorkTimeVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -24,9 +25,13 @@ import java.util.Map;
 @RestController
 @RequestMapping("/pmWorkReport")
 public class PmWorkReportController {
+
     @Autowired
     private PmWorkReportService pmWorkReportService;
 
+    @Autowired
+    private DingTalkAndMessage dingTalkAndMessage;
+
     /**
      * 周工作报告查询
      *
@@ -52,6 +57,14 @@ public class PmWorkReportController {
         pmWorkReportService.addReport(pmWorkReport);
     }
 
+    /**
+     * 上传文件
+     */
+/*    @GetMapping("/uploadFiles")
+    public void uploadFiles(){
+        dingTalkAndMessage.uploadFiles();
+    }*/
+
     /**
      * 统计工时
      *

+ 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
      */
 /*

+ 21 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/config/DingTalkAndMessage.java

@@ -7,12 +7,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.dingtalk.api.DefaultDingTalkClient;
 import com.dingtalk.api.DingTalkClient;
+import com.dingtalk.api.request.OapiMediaUploadRequest;
 import com.dingtalk.api.request.OapiReportCreateRequest;
 import com.dingtalk.api.request.OapiV2UserGetbymobileRequest;
+import com.dingtalk.api.response.OapiMediaUploadResponse;
 import com.dingtalk.api.response.OapiReportCreateResponse;
 import com.dingtalk.api.response.OapiV2UserGetbymobileResponse;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.taobao.api.ApiException;
+import com.taobao.api.FileItem;
 import com.usky.common.core.bean.ApiResult;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.iot.constant.dingTalkConstant;
@@ -216,7 +220,7 @@ public class DingTalkAndMessage {
                     long number = Long.parseLong(item.trim());
                     userIds.add(number);
                 }
-                    for (Long userId : userIds) {
+                for (Long userId : userIds) {
                     String dingTalkUserId = getDingTalkUserId(userId);
                     ccTo.add(dingTalkUserId);
                 }
@@ -338,5 +342,21 @@ public class DingTalkAndMessage {
         }
         log.info(username + "的工作报告发送消息中心完成-----------------------------------");
     }
+
+/*    @Async("asyncServiceExecutor")
+    public void uploadFiles() {
+        log.info("开始上传文件-----------------------------------");
+        try {
+            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/media/upload");
+            OapiMediaUploadRequest req = new OapiMediaUploadRequest();
+            req.setType("image");
+            req.setMedia(new FileItem("E:/usky/Beckham.png"));
+            OapiMediaUploadResponse rsp = client.execute(req, "0d7b9367a43935fc8b85bc29bd80ac15");
+            System.out.println(rsp.getBody());
+        } catch (ApiException e) {
+            e.printStackTrace();
+        }
+    log.info("上传文件完成-----------------------------------");
+    }*/
 }
 

+ 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("请设置查询时间范围!");
         }