Kaynağa Gözat

Merge branch '1.0' of https://codeup.aliyun.com/5ec7ea24405cdab50f3fd8f0/galaxis/manatee into 1.0

xuj 4 yıl önce
ebeveyn
işleme
89907af713

+ 30 - 0
src/main/java/com/galaxis/manatee/dao/ChuanyunWeekMemberHourDao.java

@@ -0,0 +1,30 @@
+package com.galaxis.manatee.dao;
+
+import com.galaxis.capsule.util.GalaxisRepository;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunProjectCostDO;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunWeekMemberHourDO;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface ChuanyunWeekMemberHourDao extends GalaxisRepository<ChuanyunWeekMemberHourDO,String> {
+
+    /**
+     * 人员-项目-周度工时汇总
+     * @return
+     */
+    @Query(value="SELECT chuanyun_self_work_hour.object_id,WEEKOFYEAR(chuanyun_self_work_hour.day_log_date) AS week,project_id,user_id,SUM(standard_work_hour)AS standard_work_hour,project_type,`status`" +
+            "FROM chuanyun_self_work_hour WHERE project_id !='' GROUP BY chuanyun_self_work_hour.project_id,chuanyun_self_work_hour.user_id,WEEKOFYEAR(chuanyun_self_work_hour.day_log_date),chuanyun_self_work_hour.`status`",nativeQuery = true)
+    List<ChuanyunWeekMemberHourDO> getWeekMemberHour();
+
+    /**
+     * 项目人员周度是否存在
+     * @param projectId
+     * @param userId
+     * @param week
+     * @return
+     */
+    ChuanyunWeekMemberHourDO findByProjectIdAndUserIdAndWeekAndStatusAndProjectType(String projectId,String userId,String week,String status,String projectType);
+}

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

@@ -35,8 +35,8 @@ public class ChuanyunMonthLaborCostDO extends BasicDO{
     @JsonProperty("F0000003")
     private BigDecimal amount;
 
-    @JsonSerialize(using = LocalDateTimeSerializer.class)
-    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    @JsonSerialize(using = ChuanyunLocalDateTimeSerializer.class)
+    @JsonDeserialize(using = ChuanyunLocalDateTimeDeserializer.class)
     @JsonProperty("F0000002")
     private LocalDateTime logDate;
 

+ 40 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunOutDepartmentDO.java

@@ -0,0 +1,40 @@
+package com.galaxis.manatee.entity.chuanyun.data.object;
+
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.galaxis.capsule.bo.ChuanyunObject;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.persistence.Entity;
+import javax.persistence.Transient;
+
+@Slf4j
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Entity(name = "CHUANYUN_OUT_DEPARTMENT")
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ChuanyunOutDepartmentDO extends BasicDO{
+
+
+    /**
+     * 表名
+     */
+    public static final String SCHEMA_CODE ="D00178915f541c1aeb948e5a7f6b91cffc01d6f";
+
+    @JsonProperty("F0000001")
+    private String department;
+
+    /**
+     * 人员所属部门对象
+     */
+    @Transient
+    @JsonProperty("F0000001Object")
+    private ChuanyunObject departmentObject;
+
+
+    @JsonProperty("F0000002")
+    private String outDepartment;
+}

+ 64 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunProjectMemberWeekHourDO.java

@@ -0,0 +1,64 @@
+package com.galaxis.manatee.entity.chuanyun.data.object;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.persistence.Entity;
+import java.math.BigDecimal;
+
+@Slf4j
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Entity
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ChuanyunProjectMemberWeekHourDO extends BasicDO{
+    /**
+     * 表名
+     */
+    public static final String SCHEMA_CODE ="D001789Sffuni6ej7u55hkaw0xwj9nh22";
+
+    /**
+     * 项目ID
+     */
+    @JsonProperty("F0000001")
+    private String projectId;
+
+    /**
+     * 用户ID
+     */
+    @JsonProperty("F0000002")
+    private String userId;
+
+    /**
+     * 项目类型
+     */
+    @JsonProperty("F0000003")
+    private String projectType;
+
+    /**
+     * 总工时
+     */
+    @JsonProperty("F0000004")
+    private BigDecimal totalHour;
+
+    /**
+     * 总人天
+     */
+    @JsonProperty("F0000005")
+    private BigDecimal personDays;
+
+    /**
+     * 周数
+     */
+    @JsonProperty("F0000006")
+    private String week;
+
+    /**
+     * 流程状态
+     */
+    @JsonProperty("F0000007")
+    private String hourStatus;
+}

+ 10 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunReimbursementDO.java

@@ -184,6 +184,12 @@ public class ChuanyunReimbursementDO extends BasicDO{
     @JsonProperty("F0000081")
     private String beneficiaryCostId;
 
+    @JsonProperty("F0000077")
+    private String department;
+
+    @JsonProperty("F0000112")
+    private String outDepartment;
+
     /**
      * 受益成本中心编码
      * todo 由beneficiaryCostId获得
@@ -208,4 +214,8 @@ public class ChuanyunReimbursementDO extends BasicDO{
     @Transient
     @JsonProperty("F0000001Object")
     private ChuanyunObject reimburseUserObject;
+
+    @Transient
+    @JsonProperty("F0000077Object")
+    private ChuanyunObject departmentObject;
 }

+ 40 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunWeekMemberHourDO.java

@@ -0,0 +1,40 @@
+package com.galaxis.manatee.entity.chuanyun.data.object;
+
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+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 java.math.BigDecimal;
+
+@Slf4j
+@Data
+@Entity(name = "CHUANYUN_WEEK_MEMBER_HOUR")
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ChuanyunWeekMemberHourDO {
+
+    @Id
+    @GeneratedValue(generator = "idGeneratorUser")
+    @GenericGenerator(name ="idGeneratorUser" ,strategy="com.galaxis.capsule.util.GalaxisIdGenerator")
+    private Long objectId;
+
+    private String userId;
+
+    private String projectType;
+
+    private String projectId;
+
+    /**
+     * 流程状态
+     */
+    private String status;
+
+    private String week;
+
+    private BigDecimal standardWorkHour;
+
+}

+ 11 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/dto/ChuanyunWebServiceDTO.java

@@ -0,0 +1,11 @@
+package com.galaxis.manatee.entity.chuanyun.dto;
+
+import lombok.Data;
+
+@Data
+public class ChuanyunWebServiceDTO {
+
+    private String Message;
+
+    private String ResultCode;
+}

+ 23 - 39
src/main/java/com/galaxis/manatee/task/ChuanyunBasicDataScheduledTask.java

@@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.galaxis.capsule.dto.PageDTO;
 import com.galaxis.manatee.constant.ChuanYunConstant;
 import com.galaxis.manatee.dao.*;
@@ -12,6 +14,8 @@ import com.galaxis.manatee.entity.chuanyun.dto.*;
 import com.galaxis.manatee.exception.BigSizeException;
 import com.galaxis.manatee.manager.ChuanYunManager;
 import com.galaxis.manatee.manager.ClawFeign;
+import com.galaxis.manatee.util.ChuanyunLocalDateTimeDeserializer;
+import com.galaxis.manatee.util.ChuanyunLocalDateTimeSerializer;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -94,14 +98,13 @@ public class ChuanyunBasicDataScheduledTask {
     public void getCostCollectionManually() {this.getCostCollection();}
 
     public void getGroupProjectForSynchronizationManually() {this.getGroupProjectForSynchronization();}
+
+
     /**
      * 定时将氚云中的数据保存到manatee
      */
     @Scheduled(fixedDelay = 3600000L)
     private void getDataFromChuanyun() {
-
-        //项目人力成本
-        saveLaborCost();
         //钉钉请假
         saveAskForLeave();
         //专项费用分摊
@@ -127,9 +130,9 @@ public class ChuanyunBasicDataScheduledTask {
         //获取供应商
         getSupplier();
         //项目物料成本
-        savePurCost();
+//        savePurCost();
         //项目收付款
-        saveCashFlow();
+//        saveCashFlow();
 
     }
 
@@ -198,8 +201,6 @@ public class ChuanyunBasicDataScheduledTask {
                         chuanyunGroupProjectDO.setIsCreate(projectDO.getIsCreate());
                         chuanyunGroupProjectDao.delete(tmpGroupProjectDO.get());
                     });
-
-//                    updateProjectDetail(chuanyunGroupProjectDO);
                     //处理项目对象中的项目成员数据
                     projectMemberListCheck(chuanyunGroupProjectDO);
                     //处理项目对象中的项目经理、项目负责人数据
@@ -214,30 +215,6 @@ public class ChuanyunBasicDataScheduledTask {
         log.info("集团项目信息保存保存"+totalCount+"项目映射更新完成");
     }
 
-    private void updateProjectDetail(ChuanyunGroupProjectDO chuanyunGroupProjectDO){
-        var objectMapper=new ObjectMapper();
-        List<ChuanyunGroupProjectDetailDO> list = new ArrayList<>();
-        if (chuanyunGroupProjectDO.getDetailList()!=null&&chuanyunGroupProjectDO.getDetailList().size()>0) {
-            for (ChuanyunGroupProjectDetailDO chuanyunGroupProjectDetailDO : chuanyunGroupProjectDO.getDetailList()) {
-                if (!chuanyunGroupProjectDO.getProjectType().equals(chuanyunGroupProjectDetailDO.getType())) {
-                    list.add(chuanyunGroupProjectDetailDO);
-                }
-            }
-        }
-        chuanyunGroupProjectDO.setDetailList(list);
-        var groupProjectDetailDTO = new GroupProjectDetailDTO(chuanyunGroupProjectDO);
-        String groupProjectUpdateString= null;
-        try {
-            groupProjectUpdateString = objectMapper.writeValueAsString(groupProjectDetailDTO);
-            ChuanyunSaveDTO chuanyunSaveDTO=chuanYunManager.update(ChuanyunGroupProjectDO.SCHEMA_CODE,chuanyunGroupProjectDO.getObjectId(),groupProjectUpdateString);
-            if (!chuanyunSaveDTO.getSuccessful()) {
-                log.info(chuanyunGroupProjectDO.getObjectId()+"更新项目组织信息失败"+groupProjectUpdateString);
-            }
-        } catch (JsonProcessingException | BigSizeException e) {
-            e.printStackTrace();
-        }
-
-    }
     /**
      * 更新项目成员方法
      * @param chuanyunGroupProjectDO    项目对象
@@ -477,6 +454,7 @@ public class ChuanyunBasicDataScheduledTask {
     /**
      * 新增人力成本
      */
+    @Scheduled(fixedDelay = 7200000L)
     private void saveLaborCost() {
         var objectMapper=new ObjectMapper();
         var page = 1;
@@ -498,27 +476,31 @@ public class ChuanyunBasicDataScheduledTask {
             list.forEach(chuanyunLaborCostDTO -> {
                 try {
                     if(chuanyunLaborCostDTO != null) {
+                        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
+                        String newDate = dateTimeFormatter.format(chuanyunLaborCostDTO.getChuanyunLaborCostPrimaryKey().getPeriod());
+                        LocalDateTime dt = LocalDateTime.parse(newDate,dateTimeFormatter);
+                        chuanyunLaborCostDTO.getChuanyunLaborCostPrimaryKey().setPeriod(dt);
                         LaborCostDTO laborCostDTO = new LaborCostDTO(chuanyunLaborCostDTO);
                         laborCostDTO.setDataType("U9");
                         var purcostString=objectMapper.writeValueAsString(laborCostDTO);
                         ChuanyunSaveDTO chuanyunSaveDTO;
                         //根据项目号判断是否存在
-                        List<String> macthers = new ArrayList<>();
-                        macthers.add("F0000005_2,"+chuanyunLaborCostDTO.getChuanyunLaborCostPrimaryKey().getProjectcode());
-                        macthers.add("F0000002_2,"+chuanyunLaborCostDTO.getChuanyunLaborCostPrimaryKey().getPeriod());
-                        var filter= Filter.instance(0,1,true,"And",macthers);
+                        List<String> matchers = new ArrayList<>();
+                        matchers.add("F0000005_2,"+chuanyunLaborCostDTO.getChuanyunLaborCostPrimaryKey().getProjectcode());
+                        matchers.add("F0000002_2,"+chuanyunLaborCostDTO.getChuanyunLaborCostPrimaryKey().getPeriod());
+                        var filter= Filter.instance(0,1,true,"And",matchers);
                         var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunMonthLaborCostDO.SCHEMA_CODE,filter);
                         if (chuanyunFindAllResponse.getReturnData() == null) {
                             //新增
                             chuanyunSaveDTO =chuanYunManager.save(ChuanyunMonthLaborCostDO.SCHEMA_CODE,purcostString,true);
                         }else {
                             List<ChuanyunMonthLaborCostDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
-                            ChuanyunMonthLaborCostDO chuanyunMonthLaborCostDO = result.get(0);
+//                            ChuanyunMonthLaborCostDO chuanyunMonthLaborCostDO = result.get(0);
                             //更新
-                            chuanyunSaveDTO = chuanYunManager.update(ChuanyunMonthLaborCostDO.SCHEMA_CODE,chuanyunMonthLaborCostDO.getObjectId(),purcostString);
+                            chuanyunSaveDTO = chuanYunManager.update(ChuanyunMonthLaborCostDO.SCHEMA_CODE,result.get(0).getObjectId(),purcostString);
                         }
                         if(chuanyunSaveDTO.getSuccessful()){
-                            log.info("新增项目人力成本成功");
+//                            log.info("新增项目人力成本成功");
                         }else{
                             log.warn("新增项目人力成本失败");
                         }
@@ -747,7 +729,7 @@ public class ChuanyunBasicDataScheduledTask {
                             groupProjectUpdateString = objectMapper.writeValueAsString(reimbursementItemsDTO);
                             ChuanyunSaveDTO chuanyunSaveDTO=chuanYunManager.update(ChuanyunReimbursementItemsDO.SCHEMA_CODE,chuanyunReimbursementItemsDO.getObjectId(),groupProjectUpdateString);
                             if(chuanyunSaveDTO.getSuccessful()) {
-                                log.info(chuanyunReimbursementItemsDO.getObjectId() + "同步外部项目名称成功" + groupProjectUpdateString);
+//                                log.info(chuanyunReimbursementItemsDO.getObjectId() + "同步外部项目名称成功" + groupProjectUpdateString);
                             }else{
                                 log.warn(chuanyunReimbursementItemsDO.getObjectId()+"同步外部项目名称失败"+groupProjectUpdateString);
                             }
@@ -1086,6 +1068,8 @@ public class ChuanyunBasicDataScheduledTask {
         private BigDecimal amount;
 
         @JsonProperty("F0000002")
+        @JsonSerialize(using = ChuanyunLocalDateTimeSerializer.class)
+        @JsonDeserialize(using = ChuanyunLocalDateTimeDeserializer.class)
         private LocalDateTime logDate;
 
         @JsonProperty("F0000004")

+ 58 - 1
src/main/java/com/galaxis/manatee/task/ChuanyunFinancialScheduledTask.java

@@ -1,11 +1,16 @@
 package com.galaxis.manatee.task;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.galaxis.manatee.dao.*;
 import com.galaxis.manatee.entity.chuanyun.data.object.*;
+import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunSaveAllDTO;
+import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunSaveDTO;
 import com.galaxis.manatee.entity.chuanyun.dto.Filter;
 import com.galaxis.manatee.manager.ChuanYunManager;
+import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
@@ -51,7 +56,8 @@ public class ChuanyunFinancialScheduledTask {
     /**
      * 将报销信息从氚云中同步
      */
-    @Scheduled(cron = "0 0 2 * * *")
+//    @Scheduled(cron = "0 0 2 * * *")
+    @Scheduled(fixedDelay = 3600000L)
     private void reimbursementInformationSync(){
         getReimbursementFromChuanyun();
     }
@@ -92,6 +98,9 @@ public class ChuanyunFinancialScheduledTask {
                     }catch (NoSuchElementException e){
                         //没有之前的数据不做处理
                     }
+                    //同步报销单中外部部门名称
+                    synchroOutDepartment(chuanyunReimbursementDO);
+
                     //将报销单中关联信息的id转化为具体的数据
                     try{
                         ChuanyunCompanyDO chuanyunCompanyDO=chuanyunCompanyDao.findById(chuanyunReimbursementDO.getBeneficiaryId()).orElseThrow();
@@ -146,4 +155,52 @@ public class ChuanyunFinancialScheduledTask {
         }
         log.info("报销信息保存保存"+totalCount);
     }
+
+    /**
+     * 更新外部部门名称
+     * @param chuanyunReimbursementDO
+     */
+    private void synchroOutDepartment(ChuanyunReimbursementDO chuanyunReimbursementDO) {
+        try {
+            var objectMapper=new ObjectMapper();
+            List<String> matchers = new ArrayList<>();
+            matchers.add("F0000001_2,"+chuanyunReimbursementDO.getDepartmentObject().getObjectId());
+            var filter= Filter.instance(0,1,true,"And",matchers);
+            var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunOutDepartmentDO.SCHEMA_CODE,filter);
+            if (chuanyunFindAllResponse.getReturnData()!=null) {
+                List<ChuanyunOutDepartmentDO> result=objectMapper.convertValue(chuanyunFindAllResponse.getReturnData().getBizObjectArray(), new TypeReference<>(){});
+                ChuanyunOutDepartmentDO firstResult = result.get(0);
+                chuanyunReimbursementDO.setOutDepartment(firstResult.getOutDepartment());
+            }else {
+                chuanyunReimbursementDO.setOutDepartment(chuanyunReimbursementDO.getDepartment());
+            }
+            outDepartmentDTO departmentDTO = new outDepartmentDTO(chuanyunReimbursementDO);
+            var departmentString = objectMapper.writeValueAsString(departmentDTO);
+            ChuanyunSaveDTO chuanyunSaveDTO = chuanYunManager.update(ChuanyunReimbursementDO.SCHEMA_CODE,chuanyunReimbursementDO.getObjectId(),departmentString);
+            if(chuanyunSaveDTO.getSuccessful()){
+                log.info("更新外部部门名称成功");
+            }else{
+                log.warn("更新外部部门名称失败");
+            }
+        }catch (Exception e) {
+            e.printStackTrace();
+            log.error(e.getMessage());
+        }
+
+    }
+
+    @Data
+    class outDepartmentDTO {
+
+        @JsonProperty("F0000112")
+        private String outDepartment;
+
+        public outDepartmentDTO(ChuanyunReimbursementDO chuanyunReimbursementDO) {
+            if (chuanyunReimbursementDO!=null){
+                if (chuanyunReimbursementDO.getOutDepartment()!=null){
+                    this.outDepartment=chuanyunReimbursementDO.getOutDepartment();
+                }
+            }
+        }
+    }
 }

Dosya farkı çok büyük olduğundan ihmal edildi
+ 210 - 104
src/main/java/com/galaxis/manatee/task/ChuanyunProjectScheduledTask.java


+ 10 - 2
src/main/java/com/galaxis/manatee/webservice/CountryEndpoint.java

@@ -1,10 +1,14 @@
 package com.galaxis.manatee.webservice;
 
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.galaxis.manatee.chuanyun_web_service.*;
+import com.galaxis.manatee.entity.chuanyun.dto.ChuanyunWebServiceDTO;
 import com.galaxis.manatee.task.ChuanyunBasicDataScheduledTask;
 import com.galaxis.manatee.task.ChuanyunHumanResourceScheduledTask;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.tomcat.util.json.JSONParser;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.ws.server.endpoint.annotation.Endpoint;
 import org.springframework.ws.server.endpoint.annotation.PayloadRoot;
@@ -60,9 +64,10 @@ public class CountryEndpoint {
 	 */
 	@PayloadRoot(namespace = NAMESPACE_URI, localPart = "Invoke")
 	@ResponsePayload
-	public InvokeResponse invoke(@RequestPayload Invoke request) {
+	public InvokeResponse invoke(@RequestPayload Invoke request) throws JsonProcessingException {
 		//书写调用第三方接口方法
 		log.info("开始数据同步");
+		var objectMapper=new ObjectMapper();
 		InvokeResponse invokeResponse=new InvokeResponse();
 		chuanyunHumanResourceScheduledTask.getPayrollManually();
 		chuanyunBasicDataScheduledTask.getUserCompanyManually();
@@ -71,7 +76,10 @@ public class CountryEndpoint {
 		chuanyunBasicDataScheduledTask.getReimbursementItemsManually();
 		chuanyunBasicDataScheduledTask.getGroupProjectForSynchronizationManually();
 		log.info("数据同步成功");
-		invokeResponse.setResponse("{}");
+		ChuanyunWebServiceDTO chuanyunWebServiceDTO = new ChuanyunWebServiceDTO();
+		chuanyunWebServiceDTO.setMessage("数据同步完成");
+		chuanyunWebServiceDTO.setResultCode("0");
+		invokeResponse.setResponse(objectMapper.writeValueAsString(chuanyunWebServiceDTO));
 		return invokeResponse;
 	}
 }