Browse Source

1.更新日工时统计

WoNiu 4 years ago
parent
commit
13a5a903ec

+ 37 - 1
src/main/java/com/galaxis/manatee/task/WorkHourStatisticsRecently.java

@@ -42,8 +42,9 @@ public class WorkHourStatisticsRecently {
     private final ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao;
     private final ChuanyunSelfCostDao chuanyunSelfCostDao;
     private final ChuanyunProjectCostDao chuanyunProjectCostDao;
+    private final ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao;
 
-    public WorkHourStatisticsRecently(ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunSelfCostDao chuanyunSelfCostDao, ChuanyunProjectCostDao chuanyunProjectCostDao) {
+    public WorkHourStatisticsRecently(ChuanYunManager chuanYunManager, ChuanyunLogDao chuanyunLogDao, ChuanyunGroupProjectDao chuanyunGroupProjectDao, ChuanyunUserCompanyDao chuanyunUserCompanyDao, ChuanyunWorkHourDao chuanyunWorkHourDao, ChuanyunSelfWorkHourDao chuanyunSelfWorkHourDao, ChuanyunWeekMemberHourDao chuanyunWeekMemberHourDao, ChuanyunSelfCostDao chuanyunSelfCostDao, ChuanyunProjectCostDao chuanyunProjectCostDao, ChuanyunUserDepartmentNameDao chuanyunUserDepartmentNameDao) {
         this.chuanYunManager = chuanYunManager;
         this.chuanyunLogDao = chuanyunLogDao;
         this.chuanyunGroupProjectDao = chuanyunGroupProjectDao;
@@ -53,6 +54,7 @@ public class WorkHourStatisticsRecently {
         this.chuanyunWeekMemberHourDao = chuanyunWeekMemberHourDao;
         this.chuanyunSelfCostDao = chuanyunSelfCostDao;
         this.chuanyunProjectCostDao = chuanyunProjectCostDao;
+        this.chuanyunUserDepartmentNameDao = chuanyunUserDepartmentNameDao;
     }
 
     @Scheduled(fixedDelay = 3600000L)
@@ -111,6 +113,25 @@ public class WorkHourStatisticsRecently {
                         //根据projectId获取code,如果是生产项目,则不用处理
                         //针对前期测试数据,可能出现日志为空的情况,跳过不处理
                         chuanyunLogDO.getDayLogList().forEach(chuanyunDayLog -> {
+                            //离职人员补全用户Id及部门ID
+                            if (StringUtils.isEmpty(chuanyunLogDO.getUserId())){
+                                var name="";
+                                if (StringUtils.isEmpty(chuanyunDayLog.getContent())){
+                                    name=chuanyunLogDO.getName();
+                                }else {
+                                    name=chuanyunDayLog.getContent();
+                                }
+                                chuanyunLogDO.setUserId(getCharacters(name));
+                                ChuanyunUserDepartmentNameDO chuanyunUserDepartmentNameDO = chuanyunUserDepartmentNameDao.findByUserName(chuanyunLogDO.getUserId());
+                                if (chuanyunUserDepartmentNameDO!=null){
+                                    chuanyunLogDO.setDepartmentName(chuanyunUserDepartmentNameDO.getDepartmentName());
+                                }
+                            }else {
+                                ChuanyunUserCompanyDO chuanyunUserCompanyDO = chuanyunUserCompanyDao.findByUserId(chuanyunLogDO.getUserObject().getObjectId());
+                                if (chuanyunUserCompanyDO!=null){
+                                    chuanyunLogDO.setDepartmentName(getDepartmentName(chuanyunUserCompanyDO.getDepartment()));
+                                }
+                            }
                             try{
                                 if(!"生产项目".equals(chuanyunDayLog.getProjectType())&& StringUtils.isEmpty(chuanyunDayLog.getProjectId())){
                                     log.info(chuanyunLogDO+"");
@@ -647,4 +668,19 @@ public class WorkHourStatisticsRecently {
             log.error(e.getMessage());
         }
     }
+
+    private String getCharacters(String str){
+        String reg = "[^\u4e00-\u9fa5]";
+        str = str.replaceAll(reg, " ");
+        return str.trim();
+    }
+
+    private String getDepartmentName(String str){
+        if (str.contains("/")){
+            String[] department = str.split("/");
+            return department[department.length-1];
+        }else {
+            return str;
+        }
+    }
 }