Explorar o código

1.新增业务招待申请

WoNiu %!s(int64=4) %!d(string=hai) anos
pai
achega
bbd8ac80a2

+ 10 - 0
src/main/java/com/galaxis/manatee/constant/DingTalkConstant.java

@@ -46,6 +46,11 @@ public class DingTalkConstant {
      */
     public static String PROCESS_CODE_ASKFORLEAVE;
 
+    /**
+     * 业务招待申请
+     */
+    public static String PROCESS_CODE_BUSINESSENTERTAINMENT;
+
     @Value(value = "${dingTalk.appKey}")
     public void setDingTalkAppKey(String dingTalkAppKey) {
         DingTalkConstant.DING_TALK_APP_KEY = dingTalkAppKey;
@@ -71,6 +76,11 @@ public class DingTalkConstant {
         DingTalkConstant.PROCESS_CODE_ASKFORLEAVE = askForLeave;
     }
 
+    @Value(value = "${dingTalk.processCode.businessEntertainment}")
+    public  void setProcessCodeBusinessEntertainment(String businessEntertainment) {
+        DingTalkConstant.PROCESS_CODE_BUSINESSENTERTAINMENT = businessEntertainment;
+    }
+
     @Value(value = "${dingTalk.AgentId}")
     public void setAgentId(Long agentId) {
         DingTalkConstant.DING_TALK_AGENTID = agentId;

+ 69 - 0
src/main/java/com/galaxis/manatee/entity/chuanyun/data/object/ChuanyunBusinessEntertainmentDO.java

@@ -0,0 +1,69 @@
+package com.galaxis.manatee.entity.chuanyun.data.object;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.galaxis.manatee.util.ChuanyunLocalDateTimeDeserializer;
+import com.galaxis.manatee.util.ChuanyunLocalDateTimeSerializer;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.persistence.Entity;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Slf4j
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Entity(name = "CHUANYUN_BUSINESS_ENTERTAINMENT")
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ChuanyunBusinessEntertainmentDO extends BasicDO{
+
+    /**
+     * 劳动合同所属公司
+     */
+    private String company;
+
+    /**
+     * 申请人
+     */
+    private String applicant;
+
+    /**
+     * 部门
+     */
+    private String department;
+
+    /**
+     * 日期
+     */
+    @JsonSerialize(using = ChuanyunLocalDateTimeSerializer.class)
+    @JsonDeserialize(using = ChuanyunLocalDateTimeDeserializer.class)
+    private LocalDateTime datetime;
+
+    /**
+     * 招待事由
+     */
+    private String reason;
+
+    /**
+     * 招待总金额(元)
+     */
+    private BigDecimal totalamount;
+
+    /**
+     * 招待人数(含接待人员)
+     */
+    private String personcount;
+
+    /**
+     * 人均餐费
+     */
+    private BigDecimal averageamount;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 62 - 0
src/main/java/com/galaxis/manatee/service/DingTalkScheduledTask.java

@@ -77,6 +77,68 @@ public class DingTalkScheduledTask {
          updateChuanyunAskForLeave(DingTalkConstant.PROCESS_CODE_ASKFORLEAVE);
     }
 
+    /**
+     * 业务招待申请更新
+     * @throws ApiException
+     */
+    @Scheduled(fixedDelay = 3600000L,initialDelay = 10000L)
+    void updateChuanyunBusinessEntertainmentProcessInstanceList() throws ApiException {
+        updateChuanyunBusinessEntertainment(DingTalkConstant.PROCESS_CODE_BUSINESSENTERTAINMENT);
+    }
+
+
+    private void updateChuanyunBusinessEntertainment(String businessTripProcessCode) throws ApiException {
+        var flag=true;
+        //单个请求
+        var oApiProcessInstanceListIdsRequest=new OapiProcessinstanceListidsRequest();
+        oApiProcessInstanceListIdsRequest.setProcessCode(businessTripProcessCode);
+        oApiProcessInstanceListIdsRequest.setStartTime(LocalDateTime.now().minusDays(90).toInstant(ZoneOffset.UTC).toEpochMilli());
+        oApiProcessInstanceListIdsRequest.setEndTime(LocalDateTime.now().toInstant(ZoneOffset.UTC).toEpochMilli());
+        oApiProcessInstanceListIdsRequest.setCursor(0L);
+        oApiProcessInstanceListIdsRequest.setSize(20L);
+//        while(flag){
+//            LocalDateTime start=LocalDateTime.now();
+//            OapiProcessinstanceListidsResponse oapiProcessinstanceListidsResponse=processInstanceListIdsClient.execute(oApiProcessInstanceListIdsRequest,DingTalkConstant.DING_TALK_TOKEN);
+//            List<ChuanyunAskForLeaveDO> chuanyunAskForLeaveDoList=new ArrayList<>();
+//            if(oapiProcessinstanceListidsResponse.getErrcode()!=0){
+//                log.info(oapiProcessinstanceListidsResponse.getErrmsg());
+//                try {
+//                    Thread.sleep(5000);
+//                } catch (InterruptedException e) {
+//                    log.error(e.getMessage());
+//                }
+//                continue;
+//            }
+//            //逐个请求
+//            oapiProcessinstanceListidsResponse.getResult().getList().forEach(resultId->{
+//                Optional<DingTalkProcessInstance> instance=dingTalkProcessInstanceDao.findById(resultId);
+//                if(instance.isEmpty()){
+//                    OapiProcessinstanceGetRequest request=new OapiProcessinstanceGetRequest();
+//                    request.setProcessInstanceId(resultId);
+//                    try {
+//                        OapiProcessinstanceGetResponse oapiProcessinstanceGetResponse = processInstanceClient.execute(request, DingTalkConstant.DING_TALK_TOKEN);
+//                        ChuanyunAskForLeaveDO chuanyunAskForLeaveDo = ChuanyunAskForLeaveDO.fromAskForLeaveDTO(oapiProcessinstanceGetResponse.getProcessInstance());
+//                        List<ChuanyunAskForLeaveDO>   existsAskForLeave = chuanyunAskForLeaveDao.findByTitleSQL(chuanyunAskForLeaveDo.getTitle());
+//                        if(existsAskForLeave != null && !existsAskForLeave.isEmpty()) {
+//                            chuanyunAskForLeaveDao.deleteById(existsAskForLeave.get(0).getObjectId());
+//                        }
+//                        chuanyunAskForLeaveDoList.add(chuanyunAskForLeaveDo);
+//                    } catch (ApiException e) {
+//                        e.printStackTrace();
+//                    }
+//                }
+//            });
+//
+//            //保存id列表和实例列表,如果有更新的内容
+//            chuanyunAskForLeaveDao.saveAll(chuanyunAskForLeaveDoList);
+//            log.info(businessTripProcessCode+"下一个cursor为"+oapiProcessinstanceListidsResponse.getResult().getNextCursor()+"保存成功"+"耗时"+ ChronoUnit.SECONDS.between(start,LocalDateTime.now())+"秒");
+//            flag=null!=oapiProcessinstanceListidsResponse.getResult().getNextCursor();
+//            if (flag){
+//                oApiProcessInstanceListIdsRequest.setCursor(oapiProcessinstanceListidsResponse.getResult().getNextCursor());
+//            }
+//        }
+    }
+
     private void updateChuanyunAskForLeave(String businessTripProcessCode) throws ApiException {
             var flag=true;
             //单个请求

+ 2 - 0
src/main/resources/application.yml

@@ -29,6 +29,8 @@ dingTalk:
     materialResend: PROC-FF6YHERSO2-J9GFWKONMK1QXZH153MV1-4G2HF7VI-2P
     #请假信息
     askForLeave: PROC-EF6Y0XWVO2-GBP690HMRWVELM4WJ0WT1-DEP53YII-PR1
+    #业务招待申请
+    businessEntertainment: PROC-08523C7E-2093-4241-A25D-82F7CBBBD34B
 
 #阿里云
 aliyun: