Ver Fonte

周工时统计

xuj há 4 anos atrás
pai
commit
7b6f80873a

+ 11 - 4
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunDayWorkAbcDO.java

@@ -6,11 +6,9 @@ import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.hibernate.annotations.GenericGenerator;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import javax.persistence.*;
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 
 /**
  * Created by IntelliJ IDEA.
@@ -22,8 +20,11 @@ import java.math.BigDecimal;
 @Data
 @Entity(name = "CHUANYUN_DAY_WORK_ABC")
 @JsonIgnoreProperties(ignoreUnknown = true)
+@Table(indexes = {@Index(name="project_Id_Code_Name", columnList="projectId,projectCode,projectName", unique=false)})
 public class ChuanyunDayWorkAbcDO {
 
+    public static final String SCHEMA_CODE = "D00178923542f48b44a4c10a579e94f197b1f81";
+
     @Id
     @JsonProperty(value = "ObjectId")
     private String objectId;
@@ -47,6 +48,12 @@ public class ChuanyunDayWorkAbcDO {
     private String projectName;
 
     /**
+     * 每天工时
+     */
+    @JsonProperty("day_log_date")
+    private LocalDateTime dayLogDate;
+
+    /**
      * 总工时
      */
     @JsonProperty("total_time")

+ 7 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunLogDO.java

