Browse Source

请假开始时间,时长

xuj 4 years ago
parent
commit
07c0187a34

+ 7 - 0
pom.xml

@@ -58,6 +58,13 @@
         </dependency>
         </dependency>
 
 
         <dependency>
         <dependency>
+            <groupId>net.sf.json-lib</groupId>
+            <artifactId>json-lib</artifactId>
+            <version>2.4</version>
+            <classifier>jdk15</classifier>
+        </dependency>
+
+        <dependency>
             <groupId>org.springframework.boot</groupId>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
             <scope>test</scope>

+ 17 - 0
src/main/java/com/galaxis/manatee/dao/ChuanyunAskForLeaveDao.java

@@ -2,8 +2,11 @@ package com.galaxis.manatee.dao;
 
 
 import com.galaxis.capsule.util.GalaxisRepository;
 import com.galaxis.capsule.util.GalaxisRepository;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunAskForLeaveDo;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunAskForLeaveDo;
+import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
 import org.springframework.stereotype.Repository;
 
 
+import java.util.List;
+
 /**
 /**
  * Created by IntelliJ IDEA.
  * Created by IntelliJ IDEA.
  * User: xuj
  * User: xuj
@@ -12,4 +15,18 @@ import org.springframework.stereotype.Repository;
 @Repository
 @Repository
 public interface ChuanyunAskForLeaveDao extends GalaxisRepository<ChuanyunAskForLeaveDo,String> {
 public interface ChuanyunAskForLeaveDao extends GalaxisRepository<ChuanyunAskForLeaveDo,String> {
 
 
+    /**
+     * SQL 查询是否存在请假信息,避免重复提交
+     * @param title
+     * @return
+     */
+    @Query(value = "SELECT * FROM chuanyun_askforleave WHERE title = ?1", nativeQuery = true)
+    List<ChuanyunAskForLeaveDo> findByTitleSQL(String title);
+
+    /**
+     * SQL 查询请假信息
+     * @return
+     */
+    @Query(value = "SELECT t.* FROM chuanyun_askforleave t GROUP BY t.title", nativeQuery = true )
+    List<ChuanyunAskForLeaveDo> findAllAskForLeave();
 }
 }

+ 50 - 16
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunAskForLeaveDo.java

@@ -5,18 +5,22 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.databind.annotation.JsonNaming;
 import com.fasterxml.jackson.databind.annotation.JsonNaming;
 import com.galaxis.capsule.dto.MaterialDTO;
 import com.galaxis.capsule.dto.MaterialDTO;
+import com.galaxis.manatee.constant.StringConstant;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import net.sf.json.JSONArray;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
 
 
 import javax.persistence.Entity;
 import javax.persistence.Entity;
+import java.math.BigDecimal;
 import java.nio.file.LinkOption;
 import java.nio.file.LinkOption;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
 import java.util.UUID;
 import java.util.UUID;
+import net.sf.json.JSONArray;
 
 
 /**
 /**
  * Created by IntelliJ IDEA.
  * Created by IntelliJ IDEA.
@@ -33,19 +37,19 @@ public class ChuanyunAskForLeaveDo extends BasicDO {
     /**
     /**
      * 表名
      * 表名
      */
      */
-    public static final String SCHEMA_CODE ="c490c2213711480d8b2c3eee7099e39d";
+    public static final String SCHEMA_CODE ="D001789c490c2213711480d8b2c3eee7099e39d";
 
 
     /**
     /**
      * 标题
      * 标题
      */
      */
-    @JsonProperty("title")
+    @JsonProperty("F0000001")
     private String title;
     private String title;
 
 
     /**
     /**
      * 抄送人
      * 抄送人
      */
      */
-    @JsonProperty("cs_userids")
-    private String csUserids;
+    @JsonProperty("cc_userids")
+    private String ccUserids;
 
 
     /**
     /**
      * 操作
      * 操作
@@ -70,22 +74,22 @@ public class ChuanyunAskForLeaveDo extends BasicDO {
     private String mainProcessInstanceId;
     private String mainProcessInstanceId;
 
 
     /**
     /**
-     * 发起人
+     * 发起人userId
      */
      */
     @JsonProperty("originator_userid")
     @JsonProperty("originator_userid")
     private String originatorUserid;
     private String originatorUserid;
 
 
     /**
     /**
-     * 发起部门
+     * 发起人姓名
      */
      */
