Просмотр исходного кода

1.补全日志中离职人员信息

WoNiu 4 лет назад
Родитель
Сommit
c5967cc39f

+ 17 - 13
src/main/java/com/galaxis/manatee/dao/ChuanyunProjectCostDao.java

@@ -4,6 +4,7 @@ import com.galaxis.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunMemberCostDO;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunProjectCostDO;
 import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -19,27 +20,30 @@ public interface ChuanyunProjectCostDao extends GalaxisRepository<ChuanyunProjec
      * 获取项目总工时成本
      * @return  项目总工时
      */
-    @Query(value="SELECT chuanyun_member_cost.object_id," +
-            "SUM(chuanyun_member_cost.cost) AS cost," +
-            "SUM(chuanyun_member_cost.total_hour) AS total_hour," +
-            "SUM(chuanyun_member_cost.person_days) AS person_days," +
-            "chuanyun_member_cost.project_type," +
-            "chuanyun_member_cost.status," +
-            "chuanyun_member_cost.project_id, " +
-            "chuanyun_member_cost.cost AS amount" +
-            " FROM chuanyun_member_cost " +
-            "GROUP BY chuanyun_member_cost.project_id,"+
-            "chuanyun_member_cost.status",
+    @Query(value="SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS total_hour," +
+            "SUM(chuanyun_self_work_hour.standard_work_hour)/8 AS person_days,chuanyun_self_work_hour.project_id," +
+            "chuanyun_self_work_hour.project_type,chuanyun_self_work_hour.`status` ,chuanyun_self_work_hour.object_id \n" +
+            "FROM chuanyun_self_work_hour where project_id!='' GROUP BY chuanyun_self_work_hour.project_id,chuanyun_self_work_hour.project_type," +
+            "chuanyun_self_work_hour.`status`",
             nativeQuery = true)
     List<ChuanyunProjectCostDO> getProjectCost();
 
+    @Query(value="SELECT SUM(chuanyun_self_work_hour.standard_work_hour) AS total_hour," +
+            "SUM(chuanyun_self_work_hour.standard_work_hour)/8 AS person_days,chuanyun_self_work_hour.project_id," +
+            "chuanyun_self_work_hour.project_type,chuanyun_self_work_hour.`status` ,chuanyun_self_work_hour.object_id \n" +
+            "FROM chuanyun_self_work_hour  WHERE project_id=?1 AND project_type = ?2 AND `status`=2 " +
+            "GROUP BY chuanyun_self_work_hour.project_id,chuanyun_self_work_hour.project_type," +
+            "chuanyun_self_work_hour.`status`",
+            nativeQuery = true)
+    ChuanyunProjectCostDO getProcessProjectCost(@Param("projectId")String projectId,@Param("projectType")String projectType);
+
     /**
      * 根据项目号获取工时数据
      * @param projectId 项目Id
      * @return  项目工时对象
      */
-    ChuanyunProjectCostDO findByProjectId(String projectId);
+    ChuanyunProjectCostDO findByProjectIdAndProjectTypeAndStatus(String projectId,String projectType,String status);
 
     @Transactional
-    void deleteAllByStatus(String status);
+    void deleteByProjectIdAndProjectTypeAndStatus(String projectId,String projectType,String status);
 }

+ 0 - 2
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunProjectCostDO.java

@@ -39,9 +39,7 @@ public class ChuanyunProjectCostDO {
 
     private BigDecimal totalHour;
 
-    private BigDecimal cost;
 
     private BigDecimal personDays;
 
-    private BigDecimal amount;
 }

+ 21 - 3
src/main/java/com/galaxis/manatee/task/ChuanyunHumanResourceScheduledTask.java

@@ -60,7 +60,8 @@ public class ChuanyunHumanResourceScheduledTask {
     /**
      * 每天3点更新日志记录
      */
-    @Scheduled(cron = "0 0 1 * * *")
+//    @Scheduled(cron = "0 0 1 * * *")
+    @Scheduled(fixedDelay = 3600000L)
     private void updateLog() {
         var objectMapper = new ObjectMapper();
         var start = 0;
@@ -104,6 +105,17 @@ public class ChuanyunHumanResourceScheduledTask {
                         //针对前期测试数据,可能出现日志为空的情况,跳过不处理
                         chuanyunLogDO.getDayLogList().forEach(chuanyunDayLog -> {
                             try{
+                                //离职人员补全用户Id
+                                if (StringUtils.isEmpty(chuanyunLogDO.getUserId())){
+                                    var name="";
+                                    if (StringUtils.isEmpty(chuanyunDayLog.getContent())){
+                                        name=chuanyunLogDO.getName();
+                                    }else {
+                                        name=chuanyunDayLog.getContent();
+                                    }
+                                    chuanyunLogDO.setUserId(getCharacters(name));
+                                }
+
                                 if(!"生产项目".equals(chuanyunDayLog.getProjectType())&& StringUtils.isEmpty(chuanyunDayLog.getProjectId())){
                                     log.info(chuanyunLogDO+"");
                                 }else if(!"生产项目".equals(chuanyunDayLog.getProjectType())){
@@ -132,7 +144,7 @@ public class ChuanyunHumanResourceScheduledTask {
                 log.error(e.getMessage());
                 e.printStackTrace();
             }
-//            log.info(Instant.now().getEpochSecond()-startTime+"日志100条保存时间");
+            log.info(Instant.now().getEpochSecond()-startTime+"日志100条保存时间");
         }
         log.info("历史日志信息保存" + totalCount);
     }
@@ -242,7 +254,7 @@ public class ChuanyunHumanResourceScheduledTask {
         log.info("凯乐士薪酬项同步"+totalCount);
     }
 
-    @Scheduled(fixedDelay = 3600000L)
+//    @Scheduled(fixedDelay = 3600000L)
     private void updateRecentLog() {
         var objectMapper = new ObjectMapper();
         var start = 0;
@@ -317,4 +329,10 @@ public class ChuanyunHumanResourceScheduledTask {
         }
         log.info("最近的日志日志信息保存" + totalCount);
     }
+
+    private String getCharacters(String str){
+        String reg = "[^\u4e00-\u9fa5]";
+        str = str.replaceAll(reg, " ");
+        return str.trim();
+    }
 }

+ 59 - 36
src/main/java/com/galaxis/manatee/task/ChuanyunProjectScheduledTask.java

@@ -215,46 +215,33 @@ public class ChuanyunProjectScheduledTask {
     @Scheduled(fixedDelay = 3600000L)
     private void projectHour() {
         List<ChuanyunProjectCostDO> list1 = chuanyunProjectCostDao.getProjectCost();
-//        deleteExamineStatus(ChuanyunProjectTotalCostDO.SCHEMA_CODE,"F0000006");
-        chuanyunProjectCostDao.deleteAllByStatus("2");
+
         list1.forEach(chuanyunProjectCostDO -> {
-            //获取项目实施费用
-            ChuanyunReimbursementAmountDO chuanyunReimbursementAmountDO = chuanyunReimbursementAmountDao.getAmount(chuanyunProjectCostDO.getProjectId());
-            //人力成本
-            ChuanyunMonthLaborCostDO chuanyunMonthLaborCostDO = chuanyunMonthLaborCostDao.getTotalCost(chuanyunProjectCostDO.getProjectId());
             //更新数据库
-            ChuanyunProjectCostDO projectCostDO = new ChuanyunProjectCostDO();
-            if (chuanyunMonthLaborCostDO!=null){
-                projectCostDO.setCost(chuanyunMonthLaborCostDO.getAmount());
-            }
-            projectCostDO.setProjectType(chuanyunProjectCostDO.getProjectType());
-            projectCostDO.setProjectId(chuanyunProjectCostDO.getProjectId());
-            projectCostDO.setTotalHour(chuanyunProjectCostDO.getTotalHour());
-            projectCostDO.setStatus(chuanyunProjectCostDO.getStatus());
-            projectCostDO.setPersonDays(chuanyunProjectCostDO.getPersonDays());
-            if (chuanyunReimbursementAmountDO !=null) {
-                projectCostDO.setAmount(chuanyunReimbursementAmountDO.getTotalAmount());
-            }
-            ChuanyunProjectCostDO oldProjectDO = chuanyunProjectCostDao.findByProjectId(chuanyunProjectCostDO.getProjectId());
+            BigDecimal standard = new BigDecimal(8);
+            chuanyunProjectCostDO.setPersonDays(chuanyunProjectCostDO.getTotalHour().divide(standard,2,RoundingMode.HALF_UP));
+            ChuanyunProjectCostDO oldProjectDO = chuanyunProjectCostDao.findByProjectIdAndProjectTypeAndStatus(chuanyunProjectCostDO.getProjectId(),chuanyunProjectCostDO.getProjectType(),chuanyunProjectCostDO.getStatus());
             if (oldProjectDO !=null) {
                 chuanyunProjectCostDao.delete(oldProjectDO);
             }
-            chuanyunProjectCostDao.save(projectCostDO);
+            chuanyunProjectCostDao.save(chuanyunProjectCostDO);
+            //搜索是否有审批中的数据
+            ChuanyunProjectCostDO processDO = chuanyunProjectCostDao.getProcessProjectCost(chuanyunProjectCostDO.getProjectId(),chuanyunProjectCostDO.getProjectType());
+            if (processDO==null){
+                chuanyunProjectCostDao.deleteByProjectIdAndProjectTypeAndStatus(chuanyunProjectCostDO.getProjectId(),chuanyunProjectCostDO.getProjectType(),"2");
+                deleteExamineStatus(ChuanyunProjectTotalCostDO.SCHEMA_CODE,"F0000006","F0000001",chuanyunProjectCostDO.getProjectId(),"","","","","","","","","F0000004",chuanyunProjectCostDO.getProjectType());
+            }
+
             try {
-                ChuanyunProjectTotalCostDTO chuanyunProjectTotalCostDTO = new ChuanyunProjectTotalCostDTO();
+                ProjectTotalCostDTO chuanyunProjectTotalCostDTO = new ProjectTotalCostDTO();
                 chuanyunProjectTotalCostDTO.setProjectType(chuanyunProjectCostDO.getProjectType());
                 chuanyunProjectTotalCostDTO.setProjectId(chuanyunProjectCostDO.getProjectId());
-                if (chuanyunMonthLaborCostDO!=null){
-                    chuanyunProjectTotalCostDTO.setCost(chuanyunMonthLaborCostDO.getAmount());
-                }
                 chuanyunProjectTotalCostDTO.setStatus(chuanyunProjectCostDO.getStatus());
                 chuanyunProjectTotalCostDTO.setWorkHour(chuanyunProjectCostDO.getTotalHour());
                 chuanyunProjectTotalCostDTO.setPersonDays(chuanyunProjectCostDO.getPersonDays());
-                if (chuanyunReimbursementAmountDO !=null) {
-                    chuanyunProjectTotalCostDTO.setAmount(chuanyunReimbursementAmountDO.getTotalAmount());
-                }
                 List<String> matchers = new ArrayList<>();
                 matchers.add("F0000001_2,"+chuanyunProjectCostDO.getProjectId());
+                matchers.add("F0000004_2,"+chuanyunProjectCostDO.getProjectType());
                 matchers.add("F0000006_2,"+chuanyunProjectCostDO.getStatus());
                 var filter= Filter.instance(0,1,true,"And",matchers);
                 var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunProjectTotalCostDO.SCHEMA_CODE,filter);
@@ -383,6 +370,50 @@ public class ChuanyunProjectScheduledTask {
         });
     }
 
+    /**
+     * 删除状态为审核中数据
+     * @param schemaCode
+     * @param
+     */
+    public void deleteExamineStatus(String schemaCode,String statusCode,String projectCode,String projectId,String userCode,String userId,String yearCode,String year,String monthCode,String month,String weekCode,String week,String typeCode,String projectType) {
+        try {
+            List<String> matchers = new ArrayList<>();
+            matchers.add(statusCode+"_2,"+"2");
+            matchers.add(projectCode+"_2,"+projectId);
+            if (!StringUtils.isEmpty(userId)){
+                matchers.add(userCode+"_2,"+userId);
+            }
+            if (!StringUtils.isEmpty(year)){
+                matchers.add(yearCode+"_2,"+year);
+            }
+            if (!StringUtils.isEmpty(month)){
+                matchers.add(monthCode+"_2,"+month);
+            }
+            if (!StringUtils.isEmpty(week)){
+                matchers.add(weekCode+"_2,"+week);
+            }
+            if (!StringUtils.isEmpty(projectType)){
+                matchers.add(typeCode+"_2,"+projectType);
+            }
+            var filter= Filter.instance(0,Integer.MAX_VALUE,true,"And",matchers);
+            var chuanyunFindAllResponse=chuanYunManager.findAll(schemaCode,filter);
+            if (chuanyunFindAllResponse.getReturnData()!=null){
+                List<ChuanyunCommonDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
+                result.forEach(basicDO -> {
+                    ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.delete(schemaCode,basicDO.getObjectId());
+                    if(chuanyunSaveDTO.getSuccessful()){
+//                        log.info("删除状态为审核中数据成功");
+                    }else{
+                        log.warn("删除状态为审核中数据失败");
+                    }
+                });
+            }
+        }catch (Exception e) {
+            e.printStackTrace();
+            log.error(e.getMessage());
+        }
+    }
+
     @Data
     static
     class ChuanyunProjectMemberCostDTO {
@@ -436,7 +467,7 @@ public class ChuanyunProjectScheduledTask {
      */
     @Data
     static
-    class ChuanyunProjectTotalCostDTO{
+    class ProjectTotalCostDTO{
 
         /**
          * 项目ID
@@ -457,12 +488,6 @@ public class ChuanyunProjectScheduledTask {
         private BigDecimal workHour;
 
         /**
-         * 成本
-         */
-        @JsonProperty("F0000002")
-        private BigDecimal cost;
-
-        /**
          * 总人天
          */
         @JsonProperty("F0000005")
@@ -474,8 +499,6 @@ public class ChuanyunProjectScheduledTask {
         @JsonProperty("F0000006")
         private String status;
 
-        @JsonProperty("F0000007")
-        private BigDecimal amount;
     }
 
     @Data

+ 6 - 6
src/main/resources/application.yml

@@ -29,12 +29,12 @@ dingTalk:
     askForLeave: PROC-EF6Y0XWVO2-GBP690HMRWVELM4WJ0WT1-DEP53YII-PR1
 
 #阿里云
-aliyun:
-  access:
-    key:
-      id: ${ACCESS_KEY_ID}
-      secret: ${ACCESS_KEY_SECRET}
-    mobile: ${ALIYUN_MOBILE}
+#aliyun:
+#  access:
+#    key:
+#      id: ${ACCESS_KEY_ID}
+#      secret: ${ACCESS_KEY_SECRET}
+#    mobile: ${ALIYUN_MOBILE}
 #spring data jpa database
 spring:
   task: