2 Ревизии cb828ca85f ... 67e5483319

Автор SHA1 Съобщение Дата
  lfx 67e5483319 Merge remote-tracking branch 'origin/master' преди 4 седмици
  lfx 9698a6f247 RTR 业务计提 преди 4 седмици
променени са 2 файла, в които са добавени 213 реда и са изтрити 0 реда
  1. 125 0
      mjava-ts/src/main/java/com/malk/taisen/Timers/RtrAutoTask.java
  2. 88 0
      mjava/src/main/java/com/malk/server/aliwork/YDSearch.java

+ 125 - 0
mjava-ts/src/main/java/com/malk/taisen/Timers/RtrAutoTask.java

@@ -0,0 +1,125 @@
+package com.malk.taisen.Timers;
+
+import com.alibaba.fastjson.JSONObject;
+import com.malk.server.aliwork.YDParam;
+import com.malk.server.aliwork.YDSearch;
+import com.malk.service.aliwork.YDService;
+import com.malk.service.dingtalk.DDClient;
+import com.malk.service.dingtalk.DDClient_Notice;
+import com.malk.taisen.service.RtrServer;
+import com.malk.utils.UtilDateTime;
+import com.malk.utils.UtilMap;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.*;
+
+@Slf4j
+@Configuration
+@EnableScheduling
+@ConditionalOnProperty(name = {"enable.scheduling"}, havingValue = "false")
+public class RtrAutoTask {
+
+    @Autowired
+    private RtrServer rtrServer;
+    @Autowired
+    private YDService ydService;
+    @Autowired
+    private DDClient_Notice ddClientNotice;
+    @Autowired
+    private DDClient ddClient;
+
+    private String url="https://tysonchina.aliwork.com/APP_N9NPHVTQLPBPO8MR6WFG/formDetail/FORM-E8E54176A4D446C182EB6A3C012A0284AGQN?formInstId=";
+
+    @Scheduled(cron = "0 30 2,12,18,22 15 * ?")
+    public void rtrAutoPostSap() {
+        log.info("财务计提&摊销自动执行任务...");
+        // 获取当前时间
+        LocalDate now = LocalDate.now();
+        // 获取当月第一天 00:00:00
+        LocalDateTime firstDayOfMonth = now.withDayOfMonth(1).atStartOfDay();
+        // 获取当月最后一天 23:59:59.999999999
+        LocalDateTime lastDayOfMonth = now.withDayOfMonth(now.lengthOfMonth())
+                .atTime(23, 59, 59, 999999999);
+        // 转换为时间戳(毫秒)
+        long startTimestamp = UtilDateTime.getLocalDateTimeTimeStamp(firstDayOfMonth);
+        long endTimestamp = UtilDateTime.getLocalDateTimeTimeStamp(lastDayOfMonth);
+        YDSearch yidaSearch=new YDSearch("selectField_miwh5y55","待自动过账","状态", YDSearch.Type.TEXT_FIELD,YDSearch.Operator.EQ);
+        YDSearch yidaSearch2=new YDSearch("dateField_miwh5y85",Arrays.asList(startTimestamp,endTimestamp),"时间", YDSearch.Type.DATE_FIELD,YDSearch.Operator.BETWEEN);
+        List<Map> list=ydService.queryFormData_all(YDParam.builder().formUuid("FORM-E8E54176A4D446C182EB6A3C012A0284AGQN")
+                .searchFieldJson(JSONObject.toJSONString(Arrays.asList(yidaSearch,yidaSearch2))).build());
+        for(Map map:list){
+            log.info("RTR 财务计提{}",map.get("instanceId"));
+            rtrServer.RtrInsetSAP0005("YWJT","FORM-E8E54176A4D446C182EB6A3C012A0284AGQN", String.valueOf(map.get("instanceId")));
+        }
+    }
+
+    @Scheduled(cron = "0 30 9 14 * ?")
+    public void rtrMsgSend() {
+        log.info("财务计提&摊销手动推送提醒...");
+        // 获取当前时间
+        LocalDate now = LocalDate.now();
+        // 获取当月第一天 00:00:00
+        LocalDateTime firstDayOfMonth = now.withDayOfMonth(1).atStartOfDay();
+        // 获取当月最后一天 23:59:59.999999999
+        LocalDateTime lastDayOfMonth = now.withDayOfMonth(now.lengthOfMonth())
+                .atTime(23, 59, 59, 999999999);
+        // 转换为时间戳(毫秒)
+        long startTimestamp = UtilDateTime.getLocalDateTimeTimeStamp(firstDayOfMonth);
+        long endTimestamp = UtilDateTime.getLocalDateTimeTimeStamp(lastDayOfMonth);
+        YDSearch yidaSearch=new YDSearch("selectField_miwh5y55","待手动过账","状态", YDSearch.Type.TEXT_FIELD,YDSearch.Operator.EQ);
+        YDSearch yidaSearch2=new YDSearch("dateField_miwh5y85",Arrays.asList(startTimestamp,endTimestamp),"时间", YDSearch.Type.DATE_FIELD,YDSearch.Operator.BETWEEN);
+        List<Map> list=ydService.queryFormData_all(YDParam.builder().formUuid("FORM-E8E54176A4D446C182EB6A3C012A0284AGQN")
+                .searchFieldJson(JSONObject.toJSONString(Arrays.asList(yidaSearch,yidaSearch2))).build());
+        for(Map map:list){
+            log.info("RTR 财务计提提醒{}",map.get("instanceId"));
+            List<String> uids= UtilMap.getList(map,"employeeField_mejfoon1_id");
+            if(uids.size()>0){
+                sendMsg(uids,"财务计提&摊销凭证手动推送提醒","单据【"+map.get("textField_miwh5y6z")+"】前往推送凭证",url+map.get("instanceId"));
+            }
+        }
+    }
+
+    private void sendMsg(List<String> uid,String title,String text,String messageUrl){
+        Map<String,Object> map=new HashMap<>();
+        map.put("picUrl","@lALOACZwe2Rk");
+        map.put("title",title);
+        map.put("text",text);
+        map.put("messageUrl",messageUrl);
+        JSONObject msgMap=new JSONObject().fluentPut("msgtype","link").fluentPut("link",map);
+        System.out.println(msgMap);
+        ddClientNotice.sendNotification(ddClient.getAccessToken(),uid,null,false,
+                msgMap);
+    }
+
+    // 临时
+    @Scheduled(cron = "0 30 10/2 7 1 ?")
+    public void test() {
+        log.info("财务计提&摊销自动执行任务...");
+        // 获取当前时间
+        LocalDate now = LocalDate.now();
+        // 获取当月第一天 00:00:00
+        LocalDateTime firstDayOfMonth = now.withDayOfMonth(1).atStartOfDay();
+        // 获取当月最后一天 23:59:59.999999999
+        LocalDateTime lastDayOfMonth = now.withDayOfMonth(now.lengthOfMonth())
+                .atTime(23, 59, 59, 999999999);
+        // 转换为时间戳(毫秒)
+        long startTimestamp = UtilDateTime.getLocalDateTimeTimeStamp(firstDayOfMonth);
+        long endTimestamp = UtilDateTime.getLocalDateTimeTimeStamp(lastDayOfMonth);
+        YDSearch yidaSearch=new YDSearch("selectField_miwh5y55","待自动过账","状态", YDSearch.Type.TEXT_FIELD,YDSearch.Operator.EQ);
+        YDSearch yidaSearch2=new YDSearch("dateField_miwh5y85",Arrays.asList(startTimestamp,endTimestamp),"时间", YDSearch.Type.DATE_FIELD,YDSearch.Operator.BETWEEN);
+        List<Map> list=ydService.queryFormData_all(YDParam.builder().formUuid("FORM-E8E54176A4D446C182EB6A3C012A0284AGQN")
+                .searchFieldJson(JSONObject.toJSONString(Arrays.asList(yidaSearch,yidaSearch2))).build());
+        for(Map map:list){
+            log.info("RTR 财务计提{}",map.get("instanceId"));
+            rtrServer.RtrInsetSAP0005("YWJT","FORM-E8E54176A4D446C182EB6A3C012A0284AGQN", String.valueOf(map.get("instanceId")));
+        }
+    }
+
+}

