Преглед изворни кода

修改了更新请假信息的方法

verguenza пре 4 година
родитељ
комит
6434ef2978
1 измењених фајлова са 98 додато и 50 уклоњено
  1. 98 50
      src/main/java/com/galaxis/manatee/task/ChuanyunBasicDataScheduledTask.java

+ 98 - 50
src/main/java/com/galaxis/manatee/task/ChuanyunBasicDataScheduledTask.java

@@ -4,10 +4,6 @@ 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.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
 import com.galaxis.capsule.dto.PageDTO;
 import com.galaxis.manatee.constant.ChuanYunConstant;
 import com.galaxis.manatee.dao.*;
@@ -16,23 +12,16 @@ 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 com.mysql.cj.x.protobuf.MysqlxExpr;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.beans.BeanUtils;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @author zcj
@@ -103,11 +92,13 @@ public class ChuanyunBasicDataScheduledTask {
     /**
      * 定时将氚云中的数据保存到manatee
      */
-    @Scheduled(fixedDelay = 3600L)
+    @Scheduled(fixedDelay = 3600000L)
     private void getDataFromChuanyun() {
+
         //项目人力成本
         saveLaborCost();
-//        saveAskForLeave();
+        //钉钉请假
+        saveAskForLeave();
         //专项费用分摊
         getSpecialProcedure();
         //获取人员-归属公司信息
@@ -118,14 +109,14 @@ public class ChuanyunBasicDataScheduledTask {
         getCostCollection();
         //获取集团项目数据
         getGroupProject();
+        //获取用户数据
+        getUserList();
         //支出档案类型
         getProjectType();
         //获取报销科目
         getReimbursementSubject();
         //获取成本中心
         getCost();
-        //获取用户数据
-        getUserList();
         //获取公司信息
         getCompany();
         //获取供应商
@@ -391,41 +382,37 @@ public class ChuanyunBasicDataScheduledTask {
      */
     private void saveAskForLeave() {
         var objectMapper = new ObjectMapper();
-        var page = 1;
-        var size = 20;
-        var flag = true;
-        while (flag) {
-            Map<String,String> map = new HashMap<>(1);
-            map.put("page",String.valueOf(page));
-            map.put("size",String.valueOf(size));
-            //获取请假的信息
-            List<ChuanyunAskForLeaveDo> askForLeaveList = chuanyunAskForLeaveDao.findAllAskForLeave();
-            askForLeaveList.forEach(askForLeave -> {
-                try {
-                    var purcostString = objectMapper.writeValueAsString(askForLeave);
-                    ChuanyunSaveDTO chuanyunSaveDTO;
-                      //根据项目号判断是否存在
-                    List<String> macthers = new ArrayList<>();
-                    macthers.add("F0000001_2,"+askForLeave.getTitle());
-                    var filter= Filter.instance(0,1,true,"And",macthers);
-                    var chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunAskForLeaveDo.SCHEMA_CODE,filter);
-                    if (chuanyunFindAllResponse.getReturnData() == null) {
-                        //新增
-                        chuanyunSaveDTO =chuanYunManager.save(ChuanyunAskForLeaveDo.SCHEMA_CODE,purcostString,true);
-                    }else {
-                        //更新
-                        chuanyunSaveDTO = chuanYunManager.update(ChuanyunAskForLeaveDo.SCHEMA_CODE,askForLeave.getObjectId(),purcostString);
-                    }
-                    if(chuanyunSaveDTO.getSuccessful()){
+        //获取请假的信息
+        List<ChuanyunAskForLeaveDO> askForLeaveList = chuanyunAskForLeaveDao.findAll();
+        askForLeaveList.forEach(askForLeave -> {
+            try {
+                //根据钉钉号获取氚云用户Id
+                ChuanyunUserDO chuanyunUserDO=chuanyunUserDao.findByDingTalkAccountContaining(askForLeave.getOriginatorUserid());
+                askForLeave.setAskForLeaveUserId(chuanyunUserDO.getObjectId());
+                //根据dingTalkUserId获取chuanyunUser
+                var purcostString = objectMapper.writeValueAsString(AskForLeaveDTO.fromChuanyunAskForLeaveDO(askForLeave));
+                ChuanyunSaveDTO chuanyunSaveDTO;
+                //根据项目号判断是否存在
+                List<String> matchers = new ArrayList<>();
+                matchers.add("F0000001_2,"+askForLeave.getTitle());
+                var filter= Filter.instance(0,1,true,"And",matchers);
+                ChuanyunFindAllBizDTO<LinkedHashMap<String,String>> chuanyunFindAllResponse=chuanYunManager.findAll(ChuanyunAskForLeaveDO.SCHEMA_CODE,filter);
+                if (chuanyunFindAllResponse.getReturnData() == null) {
+                    //新增
+                    chuanyunSaveDTO =chuanYunManager.save(ChuanyunAskForLeaveDO.SCHEMA_CODE,purcostString,true);
+                }else {
+                    //更新
+                    chuanyunSaveDTO = chuanYunManager.update(ChuanyunAskForLeaveDO.SCHEMA_CODE,chuanyunFindAllResponse.getReturnData().getBizObjectArray().get(0).get("ObjectId"),purcostString);
+                }
+                if(chuanyunSaveDTO.getSuccessful()){
 //                        log.info("新增请假信息成功");
-                    }else{
-                        log.warn("新增请假信息失败");
-                    }
-                } catch (Exception e) {
-                    e.printStackTrace();
+                }else{
+                    log.warn("新增请假信息失败");
                 }
-            });
-        }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        });
     }
 
     /**
@@ -1199,4 +1186,65 @@ public class ChuanyunBasicDataScheduledTask {
             }
         }
     }
+
+    @Data
+    static class AskForLeaveDTO{
+
+        /**
+         * 标题
+         */
+        @JsonProperty("F0000001")
+        private String title;
+
+        /**
+         * 发起人姓名
+         */
+        @JsonProperty("F0000007")
+        private String originatorUserName;
+
+        /**
+         * 发起部门
+         */
+        @JsonProperty("F0000002")
+        private String originatorDeptName;
+
+        /**
+         * 请假事由
+         */
+        @JsonProperty("F0000005")
+        private String leaveType;
+
+        /**
+         * 劳动合同所属公司
+         */
+        @JsonProperty("F0000004")
+        private String contractOwnerLtd;
+
+        @JsonProperty("F0000006")
+        private String result;
+
+        /**
+         * 请假开始时间
+         */
+        @JsonProperty("F0000016")
+        private String startTime;
+
+        /**
+         * 请假时长
+         */
+        @JsonProperty("F0000017")
+        private BigDecimal totalDay;
+
+        /**
+         * 请假人Id
+         */
+        @JsonProperty("F0000018")
+        private String askForLeaveUserId;
+
+        public static AskForLeaveDTO fromChuanyunAskForLeaveDO(ChuanyunAskForLeaveDO chuanyunAskForLeaveDO) {
+            AskForLeaveDTO askForLeaveDTO=new AskForLeaveDTO();
+            BeanUtils.copyProperties(chuanyunAskForLeaveDO,askForLeaveDTO);
+            return askForLeaveDTO;
+        }
+    }
 }