Browse Source

修复推送里程碑消息Bug

seyason 2 years ago
parent
commit
cf08312ff5

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskController.java

@@ -292,7 +292,8 @@ public class TaskController {
         taskService.updateById(task);
         ArrayList<Integer> finishedTaskIds = Lists.list(task.getId());
         if (isFinishTask) {
-            taskService.notifyMileStoneFinish(user.getCompanyId(), finishedTaskIds);
+            List<Task> finishedMileStoneList = taskMapper.selectList(new QueryWrapper<Task>().select("id, name, project_id, finish_date").in("id", finishedTaskIds).eq("task_type", 1));
+            taskService.notifyMileStoneFinish(user.getCompanyId(), finishedMileStoneList);
         }
 
         //更新项目完成度

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/UserMapper.java

@@ -27,9 +27,9 @@ public interface UserMapper extends BaseMapper<User> {
                                                       @Param("companyId") Integer companyId,
                                                       @Param("departmentIds") List departmentIds, String keyword, Integer status, @Param("roleId") Integer roleId);
 
-    List<Map<String, Object>> getPushUserList(@Param("companyId") Integer companyId,Integer alertType);
+    List<Map<String, Object>> getPushUserList(@Param("companyId") Integer companyId,Integer alertType, String date);
 
-    List<Map<String, Object>> getPushDingdingUserList(@Param("alertTime") String alertTime);
+    List<Map<String, Object>> getPushDingdingUserList(@Param("alertTime") String alertTime, String date);
 
     List<Map<String, Object>> getProjectPushUserList(@Param("projectId") Integer projectId);
 

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskService.java

@@ -46,5 +46,5 @@ public interface TaskService extends IService<Task> {
 
     HttpRespMsg getMilestoneTaskList(Integer milestoneId);
 
-    public void notifyMileStoneFinish(Integer companyId, List<Integer> taskIdList);
+    public void notifyMileStoneFinish(Integer companyId, List<Task> taskList);
 }

+ 6 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -728,9 +728,12 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             fTask.setTaskStatus(1);
             LocalDate createDate = reportList.get(0).getCreateDate();
             fTask.setFinishDate(createDate);
-            //不能用Mapper更新,使用mapper更新会导致下面的taskService获取数据不是最新的,没有finshDate
-            taskService.update(fTask, new QueryWrapper<Task>().in("id", finishedTaskIds));
-            taskService.notifyMileStoneFinish(companyId, finishedTaskIds);
+            taskMapper.update(fTask, new QueryWrapper<Task>().in("id", finishedTaskIds));
+            //如果是里程碑,需要发送通知
+            List<Task> finishedMileStoneList = taskMapper.selectList(new QueryWrapper<Task>().select("id, name, project_id, finish_date").in("id", finishedTaskIds).eq("task_type", 1));
+            if (finishedMileStoneList.size() > 0) {
+                taskService.notifyMileStoneFinish(companyId, finishedMileStoneList);
+            }
         }
 
         int enginerring = companyMapper.selectById(companyId).getPackageEngineering();

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java

@@ -536,7 +536,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
     }
 
     @Override
