3 Ревизии 1897552e6a ... f1b5c4aecb

Автор SHA1 Съобщение Дата
  CRK f1b5c4aecb 集晨写假期判断打卡数据,打卡数据写入钉钉考勤 преди 9 месеца
  CRK d8a11ef2fe Merge branch 'master' of https://mc.cloudpure.cn/cloudpure/mjava-3 преди 9 месеца
  CRK fefab68d2e 集晨写假期判断打卡数据 преди 9 месеца

+ 7 - 0
mjava-luyi/src/main/java/com/malk/luyi/Boot.java

@@ -1,6 +1,11 @@
 package com.malk.luyi;
 
+import com.alibaba.fastjson.JSON;
 import com.malk.luyi.controller.KSJCController;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.service.aliwork.YDClient;
+import com.malk.utils.UtilMap;
 import com.querydsl.jpa.impl.JPAQueryFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.SpringApplication;
@@ -26,6 +31,8 @@ public class Boot {
     }
 
 
+
+
     /**
      * 让Spring管理JPAQueryFactory [不使用Qualifier详见mjava-Boot]
      */

+ 219 - 4
mjava-luyi/src/main/java/com/malk/luyi/controller/KSJCController.java

@@ -14,11 +14,9 @@ import com.malk.utils.UtilMap;
 import com.malk.utils.UtilServlet;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringEscapeUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.time.*;
@@ -110,6 +108,7 @@ public class KSJCController {
                 String leave_status = jsonObject.get("leave_status").toString();
                 if (!leave_status.equals("[]") && leave_status != null) {
                     if_pd = "是";
+                    panduanzuotian="否";//假期,不做判断
                 }
                 //判断昨天是否考勤组的休息日
                 rsp = dd.getgroupquery(Ehtid, grup_id);
@@ -162,6 +161,7 @@ public class KSJCController {
                         .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
                         .formUuid("FORM-0FFD9FC6D55A4D72AB588D38CD3685BFKQDX")
                         .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_lywrs8w8, textField_m062afy7", Ehtid,yesterday)))
+                        .instanceStatus("running")
                          .approvedResult("agree")//流程结束时的审批结论agree -> 通过   disagree -> 拒绝
                         .build(), YDConf.FORM_QUERY.retrieve_search_process).getData();
                 if (dataList_bgxx.size() > 0) {
@@ -277,6 +277,221 @@ public class KSJCController {
         }
         return McR.success();
     }
+    @SneakyThrows
+    @PostMapping("/ceshi")
+//根据项目和机台信息维护阶段数据。
+    McR ceshi(HttpServletRequest request) {
+
+            return McR.success();
+        }
+
+
+    @SneakyThrows
+    @PostMapping("/upload")
+//集尘根据员工id上传打卡记录
+    McR insetupload (HttpServletRequest request) {
+
+        Map data = UtilServlet.getParamMap(request);
+        String userid = data.get("userid").toString();
+        String device_name = data.get("device_name").toString();
+        String device_id = data.get("device_id").toString();
+        String user_check_time = data.get("user_check_time").toString();
+        dd.updateuploadss(userid, device_name,device_id,user_check_time);
+        return McR.success();
+    }
+    @SneakyThrows
+    @GetMapping("/cs")
+//根据项目-写入设计阶段数据
+    public McR insetTHXM_TMER1() {
+
+        List<Map> dataList = (List<Map>) ydClient.queryData(YDParam.builder()
+                .appType("APP_X89Y00KKTG36B8JYGZVR")
+                .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
+                .formUuid("FORM-A6153EC780554425A1A7451548F9D405PMSN")
+                .build(), YDConf.FORM_QUERY.retrieve_search_form).getData();
+        for (Map formData : dataList) {
+            String SFSJJD = String.valueOf(UtilMap.getMap(formData, "formData").get("selectField_m024f7ot"));//是否设计进度
+
+            String SJJD = String.valueOf(UtilMap.getMap(formData, "formData").get("numberField_m024f7os"));//设计进度
+
+            String SJYWCJD = String.valueOf(UtilMap.getMap(formData, "formData").get("numberField_m024f7ou")); //设计已完成进度
+
+            String XMBH = String.valueOf(UtilMap.getMap(formData, "formData").get("textField_lx1irnyo")); //项目编号
+
+            try {
+
+                // 将字符串转换为数字
+
+                Double designProgress = Double.parseDouble(SJJD);
+
+                Double completedDesignProgress = Double.parseDouble(SJYWCJD);
+
+                // 检查条件是否满足
+
+                if ("是".equals(SFSJJD) && designProgress > completedDesignProgress) {
+
+                    // 构建查询参数
+
+                    JSONObject searchCondition = new JSONObject();
+
+                    searchCondition.put("textField_lx1irnyo", XMBH);
+
+                    List<Map> list1 = (List<Map>) ydClient.queryData(
+
+                            YDParam.builder()
+
+                                    .appType("APP_X89Y00KKTG36B8JYGZVR")
+
+                                    .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
+
+                                    .formUuid("FORM-F43D52E34FCE429582DD351FDFF54F08HM12")
+
+                                    .searchCondition(JSON.toJSONString(searchCondition))
+
+                                    .build(),
+
+                            YDConf.FORM_QUERY.retrieve_list).getData();
+
+                    if (!list1.isEmpty()) {
+
+                        Map map = list1.get(0);
+
+                        JSONObject jsonObject = new JSONObject(map.get("formData"));
+
+                        String instanceId = (String) jsonObject.get("textField_lx1irnyo");
+
+                        List<Map> dataList_bgxx = (List<Map>) ydClient.queryData(YDParam.builder()
+
+                                .appType("APP_X89Y00KKTG36B8JYGZVR")
+
+                                .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
+
+                                .formUuid("FORM-F64808AC9EEB468789B94DA8C9B55FDEFNI7")
+
+                                .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_lx1irnyo", instanceId)))
+
+                                .instanceStatus("RUNNING")
+
+//                                .approvedResult("agree")
+
+                                .build(), YDConf.FORM_QUERY.retrieve_search_process).getData();
+
+                        //如果有数据,则跳过,否则新建流程
+
+                        if (dataList_bgxx!=null && dataList_bgxx.size()>0){
+
+                            log.info("dataList_bgxx:{}", dataList_bgxx);
+
+                            continue;
+
+                        }else {
+
+                            List<Map> list2 = (List<Map>) ydClient.queryData(YDParam.builder()
+
+                                    .formUuid("FORM-A6153EC780554425A1A7451548F9D405PMSN")
+
+                                    .appType("APP_X89Y00KKTG36B8JYGZVR")
+
+                                    .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
+
+                                    .searchCondition(
+
+                                            com.alibaba.fastjson.JSONObject.toJSONString(UtilMap.map("textField_lx1irnyo",instanceId))
+
+                                    ).build(), YDConf.FORM_QUERY.retrieve_list).getData();
+
+                            if(list2!=null){
+
+                                Map formData2 = (Map) list2.get(0).get("formData");
+
+                                String formInstanceId = String.valueOf(list2.get(0).get("formInstanceId"));
+
+                                String khmcjsonString = formData2.get("associationFormField_lx1iumdq_id").toString();
+
+                                String sbmcjsonString = formData2.get("associationFormField_lx1iumds_id").toString();
+
+                                String XMH= String.valueOf(formData2.get("textField_lx1irnyo"));//项目号
+
+                                String khmcTitle = getTitle(khmcjsonString);//客户名称
+
+                                String sbmcTitle = getTitle(sbmcjsonString);//设备名称
+
+                                String XMMC= String.valueOf(formData2.get("textField_lx1iumdr"));//项目名称
+
+                                String  XMJL = String.valueOf(formData2.get("employeeField_lx1iumdt_id"));//项目经理
+
+                                String  SJXMFZR = String.valueOf(formData2.get("employeeField_lyy2gpfq_id"));//设计项目负责人
+
+                                String jsonArray = SJXMFZR.replace("'", "\"");
+
+                                JSONArray element = new JSONArray(jsonArray);
+
+                                // 获取数组中的第一个元素
+
+                                String userId = String.valueOf(element.get(0));
+
+                                String  ZD="associationFormField_lxipi7ri, textField_lx1irnyo, textField_lxipi7rj, textField_lxipi7rk, employeeField_lx1iumdt, employeeField_lz251up0, textField_lxis9v4x";
+
+
+
+                                ydClient.operateData(YDParam.builder()
+
+                                        .appType("APP_X89Y00KKTG36B8JYGZVR")
+
+                                        .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
+
+                                        .formUuid("FORM-F64808AC9EEB468789B94DA8C9B55FDEFNI7")
+
+                                        .userId(userId)
+
+                                        .formDataJson(JSON.toJSONString(UtilMap.map(ZD, getAss(XMMC,formInstanceId), XMH, khmcTitle, sbmcTitle, XMJL, SJXMFZR, XMMC)))
+
+                                        .build(), YDConf.FORM_OPERATION.start).toString();////
+
+                            }
+
+                        }
+
+                    } else {
+
+                        System.out.println("没有找到符合条件的记录。");
+
+                    }
+
+                }
+
+            } catch (NumberFormatException e) {
+
+                System.err.println("无法解析进度值:" + e.getMessage());
+
+            }
+
+        }
+
+        return McR.success("success");
+
+    }
+
+    private Object getAss(String title,String id){
+
+        return Arrays.asList(UtilMap.map("appType, formUuid, formType, instanceId, title, subTitle","APP_X89Y00KKTG36B8JYGZVR","FORM-A6153EC780554425A1A7451548F9D405PMSN","receipt",id,title,""));
+
+    }
+
+
+
+    private String getTitle(String jsonString){
+
+        String supplierJsonString = StringEscapeUtils.unescapeJava(jsonString.substring(1, jsonString.length() - 1));//新供应商(关联表单)
+
+        List<Map> supplier =(List<Map>) com.alibaba.fastjson.JSONArray.parse(supplierJsonString);
+
+        String title = String.valueOf(supplier.get(0).get("title"));
+
+        return title;
+
+    }
+
 
 
 }

