Ver código fonte

导出工时明细代码问题修复

fuyuchuan 5 meses atrás
pai
commit
41d3ec782f

+ 4 - 8
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/PmWorkContentMapper.java

@@ -3,6 +3,7 @@ package com.usky.iot.mapper;
 import com.usky.iot.domain.PmWorkContent;
 import com.usky.common.mybatis.core.CrudMapper;
 import com.usky.iot.service.vo.PmProjectWorkTimeVo;
+import com.usky.iot.service.vo.PmWorkHourStatisticRequestVO;
 import com.usky.iot.service.vo.WorkHoursStatisticsVO;
 import com.usky.iot.service.vo.WorkTimeExportVO;
 import org.apache.ibatis.annotations.Param;
@@ -33,15 +34,10 @@ public interface PmWorkContentMapper extends CrudMapper<PmWorkContent> {
                                                     @Param("userId") Long userId,
                                                     @Param("tenantId") Integer tenantId);*/
 
+
     /**
-     * 人员查询时增加部门隔离,项目维度不需要
-     *
-     * @param userIds
+     * 导出工时明细
      * @return
      */
-    List<WorkTimeExportVO> workHourStatisticExport(@Param("userIds") List<Long> userIds,
-                                                   @Param("projectId") Integer projectId,
-                                                   @Param("startTime") LocalDate startTime,
-                                                   @Param("endTime") LocalDate endTime,
-                                                   @Param("tenantId") Integer tenantId);
+    List<WorkTimeExportVO> workHourStatisticExport(PmWorkHourStatisticRequestVO requestVO);
 }

+ 3 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/config/DingTalkAndMessage.java

@@ -18,6 +18,7 @@ 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.core.exception.BusinessException;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.iot.constant.dingTalkConstant;
 import com.usky.iot.domain.MceMbuser;
@@ -313,6 +314,8 @@ public class DingTalkAndMessage {
                             .map(Long::parseLong)
                             .collect(Collectors.toList()))
                     .orElse(Collections.emptyList());
+        } else {
+            throw new BusinessException( newReport.getCreateBy() + "的报告:" + newReport.getId() + ",抄送人为空,无需发送消息中心");
         }
         LambdaQueryWrapper<SysUser> nickNameQuery = Wrappers.lambdaQuery();
         nickNameQuery.select(SysUser::getNickName)

+ 8 - 17
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/PmWorkContentServiceImpl.java

@@ -723,7 +723,7 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
     private List<SysUser> userNameList(List<Long> userId) {
         LambdaQueryWrapper<SysUser> userNameQuery = Wrappers.lambdaQuery();
         userNameQuery.select(SysUser::getUserId, SysUser::getNickName, SysUser::getUserName, SysUser::getPhonenumber, SysUser::getAvatar,
-                        SysUser::getSex, SysUser::getDeptId, SysUser::getAddress);
+                SysUser::getSex, SysUser::getDeptId, SysUser::getAddress);
         if (!userId.isEmpty()) {
             userNameQuery.eq(SysUser::getDelFlag, 0).eq(SysUser::getStatus, 0).in(SysUser::getUserId, userId);
             return sysUserMapper.selectList(userNameQuery);
@@ -796,8 +796,8 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
     @Override
     public List<Object> workHourStatistic(PmWorkHourStatisticRequestVO requestVO) {
         List<Long> userId = new ArrayList<>();
-        if (requestVO.getUserId() != null) {
-            userId = requestVO.getUserId();
+        if (requestVO.getUserIds() != null) {
+            userId = requestVO.getUserIds();
         }
         Integer projectId = requestVO.getProjectId();
         Integer filter = 1;
@@ -807,7 +807,7 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
         String startDate = requestVO.getStartDate();
         String endDate = requestVO.getEndDate();
         Integer workerOrProject = 1;
-        if (requestVO.getWorkerOrProject() != null){
+        if (requestVO.getWorkerOrProject() != null) {
             workerOrProject = requestVO.getWorkerOrProject();
         }
         if (StringUtils.isBlank(startDate) || StringUtils.isBlank(endDate)) {
@@ -1045,20 +1045,11 @@ public class PmWorkContentServiceImpl extends AbstractCrudService<PmWorkContentM
     @Override
     public List<WorkTimeExportVO> workHourStatisticExport(PmWorkHourStatisticRequestVO requestVO) {
         List<Long> userIds = new ArrayList<>();
-        if (!requestVO.getUserId().isEmpty()){
-            userIds = requestVO.getUserId();
+        if (Objects.isNull(requestVO.getUserIds()) || requestVO.getUserIds().isEmpty()){
+            userIds.add(SecurityUtils.getUserId());
+            requestVO.setUserIds(userIds);
         }
-
-        Integer projectId = requestVO.getProjectId();
-
-        Integer tenantId = SecurityUtils.getTenantId();
-        LocalDate start = null;
-        LocalDate end = null;
-        if (StringUtils.isNotBlank(requestVO.getStartDate()) && StringUtils.isNotBlank(requestVO.getEndDate())) {
-            start = LocalDate.parse(requestVO.getStartDate());
-            end = LocalDate.parse(requestVO.getEndDate());
-        }
-        return pmWorkContentMapper.workHourStatisticExport(userIds, projectId, start, end, tenantId);
+        return pmWorkContentMapper.workHourStatisticExport(requestVO);
     }
 
     /**

+ 3 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/PmWorkReportServiceImpl.java

@@ -390,7 +390,9 @@ public class PmWorkReportServiceImpl extends AbstractCrudService<PmWorkReportMap
                 rp.setTimingTime(null);
                 rp.setReportStatus(1);
                 pmWorkReportMapper.updateById(rp);
-                receiveMessages(ccTo, rid);
+                if (StringUtils.isNotBlank(ccTo)) {
+                    receiveMessages(ccTo, rid);
+                }
                 dingTalkAndMessage.sendAsyncMessage(rp);
             }
 

+ 3 - 2
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/PmWorkHourStatisticRequestVO.java

@@ -1,5 +1,6 @@
 package com.usky.iot.service.vo;
 
+import com.usky.common.core.bean.BaseEntity;
 import lombok.Data;
 
 import java.util.List;
@@ -10,11 +11,11 @@ import java.util.List;
  * @date 2024/9/20
  */
 @Data
-public class PmWorkHourStatisticRequestVO {
+public class PmWorkHourStatisticRequestVO extends BaseEntity {
     /**
      * 用户id集合
      */
-    private List<Long> userId;
+    private List<Long> userIds;
 
     /**
      * 项目id

+ 11 - 8
service-iot/service-iot-biz/src/main/resources/mapper/iot/PmWorkContentMapper.xml

@@ -33,17 +33,20 @@
         FROM pm_work_content pc
         JOIN sys_user u ON pc.submitter_id = u.user_id
         JOIN pm_work_report pr ON pc.report_id = pr.id
-        <if test="tenantId != null and tenantId != '' and tenantId != 0">
-            AND pr.tenant_id = #{tenantId}
-        </if>
-        <if test="projectId != null and projectId != '' and projectId != 0">
+        <if test="projectId != null and projectId != 0">
             AND pr.id = #{projectId}
         </if>
-        <if test="userId != null and userId != '' and userId != 0">
-            AND pr.submitter_id IN #{userIds}
+        <if test="userIds != null">
+            AND pr.submitter_id IN
+            <foreach collection="userIds" item="userId" open="(" separator="," close=")">
+                #{userId}
+            </foreach>
+        </if>
+        <if test="startDate != null and startDate != ''"><!-- 开始时间检索 -->
+            and date_format(pr.report_date,'%y%m%d') >= date_format(#{startDate},'%y%m%d')
         </if>
-        <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
-            AND pr.report_date BETWEEN #{startTime} AND #{endTime}
+        <if test="endDate != null and endDate != ''"><!-- 结束时间检索 -->
+            and date_format(pr.report_date,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')
         </if>
         <!-- 数据范围过滤 -->
         ${params.dataScope}