-    @JsonProperty("originator_dept_id")
-    private String originatorDeptId;
+    @JsonProperty("F0000007")
+    private String originatorUserName;
 
 
     /**
     /**
-     * 抄送人
+     * 发起部门
      */
      */
-    @JsonProperty("cc_userids")
-    private String ccUserId;
+    @JsonProperty("originator_dept_id")
+    private String originatorDeptId;
 
 
     /**
     /**
      * 审批结果: 同意 和 不同意
      * 审批结果: 同意 和 不同意
@@ -102,31 +106,48 @@ public class ChuanyunAskForLeaveDo extends BasicDO {
     /**
     /**
      * 发起部门
      * 发起部门
      */
      */
-    @JsonProperty("originator_dept_name")
+    @JsonProperty("F0000002")
     private String originatorDeptName;
     private String originatorDeptName;
 
 
     /**
     /**
      * 请假事由
      * 请假事由
      */
      */
-    @JsonProperty("leave_type")
+    @JsonProperty("F0000005")
     private String leaveType;
     private String leaveType;
 
 
     /**
     /**
      * 劳动合同所属公司
      * 劳动合同所属公司
      */
      */
-    @JsonProperty("contract_owner_ltd")
+    @JsonProperty("F0000004")
     private String contractOwnerLtd;
     private String contractOwnerLtd;
 
 