+ 35 - 1
mjava-luyi/src/main/java/com/malk/luyi/controller/KSJC_timer.java

@@ -1,6 +1,11 @@
 package com.malk.luyi.controller;
 
 
+import com.alibaba.fastjson.JSON;
+import com.malk.server.aliwork.YDConf;
+import com.malk.server.aliwork.YDParam;
+import com.malk.service.aliwork.YDClient;
+import com.malk.utils.UtilMap;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -14,14 +19,42 @@ import org.springframework.scheduling.annotation.Scheduled;
 public class KSJC_timer {
     @Autowired
     private KSJCController legalEntityService;
+    @Autowired
+    private YDClient ydClient;
     /*集晨判断是否能打卡*/
     //每天早晨7点05分同步数据
  @Scheduled(cron = "0 5 7 * * ?")
- //  @Scheduled(fixedRate = 2000)
+//  @Scheduled(fixedRate = 1000)
     public void LegalEntityList(){
         log.info("k");
         try{
            legalEntityService.insetTHXM_TMER();
+//            String XMCSLID="FINST-3RB66I91VT5OZPGY8CWOD9237ZDD2KPZ5KH0MYK8";
+//            if (true)
+//            {
+//                ydClient.operateData(YDParam.builder()
+//                        .appType("APP_X89Y00KKTG36B8JYGZVR")
+//                        .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
+//                        .formInstanceId(String.valueOf(XMCSLID))
+//                        //data.get("shop_name")
+//                        .updateFormDataJson(JSON.toJSONString(UtilMap.map("textField_m0hk58mb", "ceshi")))
+//                        .build(), YDConf.FORM_OPERATION.update);
+//            }
+            System.out.println("集晨判断,同步完成");
+        }catch (Exception e){
+            //记录错误信息
+            e.printStackTrace();
+        }
+
+    }
+
+
+
+    //    @Scheduled(cron = "0 5 7 * * ?")
+    public void LegalEntityList1(){
+        log.info("k");
+        try{
+            legalEntityService.insetTHXM_TMER1();
             System.out.println("集晨判断,同步完成");
         }catch (Exception e){
             //记录错误信息
@@ -29,4 +62,5 @@ public class KSJC_timer {
         }
 
     }
+
 }

+ 1 - 1
mjava/src/main/java/com/malk/server/aliwork/YDParam.java

@@ -155,7 +155,7 @@ public class YDParam extends BaseDto {
 
     // 是否不触发表单绑定的校验规则、关联业务规则和第三方服务回调。
     @Builder.Default
-    boolean noExecuteExpression = true;
+   boolean noExecuteExpression = true;
 
     // 是否忽略空值。
     @Builder.Default

+ 1 - 0
mjava/src/main/java/com/malk/service/dingtalk/DDClient.java

@@ -41,5 +41,6 @@ public interface DDClient {
     Map getleavestatus(String userid_list,long start_time,long end_time);// 询指定企业下指定用户在指定时间段内每天的请假状态和请假时长信息。
 
     Map getgroupquery(String op_user_id,String  group_id );//调用本接口,可获取考勤组名称、考勤组主负责人和考勤类型等信息。
+    Map updateuploadss(String userid,String  device_name,String device_id,String user_check_time );//上传打卡记录。
 }
 

+ 20 - 0
mjava/src/main/java/com/malk/service/dingtalk/impl/DDImplClient.java

@@ -195,4 +195,24 @@ public class DDImplClient implements DDClient {
        param_post.put("group_id",group_id);//考勤组ID
        return  (Map) DDR.doPost("https://oapi.dingtalk.com/topapi/attendance/group/query", null, DDConf.initTokenParams(accessToken), param_post ).getResult();
    };
+
+    @Override
+    public Map updateuploadss(String userid, String device_name, String device_id, String user_check_time) {
+        Map param = new HashMap();
+        param.put("appkey", "dingapqprcbwk5bvahc1");
+        param.put("appsecret", "V_YgI8ZYx3lSf_Fw3qNH6k-U9umKhxglpPrnPkdb73CVrXWFme_SwUCdQxR2poFi");
+        DDR r = (DDR) UtilHttp.doGet("https://oapi.dingtalk.com/gettoken", param, DDR.class);
+        log.info("响应token, {}", r.getAccessToken());
+        String accessToken = r.getAccessToken();
+        // token失效自动重置: DD重新调用会重置过期时间
+        UtilToken.put("invalid-token-dingtalk", accessToken, r.getExpiresIn() * 1000L);
+        Map param_post = new HashMap();
+        param_post.put("userid",userid);//需要上传打卡记录的员工userId
+        param_post.put("device_name",device_name);//考勤机名称
+        param_post.put("device_id",device_id);//考勤机ID
+        param_post.put("user_check_time",user_check_time);//员工打卡的时间
+        return  (Map) DDR.doPost("https://oapi.dingtalk.com/topapi/attendance/record/upload", null, DDConf.initTokenParams(accessToken), param_post ).getResult();
+
+    }
+
 }