diff --git a/mkl-iot/src/main/java/com/ruoyi/iot/task/AttendanceJgwTask.java b/mkl-iot/src/main/java/com/ruoyi/iot/task/AttendanceJgwTask.java new file mode 100644 index 0000000..17712e9 --- /dev/null +++ b/mkl-iot/src/main/java/com/ruoyi/iot/task/AttendanceJgwTask.java @@ -0,0 +1,880 @@ +package com.ruoyi.iot.task; + +import cn.hutool.core.codec.Base64; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.security.Md5Utils; +import okhttp3.*; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.io.IOException; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +//@Component("attendanceJgwTask") +@RestController +@RequestMapping("/jgw") +public class AttendanceJgwTask { + static String host="http://api.gongyoumishu.com:80/gomeetapi/"; + static String appId="6a6f24fe35b04ee0bcf31cfb46ed1051"; + static String secret="sxyzxx2024suc"; + static String projectId="6ffba4b6f18743f690b76b5b81d10052"; + static String phone="13572235102"; + + public static void main(String[] args) { + System.out.println("---1--"); + // asyncProContractor(); + } + public static String getToken(){ + String grantType="client_credential"; + String path="/webapi/credential"; + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("secret", Base64.encode(secret)); + params.put("grantType",grantType); + Request request = new Request.Builder() + .url(host+path) + .post(toFormBody(params)) + .build(); + String data=getResult(request); + JSONObject jo=JSON.parseObject(data); + JSONObject joData= jo.getJSONObject("data"); + if(joData!=null){ + return joData.getString("token"); + } + return null; + } + /** + * 参建单位同步 + */ + @GetMapping("/asyncProContractor") + public AjaxResult asyncProContractor(){ + String token=getToken(); + if(StrUtil.isBlank(token)){ + return AjaxResult.success(); + } + String path="/webapi/project/findProContractorByProjectId"; + String time = System.currentTimeMillis() + ""; + String startId="0"; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + String tokenSign = Md5Utils.hash(url); + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("projectId",projectId); + params.put("rowId",startId); + url=host+path+"?appId="+appId+"&tokenSign="+tokenSign+"&projectId="+projectId+"×tamp="+time+"&rowId="+startId; + String data=HttpUtil.get(url); + JSONObject j= JSON.parseObject(data); + JSONObject joData= j.getJSONObject("data"); + JSONArray arr=joData.getJSONArray("proContractorList"); + JSONArray unitList=getUnitList(); + if(arr.size()>0){ + for(int i=0;i0){ + long rowId=0; + for(int i=0;i0){ + doSyncProContractor(token,rowId+1); + } + } + } + + /** + * 查询班组直隶 + * @param token + */ + private void doSyncDirectlyUnderGroup(String token, long startId,JSONArray groupList,JSONArray unitList,JSONArray teamList) { + String subcontractorId=getSubcontractor(token); + String path="/webapi/project/findDirectlyUnderTeam"; + String time = System.currentTimeMillis() + ""; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + + String tokenSign = Md5Utils.hash(url); + + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("projectId",projectId); + params.put("subcontractorId",subcontractorId); + params.put("rowId",startId); + String data= HttpRequest.post(host+path) + .header("Content-Type", "application/x-www-form-urlencoded") + .form(params).execute().body(); + JSONObject j= JSON.parseObject(data); + JSONObject joData= j.getJSONObject("data"); + JSONArray arr=joData.getJSONArray("teamList"); + if(arr.size()>0){ + long rowId=0; + for(int i=0;i0){ + doSyncDirectlyUnderGroup(token,rowId+1,groupList,unitList,teamList); + } + } + } + + /** + * 获取负责人ID + * @param token + * @return + */ + private String getSubcontractor(String token) { + String path="/webapi/project/querySubcontractorByPhone"; + String time = System.currentTimeMillis() + ""; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + System.out.println(url); + String tokenSign = Md5Utils.hash(url); + System.out.println(tokenSign); + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("phone",phone); + String data= HttpRequest.post(host+path) + .header("Content-Type", "application/x-www-form-urlencoded") + .form(params).execute().body(); + System.out.println(data); + JSONObject j= JSON.parseObject(data); + JSONObject jd=j.getJSONObject("data"); + JSONArray arr=jd.getJSONArray("subcontractorList"); + if(arr.size()>0){ + JSONObject jo=arr.getJSONObject(0); + String tmp=jo.getString("subcontractorId"); + return tmp; + } + return ""; + } + + private String getWorkType(String leaderTeamId,String subcontractorId,String findWrokId){ + String token=getToken(); + if(StrUtil.isBlank(token)){ + return ""; + } + String path="/webapi/project/findWorkerByLeader"; + String time = System.currentTimeMillis() + ""; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + String tokenSign = Md5Utils.hash(url); + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("leaderTeamId",leaderTeamId); + params.put("subcontractorId",subcontractorId); + String data= HttpRequest.post(host+path) + .header("Content-Type", "application/x-www-form-urlencoded") + .form(params).execute().body(); + JSONObject j= JSON.parseObject(data); + JSONObject jd=j.getJSONObject("data"); + JSONArray arr=jd.getJSONArray("recordList"); + if(arr!=null && arr.size()>0) { + for (int i = 0; i < arr.size(); i++) { + JSONObject json = arr.getJSONObject(i); + String workerId = json.getString("workerId"); + if(workerId.equals(findWrokId)){ + return json.getString("jobType"); + } + } + } + return ""; + } + + /** + * 班组信息同步 + */ + @GetMapping("/asyncTeam") + public AjaxResult asyncTeam(){ + String token=getToken(); + if(StrUtil.isBlank(token)){ + return AjaxResult.error(); + } + + JSONArray teamList=getTeamList(); + + String path="webapi/project/findTeamByProjectId"; + String time = System.currentTimeMillis() + ""; + String startId="0"; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + + String tokenSign = Md5Utils.hash(url); + + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("projectId",projectId); + params.put("rowId",startId); + url=host+path+"?appId="+appId+"&tokenSign="+tokenSign+"&projectId="+projectId+"×tamp="+time+"&rowId="+startId; + String data=HttpUtil.get(url); + JSONObject j= JSON.parseObject(data); + JSONObject joData= j.getJSONObject("data"); + JSONArray arr=joData.getJSONArray("teamList"); + JSONArray groupList=getGroupList(); + JSONArray unitList=getUnitList(); + if(arr.size()>0){ + for(int i=0;i0) { + for(int i=0;i0){ + for(int i=0;i params ){ + FormBody.Builder builder=new FormBody.Builder(); + for(String key :params.keySet()){ + builder.add(key,params.get(key).toString()); + } + return builder.build(); + } + public static String getResult(Request request) { + OkHttpClient client = new OkHttpClient(); + Response response; + try { + response = client.newCall(request).execute(); + if (response.body() != null) { + return response.body().string(); + } else { + throw new RuntimeException(); + } + } catch (IOException e) { + e.printStackTrace(); + throw new RuntimeException(); + } + } + + private static String mklAppId="4465a89944f94397897ba897abc5607e"; + private static String mklAppsecret="BE6FC933B83C4BE78A3BD8F85E026E3B"; + private static long mklPrjId=229; + public static String getMklSign(){ + String tmp=mklAppsecret+"appid"+mklAppId+mklAppsecret; + return Md5Utils.hash(tmp).toUpperCase(); + } + + public static String getMklSign2(){ + String tmp=mklAppsecret+"appid"+mklAppId+"projectId"+mklPrjId+mklAppsecret; + return Md5Utils.hash(tmp).toUpperCase(); + } + + private static String postJson(String url,JSONObject jo){ + return HttpUtil.createPost(url) + .body(jo.toJSONString()) // 设置请求体为JSON字符串 + .contentType("application/json") // 设置Content-Type为application/json + .execute() // 执行请求 + .body(); // 获取响应体 + } + + /** + * 获取队伍信息 + * @return + */ + private JSONArray getGroupList(){ + String url="http://smz.makalu.cc/mkl/basic/getGroupList?appid="+mklAppId+"&sign="+getMklSign2()+"&projectId="+mklPrjId; + String data= HttpUtil.get(url); + JSONObject jo= JSON.parseObject(data); + return jo.getJSONArray("data"); + } + + /** + * 获取参建单位信息 + * @return + */ + private JSONArray getUnitList(){ + String url="http://smz.makalu.cc/mkl/basic/getUnitList?appid="+mklAppId+"&sign="+getMklSign2()+"&projectId="+mklPrjId; + String data= HttpUtil.get(url); + JSONObject jo= JSON.parseObject(data); + return jo.getJSONArray("data"); + } + + /** + * 获取人员信息 + * @return + */ + private JSONArray getUserInfoList(){ + String url="http://smz.makalu.cc/mkl/basic/getUserInfoList?appid="+mklAppId+"&sign="+getMklSign2()+"&projectId="+mklPrjId; + String data= HttpUtil.get(url); + JSONObject jo= JSON.parseObject(data); + return jo.getJSONArray("data"); + } + /** + * 获取班组信息 + * @return + */ + private JSONArray getTeamList(){ + String url="http://smz.makalu.cc/mkl/basic/getTeamList?appid="+mklAppId+"&sign="+getMklSign2()+"&projectId="+mklPrjId; + String data= HttpUtil.get(url); + JSONObject jo= JSON.parseObject(data); + return jo.getJSONArray("data"); + } + private JSONArray getWorkTypeList(){ + String url="http://smz.makalu.cc/mkl/basic/getWorkTypeList?appid="+mklAppId+"&sign="+getMklSign2()+"&projectId="+mklPrjId; + String data= HttpUtil.get(url); + JSONObject jo= JSON.parseObject(data); + return jo.getJSONArray("data"); + } + + /** + * 参建单位已增加 + * @param jo + * @param unitList + * @return + */ + private boolean hasAddUnit(JSONObject jo,JSONArray unitList){ + String code=jo.getString("corpCode"); + for(int i=0;i