-    public void notifyMileStoneFinish(Integer companyId, List<Integer> taskIdList) {
+    public void notifyMileStoneFinish(Integer companyId, List<Task> taskList) {
         DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         new Thread() {
             public void run() {
@@ -544,7 +544,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
                 //钉钉注册的公司
                 if (dingdingList.size() > 0) {
                     CompanyDingding dingding = dingdingList.get(0);
-                    List<Task> taskList = taskMapper.selectList(new QueryWrapper<Task>().in("id", taskIdList).eq("task_type", 1));
+//                    List<Task> taskList = taskMapper.selectList(new QueryWrapper<Task>().in("id", taskIdList).eq("task_type", 1));
                     for (Task task : taskList) {
                         String finishDate = dateTimeFormatter.format(task.getFinishDate());
                         Project project = projectMapper.selectById(task.getProjectId());

+ 11 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -307,12 +307,21 @@ public class TimingTask {
         }
         DateTimeFormatter dt = DateTimeFormatter.ofPattern("HH:mm");
         String str = dt.format(now);
+        String date = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(localDate);
         List<TimeType> typeList = timeTypeMapper.selectList(new QueryWrapper<TimeType>().isNotNull("alert_time")
                 .ge("alert_time", str));
         typeList.forEach(t->{
             if (str.equals(t.getAlertTime())) {
                 //发送推送提醒
-                List<Map<String, Object>> userList = userMapper.getPushUserList(t.getCompanyId(),t.getAlertType());
+                Company company = companyMapper.selectById(t.getCompanyId());
+                //开通了OA功能,有请假模块的,需要把当前请假的排除掉
+                List<Map<String, Object>> userList = null;
+                if (company.getPackageOa() == 1) {
+                    userList = userMapper.getPushUserList(t.getCompanyId(),t.getAlertType(), date);
+                } else {
+                    userList = userMapper.getPushUserList(t.getCompanyId(),t.getAlertType(), null);
+                }
+
                 List<WxCorpInfo> cpList = wxCorpInfoMapper.selectList(new QueryWrapper<WxCorpInfo>().eq("company_id", t.getCompanyId()));
                 userList.forEach(u->{
                     if (u.get("corpwxUserid") != null){
@@ -337,7 +346,7 @@ public class TimingTask {
             }
         });
 
-        List<Map<String, Object>> dingdingUserList = userMapper.getPushDingdingUserList(str);
+        List<Map<String, Object>> dingdingUserList = userMapper.getPushDingdingUserList(str, date);
         //钉钉平台的用批量发送, 每分钟5000个
         int minuteSize = 5000;
         int minuteTimes = dingdingUserList.size()/minuteSize + (dingdingUserList.size()%minuteSize==0?0:1);

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -607,7 +607,7 @@
     </select>
     <select id="getProjectCost" resultType="java.util.HashMap">
         SELECT project_id as projectId,basecost_id as basecostId, SUM(cost) AS cost FROM report WHERE company_id=#{companyId}
-        AND state = 1 and basecost_id > 0 AND project_id IN
+        AND (state = 0 or state = 1) and basecost_id > 0 AND project_id IN
         <foreach collection="projectIds" item="item" separator="," open="(" close=")" index="index">
             #{item}
         </foreach>
@@ -625,7 +625,7 @@
     </select>
 
     <select id="getOneProjectBaseCost" resultType="java.util.HashMap">
-        SELECT basecost_id as basecostId, IFNULL(SUM(cost), 0) AS cost FROM report WHERE state = 1 and basecost_id > 0 AND project_id = #{projectId} group by basecost_id
+        SELECT basecost_id as basecostId, IFNULL(SUM(cost), 0) AS cost FROM report WHERE (state = 0 or state = 1) and basecost_id > 0 AND project_id = #{projectId} group by basecost_id
     </select>
 
     <select id="getUserReportTimelinessRate" resultType="java.util.Map">

+ 7 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/UserMapper.xml

@@ -108,6 +108,10 @@
                 AND NOT EXISTS(SELECT 1 FROM report WHERE report.`creator_id` = a.id AND report.`create_date` = DATE_FORMAT(NOW(), '%Y-%m-%d'))
             </otherwise>
         </choose>
+        <if test="date != null">
+            and not exists (select 1 from leave_sheet where owner_id = a.id and start_date &lt;= #{date} and end_date &gt;= #{date} and leave_sheet.status = 0)
+        </if>
+
     </select>
 
 
@@ -118,6 +122,9 @@
         AND a.is_active = 1
         AND a.report_status=0
         AND NOT EXISTS(SELECT 1 FROM report WHERE report.`creator_id` = a.id AND ((report.`create_date` = DATE_FORMAT(date_sub(NOW(),interval 1 day), '%Y-%m-%d') and time_type.alert_type=1)or(report.`create_date` = DATE_FORMAT(NOW(), '%Y-%m-%d') and time_type.alert_type=0)))
+        <if test="date != null">
+            and not exists (select 1 from leave_sheet where owner_id = a.id and start_date &lt;= #{date} and end_date &gt;= #{date} and leave_sheet.status = 0)
+        </if>
         order by a.company_id
     </select>
     <!--获取项目的参与人的推送id -->