-    @JsonProperty("result")
+    @JsonProperty("F0000006")
     private String result;
     private String result;
 
 
     /**
     /**
+     * 请假开始时间
+     */
+    @JsonProperty("F0000016")
+    private String startTime;
+
+    /**
+     * 请假结束时间
+     */
+    private String endTime;
+
+    /**
+     * 请假时长
+     */
+    @JsonProperty("F0000017")
+    private BigDecimal totalDay;
+
+    /**
      * 根据ProcessInstanceTopVo获得chuanyunAskForLeaveDo
      * 根据ProcessInstanceTopVo获得chuanyunAskForLeaveDo
      * @param processInstanceTopVo   传输数据
      * @param processInstanceTopVo   传输数据
      * @return  保存数据
      * @return  保存数据
      */
      */
     public static ChuanyunAskForLeaveDo fromAskForLeaveDTO(OapiProcessinstanceGetResponse.ProcessInstanceTopVo processInstanceTopVo){
     public static ChuanyunAskForLeaveDo fromAskForLeaveDTO(OapiProcessinstanceGetResponse.ProcessInstanceTopVo processInstanceTopVo){
-        ChuanyunAskForLeaveDo chuanyunAskForLeaveDo =new ChuanyunAskForLeaveDo();
+        ChuanyunAskForLeaveDo chuanyunAskForLeaveDo = new ChuanyunAskForLeaveDo();
         BeanUtils.copyProperties(processInstanceTopVo, chuanyunAskForLeaveDo);
         BeanUtils.copyProperties(processInstanceTopVo, chuanyunAskForLeaveDo);
         List<OapiProcessinstanceGetResponse.FormComponentValueVo> formComponetList = processInstanceTopVo.getFormComponentValues();
         List<OapiProcessinstanceGetResponse.FormComponentValueVo> formComponetList = processInstanceTopVo.getFormComponentValues();
         if(formComponetList != null && formComponetList.size() > 0) {
         if(formComponetList != null && formComponetList.size() > 0) {
@@ -137,6 +158,19 @@ public class ChuanyunAskForLeaveDo extends BasicDO {
                 if(formComponetList.get(i).getName().equals("劳动合同所属公司")) {
                 if(formComponetList.get(i).getName().equals("劳动合同所属公司")) {
                     chuanyunAskForLeaveDo.setContractOwnerLtd(formComponetList.get(i).getValue());
                     chuanyunAskForLeaveDo.setContractOwnerLtd(formComponetList.get(i).getValue());
                 }
                 }
+                if(formComponetList.get(i).getName().equals("[\"开始时间\",\"结束时间\"]")){
+                    try {
+                        String values = formComponetList.get(i).getValue();
+                        JSONArray json = JSONArray.fromObject(values);
+                        chuanyunAskForLeaveDo.setStartTime((String)json.get(0));
+                        chuanyunAskForLeaveDo.setEndTime((String)json.get(1));
+                        chuanyunAskForLeaveDo.setTotalDay(new BigDecimal(String.valueOf(json.get(2))));
+                        chuanyunAskForLeaveDo.setTitle((String.valueOf(json.get(0)) + chuanyunAskForLeaveDo.getTitle()));
+                    }catch(Exception e) {
+                        log.warn("请假信息解析异常");
+                        e.printStackTrace();
+                    }
+                }
             }
             }
         }
         }
         chuanyunAskForLeaveDo.setObjectId(UUID.randomUUID().toString());
         chuanyunAskForLeaveDo.setObjectId(UUID.randomUUID().toString());

+ 18 - 4
src/main/java/com/galaxis/manatee/service/DingTalkScheduledTask.java

@@ -9,8 +9,12 @@ import com.dingtalk.api.response.OapiProcessinstanceGetResponse;
 import com.dingtalk.api.response.OapiProcessinstanceListidsResponse;
 import com.dingtalk.api.response.OapiProcessinstanceListidsResponse;
 import com.galaxis.manatee.constant.DingTalkConstant;
 import com.galaxis.manatee.constant.DingTalkConstant;
 import com.galaxis.manatee.dao.ChuanyunAskForLeaveDao;
 import com.galaxis.manatee.dao.ChuanyunAskForLeaveDao;
+import com.galaxis.manatee.dao.ChuanyunUserCompanyDao;
+import com.galaxis.manatee.dao.ChuanyunUserDao;
 import com.galaxis.manatee.dao.DingTalkProcessInstanceDao;
 import com.galaxis.manatee.dao.DingTalkProcessInstanceDao;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunAskForLeaveDo;
 import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunAskForLeaveDo;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunUserCompanyDO;
+import com.galaxis.manatee.entity.chuanyun.data.object.ChuanyunUserDO;
 import com.galaxis.manatee.entity.ding.DingTalkProcessInstance;
 import com.galaxis.manatee.entity.ding.DingTalkProcessInstance;
 import com.taobao.api.ApiException;
 import com.taobao.api.ApiException;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
@@ -52,12 +56,15 @@ public class DingTalkScheduledTask {
      */
      */
     private final ChuanyunAskForLeaveDao chuanyunAskForLeaveDao;
     private final ChuanyunAskForLeaveDao chuanyunAskForLeaveDao;
 
 
-    public DingTalkScheduledTask(DingTalkClient processInstanceListIdsClient, DingTalkClient processInstanceClient,
+    private final ChuanyunUserCompanyDao userCompanyDao;
+
+    public DingTalkScheduledTask(DingTalkClient processInstanceListIdsClient, DingTalkClient processInstanceClient,ChuanyunUserCompanyDao chuanyunUserDao,
                                  ChuanyunAskForLeaveDao chuanyunAskForLeaveDao,DingTalkProcessInstanceDao dingTalkProcessInstanceDao) {
                                  ChuanyunAskForLeaveDao chuanyunAskForLeaveDao,DingTalkProcessInstanceDao dingTalkProcessInstanceDao) {
         this.processInstanceListIdsClient = processInstanceListIdsClient;
         this.processInstanceListIdsClient = processInstanceListIdsClient;
         this.processInstanceClient = processInstanceClient;
         this.processInstanceClient = processInstanceClient;
         this.dingTalkProcessInstanceDao = dingTalkProcessInstanceDao;
         this.dingTalkProcessInstanceDao = dingTalkProcessInstanceDao;
         this.chuanyunAskForLeaveDao = chuanyunAskForLeaveDao;
         this.chuanyunAskForLeaveDao = chuanyunAskForLeaveDao;
+        this.userCompanyDao = chuanyunUserDao;
     }
     }
 
 
     /**
     /**
@@ -117,15 +124,22 @@ public class DingTalkScheduledTask {
                         request.setProcessInstanceId(resultId);
                         request.setProcessInstanceId(resultId);
                         try {
                         try {
                             OapiProcessinstanceGetResponse oapiProcessinstanceGetResponse = processInstanceClient.execute(request, DingTalkConstant.DING_TALK_TOKEN);
                             OapiProcessinstanceGetResponse oapiProcessinstanceGetResponse = processInstanceClient.execute(request, DingTalkConstant.DING_TALK_TOKEN);
-                            chuanyunAskForLeaveDoList.add(ChuanyunAskForLeaveDo.fromAskForLeaveDTO(oapiProcessinstanceGetResponse.getProcessInstance()));
+                            ChuanyunAskForLeaveDo chuanyunAskForLeaveDo = ChuanyunAskForLeaveDo.fromAskForLeaveDTO(oapiProcessinstanceGetResponse.getProcessInstance());
+                            List<ChuanyunAskForLeaveDo> existsAskForLeave = chuanyunAskForLeaveDao.findByTitleSQL(chuanyunAskForLeaveDo.getTitle());
+                            if(existsAskForLeave != null && !existsAskForLeave.isEmpty()) {
+                                return;
+                            }
+                            chuanyunAskForLeaveDoList.add(chuanyunAskForLeaveDo);
                         } catch (ApiException e) {
                         } catch (ApiException e) {
                             e.printStackTrace();
                             e.printStackTrace();
                         }
                         }
                     }
                     }
                 });
                 });
 
 
-                //保存id列表和实例列表
-                chuanyunAskForLeaveDao.saveAll(chuanyunAskForLeaveDoList);
+                //保存id列表和实例列表,如果有更新的内容
+                if(chuanyunAskForLeaveDoList.size() > 0) {
+                    chuanyunAskForLeaveDao.saveAll(chuanyunAskForLeaveDoList);
+                }
                 log.info(businessTripProcessCode+"下一个cursor为"+oapiProcessinstanceListidsResponse.getResult().getNextCursor()+"保存成功"+"耗时"+ ChronoUnit.SECONDS.between(start,LocalDateTime.now())+"秒");
                 log.info(businessTripProcessCode+"下一个cursor为"+oapiProcessinstanceListidsResponse.getResult().getNextCursor()+"保存成功"+"耗时"+ ChronoUnit.SECONDS.between(start,LocalDateTime.now())+"秒");
                 flag=null!=oapiProcessinstanceListidsResponse.getResult().getNextCursor();
                 flag=null!=oapiProcessinstanceListidsResponse.getResult().getNextCursor();
                 if (flag){
                 if (flag){

+ 2 - 3
src/main/java/com/galaxis/manatee/task/ChuanyunBasicDataScheduledTask.java

@@ -95,7 +95,7 @@ public class ChuanyunBasicDataScheduledTask {
     /**
     /**
      * 定时将氚云中的数据保存到manatee
      * 定时将氚云中的数据保存到manatee
      */
      */
-    @Scheduled(fixedDelay = 3600000L)
+    @Scheduled(fixedDelay = 3600L)
     private void getDataFromChuanyun() {
     private void getDataFromChuanyun() {
         saveAskForLeave();
         saveAskForLeave();
         //专项费用分摊
         //专项费用分摊
@@ -389,11 +389,10 @@ public class ChuanyunBasicDataScheduledTask {
             map.put("page",String.valueOf(page));
             map.put("page",String.valueOf(page));
             map.put("size",String.valueOf(size));
             map.put("size",String.valueOf(size));
             //获取请假的信息
             //获取请假的信息
-            List<ChuanyunAskForLeaveDo> askForLeaveList = chuanyunAskForLeaveDao.findAll();
+            List<ChuanyunAskForLeaveDo> askForLeaveList = chuanyunAskForLeaveDao.findAllAskForLeave();
             askForLeaveList.forEach(askForLeave -> {
             askForLeaveList.forEach(askForLeave -> {
                 try {
                 try {
                     var purcostString = objectMapper.writeValueAsString(askForLeave);
                     var purcostString = objectMapper.writeValueAsString(askForLeave);
-//                  chuanYunManager.save(ChuanyunAskForLeaveDo.SCHEMA_CODE, purcostString, true);
                     ChuanyunSaveDTO chuanyunSaveDTO;
                     ChuanyunSaveDTO chuanyunSaveDTO;
                       //根据项目号判断是否存在
                       //根据项目号判断是否存在
                     List<String> macthers = new ArrayList<>();
                     List<String> macthers = new ArrayList<>();