+ 88 - 0
mjava/src/main/java/com/malk/server/aliwork/YDSearch.java

@@ -0,0 +1,88 @@
+package com.malk.server.aliwork;
+
+import lombok.Data;
+
+@Data
+public class YDSearch {
+
+    // YidaSearch yidaSearch=new YidaSearch("textField_lk7v5k5f",contract.getContractNo(),"同步合同档案台账", YidaSearch.Type.TEXT_FIELD,YidaSearch.Operator.EQ);
+
+
+    private String key;
+    private Object value;
+    // 组件值类型
+    private String type;
+    // 操作符
+    private String operator;
+    // 组件名称
+    private String componentName;
+    // 查询子表使用
+    private String parentId;
+
+    public YDSearch(String key, Object value, String type, String operator, String componentName){
+        this.key=key;
+        this.value=value;
+        this.type=type;
+        this.operator=operator;
+        this.componentName=componentName;
+    }
+
+    public YDSearch(String key, Object value, Type type, Operator operator, String componentName, String parentId) {
+        this.key = key;
+        this.value = value;
+        this.type = type.type;
+        this.operator = operator.operator;
+        this.componentName = componentName;
+        this.parentId = parentId;
+    }
+
+    public YDSearch(String key, Object value, String componentName, Type type, Operator operator){
+        this.key=key;
+        this.value=value;
+        this.type=type.type;
+        this.operator=operator.operator;
+        this.componentName=componentName;
+    }
+
+    // 缺少来这里找 https://open.dingtalk.com/document/orgapp-server/use-the-filter-conditions-in-the-form-data-management-for
+    public enum Type{
+        TEXT_FIELD("TEXT"),
+        TEXTAREA_FIELD("TEXT"),
+        NUMBER_FIELD("DOUBLE"),
+        RATE_FIELD("DOUBLE"),
+        RADIO_FIELD("ARRAY"),
+        CHECKBOX_FIELD("ARRAY"),
+        MULTISELECT_FIELD("ARRAY"),
+        CASCADESELECT_FIELD("STRING"),
+        DATE_FIELD("DOUBLE"),
+        CASCADEDATE_FIELD("DOUBLE"),
+        IMAGE_FIELD("TEXT"),
+        ATTACHMENT_FIELD("TEXT"),
+        EMPLOYEE_FIELD("STRING"),
+        DEPARTMENTSELECT_FIELD("ARRAY");
+
+        public final String type;
+
+        Type(String type){
+            this.type=type;
+        }
+    }
+
+    public enum Operator{
+        EQ("eq"),
+        LIKE("like"),
+        GT("gt"),
+        GE("ge"),
+        LT("lt"),
+        LE("le"),
+        BETWEEN("between"),
+        CONTAINS("contains");
+
+        public final String operator;
+
+        Operator(String operator){
+            this.operator=operator;
+        }
+    }
+
+}