@@ -56,6 +56,13 @@ public class ChuanyunLogDO extends BasicDO{
     @DateTimeFormat(pattern = "yyyy/MM/dd HH:mm:ss")
     @JsonProperty("logDate")
     private LocalDateTime logDate;
+
+    /**
+     * 周数
+     */
+    @JsonProperty("weekNumber")
+    private int weekNumber;
+
     /**
      * 日期
      */

+ 2 - 3
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunSelfWorkHourDO.java

@@ -10,9 +10,7 @@ import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.hibernate.annotations.GenericGenerator;
 
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
+import javax.persistence.*;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
@@ -23,6 +21,7 @@ import java.time.LocalDateTime;
 @Data
 @Entity(name = "CHUANYUN_SELF_WORK_HOUR")
 @JsonIgnoreProperties(ignoreUnknown = true)
+@Table(indexes = {@Index(name="project_user_hour", columnList="projectId,userId,standardWorkHour", unique=false)})
 public class ChuanyunSelfWorkHourDO {
 
     @Id

+ 3 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunUserCompanyDO.java

@@ -8,6 +8,8 @@ import lombok.EqualsAndHashCode;
 import lombok.extern.slf4j.Slf4j;
 
 import javax.persistence.Entity;
+import javax.persistence.Index;
+import javax.persistence.Table;
 import javax.persistence.Transient;
 
 /**
@@ -20,6 +22,7 @@ import javax.persistence.Transient;
 @Data
 @Entity(name = "CHUANYUN_USER_COMPANY")
 @JsonIgnoreProperties(ignoreUnknown = true)
+@Table(indexes = {@Index(name="user_Id_Type", columnList="userId,userType", unique=false)})
 public class ChuanyunUserCompanyDO extends BasicDO{
 
     /**

+ 30 - 14
src/main/java/com/galaxis/manatee/entity/chuanyun/dto/ChuanyunDayWorkAbcDTO.java

@@ -1,7 +1,12 @@
 package com.galaxis.manatee.entity.chuanyun.dto;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunDayWorkAbcDO;
 import lombok.Data;
+import org.springframework.beans.BeanUtils;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
 
 /**
  * Created by IntelliJ IDEA.
@@ -11,26 +16,37 @@ import lombok.Data;
 @Data
 public class ChuanyunDayWorkAbcDTO {
 
-    @JsonProperty("project_id")
+    @JsonProperty("F0000008")
     private String projectId;
 
-//    @JsonProperty("project_code")
-//    private String projectCode;
-//
-//    @JsonProperty("project_name")
-//    private String projectName;
+    @JsonProperty("F0000001")
+    private String projectCode;
+
+    @JsonProperty("F0000002")
+    private String projectName;
+
+    @JsonProperty("F0000003")
+    private BigDecimal totalTime;
+
+    @JsonProperty("F0000004")
+    private BigDecimal planTime;
 
-    @JsonProperty("total_time")
-    private String totalTime;
+    @JsonProperty("F0000005")
+    private BigDecimal sellTime;
 
-    @JsonProperty("paln_time")
-    private String planTime;
+    @JsonProperty("F0000006")
+    private BigDecimal otherTime;
 
-    @JsonProperty("sell_time")
-    private String sellTime;
+    @JsonProperty("F0000007")
+    private String remark;
 
-    @JsonProperty("other_time")
-    private String otherTime;
+    @JsonProperty("F0000009")
+    private LocalDateTime dayLogDate;
 
+    public static ChuanyunDayWorkAbcDTO fromChuanyunDayWorkAbcDTO(ChuanyunDayWorkAbcDO chuanyunDayWorkAbcDO) {
+        ChuanyunDayWorkAbcDTO chuanyunDayWorkAbcDTO = new ChuanyunDayWorkAbcDTO();
+        BeanUtils.copyProperties(chuanyunDayWorkAbcDO, chuanyunDayWorkAbcDTO);
+        return chuanyunDayWorkAbcDTO;
+    }
 
 }

+ 49 - 8
src/main/java/com/galaxis/manatee/task/WorkHourAnalysis.java

@@ -1,15 +1,23 @@
 package com.galaxis.manatee.task;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.galaxis.manatee.dao.ChuanyunDayWorkAbcDao;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunAskForLeaveDO;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunDayWorkAbcDO;
+import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunDayWorkAbcDTO;
+import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunFindAllBizDTO;
+import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunSaveDTO;
+import com.galaxis.manatee.entity.chuanyun.dto.Filter;
+import com.galaxis.manatee.manager.ChuanYunManager;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.sql.Timestamp;
 import java.time.Instant;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.time.LocalDateTime;
+import java.util.*;
 
 /**
  * @author zcj
@@ -22,13 +30,44 @@ public class WorkHourAnalysis {
 
     private final ChuanyunDayWorkAbcDao chuanyunDayWorkAbcDao;
 
-    public WorkHourAnalysis(ChuanyunDayWorkAbcDao chuanyunDayWorkAbcDao) {
+    private final ChuanYunManager chuanYunManager;
+
+    public WorkHourAnalysis(ChuanyunDayWorkAbcDao chuanyunDayWorkAbcDao,ChuanYunManager chuanYunManager) {
         this.chuanyunDayWorkAbcDao = chuanyunDayWorkAbcDao;
+        this.chuanYunManager = chuanYunManager;
     }
 
-    //    @Scheduled(fixedDelay = 3600000L)
+        @Scheduled(fixedDelay = 3600000L)
     private void standardDayWorkAbcHour() {
         standardDayAbcHour();
+           // standardChuanyunDayWorkAbcHour();
+    }
+
+    private void standardChuanyunDayWorkAbcHour() {
+        var objectMapper = new ObjectMapper();
+        List<ChuanyunDayWorkAbcDO> dayWorkAbcDOList = chuanyunDayWorkAbcDao.findAll();
+        dayWorkAbcDOList.forEach(dayWork -> {
+            try {
+                var putString = objectMapper.writeValueAsString(ChuanyunDayWorkAbcDTO.fromChuanyunDayWorkAbcDTO(dayWork));
+                ChuanyunSaveDTO chuanyunSaveDTO;
+                List<String> mathers = new ArrayList<>();
+                mathers.add("F0000001_2," + dayWork.getProjectCode());
+                var filter = Filter.instance(0, 1, true, "And", mathers);
+                ChuanyunFindAllBizDTO<LinkedHashMap<String, String>> chuanyunFindAllResponse = chuanYunManager.findAll(ChuanyunDayWorkAbcDO.SCHEMA_CODE, filter);
+                if(chuanyunFindAllResponse.getReturnData() == null) {
+                    chuanyunSaveDTO = chuanYunManager.save(ChuanyunDayWorkAbcDO.SCHEMA_CODE,putString,true);
+                }else{
+                    chuanyunSaveDTO = chuanYunManager.update(ChuanyunDayWorkAbcDO.SCHEMA_CODE,chuanyunFindAllResponse.getReturnData().getBizObjectArray().get(0).get("ObjectId"),putString);
+                }
+                if(chuanyunSaveDTO.getSuccessful()){
+//                        log.info("新增请假信息成功");
+                }else{
+                    log.warn("新增周工时数据信息失败");
+                }
+            }catch(Exception e) {
+                e.printStackTrace();
+            }
+        });
     }
 
     /**
@@ -44,16 +83,17 @@ public class WorkHourAnalysis {
                 String projecrtName = (String)dayWork.get("project_name");
                 String projectCode = (String)dayWork.get("project_code");
                 BigDecimal totalTime = (BigDecimal)dayWork.get("total_time");
+                LocalDateTime dayLogDate = ((Timestamp)dayWork.get("day_log_date")).toLocalDateTime();
                 ChuanyunDayWorkAbcDO dayWorkAbcDO = new ChuanyunDayWorkAbcDO();
-                ChuanyunDayWorkAbcDO planDayWorkAbc = chuanyunDayWorkAbcDao.queryDayWorkAbcTotalTime(projectId, 0);
+                ChuanyunDayWorkAbcDO planDayWorkAbc = chuanyunDayWorkAbcDao.queryDayWorkAbcTotalTime(projectId,0);
                 if(planDayWorkAbc != null) {
                     dayWorkAbcDO.setPlanTime(planDayWorkAbc.getTotalTime());
                 }
-                ChuanyunDayWorkAbcDO sellDayWorkAbc = chuanyunDayWorkAbcDao.queryDayWorkAbcTotalTime(projectId, 1);
+                ChuanyunDayWorkAbcDO sellDayWorkAbc = chuanyunDayWorkAbcDao.queryDayWorkAbcTotalTime(projectId,1);
                 if(sellDayWorkAbc != null) {
                     dayWorkAbcDO.setSellTime(sellDayWorkAbc.getTotalTime());
                 }
-                ChuanyunDayWorkAbcDO otherWorkAbc = chuanyunDayWorkAbcDao.queryDayWorkAbcTotalTime(projectId, 2);
+                ChuanyunDayWorkAbcDO otherWorkAbc = chuanyunDayWorkAbcDao.queryDayWorkAbcTotalTime(projectId,2);
                 if(otherWorkAbc != null) {
                     dayWorkAbcDO.setOtherTime(otherWorkAbc.getTotalTime());
                 }
@@ -66,6 +106,7 @@ public class WorkHourAnalysis {
                 dayWorkAbcDO.setProjectCode(projectCode);
                 dayWorkAbcDO.setProjectName(projecrtName);
                 dayWorkAbcDO.setTotalTime(totalTime);
+                dayWorkAbcDO.setDayLogDate(dayLogDate);
                 chuanyunDayWorkAbcDao.save(dayWorkAbcDO);
             }catch(Exception e) {
                 log.error(e.getMessage());