Browse Source

增加一键催收功能,周日报列表查询优化;周日报统计增加部门数据权限

zhangjq 1 year ago
parent
commit
08a57fd1be

+ 7 - 0
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/controller/admin/report/ReportStatisticsController.java

@@ -39,4 +39,11 @@ public class ReportStatisticsController {
     public CommonResult<List<DeptReportStatisticRespVO>> getDeptReportStatistics(@Valid @RequestParam("year") Short year, @RequestParam("month") Short month){
         return success(reportService.getDeptReportStatistics(year,month));
     }
+
+    @GetMapping("/sendFillRemind")
+    @Operation(summary = "一键催收")
+    public CommonResult<String> sendFillRemind(@Valid ReportStatisticReqDTO reportStatisticReqDTO){
+        return success(reportService.sendFillRemind(reportStatisticReqDTO));
+    }
+
 }

+ 40 - 0
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/service/report/ReportDingServiceImpl.java

@@ -229,5 +229,45 @@ public class ReportDingServiceImpl {
     }
 
 
+    /**
+     * 一键催报
+     */
+    @Async
+    public void sendFillRemind(List<String> userIdList,String reportType,Short year,Short month){
+        for (String userId : userIdList) {
+            OA oa = new OA();
+            oa.setMessageUrl(URL);
+            oa.setPcMessageUrl(URL);
+            OA.Head head = new OA.Head();
+            head.setBgcolor("FFBBBBBB");
+            head.setText("浙江万维OA");
+            oa.setHead(head);
+
+            //消息实体
+            OA.Body body = new OA.Body();
+            //消息内容
+            List<Form> formList = new ArrayList<>();
+
+            String reportTypeStr = "daily".equals(reportType) ? "日报" : "周报";
+            String content = "您" + year + "年" + month + "月的" + reportTypeStr + "填写率为0%,请及时填写" + reportTypeStr;
+
+            Form formWorkTime = new Form();
+            formWorkTime.setKey("消息内容:\n");
+            formWorkTime.setValue(content);
+            formList.add(formWorkTime);
+
+            body.setForm(formList);
+            oa.setBody(body);
+
+            DingMessageDto message = new DingMessageDto(userId);
+            message.setMsgType(DingMsg.OA);
+            message.setOa(oa);
+            dingApi.sendMessage(message);
+        }
+
+
+    }
+
+
 
 }

+ 6 - 1
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/service/report/ReportService.java

@@ -114,6 +114,11 @@ public interface ReportService {
      */
     List<ReportWorkloadIndexStatisticVO> getReportWorkloadStatistics(ReportWorkloadStatisticDTO rep);
 
-
+    /**
+     * 一键催收
+     * @param reportStatisticReqDTO
+     * @return
+     */
+    String sendFillRemind(ReportStatisticReqDTO reportStatisticReqDTO) ;
 
 }

+ 33 - 16
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/service/report/ReportServiceImpl.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zjugis.framework.common.pojo.CommonResult;
 import com.zjugis.framework.common.pojo.PageResult;
 import com.zjugis.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.zjugis.framework.security.core.util.SecurityFrameworkUtils;
 import com.zjugis.module.adm.controller.admin.report.dto.report.ReportListQueryDTO;
 import com.zjugis.module.adm.controller.admin.report.dto.report.ReportPageReqDTO;
 import com.zjugis.module.adm.controller.admin.report.dto.report.ReportQueryDTO;
@@ -47,6 +48,8 @@ import com.zjugis.module.system.api.dept.DeptApi;
 import com.zjugis.module.system.api.dept.dto.DeptRespDTO;
 import com.zjugis.module.system.api.dict.DictDataApi;
 import com.zjugis.module.system.api.dict.dto.DictDataRespDTO;
+import com.zjugis.module.system.api.permission.PermissionApi;
+import com.zjugis.module.system.api.permission.dto.DeptDataPermissionRespDTO;
 import com.zjugis.module.system.api.user.AdminUserApi;
 import com.zjugis.module.system.api.user.dto.AdminUserRespDTO;
 import org.apache.commons.lang3.StringUtils;
@@ -122,6 +125,9 @@ public class ReportServiceImpl implements ReportService {
     @Resource
     private BusinessService businessService;
 
+    @Resource
+    private PermissionApi permissionApi;
+
     /**
      * 新增工作报告
      *
@@ -168,6 +174,9 @@ public class ReportServiceImpl implements ReportService {
     @Override
     public PageResult<ReportRespVO> getReportPage(ReportPageReqDTO reqVO) {
         PageResult<ReportRespVO> reportPageResult = ReportConvert.INSTANCE.convertPage(reportMapper.selectPage(reqVO));
+        if (reportPageResult.getTotal() == 0L) {
+            return reportPageResult;
+        }
         List<ReportRespVO> reportList = reportPageResult.getList();
         List<Long> reportIds = reportList.stream().map(ReportRespVO::getId).collect(Collectors.toList());
 
@@ -341,20 +350,22 @@ public class ReportServiceImpl implements ReportService {
      */
     @Override
     public PageResult<ReportStatisticRespVO> getReportStatistics(ReportStatisticReqDTO reportStatisticReqDTO) {
+        List<ReportStatisticRespVO> respList = this.getReportStatisticsList(reportStatisticReqDTO);
+        PageResult<ReportStatisticRespVO> pages = PageUtil.getPages(reportStatisticReqDTO.getPageNo(), reportStatisticReqDTO.getPageSize(), respList);
+        pages.setTotal(Long.valueOf(respList.size()));
+        return pages;
+    }
+
+    public List<ReportStatisticRespVO> getReportStatisticsList(ReportStatisticReqDTO reportStatisticReqDTO) {
         Short year = reportStatisticReqDTO.getYear();
         Short month = reportStatisticReqDTO.getMonth();
-        List<AdminUserRespDTO> records = new ArrayList<>();
-        //部门id及子部门id
-        Set<String> deptIds = null;
-        if (StringUtils.isNotBlank(reportStatisticReqDTO.getDeptId())) {
-            deptIds = convertSet(deptApi.getChildDeptList(reportStatisticReqDTO.getDeptId()).getCheckedData(), DeptRespDTO::getId);
-            //添加自身部门
-            deptIds.add(reportStatisticReqDTO.getDeptId());
-            records = adminUserApi.getUserListByDeptIds(deptIds).getData();
-        } else {
-            records = adminUserApi.getUserList().getData();
+        //获取部门及关联部门的用户
+        DeptDataPermissionRespDTO dto = permissionApi.getDeptDataPermission(SecurityFrameworkUtils.getLoginUserId()).getCheckedData();
+        Set<String> deptIds = dto.getDeptIds();
+        if (CollectionUtils.isEmpty(deptIds)) {
+            return Collections.emptyList();
         }
-
+        List<AdminUserRespDTO> records = adminUserApi.getUserListByDeptIds(deptIds).getData();
         if (StrUtil.isNotBlank(reportStatisticReqDTO.getUserId())) {
             records = records.stream().filter(user -> reportStatisticReqDTO.getUserId().equals(user.getId())).collect(Collectors.toList());
         }
@@ -390,9 +401,16 @@ public class ReportServiceImpl implements ReportService {
             respList.add(statisticRespVO);
         }
         respList = respList.stream().sorted(Comparator.comparing(c -> PinyinUtil.toFirstLetter(c.getDeptName()))).collect(Collectors.toList());
-        PageResult<ReportStatisticRespVO> pages = PageUtil.getPages(reportStatisticReqDTO.getPageNo(), reportStatisticReqDTO.getPageSize(), respList);
-        pages.setTotal(Long.valueOf(records.size()));
-        return pages;
+        return respList;
+    }
+
+    public String sendFillRemind(ReportStatisticReqDTO reportStatisticReqDTO) {
+        List<ReportStatisticRespVO> reportStatisticsList = this.getReportStatisticsList(reportStatisticReqDTO);
+        List<String> userIdList = reportStatisticsList.stream().filter(c -> c.getFillRate() == null || new BigDecimal(c.getFillRate()).compareTo(BigDecimal.ZERO) == 0)
+                .map(ReportStatisticRespVO::getUserId).collect(Collectors.toList());
+        reportDingService.sendFillRemind(userIdList, reportStatisticReqDTO.getReportType(), reportStatisticReqDTO.getYear(), reportStatisticReqDTO.getMonth());
+
+        return "发送成功";
     }
 
     /**
@@ -740,7 +758,7 @@ public class ReportServiceImpl implements ReportService {
      * @return
      */
     @Override
-    public  List<ReportWorkloadIndexStatisticVO> getReportWorkloadStatistics(ReportWorkloadStatisticDTO rep) {
+    public List<ReportWorkloadIndexStatisticVO> getReportWorkloadStatistics(ReportWorkloadStatisticDTO rep) {
         QueryWrapper<ReportWorkloadDO> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("REPORT.DELETED", 0);
         queryWrapper.eq("WORKLOAD.DELETED", 0);
@@ -790,7 +808,6 @@ public class ReportServiceImpl implements ReportService {
     }
 
 
-
     /**
      * 检验报告是否存在
      *

+ 4 - 0
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/service/reportcomment/ReportCommentServiceImpl.java

@@ -1,5 +1,6 @@
 package com.zjugis.module.adm.service.reportcomment;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.zjugis.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.zjugis.framework.security.core.util.SecurityFrameworkUtils;
 import com.zjugis.module.adm.controller.admin.report.vo.base.ReportRespVO;
@@ -73,6 +74,9 @@ public class ReportCommentServiceImpl implements ReportCommentService {
 
     @Override
     public List<ReportCommentRespVO> getReportCommentListByRIds(List<Long> reportId) {
+        if (CollectionUtils.isEmpty(reportId)) {
+            return Collections.emptyList();
+        }
         List<ReportCommentRespVO> reportCommentList = ReportCommentConvert.INSTANCE.convertList(reportCommentMapper.selectList(new LambdaQueryWrapperX<ReportCommentDO>()
                 .inIfPresent(ReportCommentDO::getReportId, reportId)));
         Map<String, AdminUserRespDTO> userMap = adminUserApi.getUserMap();

+ 4 - 0
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/service/reportreceive/ReportReceiveServiceImpl.java

@@ -1,6 +1,7 @@
 package com.zjugis.module.adm.service.reportreceive;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.zjugis.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.zjugis.module.adm.controller.admin.report.vo.base.ReportCreateReqVO;
 import com.zjugis.module.adm.controller.admin.report.vo.receive.*;
@@ -115,6 +116,9 @@ public class ReportReceiveServiceImpl implements ReportReceiveService {
 
     @Override
     public List<ReportReceiveRespVO> getReportReceiveList(List<Long> reportId) {
+        if (CollectionUtils.isEmpty(reportId)) {
+            return Collections.emptyList();
+        }
         return ReportReceiveConvert.INSTANCE.convertList(reportReceiveMapper.selectList(new LambdaQueryWrapperX<ReportReceiveDO>()
                 .inIfPresent(ReportReceiveDO::getReportId, reportId)));
     }

+ 4 - 0
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/service/reportworkload/ReportWorkloadServiceImpl.java

@@ -2,6 +2,7 @@ package com.zjugis.module.adm.service.reportworkload;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zjugis.framework.common.pojo.CommonResult;
 import com.zjugis.framework.mybatis.core.query.LambdaQueryWrapperX;
@@ -65,6 +66,9 @@ public class ReportWorkloadServiceImpl implements ReportWorkloadService {
 
     @Override
     public List<ReportWorkloadRespVO> getReportWorkloadByRIds(List<Long> reportId) {
+        if (CollectionUtils.isEmpty(reportId)) {
+            return Collections.emptyList();
+        }
         List<ReportWorkloadRespVO> reportWorkloadList = ReportWorkloadConvert.INSTANCE.convertList(
                 reportWorkloadMapper.selectList(new LambdaQueryWrapperX<ReportWorkloadDO>().inIfPresent(ReportWorkloadDO::getReportId, reportId)));
         ProjectDto projectDto = new ProjectDto();