Prechádzať zdrojové kódy

钉钉同步工号,日报自动审批修复BUG

seyason 2 rokov pred
rodič
commit
6c3adaa025

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

@@ -164,7 +164,7 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
                                     userMapper.updateById(manageDeptOldUser);
                                 }
 
-                                //TODO: 如果存在审核中的日报,需要切换部门的审核人为新的负责人, 需测试验证
+                                //如果存在审核中的日报,需要切换部门的审核人为新的负责人
                                 List<Report> oldReportList = reportMapper.selectList(new QueryWrapper<Report>().select("id")
                                         .eq("audit_dept_managerid", manageDeptOldUser.getId())
                                         .eq("audit_deptid", departmentId)

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java

@@ -926,6 +926,7 @@ public class DingDingServiceImpl implements DingDingService {
                     .setName(userJson.getString("name"))
                     .setDingdingUserid(dingdingUserid)
                     .setDingdingUnionid(userJson.getString("unionid"))
+                    .setJobNumber(userJson.getString("job_number"))
                     .setColor(ColorUtil.randomColor());
 
 
@@ -958,6 +959,11 @@ public class DingDingServiceImpl implements DingDingService {
                         userMapper.updateById(oldUser);
                         System.out.println("更新用户姓名==" + oldUser.getName());
                     }
+                    //可能需要更新工号
+                    if (!StringUtils.isEmpty(userJson.getString("job_number")) && (oldUser.getJobNumber() == null || !oldUser.getJobNumber().equals(userJson.getString("job_number")))) {
+                        oldUser.setJobNumber(userJson.getString("job_number"));
+                        userMapper.updateById(oldUser);
+                    }
                     if (oldList.size() > 1) {
                         System.err.println("Exception 存在重复用户 dingdingUserId="+oldUser.getDingdingUserid()+", name="+oldUser.getName()+", companyId"+oldUser.getCompanyId());
                     }

+ 38 - 36
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -4040,45 +4040,47 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
 
     @Override
     public HttpRespMsg fixIssue() {
-        Integer companyId = 862;
-        Company company = companyMapper.selectById(companyId);
-        System.out.println("========处理公司======="+company.getCompanyName());
-        //查找某日某天的日报,项目上已经都审核通过,但是state = 0,并且没有走到下一个阶段的
-        List<Report> reportList = reportMapper.selectList(new QueryWrapper<Report>().eq("company_id", companyId));
-        List<String> creatorIds = reportList.stream().map(Report::getCreatorId).distinct().collect(Collectors.toList());
-        List<LocalDate> dateList = reportList.stream().map(Report::getCreateDate).distinct().collect(Collectors.toList());
-        List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
-        List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
-        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-
-        for (String creator : creatorIds) {
-            User user = userList.stream().filter(u -> u.getId().equals(creator)).findFirst().get();
-            String creatorName = user.getName();
-            String dateStr = "";
-            for (LocalDate date : dateList) {
-                //某人某天的全部日报
-                List<Report> userDayReport = reportList.stream().filter(r -> r.getCreatorId().equals(creator) && r.getCreateDate().isEqual(date)).collect(Collectors.toList());
-                if (userDayReport.size() > 0) {
-                    //有当前的日报
-                    boolean isAllProjectAuditPass = !userDayReport.stream().anyMatch(r->r.getProjectAuditState() != 1);
-                    boolean isAllState0 = !userDayReport.stream().anyMatch(r->r.getState() != 0);
-
-                    if (isAllProjectAuditPass && isAllState0) {
-                        //当前的日报项目全部通过,但是日报本身还是待审核状态的,需要更新
-                        dateStr +=dtf.format(date) + ", ";
-                        List<Integer> rids = userDayReport.stream().map(Report::getId).collect(Collectors.toList());
-                        //测试: 翁浩勃
-//                        if ("翁浩勃".equals(creatorName)) {
-//
-//                        }
-                        selfUpdateToNextWorkFlow(companyId, user, rids, allDepts);
-                    }
-                }
+        //
+
+        //处理被误操作为自动审核的数据,
+        List<AuditWorkflowTimeSetting> settings = auditWorkflowTimeSettingMapper.selectList(new QueryWrapper<AuditWorkflowTimeSetting>().select("distinct company_id"));
+        System.out.println("有审批流的公司size="+settings.size());
+
+        List<Report> reportList = reportMapper.selectList(
+                new QueryWrapper<Report>().select("company_id, id, state, project_auditor_id")
+            .eq("report_auto_approve", 1).ne("company_id", 767));
+        System.out.println("查询到数据=="+reportList.size());
+        int dealCnt = 0;
+        List<Report> auditWorkflowReportList = new ArrayList<>();
+        for (Report report : reportList) {
+            if (!settings.stream().anyMatch(s->s.getCompanyId().equals(report.getCompanyId()))) {
+                //无审批流的公司,直接通过
+                report.setReportAutoApprove(0);
+                report.setProjectAuditState(0);
+                report.setState(0);
+                dealCnt++;
+            } else {
+                auditWorkflowReportList.add(report);
             }
-            if (!StringUtils.isEmpty(dateStr)) {
-                System.out.println(creatorName+"  " + dateStr);
+        }
+        System.out.println("已处理无审批流的日报size="+dealCnt);
+        System.out.println("有审批流的日报size="+auditWorkflowReportList.size());
+        //检查哪些是项目没审核的
+        int projectAuditManulPassCnt = 0;
+        for (Report report : auditWorkflowReportList) {
+            int count = reportLogMapper.selectCount(new QueryWrapper<ReportLog>()
+                    .like("msg", "审核通过了日报").eq("operator_id", report.getProjectAuditorId())
+                    .eq("report_ids", report.getId()));
+            if (count == 0) {
+                //模糊匹配一下
+                reportLogMapper.selectList(new QueryWrapper<ReportLog>()
+                        .like("msg", "审核通过了日报").eq("operator_id", report.getProjectAuditorId())
+                        .like("report_ids", report.getId()));
+            } else {
+                projectAuditManulPassCnt++;
             }
         }
+        System.out.println("手动审核过的日报size="+projectAuditManulPassCnt);
 
         return new HttpRespMsg();
     }

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

@@ -249,7 +249,7 @@ public class TimingTask {
                     continue;
                 }
                 LocalDate localDate = LocalDate.now().minusDays(reportAutoApproveDays);
-                List<Report> reports = reportMapper.selectList(new QueryWrapper<Report>().eq("state", 0).le("create_time", localDate.atTime(LocalTime.now())));
+                List<Report> reports = reportMapper.selectList(new QueryWrapper<Report>().eq("company_id", company.getId()).eq("state", 0).le("create_time", localDate.atTime(LocalTime.now())));
                 for (Report report : reports) {
                     report.setState(1);
                     //项目审核的状态修改成已审核
@@ -447,7 +447,7 @@ public class TimingTask {
         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));
+                .eq("alert_time", str));
         typeList.forEach(t->{
             if (str.equals(t.getAlertTime())) {
                 //发送推送提醒

+ 5 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/resources/application-prod.yml

@@ -17,9 +17,11 @@ spring:
     username: root
     password: Ziyu20141026!@@
     hikari:
-      maximum-pool-size: 10
-      minimum-idle: 3
-      max-lifetime: 30000
+      maximum-pool-size: 60
+      minimum-idle: 10
+      max-lifetime: 180000
+      # 数据库连接超时时间,默认30秒,即30000
+      connection-timeout: 60000
       connection-test-query: SELECT 1
     #######redis配置######
     # redis
@@ -82,8 +84,6 @@ mybatis:
 upload:
   path: /www/staticproject/timesheet/upload/
 
-excludeUrls: /report/getReportListByToken
-
 
 
 ##actuator健康检查配置

+ 3 - 0
fhKeeper/formulahousekeeper/octopus/src/views/customer/list.vue

@@ -39,6 +39,9 @@
             <el-table-column prop="staffCountMax" label="人数上限"  min-width="80" align="center">
             </el-table-column>
             <el-table-column prop="activeUserCount" label="在职人数"  min-width="80" align="center">
+                <template slot-scope="scope">
+                    <div :style="'color:'+(parseInt(scope.row.activeUserCount)>parseInt(scope.row.staffCountMax)?'red':'')">{{scope.row.activeUserCount}}</div>
+                </template>
             </el-table-column>
             <el-table-column prop="packageWorktime" label="使用版本" align="left" min-width="500" header-align="center">
                 <template slot-scope="scope">

+ 2 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -83,9 +83,9 @@
                                 <el-link type="primary" :underline="false" @click="showBaseCostItemDialog">基线成本项</el-link>
                             </el-dropdown-item>
                             <!-- <el-dropdown-item v-if="user.company.packageProject == 1 && user.companyId == '936'"> -->
-                            <el-dropdown-item>
+                            <!-- <el-dropdown-item >
                                 <el-link type="primary" :underline="false" @click="keyNodesIsShow = true">关键节点项</el-link>
-                            </el-dropdown-item>
+                            </el-dropdown-item> -->
                             <el-dropdown-item v-if="permissions.projectClassification">
                                 <el-link type="primary" :underline="false" @click="showClfDialog = true">分类管理</el-link>
                             </el-dropdown-item>