| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922 |
- package com.muzhi.huanshi.service.impl;
- import cn.hutool.core.thread.ThreadUtil;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.aliyun.dingtalkyida_1_0.models.*;
- import com.aliyun.tea.TeaException;
- import com.aliyun.teautil.models.RuntimeOptions;
- import com.dingtalk.api.DefaultDingTalkClient;
- import com.dingtalk.api.DingTalkClient;
- import com.dingtalk.api.request.OapiAttendanceGetcolumnvalRequest;
- import com.dingtalk.api.request.OapiSmartworkHrmEmployeeListRequest;
- import com.dingtalk.api.request.OapiSmartworkHrmEmployeeQueryonjobRequest;
- import com.dingtalk.api.response.OapiAttendanceGetcolumnvalResponse;
- import com.dingtalk.api.response.OapiSmartworkHrmEmployeeListResponse;
- import com.dingtalk.api.response.OapiSmartworkHrmEmployeeQueryonjobResponse;
- import com.muzhi.huanshi.service.AccessTokenService;
- import com.muzhi.huanshi.service.DingOaService;
- import com.taobao.api.ApiException;
- import com.taobao.api.internal.util.StringUtils;
- import lombok.extern.slf4j.Slf4j;
- import okhttp3.*;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.io.IOException;
- import java.math.BigDecimal;
- import java.text.DecimalFormat;
- import java.text.SimpleDateFormat;
- import java.util.*;
- @Service
- @Slf4j
- public class DingOaServiceImpl implements DingOaService {
- @Autowired
- private AccessTokenService accessTokenService;
- public static String huamingce1 = null;
- public static String employee1 = null;
- //环世TB企业ID(tbOrganizationId)
- public static String tbOrganizationId = "61318dae53bac9ea1baf7d9d";
- //宜搭接口调用
- public static com.aliyun.dingtalkyida_1_0.Client createClient() throws Exception {
- com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
- config.protocol = "https";
- config.regionId = "central";
- return new com.aliyun.dingtalkyida_1_0.Client(config);
- }
- //根据钉钉邮箱匹配TB邮箱对应人员,获取TB人员ID //TODO 不稳定,废弃。替换成IDMap接口来查询匹配人员ID
- public String getTBuserId(String youxiang){
- // String youxiang = "hongd@olymtech.com";
- int code = 0;
- JSONArray result = null;
- String TBuserId = null;
- try {
- OkHttpClient client = new OkHttpClient().newBuilder()
- .build();
- MediaType mediaType = MediaType.parse("text/plain");
- RequestBody body = RequestBody.create(mediaType, "");
- Request request = new Request.Builder()
- .url("https://open.teambition.com/api/org/member/search?orgId=" + tbOrganizationId + "&query=" + youxiang)
- .method("GET", null)
- .addHeader("Authorization", "Bearer " + accessTokenService.getAppToken())
- .addHeader("X-Tenant-Id", tbOrganizationId)
- .addHeader("X-Tenant-Type", "organization")
- .build();
- Response response = client.newCall(request).execute();
- String bodyStr = response.body().string();
- JSONObject jsonObject = JSON.parseObject(bodyStr);
- // System.out.println("返回体body:" + jsonObject);
- code = jsonObject.getInteger("code");
- System.out.println("TB获取人员接口返回状态码:" + code);
- result = jsonObject.getJSONArray("result");
- System.out.println("TB获取人员接口返回result:" + result);
- if(result.isEmpty()){
- log.info("TB获取人员接口返回result为空,未获取到TB相关人员!");
- }else {
- TBuserId = result.getJSONObject(0).getString("userId");
- System.out.println("根据邮箱匹配的TBuserId:" + TBuserId);
- }
- }catch (IOException e){
- e.printStackTrace();
- }
- return TBuserId;
- }
- //通过IDMap查询TBuserId
- public String getDingdingToTBuserId(String userid){
- // String userid = "2055054927907044";
- String dingCorpId = "ding8f59ac9a4a00de1635c2f4657eb6378f";
- int code = 0;
- JSONArray result = null;
- try {
- OkHttpClient client = new OkHttpClient().newBuilder()
- .build();
- MediaType mediaType = MediaType.parse("text/plain");
- RequestBody body = RequestBody.create(mediaType, "");
- Request request = new Request.Builder()
- .url("https://open.teambition.com/api/idmap/query?refId="+ dingCorpId +"&refer=dingTalk-user&extraUserId="+ userid)
- .method("GET", null)
- .addHeader("Authorization", "Bearer " + accessTokenService.getAppToken())
- .addHeader("X-Tenant-Id", tbOrganizationId)
- .addHeader("X-Tenant-Type", "organization")
- .build();
- Response response = client.newCall(request).execute();
- String bodyStr = response.body().string();
- JSONObject jsonObject = JSON.parseObject(bodyStr);
- // System.out.println("返回体body:" + jsonObject);
- code = jsonObject.getInteger("code");
- System.out.println("TB获取人员接口返回状态码:" + code);
- result = jsonObject.getJSONArray("result");
- System.out.println("TB获取人员接口返回result:" + result);
- }catch (IOException e){
- e.printStackTrace();
- }
- String tbId = result.getJSONObject(0).getString("tbId");
- System.out.println("根据钉钉userid匹配的TBuserId:" + tbId);
- return tbId;
- }
- //获取宜搭表单数据【人员信息底表】
- public JSONArray getYidaRenyuanxinxidibiao(){
- JSONObject jsonObject = null;
- int size = 100;
- int page = 1;
- List listAll = new ArrayList();
- do {
- //【斯曼尔架构】
- try {
- com.aliyun.dingtalkyida_1_0.Client client = createClient();
- com.aliyun.dingtalkyida_1_0.models.SearchFormDatasHeaders searchFormDatasHeaders = new com.aliyun.dingtalkyida_1_0.models.SearchFormDatasHeaders();
- searchFormDatasHeaders.xAcsDingtalkAccessToken = accessTokenService.getAccessToken();
- com.aliyun.dingtalkyida_1_0.models.SearchFormDatasRequest searchFormDatasRequest = new com.aliyun.dingtalkyida_1_0.models.SearchFormDatasRequest()
- .setSystemToken("J0A6698165EFMED0AHIG76FW7C6Q3ON1PG5OL482")
- // .setSearchFieldJson(mapAllStr)
- .setCurrentPage(page)
- .setPageSize(size)
- .setFormUuid("FORM-5Q966D91G96F0WI8D98Q27NSBGUR3OV02H5OL21")
- .setUserId("yida_pub_account")
- .setAppType("APP_QHPV3T4ZU2Y88Q4U0UDA");
- SearchFormDatasResponse searchFormDatasResponse = client.searchFormDatasWithOptions(searchFormDatasRequest, searchFormDatasHeaders, new RuntimeOptions());
- // System.out.println(JSON.toJSONString(searchFormDatasResponse.getBody()));
- String s = JSON.toJSONString(searchFormDatasResponse.getBody());
- jsonObject = JSON.parseObject(s);
- // System.out.println("钉钉差旅补贴数据高级条件查询【人员信息底表】接口object对象:" + jsonObject);
- } catch (TeaException err) {
- if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // err 中含有 code 和 message 属性,可帮助开发定位问题
- }
- } catch (Exception _err) {
- TeaException err = new TeaException(_err.getMessage(), _err);
- if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // err 中含有 code 和 message 属性,可帮助开发定位问题
- }
- }
- JSONArray data = jsonObject.getJSONArray("data");
- // System.out.println("返回的宜搭data:" + data);
- if (data.isEmpty()) {
- System.out.println("查询【人员信息底表】返回数据为空!");
- } else {
- for (int i = 0; i < data.size(); i++) {
- JSONObject formData = data.getJSONObject(i).getJSONObject("formData");
- // System.out.println("循环返回的宜搭formData:" + formData);
- Map map = new HashMap<>();
- //实例ID
- String shiliID = data.getJSONObject(i).getString("formInstanceId");
- System.out.println("实例ID===>" + shiliID);
- //钉钉userid
- String userid = formData.getString("textField_lo5h5imc");
- System.out.println("钉钉userid===>" + userid);
- //人员姓名
- String username = formData.getString("textField_lo5h5ime");
- System.out.println("人员姓名===>" + username);
- //主部门
- String zhubumen = formData.getString("textField_lo5h5imj");
- System.out.println("主部门===>" + zhubumen);
- //职位
- String zhiwei = formData.getString("textField_los37klu");
- System.out.println("职位===>" + username);
- //邮箱
- String youoxiang = formData.getString("textField_los37klv");
- System.out.println("邮箱===>" + zhubumen);
- map.put("shiliID",shiliID);
- map.put("userid",userid);
- map.put("username",username);
- map.put("zhubumen",zhubumen);
- map.put("zhiwei",zhiwei);
- map.put("youxiang",youoxiang);
- System.out.println("每次封装人员信息的map:" + map);
- listAll.add(map);
- }
- }
- if (jsonObject.getFloat("totalCount") / 100 > jsonObject.getInteger("currentPage")){
- page = page + 1;
- System.out.println("下一次待查询分页:" + page);
- }
- }while (jsonObject.getFloat("totalCount") / 100 > jsonObject.getInteger("currentPage"));
- JSONArray jsonArray = JSON.parseArray(JSON.toJSONString(listAll));
- System.out.println("封装【人员信息底表】明细jsonArray:" + jsonArray);
- return jsonArray;
- }
- //获取钉钉人员-同步至宜搭人员信息表
- @Override
- public String addDingdingRenyuan(){
- //在职员工id列表的循环获取
- DingTalkClient client1 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/queryonjob");
- OapiSmartworkHrmEmployeeQueryonjobRequest request1 = new OapiSmartworkHrmEmployeeQueryonjobRequest();
- //企业在职员工userid列表
- int offset = 0;//分页游标,从0开始
- int size = 20;//分页大小,最大50
- JSONObject result1;
- do {
- List<String> list = new ArrayList<>();
- System.out.println("测试分页值:" + offset);
- try {
- request1.setStatusList("2,3,5,-1");
- request1.setOffset((long) offset);
- request1.setSize((long) size);
- OapiSmartworkHrmEmployeeQueryonjobResponse response1 = client1.execute(request1, accessTokenService.getAccessToken());
- employee1 = response1.getBody();
- System.out.println(response1.getBody());
- } catch (ApiException e) {
- e.printStackTrace();
- }
- //通过fastjson工具转换成json对象,逐层解析
- JSONObject jsonObject1 = JSON.parseObject(employee1);
- result1 = jsonObject1.getJSONObject("result");
- String dataList = result1.getString("data_list");
- //将String数组进行处理,去掉所有的双引号("")和中括号([])
- String dataRes = dataList.replace("\"", "").
- replaceAll("\\[", "").
- replaceAll("\\]", "");
- list.add(dataRes);
- String userid1 = list.toString().replace("\"", "").
- replaceAll("\\[", "").
- replaceAll("\\]", "");
- /*---获取花名册数据---*/
- try {
- DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/smartwork/hrm/employee/list");
- OapiSmartworkHrmEmployeeListRequest request = new OapiSmartworkHrmEmployeeListRequest();
- request.setUseridList(userid1);
- //需要获取的花名册字段信息
- //request.setFieldFilterList("sys00-name,sys02-sexType,sys01-employeeStatus,sys00-email,sys03-graduateSchool,sys03-highestEdu,sys00-dept,e3d6dbbd-9265-4f1e-8c58-ac3602e83960,sys03-graduationTime,sys00-mobile,sys02-address,sys02-marriage,sys00-confirmJoinTime,sys00-workPlace,sys00-position,sys01-positionLevel,sys02-politicalStatus,sys03-major,sys02-certNo,sys02-birthTime,sys02-certAddress,sys02-certEndTime,sys02-residenceType,sys01-employeeType,sys04-bankAccountNo,sys04-accountBank,sys09-personalHf,sys05-contractType,sys05-contractCompanyName,ff63191a-45cf-4106-ade0-54f1def7cc55");
- OapiSmartworkHrmEmployeeListResponse response = client.execute(request, accessTokenService.getAccessToken());
- huamingce1 = response.getBody();
- System.out.println(response.getBody());
- }catch (ApiException e){
- e.printStackTrace();
- }
- //通过fastjson工具转换成json对象,逐层解析
- //将String类型的花名册json数据转换为Object数据对象
- JSONObject jsonObject = JSON.parseObject(huamingce1);
- //直接将花名册对象通过Object转换成Array数组格式
- JSONArray resultArray = jsonObject.getJSONArray("result");
- System.out.println("Array===>" + resultArray);
- /*---获取花名册数据---*/
- for (int i = 0; i<resultArray.size(); i++) {
- JSONArray fieldListArray = resultArray
- .getJSONObject(i).getJSONArray("field_list");
- String userId = resultArray.getJSONObject(i).getString("userid");
- System.out.println("员工id:" + userId);
- String userName = null;
- String zhubumen = null;
- String zhiwei = null;
- String youxiang = null;
- for (int a = 0; a<fieldListArray.size(); a++) {
- String fieldCode = fieldListArray
- .getJSONObject(a)
- .getString("field_code");
- switch (fieldCode) {
- //姓名
- case "sys00-name":
- if (fieldListArray.getJSONObject(a).getString("value") != null) {
- System.out.println("***《《《姓名》》》***-->" + fieldListArray.getJSONObject(a).getString("value"));
- userName = fieldListArray.getJSONObject(a).getString("value");
- }
- break;
- //主部门
- case "sys00-mainDept":
- if (fieldListArray.getJSONObject(a).getString("value") != null){
- System.out.println("***主部门***-->" + fieldListArray.getJSONObject(a).getString("value"));
- zhubumen = fieldListArray.getJSONObject(a).getString("value");
- }
- break;
- //职位
- case "sys00-position":
- if (fieldListArray.getJSONObject(a).getString("value") != null){
- System.out.println("***职位***-->" + fieldListArray.getJSONObject(a).getString("value"));
- zhiwei = fieldListArray.getJSONObject(a).getString("value");
- }
- break;
- //邮箱
- case "sys00-email":
- if (fieldListArray.getJSONObject(a).getString("value") != null){
- System.out.println("***邮箱***-->" + fieldListArray.getJSONObject(a).getString("value"));
- youxiang = fieldListArray.getJSONObject(a).getString("value");
- }
- break;
- }
- }
- //判断宜搭人员信息表是否有当前人员userid
- /*同步至宜搭*/
- Map map = new HashMap();
- //人员空间
- map.put("employeeField_lo5h5iml",userId);
- //钉钉userid
- map.put("textField_lo5h5imc", userId);
- //姓名
- map.put("textField_lo5h5ime", userName);
- //主部门
- map.put("textField_lo5h5imj", zhubumen);
- //职位
- map.put("textField_los37klu", zhiwei);
- //邮箱
- map.put("textField_los37klv", youxiang);
- String mapJson = JSON.toJSONString(map);
- System.out.println("mapJson:" + mapJson);
- //宜搭表单判断查询条件
- Map map1 = new HashMap();
- //字段编号
- map1.put("key", "textField_lo5h5imc");
- //同步类型
- map1.put("value", userId);
- //控件类型
- map1.put("type", "TEXT");
- //逻辑判断符
- map1.put("operator", "eq");
- //控件名称
- map1.put("componentName", "TextField");
- List list11 = new ArrayList();
- list11.add(map1);
- String listJson = JSON.toJSONString(list11);
- System.out.println("查询条件listJson:" + listJson);
- //新增或更新表单实例【宜搭】
- try {
- com.aliyun.dingtalkyida_1_0.Client client11 = createClient();
- com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataHeaders createOrUpdateFormDataHeaders = new com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataHeaders();
- createOrUpdateFormDataHeaders.xAcsDingtalkAccessToken = accessTokenService.getAccessToken();
- com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataRequest createOrUpdateFormDataRequest = new com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataRequest()
- //应用秘钥
- .setSystemToken("J0A6698165EFMED0AHIG76FW7C6Q3ON1PG5OL482")
- //表单编码
- .setFormUuid("FORM-5Q966D91G96F0WI8D98Q27NSBGUR3OV02H5OL21")
- .setUserId("yida_pub_account")
- .setSearchCondition(listJson)
- //应用编码
- .setAppType("APP_QHPV3T4ZU2Y88Q4U0UDA")
- .setFormDataJson(mapJson);
- CreateOrUpdateFormDataResponse orUpdateFormDataWithOptions = client11.createOrUpdateFormDataWithOptions(createOrUpdateFormDataRequest, createOrUpdateFormDataHeaders, new RuntimeOptions());
- String s = JSON.toJSONString(orUpdateFormDataWithOptions.getBody());
- jsonObject = JSON.parseObject(s);
- System.out.println("【创建或更新】表单object对象:" + jsonObject);
- } catch (TeaException err) {
- if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // err 中含有 code 和 message 属性,可帮助开发定位问题
- }
- } catch (Exception _err) {
- TeaException err = new TeaException(_err.getMessage(), _err);
- if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // err 中含有 code 和 message 属性,可帮助开发定位问题
- }
- }
- }
- /*同步至宜搭*/
- if (result1.getString("next_cursor") != null) {
- // || result1.getString("data_list") != ""
- // offset = offset + size;
- try {
- offset = result1.getInteger("next_cursor");
- }catch (Exception e){
- e.printStackTrace();
- }
- }
- } while (result1.getString("next_cursor") != null);
- return "同步环世花名册人员-->宜搭人员信息表单完成";
- }
- //根据任务ID获取任务详情
- public JSONArray getRenwuxiangqing(String renwuId){
- // String renwuId = "653a4ae8dba1ed3bcdae96a1";
- int code = 0;
- JSONArray result = null;
- JSONArray resultArray = null;
- try {
- OkHttpClient client = new OkHttpClient().newBuilder()
- .build();
- MediaType mediaType = MediaType.parse("text/plain");
- RequestBody body = RequestBody.create(mediaType, "");
- Request request = new Request.Builder()
- .url("https://open.teambition.com/api/v3/task/query?taskId=" + renwuId)
- .method("GET", null)
- .addHeader("Authorization", "Bearer " + accessTokenService.getAppToken())
- .addHeader("X-Tenant-Id", tbOrganizationId)
- .addHeader("X-Tenant-Type", "organization")
- .build();
- Response response = client.newCall(request).execute();
- String bodyStr = response.body().string();
- JSONObject jsonObject = JSON.parseObject(bodyStr);
- // System.out.println("返回体body:" + jsonObject);
- code = jsonObject.getInteger("code");
- System.out.println("TB获取任务详情接口返回状态码:" + code);
- result = jsonObject.getJSONArray("result");
- System.out.println("TB获取任务详情接口返回result:" + result);
- resultArray = JSON.parseArray(result.toJSONString());
- System.out.println("接口返回任务详情数组:" + resultArray);
- }catch (IOException e){
- e.printStackTrace();
- }
- return resultArray;
- }
- //根据项目ID获取项目名称
- public String getTBxaingmu(String xiangmuID){
- // String xiangmuID = "6527a5df45765228a54babbf";
- int code = 0;
- JSONArray result = null;
- String xiangmuName = null;
- try {
- OkHttpClient client = new OkHttpClient().newBuilder()
- .build();
- Request request = new Request.Builder()
- .url("https://open.teambition.com/api/v3/project/query?projectIds=" + xiangmuID)
- .method("GET", null)
- .addHeader("Authorization", "Bearer " + accessTokenService.getAppToken())
- .addHeader("X-Tenant-Id", tbOrganizationId)
- .addHeader("X-Tenant-Type", "organization")
- .build();
- Response response = client.newCall(request).execute();
- String bodyStr = response.body().string();
- JSONObject jsonObject = JSON.parseObject(bodyStr);
- System.out.println("返回体body:" + jsonObject);
- code = jsonObject.getInteger("code");
- System.out.println("查询【项目信息】接口返回的状态码(200成功,400异常):" + code);
- result = jsonObject.getJSONArray("result");
- xiangmuName = result.getJSONObject(0).getString("name");
- System.out.println("项目名称:" + xiangmuName);
- }catch (IOException e){
- e.printStackTrace();
- }
- return xiangmuName;
- }
- //根据项目ID获取项目分组ID
- public String getXiangmufenzuID(String xiangmuID){
- //项目ID
- // String xiangmuID = "652e28f8d74c5cc851b1a732";
- int code = 0;
- JSONArray result = null;
- String xiangmufenzuID = "";
- try {
- OkHttpClient client = new OkHttpClient().newBuilder()
- .build();
- MediaType mediaType = MediaType.parse("text/plain");
- RequestBody body = RequestBody.create(mediaType, "");
- Request request = new Request.Builder()
- .url("https://open.teambition.com/api/v3/project/"+ xiangmuID +"/project-tag")
- .method("GET", null)
- .addHeader("Authorization", "Bearer " + accessTokenService.getAppToken())
- .addHeader("X-Tenant-Id", tbOrganizationId)
- .addHeader("X-Tenant-Type", "organization")
- .build();
- Response response = client.newCall(request).execute();
- String bodyStr = response.body().string();
- JSONObject jsonObject = JSON.parseObject(bodyStr);
- System.out.println("返回体body:" + jsonObject);
- code = jsonObject.getInteger("code");
- System.out.println("查询【项目分组】接口返回的状态码(200成功,400异常):" + code);
- result = jsonObject.getJSONArray("result");
- if (!result.isEmpty()){
- xiangmufenzuID = result.getString(0);
- }
- }catch (IOException e){
- e.printStackTrace();
- }
- System.out.println("项目分组ID:" + xiangmufenzuID);
- return xiangmufenzuID;
- }
- //根据项目分组ID获取项目分组名称
- public String getXiangmufenzuName(String xiangmufenzuID){
- //项目分组ID
- // String xiangmufenzuID = "645afc0bf1e174064c4e0ea1";
- int code = 0;
- JSONArray result = null;
- String xiangmufenzuName = "";
- try {
- OkHttpClient client = new OkHttpClient().newBuilder()
- .build();
- MediaType mediaType = MediaType.parse("text/plain");
- RequestBody body = RequestBody.create(mediaType, "");
- Request request = new Request.Builder()
- .url("https://open.teambition.com/api/v3/project-tag/query?ids="+ xiangmufenzuID)
- .method("GET", null)
- .addHeader("Authorization", "Bearer " + accessTokenService.getAppToken())
- .addHeader("X-Tenant-Id", tbOrganizationId)
- .addHeader("X-Tenant-Type", "organization")
- .build();
- Response response = client.newCall(request).execute();
- String bodyStr = response.body().string();
- JSONObject jsonObject = JSON.parseObject(bodyStr);
- System.out.println("返回体body:" + jsonObject);
- code = jsonObject.getInteger("code");
- System.out.println("查询【项目分组名称】接口返回的状态码(200成功,400异常):" + code);
- result = jsonObject.getJSONArray("result");
- JSONObject jsonObject1 = result.getJSONObject(0);
- xiangmufenzuName = jsonObject1.getString("name");
- }catch (IOException e){
- e.printStackTrace();
- }
- System.out.println("项目分组名称:" + xiangmufenzuName);
- return xiangmufenzuName;
- }
- //根据自定义字段ID【业务类型】获取自定义字段内容
- public JSONArray getTBzidingyi() {
- //业务类型
- String zidingyiID = "642a8ff24ed7d8c44b469ced";
- int code = 0;
- JSONArray result = null;
- try {
- OkHttpClient client = new OkHttpClient().newBuilder()
- .build();
- MediaType mediaType = MediaType.parse("text/plain");
- RequestBody body = RequestBody.create(mediaType, "");
- Request request = new Request.Builder()
- .url("https://open.teambition.com/api/v3/customfield/search?cfIds=" + zidingyiID)
- .method("GET", null)
- .addHeader("Authorization", "Bearer " + accessTokenService.getAppToken())
- .addHeader("X-Tenant-Id", tbOrganizationId)
- .addHeader("X-Tenant-Type", "organization")
- .build();
- Response response = client.newCall(request).execute();
- String bodyStr = response.body().string();
- JSONObject jsonObject = JSON.parseObject(bodyStr);
- System.out.println("返回体body:" + jsonObject);
- code = jsonObject.getInteger("code");
- System.out.println("查询【自定义字段:业务类型】接口返回的状态码(200成功,400异常):" + code);
- result = jsonObject.getJSONArray("result");
- System.out.println("result:" + result);
- }catch (IOException e){
- e.printStackTrace();
- }
- JSONArray yewuleixingArray = result.getJSONObject(0).getJSONArray("choices");
- System.out.println("【业务类型】值:" + yewuleixingArray);
- return yewuleixingArray;
- }
- //获取迭代类型
- public String getDiedai(String xmid, String ddid){
- // String xmid = "6476b93d344ff5c76845eb8d";
- // String ddid = "6528b83315680fd221e3c1b6";
- int code = 0;
- JSONArray result = null;
- String diedaiName = "";
- try {
- OkHttpClient client = new OkHttpClient().newBuilder()
- .build();
- MediaType mediaType = MediaType.parse("text/plain");
- RequestBody body = RequestBody.create(mediaType, "");
- Request request = new Request.Builder()
- .url("https://open.teambition.com/api/v3/project/" + xmid + "/sprint/search?sprintIds=" + ddid)
- .method("GET", null)
- .addHeader("Authorization", "Bearer " + accessTokenService.getAppToken())
- .addHeader("X-Tenant-Id", tbOrganizationId)
- .addHeader("X-Tenant-Type", "organization")
- .build();
- Response response = client.newCall(request).execute();
- String bodyStr = response.body().string();
- JSONObject jsonObject = JSON.parseObject(bodyStr);
- System.out.println("返回体body:" + jsonObject);
- code = jsonObject.getInteger("code");
- System.out.println("查询【迭代名称】接口返回的状态码(200成功,400异常):" + code);
- result = jsonObject.getJSONArray("result");
- System.out.println("result:" + result);
- if (result != null){
- diedaiName = result.getJSONObject(0).getString("name");
- }
- }catch (IOException e){
- e.printStackTrace();
- }
- System.out.println("迭代名称:" + diedaiName);
- return diedaiName;
- }
- //获取IDX分组下的目录名称
- public JSONArray getIDXfenzu(){
- //获取项目分组【IDX项目】下面的分组
- String IDXxiangmufenzuID = "645def56443fd5770693c3f8";
- int code = 0;
- JSONArray result = null;
- try {
- OkHttpClient client = new OkHttpClient().newBuilder()
- .build();
- MediaType mediaType = MediaType.parse("text/plain");
- RequestBody body = RequestBody.create(mediaType, "");
- Request request = new Request.Builder()
- .url("https://open.teambition.com/api/v3/project-tag/query?parentProjectTagId=" + IDXxiangmufenzuID)
- .method("GET", null)
- .addHeader("Authorization", "Bearer " + accessTokenService.getAppToken())
- .addHeader("X-Tenant-Id", tbOrganizationId)
- .addHeader("X-Tenant-Type", "organization")
- .build();
- Response response = client.newCall(request).execute();
- String bodyStr = response.body().string();
- JSONObject jsonObject = JSON.parseObject(bodyStr);
- System.out.println("返回体body:" + jsonObject);
- code = jsonObject.getInteger("code");
- result = jsonObject.getJSONArray("result");
- }catch (IOException e){
- e.printStackTrace();
- }
- System.out.println("查询【IDX分组】下面的分组,接口返回的状态码(200成功,400异常):" + code);
- return result;
- }
- //查询宜搭中是否有该任务的工时
- public String getYida(String sjtjyf,String userid,String tbrwid,String rwgsssrq,String panduan){
- // String sjtjyf = "2024-01";
- // String userid = "2055054927907044";
- // String tbrwid = "65ba0be275b4750e2772c89b";
- // String rwgsssrq = "2024-01-25T00:00:00.000Z";
- //封装根据当前年份作为查询条件
- Map mapAll = new HashMap();
- // //查询实际统计月份
- // mapAll.put("textField_losayxi8",sjtjyf);
- // //人员userid
- // mapAll.put("textField_los8y15p",userid);
- // //TB任务id
- // mapAll.put("textField_lp8ihks3",tbrwid);
- // //任务工时所属日期
- // mapAll.put("textField_lqn3tjjv",rwgsssrq);
- if (panduan.equals("实际工时")){
- //查询实际统计月份
- mapAll.put("textField_losayxi8",sjtjyf);
- //人员userid
- mapAll.put("textField_los8y15p",userid);
- //TB任务id
- mapAll.put("textField_lp8ihks3",tbrwid);
- //任务工时所属日期
- mapAll.put("textField_lqn3tjjv",rwgsssrq);
- }else {
- //查询实际统计月份
- mapAll.put("textField_losayxi8",sjtjyf);
- //人员userid
- mapAll.put("textField_los8y15p",userid);
- //TB任务id
- mapAll.put("textField_lp8ihks3",tbrwid);
- //任务工时所属日期
- mapAll.put("textField_lqn3tjjv",rwgsssrq);
- //工时类型
- mapAll.put("textField_lrq4uku2","实际工时");
- }
- String mapAllStr = JSON.toJSONString(mapAll);
- System.out.println("封装查询宜搭中是否有该任务工时的字段参数:" + mapAllStr);
- JSONObject jsonObject = null;
- JSONArray data = null;
- int size = 100;
- int page = 1;
- //【环世架构】
- try {
- com.aliyun.dingtalkyida_1_0.Client client = createClient();
- com.aliyun.dingtalkyida_1_0.models.SearchFormDatasHeaders searchFormDatasHeaders = new com.aliyun.dingtalkyida_1_0.models.SearchFormDatasHeaders();
- searchFormDatasHeaders.xAcsDingtalkAccessToken = accessTokenService.getAccessToken();
- com.aliyun.dingtalkyida_1_0.models.SearchFormDatasRequest searchFormDatasRequest = new com.aliyun.dingtalkyida_1_0.models.SearchFormDatasRequest()
- .setSystemToken("J0A6698165EFMED0AHIG76FW7C6Q3ON1PG5OL482")
- .setSearchFieldJson(mapAllStr)
- .setCurrentPage(page)
- .setPageSize(size)
- .setFormUuid("FORM-BH766Y61W4CFWBS0869YFBF8COTE2QEHIH5OLM")
- .setUserId("yida_pub_account")
- .setAppType("APP_QHPV3T4ZU2Y88Q4U0UDA");
- SearchFormDatasResponse searchFormDatasResponse = client.searchFormDatasWithOptions(searchFormDatasRequest, searchFormDatasHeaders, new RuntimeOptions());
- // System.out.println(JSON.toJSONString(searchFormDatasResponse.getBody()));
- String s = JSON.toJSONString(searchFormDatasResponse.getBody());
- jsonObject = JSON.parseObject(s);
- // System.out.println("钉钉宜搭数据高级条件查询【宜搭工时统计表】接口object对象:" + jsonObject);
- data = jsonObject.getJSONArray("data");
- System.out.println("返回的宜搭data:" + data);
- } catch (TeaException err) {
- if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // err 中含有 code 和 message 属性,可帮助开发定位问题
- }
- } catch (Exception _err) {
- TeaException err = new TeaException(_err.getMessage(), _err);
- if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // err 中含有 code 和 message 属性,可帮助开发定位问题
- }
- }
- String flag = null;
- if (data == null || data.isEmpty()) {
- System.out.println("查询【宜搭工时统计表】返回数据为空!");
- flag = "不存在";
- } else {
- flag = "已存在";
- }
- System.out.println("查询返回结果标识:" + flag);
- return flag;
- }
- //统计钉钉考勤、请假、TB项目/任务工时
- @Override
- public String allTongji(int type){
- /**
- * type = 0 上月数据
- * type = 1 本月数据
- * */
- //TODO
- // type = 0;
- //获取当前时间
- Date Date = new Date(System.currentTimeMillis());
- System.out.println("当前时间:" + Date);
- String lastMonthNow = null;
- // //截取当天上月的年月
- // Calendar calendar123 = Calendar.getInstance();
- // calendar123.setTime(Date);
- // calendar123.add(Calendar.MONTH,-1);
- // lastMonthNow = new SimpleDateFormat("yyyy-MM").format(calendar123.getTime());
- // System.out.println("当天上月的日期,文本格式(月)" + lastMonthNow);
- if (type == 0){//上月
- //截取当天上月的年月
- Calendar calendar123 = Calendar.getInstance();
- calendar123.setTime(Date);
- calendar123.add(Calendar.MONTH,-1);
- lastMonthNow = new SimpleDateFormat("yyyy-MM").format(calendar123.getTime());
- System.out.println("当天上月的日期,文本格式(月)" + lastMonthNow);
- }else {//本月
- //截取当天本月的年月
- Calendar calendar123 = Calendar.getInstance();
- calendar123.setTime(Date);
- calendar123.add(Calendar.MONTH,0);
- lastMonthNow = new SimpleDateFormat("yyyy-MM").format(calendar123.getTime());
- System.out.println("当天本月的日期,文本格式(月)" + lastMonthNow);
- }
- /*计算规则*/
- String FORMtime = null;
- String TOtime = null;
- //查询工时使用的时间段
- String startDate = null;
- String endDate = null;
- // /*
- // * 获取前一个月的第一天和最后一天的时间
- // * */
- // Calendar calendar111 = Calendar.getInstance();
- // calendar111.setTime(Date);
- // //前一个月第一天
- // calendar111.add(Calendar.MONTH,-1);
- // calendar111.set(Calendar.DAY_OF_MONTH,1);
- // calendar111.set(Calendar.HOUR_OF_DAY,0);
- // calendar111.set(Calendar.MINUTE,0);
- // calendar111.set(Calendar.SECOND,0);
- // calendar111.set(Calendar.MILLISECOND,0);
- // FORMtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar111.getTime());
- // System.out.println("前一个月第一天零点:" + FORMtime);
- //
- // Calendar calendar222 = Calendar.getInstance();
- //// int month222 = calendar222.get(Calendar.MONTH);
- // //前一个月最后一天
- // calendar222.add(Calendar.MONTH,-1);
- // calendar222.set(Calendar.DAY_OF_MONTH,calendar222.getActualMaximum(Calendar.DAY_OF_MONTH));
- // calendar222.set(Calendar.HOUR_OF_DAY,0);
- // calendar222.set(Calendar.MINUTE,0);
- // calendar222.set(Calendar.SECOND,0);
- // calendar222.set(Calendar.MILLISECOND,0);
- // TOtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar222.getTime());
- // System.out.println("前一个月最后一天零点:" + TOtime);
- if (type == 0){
- /*
- * 获取前一个月的第一天和最后一天的时间
- * */
- Calendar calendar111 = Calendar.getInstance();
- calendar111.setTime(Date);
- //前一个月第一天
- calendar111.add(Calendar.MONTH,-1);
- calendar111.set(Calendar.DAY_OF_MONTH,1);
- calendar111.set(Calendar.HOUR_OF_DAY,0);
- calendar111.set(Calendar.MINUTE,0);
- calendar111.set(Calendar.SECOND,0);
- calendar111.set(Calendar.MILLISECOND,0);
- FORMtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar111.getTime());
- System.out.println("前一个月第一天零点:" + FORMtime);
- startDate = new SimpleDateFormat("yyyy-MM-dd").format(calendar111.getTime());
- System.out.println("前一个月第一天:" + startDate);
- Calendar calendar222 = Calendar.getInstance();
- // int month222 = calendar222.get(Calendar.MONTH);
- //前一个月最后一天
- calendar222.add(Calendar.MONTH,-1);
- calendar222.set(Calendar.DAY_OF_MONTH,calendar222.getActualMaximum(Calendar.DAY_OF_MONTH));
- calendar222.set(Calendar.HOUR_OF_DAY,0);
- calendar222.set(Calendar.MINUTE,0);
- calendar222.set(Calendar.SECOND,0);
- calendar222.set(Calendar.MILLISECOND,0);
- TOtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar222.getTime());
- System.out.println("前一个月最后一天零点:" + TOtime);
- endDate = new SimpleDateFormat("yyyy-MM-dd").format(calendar222.getTime());
- System.out.println("前一个月最后一天:" + endDate);
- }else {
- /*
- * 获取本月的第一天和最后一天的时间
- * */
- Calendar calendar111 = Calendar.getInstance();
- calendar111.setTime(Date);
- //本月第一天
- calendar111.add(Calendar.MONTH,0);
- calendar111.set(Calendar.DAY_OF_MONTH,1);
- calendar111.set(Calendar.HOUR_OF_DAY,0);
- calendar111.set(Calendar.MINUTE,0);
- calendar111.set(Calendar.SECOND,0);
- calendar111.set(Calendar.MILLISECOND,0);
- FORMtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar111.getTime());
- System.out.println("本月第一天零点:" + FORMtime);
- startDate = new SimpleDateFormat("yyyy-MM-dd").format(calendar111.getTime());
- System.out.println("本月第一天:" + startDate);
- Calendar calendar222 = Calendar.getInstance();
- // int month222 = calendar222.get(Calendar.MONTH);
- //本月最后一天
- calendar222.add(Calendar.MONTH,0);
- calendar222.set(Calendar.DAY_OF_MONTH,calendar222.getActualMaximum(Calendar.DAY_OF_MONTH));
- calendar222.set(Calendar.HOUR_OF_DAY,0);
- calendar222.set(Calendar.MINUTE,0);
- calendar222.set(Calendar.SECOND,0);
- calendar222.set(Calendar.MILLISECOND,0);
- TOtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar222.getTime());
- System.out.println("本月最后一天零点:" + TOtime);
- endDate = new SimpleDateFormat("yyyy-MM-dd").format(calendar222.getTime());
- System.out.println("本月最后一天:" + endDate);
- }
- //TODO 【手动同步】指定月份的数据,记得注释掉!!!
- // lastMonthNow = "2024-02";
- //TODO 【手动同步】指定月份的数据,记得注释掉!!!
- // FORMtime = "2024-02-01 00:00:00";
- // TOtime = "2024-02-29 00:00:00";
- // startDate = "2024-02-01";
- // endDate = "2024-02-29";
- /*根据自定义字段ID获取【业务类型】选项数组*/
- log.info("通过封装接口获取【业务类型】选项数组。");
- JSONArray tBzidingyi = getTBzidingyi();
- //根据人员信息底表获取【钉钉请假】数据
- /*通过封装接口获取【人员信息底表】*/
- JSONArray yidaRenyuanxinxidibiao = getYidaRenyuanxinxidibiao();
- log.info("通过封装接口获取【人员信息底表】:" + yidaRenyuanxinxidibiao);
- //TODO 人员信息底表获取的第一个人员信息,可能会存在根据邮箱匹配不到TB人员信息的情况。单独同步使用。
- // String aaa = "[{\"zhubumen\":\"QCC组\",\"zhiwei\":\"测试工程师\n\",\"userid\":\"085953146222434489\",\"username\":\"国维杰\",\"youxiang\":\"guowj@olymtech.com\"}]";
- // JSONArray yidaRenyuanxinxidibiao = JSON.parseArray(aaa);
- // log.info("【TEST】通过封装接口获取【人员信息底表】:" + yidaRenyuanxinxidibiao);
- for (int i = 0; i < yidaRenyuanxinxidibiao.size(); i++) {
- //员工id
- String userId = yidaRenyuanxinxidibiao.getJSONObject(i).getString("userid");
- System.out.println("员工id:" + userId);
- //员工姓名
- String userName = yidaRenyuanxinxidibiao.getJSONObject(i).getString("username");
- System.out.println("员工姓名:" + userName);
- //主部门
- String zhubumen = yidaRenyuanxinxidibiao.getJSONObject(i).getString("zhubumen");
- System.out.println("主部门:" + zhubumen);
- //职位
- String zhiwei = yidaRenyuanxinxidibiao.getJSONObject(i).getString("zhiwei");
- System.out.println("职位:" + zhiwei);
- //邮箱
- String youxiang = yidaRenyuanxinxidibiao.getJSONObject(i).getString("youxiang");
- System.out.println("邮箱:" + youxiang);
- if (youxiang == null){
- log.info("获取人员信息底表【邮箱为空】,该钉钉人员没有维护邮箱或者人员已离职!");
- }else {
- //获取TB人员userId
- log.info("根据钉钉userid匹配TB人员userId===");
- // String TBuserId = getTBuserId(youxiang);
- // if (TBuserId == null){
- // TBuserId = getTBuserId(youxiang);
- //
- // if (TBuserId == null){
- // TBuserId = getTBuserId(youxiang);
- // }
- // }
- // log.info("根据邮箱匹配到的TB人员userId===" + TBuserId);
- String TBuserId = getDingdingToTBuserId(userId);
- log.info("根据钉钉userid匹配到的TB人员userId===" + TBuserId);
- if (TBuserId == null) {
- log.info("根据钉钉userid没有匹配到TB人员userId,为空不处理同步TB数据,只同步钉钉数据!");
- /*同步钉钉数据*/
- //应出勤天数
- float yingchuqintianshu = 0;
- //请假天数
- float qingjiatianshu = 0;
- //查询上月考勤数据,统计上月应出勤天数、请假天数
- try {
- DingTalkClient client11 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/attendance/getcolumnval");
- OapiAttendanceGetcolumnvalRequest req = new OapiAttendanceGetcolumnvalRequest();
- //TODO 待查询人员的userid
- req.setUserid(userId);
- //考勤报表列定义查出来的工作时长的列id(固定)
- req.setColumnIdList("176150482,985267953");
- //TODO 查询开始时间
- req.setFromDate(StringUtils.parseDateTime(FORMtime));
- //TODO 查询结束时间
- req.setToDate(StringUtils.parseDateTime(TOtime));
- OapiAttendanceGetcolumnvalResponse rsp = client11.execute(req, accessTokenService.getAccessToken());
- // System.out.println(rsp.getBody());
- String string = rsp.getBody();
- JSONObject jsonObjectKaoqin = JSON.parseObject(string);
- int errcode = jsonObjectKaoqin.getInteger("errcode");
- System.out.println("考勤时间周期查询结果状态码:" + errcode);
- String errmsg = jsonObjectKaoqin.getString("errmsg");
- System.out.println("考勤时间周期查询结果状态信息:" + errmsg);
- if (errcode != 0) {
- log.info("考勤时间周期查询结果反馈异常,异常状态码:" + errcode + "【" + errmsg + "】");
- } else {
- //应出勤天数
- JSONArray jsonArray1 = jsonObjectKaoqin.getJSONObject("result").
- getJSONArray("column_vals").
- getJSONObject(0).
- getJSONArray("column_vals");
- for (int x = 0; x < jsonArray1.size(); x++) {
- //应出勤天数
- String value = jsonArray1.getJSONObject(x).getString("value");
- System.out.println("应出勤天数:" + value);
- float v = Float.parseFloat(value);
- if (v == 1) {
- System.out.println("应出勤天数,进行循环统计!");
- yingchuqintianshu = yingchuqintianshu + 1;
- }
- }
- //请假天数
- JSONArray jsonArray = jsonObjectKaoqin.getJSONObject("result").
- getJSONArray("column_vals").
- getJSONObject(1).
- getJSONArray("column_vals");
- for (int x = 0; x < jsonArray.size(); x++) {
- //请假天数
- String value = jsonArray.getJSONObject(x).getString("value");
- System.out.println("请假天数:" + value);
- float v = Float.parseFloat(value);
- if (v > 0) {
- System.out.println("请假天数,进行循环统计!");
- qingjiatianshu = qingjiatianshu + v;
- }
- }
- }
- } catch (ApiException e) {
- e.printStackTrace();
- }
- //应出勤天数
- BigDecimal ycqts = new BigDecimal(yingchuqintianshu);
- BigDecimal ycqtsAll = ycqts.setScale(2, BigDecimal.ROUND_DOWN);
- System.out.println("应出勤天数(浮点数,保留2位小数):" + ycqtsAll);
- //请假天数
- BigDecimal qjts = new BigDecimal(qingjiatianshu);
- BigDecimal qjtsAll = qjts.setScale(2, BigDecimal.ROUND_DOWN);
- System.out.println("请假天数(浮点数,保留2位小数):" + qjtsAll);
- /*同步至宜搭*/
- Map map = new HashMap();
- //实际统计月份
- map.put("textField_losayxi8", lastMonthNow);
- //钉钉userid
- map.put("textField_los8y15p", userId);
- //姓名
- map.put("textField_los8y15q", userName);
- //主部门
- map.put("textField_los8y15s", zhubumen);
- //职位
- map.put("textField_los8y15x", zhiwei);
- //邮箱
- map.put("textField_los8y15y", youxiang);
- /*TB项目/任务数据*/
- // //项目名称
- // map.put("textField_lp0m06bd", "");
- // //任务名称
- // map.put("textField_lp0m06be", "");
- // //业务类型
- // map.put("textField_los8y15z", "");
- // //统一工时数(天)
- // map.put("numberField_los8y164", 0);
- /*钉钉考勤数据*/
- //每月人天(应出勤天数)
- map.put("numberField_los8y16g", ycqtsAll);
- //请假天数
- map.put("numberField_los8y16f", qjtsAll);
- //是否全投入
- // map.put("selectField_los8y16e", "否");
- /*计算字段*/
- // //人月数据:统一工时数(天)/每月人天
- // map.put("numberField_los8y16c", 0);
- // //SaaS合计:统一工时数(天)+请假成本(天)
- // map.put("numberField_los8y16h", 0);
- // //占比:SaaS合计/每月人天
- // map.put("numberField_los8y16p", 0);
- String mapJson = JSON.toJSONString(map);
- System.out.println("mapJson:" + mapJson);
- //宜搭表单判断查询条件
- //判断宜搭人员信息表是否有当前人员userid
- Map map1 = new HashMap();
- //字段编号
- map1.put("key", "textField_los8y15p");
- //同步类型
- map1.put("value", userId);
- // map1.put("value", "userId");
- //控件类型
- map1.put("type", "TEXT");
- //逻辑判断符
- map1.put("operator", "eq");
- //控件名称
- map1.put("componentName", "TextField");
- Map map2 = new HashMap();
- //字段编号
- map2.put("key", "textField_losayxi8");
- //同步类型
- map2.put("value", lastMonthNow);
- //控件类型
- map2.put("type", "TEXT");
- //逻辑判断符
- map2.put("operator", "eq");
- //控件名称
- map2.put("componentName", "TextField");
- List list11 = new ArrayList();
- list11.add(map1);
- list11.add(map2);
- String listJson = JSON.toJSONString(list11);
- System.out.println("查询条件listJson:" + listJson);
- //将汇总数据写入【宜搭汇总表】
- JSONObject jsonObject;
- //新增或更新表单实例【宜搭】
- try {
- com.aliyun.dingtalkyida_1_0.Client client11 = createClient();
- com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataHeaders createOrUpdateFormDataHeaders = new com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataHeaders();
- createOrUpdateFormDataHeaders.xAcsDingtalkAccessToken = accessTokenService.getAccessToken();
- com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataRequest createOrUpdateFormDataRequest = new com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataRequest()
- //应用秘钥
- .setSystemToken("J0A6698165EFMED0AHIG76FW7C6Q3ON1PG5OL482")
- //表单编码
- .setFormUuid("FORM-BH766Y61W4CFWBS0869YFBF8COTE2QEHIH5OLM")
- .setUserId("yida_pub_account")
- .setSearchCondition(listJson)
- //应用编码
- .setAppType("APP_QHPV3T4ZU2Y88Q4U0UDA")
- .setFormDataJson(mapJson);
- CreateOrUpdateFormDataResponse orUpdateFormDataWithOptions = client11.createOrUpdateFormDataWithOptions(createOrUpdateFormDataRequest, createOrUpdateFormDataHeaders, new RuntimeOptions());
- String s = JSON.toJSONString(orUpdateFormDataWithOptions.getBody());
- jsonObject = JSON.parseObject(s);
- // System.out.println("【创建或更新】表单object对象:" + jsonObject);
- } catch (TeaException err) {
- if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // err 中含有 code 和 message 属性,可帮助开发定位问题
- }
- } catch (Exception _err) {
- TeaException err = new TeaException(_err.getMessage(), _err);
- if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // err 中含有 code 和 message 属性,可帮助开发定位问题
- }
- }
- /*同步至宜搭*/
- } else {
- //获取该人员在TB中的实际工时信息
- int code = 0;
- JSONArray result = null;
- try {
- OkHttpClient client = new OkHttpClient().newBuilder()
- .build();
- MediaType mediaType = MediaType.parse("text/plain");
- RequestBody body = RequestBody.create(mediaType, "");
- Request request = new Request.Builder()
- .url("https://open.teambition.com/api/worktime/query?userId=" + TBuserId + "&pageSize=1000&pageToken=&startDate="+ startDate +"&endDate="+ endDate)
- .method("GET", null)
- .addHeader("Authorization", "Bearer " + accessTokenService.getAppToken())
- .addHeader("X-Tenant-Id", tbOrganizationId)
- .addHeader("X-Tenant-Type", "organization")
- .build();
- Response response = client.newCall(request).execute();
- String bodyStr = response.body().string();
- JSONObject jsonObject = JSON.parseObject(bodyStr);
- // System.out.println("返回体body:" + jsonObject);
- code = jsonObject.getInteger("code");
- System.out.println("TB获取人员实际工时接口返回状态码:" + code);
- result = jsonObject.getJSONArray("result");
- // System.out.println("TB获取人员实际工时接口返回result:" + result);
- } catch (IOException e) {
- e.printStackTrace();
- }
- if (!result.isEmpty()){
- log.info("该人员实际工时不为空,将直接获取实际工时!");
- for (int i1 = 0; i1 < result.size(); i1++) {
- //工时关联的task ID
- String objectId = result.getJSONObject(i1).getString("objectId");
- System.out.println("工时关联的task ID:" + objectId);
- //任务工时所属日期
- String rwgsssrq = result.getJSONObject(i1).getString("date");
- System.out.println("任务工时所属日期:" + rwgsssrq);
- //拼接任务链接
- // String renwuURL = "https://www.teambition.com/task/" + objectId;
- // System.out.println("拼接的任务url:" + renwuURL);
- //工时(毫秒:转换成天)
- long worktime = result.getJSONObject(i1).getLong("worktime");
- System.out.println("实际工时(毫秒):" + worktime);
- double gongshi = (double) worktime / 3600000 / 8;
- BigDecimal gongshiTwo = new BigDecimal(gongshi);
- double gs = gongshiTwo.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
- System.out.println("实际工时(毫秒转换成天):" + gs);
- //汇总工时
- // BigDecimal gsDouble = new BigDecimal(gs);
- // gsAll = gsAll.add(gsDouble);
- //根据任务ID获取任务详情,解析得到任务标题和项目ID
- JSONArray renwuxiangqing = getRenwuxiangqing(objectId);
- JSONObject jsonObject = renwuxiangqing.getJSONObject(0);
- //是否放入回收站
- String isArchived = jsonObject.getString("isArchived");
- System.out.println("是否放入回收站:" + isArchived);
- String content = "";
- String yewuleixing = "";
- String tBxaingmuName = "";
- String xiangmufenzuName = "";
- String diedaiName = "";
- String XXX = "";
- if (renwuxiangqing == null){
- log.info("该任务不存在!");
- } else if (isArchived.equals("true")) {
- log.info("该任务已放入回收站,不统计!");
- } else {
- log.info("该任务没有放入回收站,正常统计!");
- //任务标题
- content = jsonObject.getString("content");
- System.out.println("任务标题:" + content);
- //获取迭代ID
- String diedaiID = null;
- try {
- diedaiID = jsonObject.getString("sprintId");
- } catch (Exception e) {
- e.printStackTrace();
- }
- System.out.println("迭代ID:" + diedaiID);
- // /*调用封装接口获取自定义字段【业务类型】选项值集合*/
- // log.info("调用封装接口获取自定义字段【业务类型】选项值集合。");
- // JSONArray tBzidingyiArray = getTBzidingyi();
- for (int i11 = 0; i11 < tBzidingyi.size(); i11++) {
- JSONObject jsonObject1 = tBzidingyi.getJSONObject(i11);
- //自定义字段id
- String zidingyiID = jsonObject1.getString("id");
- System.out.println("自定义字段【业务类型】id:" + zidingyiID);
- //自定义字段名称
- String zidingyiName = jsonObject1.getString("value");
- System.out.println("自定义字段【业务类型】名称:" + zidingyiName);
- //业务类型
- JSONArray yewuleixingjsonArray = renwuxiangqing.getJSONObject(0).getJSONArray("customfields");
- for (int j = 0; j < yewuleixingjsonArray.size(); j++) {
- JSONArray yewuleixingjsonArray1 = yewuleixingjsonArray.getJSONObject(j).getJSONArray("value");
- if (yewuleixingjsonArray1.isEmpty()) {
- log.info("任务字段没有内容,跳过~");
- } else {
- String ziduanName = yewuleixingjsonArray1.getJSONObject(0).getString("title");
- System.out.println("任务中包含的字段内容:" + ziduanName);
- //判断当前循环到的字段内容是否属于自定义字段【业务类型】中的某个值,如果符合其中一个则取该值
- if (ziduanName.equals(zidingyiName)) {
- yewuleixing = ziduanName;
- }
- }
- }
- }
- System.out.println("【匹配】业务类型:" + yewuleixing);
- //项目ID
- String projectId = jsonObject.getString("projectId");
- System.out.println("项目ID:" + projectId);
- /*根据项目ID获取项目详情*/
- log.info("根据TB项目ID获取项目名称===");
- tBxaingmuName = getTBxaingmu(projectId);
- /*根据项目ID和任务中的迭代ID获取迭代名称*/
- log.info("根据项目ID和任务中的迭代ID获取迭代名称===");
- diedaiName = getDiedai(projectId, diedaiID);
- System.out.println("获取最终的迭代名称:" + diedaiName);
- if (yewuleixing.equals("")) {
- log.info("业务类型为空,去取该TB项目中属于IDX分组名称。");
- /*根据项目ID获取项目分组ID*/
- log.info("根据项目ID获取项目分组ID===");
- String xiangmufenzuID = getXiangmufenzuID(projectId);
- System.out.println("项目分组ID:" + xiangmufenzuID);
- /*根据项目ID获取项目分组ID*/
- log.info("根据项目分组ID获取项目分组名称===");
- xiangmufenzuName = getXiangmufenzuName(xiangmufenzuID);
- System.out.println("项目分组名称:" + xiangmufenzuName);
- int flag = 0;
- //调用接口获取IDX分组下的目录名称,匹配逻辑下最终的业务类型名称
- log.info("调用接口获取IDX分组下的目录名称===");
- JSONArray IDXfenzu = getIDXfenzu();
- for (int f = 0; f < IDXfenzu.size(); f++) {
- String fenzuId = IDXfenzu.getJSONObject(f).getString("id");
- System.out.println("分组id:" + fenzuId);
- String fenzuName = IDXfenzu.getJSONObject(f).getString("name");
- System.out.println("分组名称:" + fenzuName);
- if (flag == 0) {
- if (xiangmufenzuName.equals(fenzuName)) {
- log.info("匹配到IDX分组名称,去取该IDX分组下的目录名称。");
- XXX = fenzuName;
- //添加标识,说明已经匹配到了
- flag = flag + 1;
- } else {
- log.info("匹配不到IDX分组名称,继续匹配下一个IDX分组。");
- }
- }
- }
- System.out.println("获取的IDX分组下的目录名称用作最终的【业务类型】:" + XXX);
- }
- // }
- /*同步钉钉数据*/
- //应出勤天数
- float yingchuqintianshu = 0;
- //请假天数
- float qingjiatianshu = 0;
- //查询上月考勤数据,统计上月应出勤天数、请假天数
- try {
- DingTalkClient client11 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/attendance/getcolumnval");
- OapiAttendanceGetcolumnvalRequest req = new OapiAttendanceGetcolumnvalRequest();
- //TODO 待查询人员的userid
- req.setUserid(userId);
- //考勤报表列定义查出来的工作时长的列id(固定)
- req.setColumnIdList("176150482,985267953");
- //TODO 查询开始时间
- req.setFromDate(StringUtils.parseDateTime(FORMtime));
- //TODO 查询结束时间
- req.setToDate(StringUtils.parseDateTime(TOtime));
- OapiAttendanceGetcolumnvalResponse rsp = client11.execute(req, accessTokenService.getAccessToken());
- // System.out.println(rsp.getBody());
- String string = rsp.getBody();
- JSONObject jsonObjectKaoqin = JSON.parseObject(string);
- int errcode = jsonObjectKaoqin.getInteger("errcode");
- System.out.println("考勤时间周期查询结果状态码:" + errcode);
- String errmsg = jsonObjectKaoqin.getString("errmsg");
- System.out.println("考勤时间周期查询结果状态信息:" + errmsg);
- if (errcode != 0) {
- log.info("考勤时间周期查询结果反馈异常,异常状态码:" + errcode + "【" + errmsg + "】");
- } else {
- //应出勤天数
- JSONArray jsonArray1 = jsonObjectKaoqin.getJSONObject("result").
- getJSONArray("column_vals").
- getJSONObject(0).
- getJSONArray("column_vals");
- for (int x = 0; x < jsonArray1.size(); x++) {
- //应出勤天数
- String value = jsonArray1.getJSONObject(x).getString("value");
- System.out.println("应出勤天数:" + value);
- float v = Float.parseFloat(value);
- if (v == 1) {
- System.out.println("应出勤天数,进行循环统计!");
- yingchuqintianshu = yingchuqintianshu + 1;
- }
- }
- //请假天数
- JSONArray jsonArray = jsonObjectKaoqin.getJSONObject("result").
- getJSONArray("column_vals").
- getJSONObject(1).
- getJSONArray("column_vals");
- for (int x = 0; x < jsonArray.size(); x++) {
- //请假天数
- String value = jsonArray.getJSONObject(x).getString("value");
- System.out.println("请假天数:" + value);
- float v = Float.parseFloat(value);
- if (v > 0) {
- System.out.println("请假天数,进行循环统计!");
- qingjiatianshu = qingjiatianshu + v;
- }
- }
- }
- } catch (ApiException e) {
- e.printStackTrace();
- }
- //应出勤天数
- BigDecimal ycqts = new BigDecimal(yingchuqintianshu);
- BigDecimal ycqtsAll = ycqts.setScale(2, BigDecimal.ROUND_DOWN);
- System.out.println("应出勤天数(浮点数,保留2位小数):" + ycqtsAll);
- //请假天数
- BigDecimal qjts = new BigDecimal(qingjiatianshu);
- BigDecimal qjtsAll = qjts.setScale(2, BigDecimal.ROUND_DOWN);
- System.out.println("请假天数(浮点数,保留2位小数):" + qjtsAll);
- /*同步至宜搭*/
- Map map = new HashMap();
- //实际统计月份
- map.put("textField_losayxi8", lastMonthNow);
- //钉钉userid
- map.put("textField_los8y15p", userId);
- //姓名
- map.put("textField_los8y15q", userName);
- //主部门
- map.put("textField_los8y15s", zhubumen);
- //职位
- map.put("textField_los8y15x", zhiwei);
- //邮箱
- map.put("textField_los8y15y", youxiang);
- /*TB项目/任务数据*/
- //项目名称
- map.put("textField_lp0m06bd", tBxaingmuName);
- //任务名称
- map.put("textField_lp0m06be", content);
- //任务ID
- map.put("textField_lp8ihks3", objectId);
- //迭代
- map.put("textField_lpf88002", diedaiName);
- //任务工时所属日期
- map.put("textField_lqn3tjjv", rwgsssrq);
- //工时类型(计划工时、实际工时)
- map.put("textField_lrq4uku2", "实际工时");
- /**
- * 判断(同步月份、userid、任务id、任务工时所属日期)是否有该任务
- * */
- String panduan = getYida(lastMonthNow, userId, objectId, rwgsssrq, "实际工时");
- if (panduan.equals("不存在")) {
- log.info("该人员在宜搭中该任务的工时【不存在】,写入【业务类型(初版结果)】!");
- if (yewuleixing.equals("")) {
- //业务类型(修正改这列)
- map.put("textField_lp2aqls1", yewuleixing);
- //业务类型(统计用,勿动)
- map.put("textField_los8y15z", XXX);
- //TODO 后面如果需要在宜搭手动修改,要判断是否存在该数据,如果存在的话这个字段不做更新
- //业务类型(初版结果,勿动)
- map.put("textField_lp2aqls2", XXX);
- } else {
- //业务类型(修正改这列)
- map.put("textField_lp2aqls1", yewuleixing);
- //业务类型(统计用,勿动)
- map.put("textField_los8y15z", yewuleixing);
- //TODO 后面如果需要在宜搭手动修改,要判断是否存在该数据,如果存在的话这个字段不做更新
- //业务类型(初版结果,勿动)
- map.put("textField_lp2aqls2", yewuleixing);
- }
- }else {
- log.info("该人员在宜搭中该任务的工时【存在】,不更新写入【业务类型(初版结果)】!");
- if (yewuleixing.equals("")) {
- //业务类型(修正改这列)
- map.put("textField_lp2aqls1", yewuleixing);
- //业务类型(统计用,勿动)
- map.put("textField_los8y15z", XXX);
- } else {
- //业务类型(修正改这列)
- map.put("textField_lp2aqls1", yewuleixing);
- //业务类型(统计用,勿动)
- map.put("textField_los8y15z", yewuleixing);
- }
- }
- //统一工时数(天)
- map.put("numberField_los8y164", gs);
- /*钉钉考勤数据*/
- //每月人天(应出勤天数)
- map.put("numberField_los8y16g", ycqtsAll);
- //请假天数
- map.put("numberField_los8y16f", qjtsAll);
- //是否全投入
- // map.put("selectField_los8y16e", "否");
- /*计算字段*/
- //人月数据:统一工时数(天)/每月人天 //【废弃】
- map.put("numberField_los8y16c", 0);
- //SaaS合计:统一工时数(天)+请假成本(天)
- map.put("numberField_los8y16h", gs);
- //占比:SaaS合计/每月人天 //【废弃】
- map.put("numberField_los8y16p", 0);
- String mapJson = JSON.toJSONString(map);
- System.out.println("mapJson:" + mapJson);
- //宜搭表单判断查询条件
- //判断宜搭人员信息表是否有当前人员userid
- Map map1 = new HashMap();
- //字段编号
- map1.put("key", "textField_los8y15p");
- //同步类型
- map1.put("value", userId);
- // map1.put("value", "userId");
- //控件类型
- map1.put("type", "TEXT");
- //逻辑判断符
- map1.put("operator", "eq");
- //控件名称
- map1.put("componentName", "TextField");
- /**
- * 实际统计月份
- * */
- Map map2 = new HashMap();
- //字段编号
- map2.put("key", "textField_losayxi8");
- //同步类型
- map2.put("value", lastMonthNow);
- //控件类型
- map2.put("type", "TEXT");
- //逻辑判断符
- map2.put("operator", "eq");
- //控件名称
- map2.put("componentName", "TextField");
- /**
- * 任务id
- * */
- Map map3 = new HashMap();
- //字段编号
- map3.put("key", "textField_lp8ihks3");
- //同步类型
- map3.put("value", objectId);
- //控件类型
- map3.put("type", "TEXT");
- //逻辑判断符
- map3.put("operator", "eq");
- //控件名称
- map3.put("componentName", "TextField");
- /**
- * 任务工时所属日期
- * */
- Map map4 = new HashMap();
- //字段编号
- map4.put("key", "textField_lqn3tjjv");
- //同步类型
- map4.put("value", rwgsssrq);
- //控件类型
- map4.put("type", "TEXT");
- //逻辑判断符
- map4.put("operator", "eq");
- //控件名称
- map4.put("componentName", "TextField");
- /**
- * 工时类型(计划工时、实际工时)
- * */
- Map map5 = new HashMap();
- //字段编号
- map5.put("key", "textField_lrq4uku2");
- //同步类型
- map5.put("value", "实际工时");
- //控件类型
- map5.put("type", "TEXT");
- //逻辑判断符
- map5.put("operator", "eq");
- //控件名称
- map5.put("componentName", "TextField");
- List list11 = new ArrayList();
- list11.add(map1);
- list11.add(map2);
- list11.add(map3);
- list11.add(map4);
- list11.add(map5);
- String listJson = JSON.toJSONString(list11);
- System.out.println("查询条件listJson:" + listJson);
- //将汇总数据写入【宜搭汇总表】
- JSONObject jsonObject1;
- //新增或更新表单实例【宜搭】
- try {
- com.aliyun.dingtalkyida_1_0.Client client11 = createClient();
- com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataHeaders createOrUpdateFormDataHeaders = new com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataHeaders();
- createOrUpdateFormDataHeaders.xAcsDingtalkAccessToken = accessTokenService.getAccessToken();
- com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataRequest createOrUpdateFormDataRequest = new com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataRequest()
- //应用秘钥
- .setSystemToken("J0A6698165EFMED0AHIG76FW7C6Q3ON1PG5OL482")
- //表单编码
- .setFormUuid("FORM-BH766Y61W4CFWBS0869YFBF8COTE2QEHIH5OLM")
- .setUserId("yida_pub_account")
- .setSearchCondition(listJson)
- //应用编码
- .setAppType("APP_QHPV3T4ZU2Y88Q4U0UDA")
- .setFormDataJson(mapJson);
- CreateOrUpdateFormDataResponse orUpdateFormDataWithOptions = client11.createOrUpdateFormDataWithOptions(createOrUpdateFormDataRequest, createOrUpdateFormDataHeaders, new RuntimeOptions());
- String s = JSON.toJSONString(orUpdateFormDataWithOptions.getBody());
- jsonObject1 = JSON.parseObject(s);
- // System.out.println("【创建或更新】表单object对象:" + jsonObject1);
- } catch (TeaException err) {
- if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // err 中含有 code 和 message 属性,可帮助开发定位问题
- }
- } catch (Exception _err) {
- TeaException err = new TeaException(_err.getMessage(), _err);
- if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // err 中含有 code 和 message 属性,可帮助开发定位问题
- }
- }
- /*同步至宜搭*/
- }
- }
- }
- // else if (result.isEmpty()){
- // log.info("该人员实际工时为空,将获取计划工时!");
- log.info("###########################该人员实际工时循环结束,开始调用该人员名下的计划工时,并进行循环判断是否存在该任务的实际工时,如果存在则跳过,不存在则将该任务的计划工时写入###########################");
- //获取该人员在TB中的计划工时信息
- int code1 = 0;
- JSONArray result1 = null;
- try {
- OkHttpClient client = new OkHttpClient().newBuilder()
- .build();
- MediaType mediaType = MediaType.parse("text/plain");
- RequestBody body = RequestBody.create(mediaType, "");
- Request request = new Request.Builder()
- .url("https://open.teambition.com/api/plantime/query?userId=" + TBuserId + "&pageSize=1000&pageToken=&startDate="+ startDate +"&endDate="+ endDate)
- .method("GET", null)
- .addHeader("Authorization", "Bearer " + accessTokenService.getAppToken())
- .addHeader("X-Tenant-Id", tbOrganizationId)
- .addHeader("X-Tenant-Type", "organization")
- .build();
- Response response = client.newCall(request).execute();
- String bodyStr = response.body().string();
- JSONObject jsonObject = JSON.parseObject(bodyStr);
- // System.out.println("返回体body:" + jsonObject);
- code1 = jsonObject.getInteger("code");
- System.out.println("TB获取人员计划工时接口返回状态码:" + code1);
- result1 = jsonObject.getJSONArray("result");
- System.out.println("TB获取人员计划工时接口返回result:" + result1);
- } catch (IOException e) {
- e.printStackTrace();
- }
- if (!result1.isEmpty()) {
- log.info("匹配该人员获取到的计划工时,是否已经同步宜搭,如果同步则更新,如果没有将会新增写入!");
- for (int i1 = 0; i1 < result1.size(); i1++) {
- //工时关联的task ID
- String objectId = result1.getJSONObject(i1).getString("objectId");
- System.out.println("工时关联的task ID:" + objectId);
- //任务工时所属日期
- String rwgsssrq = result1.getJSONObject(i1).getString("date");
- System.out.println("任务工时所属日期:" + rwgsssrq);
- /**
- * 判断(同步月份、userid、任务id、任务工时所属日期、工时类型)实际工时是否有该任务该日期的工时
- * */
- String panduan = getYida(lastMonthNow, userId, objectId, rwgsssrq, "判断实际工时是否存在");
- if (panduan.equals("不存在")) {
- log.info("该人员在宜搭中该任务的实际工时不存在,即:该任务没有实际工时,将新增写入该任务的计划工时!");
- //工时(毫秒:转换成天)
- long plantime = result1.getJSONObject(i1).getLong("plantime");
- System.out.println("计划工时(毫秒):" + plantime);
- double gongshi = (double) plantime / 3600000 / 8;
- BigDecimal gongshiTwo = new BigDecimal(gongshi);
- double gs = gongshiTwo.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
- System.out.println("计划工时(毫秒转换成天):" + gs);
- //汇总工时
- // BigDecimal gsDouble = new BigDecimal(gs);
- // gsAll = gsAll.add(gsDouble);
- //根据任务ID获取任务详情,解析得到任务标题和项目ID
- JSONArray renwuxiangqing = getRenwuxiangqing(objectId);
- JSONObject jsonObject = renwuxiangqing.getJSONObject(0);
- //是否放入回收站
- String isArchived = jsonObject.getString("isArchived");
- System.out.println("是否放入回收站:" + isArchived);
- String content = "";
- String yewuleixing = "";
- String tBxaingmuName = "";
- String xiangmufenzuName = "";
- String diedaiName = "";
- String XXX = "";
- if (renwuxiangqing == null) {
- log.info("该任务不存在!");
- } else if (isArchived.equals("true")) {
- log.info("该任务已放入回收站,不统计!");
- } else {
- log.info("该任务没有放入回收站,正常统计!");
- //任务标题
- content = jsonObject.getString("content");
- System.out.println("任务标题:" + content);
- //获取迭代ID
- String diedaiID = null;
- try {
- diedaiID = jsonObject.getString("sprintId");
- } catch (Exception e) {
- e.printStackTrace();
- }
- System.out.println("迭代ID:" + diedaiID);
- // /*调用封装接口获取自定义字段【业务类型】选项值集合*/
- // log.info("调用封装接口获取自定义字段【业务类型】选项值集合。");
- // JSONArray tBzidingyiArray = getTBzidingyi();
- for (int i11 = 0; i11 < tBzidingyi.size(); i11++) {
- JSONObject jsonObject1 = tBzidingyi.getJSONObject(i11);
- //自定义字段id
- String zidingyiID = jsonObject1.getString("id");
- System.out.println("自定义字段【业务类型】id:" + zidingyiID);
- //自定义字段名称
- String zidingyiName = jsonObject1.getString("value");
- System.out.println("自定义字段【业务类型】名称:" + zidingyiName);
- //业务类型
- JSONArray yewuleixingjsonArray = renwuxiangqing.getJSONObject(0).getJSONArray("customfields");
- for (int j = 0; j < yewuleixingjsonArray.size(); j++) {
- JSONArray yewuleixingjsonArray1 = yewuleixingjsonArray.getJSONObject(j).getJSONArray("value");
- if (yewuleixingjsonArray1.isEmpty()) {
- log.info("任务中的字段没有内容,跳过~");
- } else {
- String ziduanName = yewuleixingjsonArray1.getJSONObject(0).getString("title");
- System.out.println("任务中包含的字段内容:" + ziduanName);
- //判断当前循环到的字段内容是否属于自定义字段【业务类型】中的某个值,如果符合其中一个则取该值
- if (ziduanName.equals(zidingyiName)) {
- yewuleixing = ziduanName;
- }
- }
- }
- }
- System.out.println("【匹配】业务类型:" + yewuleixing);
- //项目ID
- String projectId = jsonObject.getString("projectId");
- System.out.println("项目ID:" + projectId);
- /*根据项目ID获取项目详情*/
- log.info("根据TB项目ID获取项目名称===");
- tBxaingmuName = getTBxaingmu(projectId);
- /*根据项目ID和任务中的迭代ID获取迭代名称*/
- log.info("根据项目ID和任务中的迭代ID获取迭代名称===");
- diedaiName = getDiedai(projectId, diedaiID);
- System.out.println("获取最终的迭代名称:" + diedaiName);
- if (yewuleixing.equals("")) {
- log.info("业务类型为空,去取该TB项目中属于IDX分组名称。");
- /*根据项目ID获取项目分组ID*/
- log.info("根据项目ID获取项目分组ID===");
- String xiangmufenzuID = getXiangmufenzuID(projectId);
- System.out.println("项目分组ID:" + xiangmufenzuID);
- /*根据项目分组ID获取项目分组名称*/
- log.info("根据项目分组ID获取项目分组名称===");
- xiangmufenzuName = getXiangmufenzuName(xiangmufenzuID);
- System.out.println("项目分组名称:" + xiangmufenzuName);
- // //调用接口获取IDX分组下的目录名称,匹配逻辑下最终的业务类型名称
- // log.info("调用接口获取IDX分组下的目录名称===");
- // JSONArray IDXfenzu = getIDXfenzu();
- // for (int f = 0; f < IDXfenzu.size(); f++) {
- // String fenzuId = IDXfenzu.getJSONObject(f).getString("id");
- // System.out.println("分组id:" + fenzuId);
- // String fenzuName = IDXfenzu.getJSONObject(f).getString("name");
- // System.out.println("分组名称:" + fenzuName);
- //
- // if (xiangmufenzuName.equals(fenzuName)){
- // log.info("匹配到IDX分组名称,去取该IDX分组下的目录名称。");
- // }else {
- // xiangmufenzuName = "";
- // }
- // }
- int flag = 0;
- //调用接口获取IDX分组下的目录名称,匹配逻辑下最终的业务类型名称
- log.info("调用接口获取IDX分组下的目录名称===");
- JSONArray IDXfenzu = getIDXfenzu();
- for (int f = 0; f < IDXfenzu.size(); f++) {
- String fenzuId = IDXfenzu.getJSONObject(f).getString("id");
- System.out.println("分组id:" + fenzuId);
- String fenzuName = IDXfenzu.getJSONObject(f).getString("name");
- System.out.println("分组名称:" + fenzuName);
- if (flag == 0) {
- if (xiangmufenzuName.equals(fenzuName)) {
- log.info("匹配到IDX分组名称,去取该IDX分组下的目录名称。");
- XXX = fenzuName;
- //添加标识,说明已经匹配到了
- flag = flag + 1;
- } else {
- log.info("匹配不到IDX分组名称,继续匹配下一个IDX分组。");
- }
- }
- }
- System.out.println("获取的IDX分组下的目录名称用作最终的【业务类型】:" + XXX);
- }
- // }
- /*同步钉钉数据*/
- //应出勤天数
- float yingchuqintianshu = 0;
- //请假天数
- float qingjiatianshu = 0;
- //查询上月考勤数据,统计上月应出勤天数、请假天数
- try {
- DingTalkClient client11 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/attendance/getcolumnval");
- OapiAttendanceGetcolumnvalRequest req = new OapiAttendanceGetcolumnvalRequest();
- //TODO 待查询人员的userid
- req.setUserid(userId);
- //考勤报表列定义查出来的工作时长的列id(固定)
- req.setColumnIdList("176150482,985267953");
- //TODO 查询开始时间
- req.setFromDate(StringUtils.parseDateTime(FORMtime));
- //TODO 查询结束时间
- req.setToDate(StringUtils.parseDateTime(TOtime));
- OapiAttendanceGetcolumnvalResponse rsp = client11.execute(req, accessTokenService.getAccessToken());
- // System.out.println(rsp.getBody());
- String string = rsp.getBody();
- JSONObject jsonObjectKaoqin = JSON.parseObject(string);
- int errcode = jsonObjectKaoqin.getInteger("errcode");
- System.out.println("考勤时间周期查询结果状态码:" + errcode);
- String errmsg = jsonObjectKaoqin.getString("errmsg");
- System.out.println("考勤时间周期查询结果状态信息:" + errmsg);
- if (errcode != 0) {
- log.info("考勤时间周期查询结果反馈异常,异常状态码:" + errcode + "【" + errmsg + "】");
- } else {
- //应出勤天数
- JSONArray jsonArray1 = jsonObjectKaoqin.getJSONObject("result").
- getJSONArray("column_vals").
- getJSONObject(0).
- getJSONArray("column_vals");
- for (int x = 0; x < jsonArray1.size(); x++) {
- //应出勤天数
- String value = jsonArray1.getJSONObject(x).getString("value");
- System.out.println("应出勤天数:" + value);
- float v = Float.parseFloat(value);
- if (v == 1) {
- System.out.println("应出勤天数,进行循环统计!");
- yingchuqintianshu = yingchuqintianshu + 1;
- }
- }
- //请假天数
- JSONArray jsonArray = jsonObjectKaoqin.getJSONObject("result").
- getJSONArray("column_vals").
- getJSONObject(1).
- getJSONArray("column_vals");
- for (int x = 0; x < jsonArray.size(); x++) {
- //请假天数
- String value = jsonArray.getJSONObject(x).getString("value");
- System.out.println("请假天数:" + value);
- float v = Float.parseFloat(value);
- if (v > 0) {
- System.out.println("请假天数,进行循环统计!");
- qingjiatianshu = qingjiatianshu + v;
- }
- }
- }
- } catch (ApiException e) {
- e.printStackTrace();
- }
- //应出勤天数
- BigDecimal ycqts = new BigDecimal(yingchuqintianshu);
- BigDecimal ycqtsAll = ycqts.setScale(2, BigDecimal.ROUND_DOWN);
- System.out.println("应出勤天数(浮点数,保留2位小数):" + ycqtsAll);
- //请假天数
- BigDecimal qjts = new BigDecimal(qingjiatianshu);
- BigDecimal qjtsAll = qjts.setScale(2, BigDecimal.ROUND_DOWN);
- System.out.println("请假天数(浮点数,保留2位小数):" + qjtsAll);
- /*同步至宜搭*/
- Map map = new HashMap();
- //实际统计月份
- map.put("textField_losayxi8", lastMonthNow);
- //钉钉userid
- map.put("textField_los8y15p", userId);
- //姓名
- map.put("textField_los8y15q", userName);
- //主部门
- map.put("textField_los8y15s", zhubumen);
- //职位
- map.put("textField_los8y15x", zhiwei);
- //邮箱
- map.put("textField_los8y15y", youxiang);
- /*TB项目/任务数据*/
- //项目名称
- map.put("textField_lp0m06bd", tBxaingmuName);
- //任务名称
- map.put("textField_lp0m06be", content);
- //任务ID
- map.put("textField_lp8ihks3", objectId);
- //迭代
- map.put("textField_lpf88002", diedaiName);
- //任务工时所属日期
- map.put("textField_lqn3tjjv", rwgsssrq);
- //工时类型(计划工时、实际工时)
- map.put("textField_lrq4uku2", "计划工时");
- // if (yewuleixing.equals("")) {
- // //业务类型(修正改这列)
- // map.put("textField_lp2aqls1", yewuleixing);
- // //业务类型(统计用,勿动)
- // map.put("textField_los8y15z", XXX);
- //
- // //TODO 后面如果需要在宜搭手动修改,要判断是否存在该数据,如果存在的话这个字段不做更新
- // //业务类型(原数据,勿动)
- // map.put("textField_lp2aqls2", XXX);
- // } else {
- // //业务类型(修正改这列)
- // map.put("textField_lp2aqls1", yewuleixing);
- // //业务类型(统计用,勿动)
- // map.put("textField_los8y15z", yewuleixing);
- //
- // //TODO 后面如果需要在宜搭手动修改,要判断是否存在该数据,如果存在的话这个字段不做更新
- // //业务类型(原数据,勿动)
- // map.put("textField_lp2aqls2", yewuleixing);
- // }
- /**
- * 判断同步月份、userid、任务id、任务工时所属日期,是否有该任务
- * */
- // String panduan = getYida(lastMonthNow, userId, objectId, rwgsssrq);
- if (panduan.equals("不存在")) {
- log.info("该人员在宜搭中该任务的工时【不存在】,写入【业务类型(初版结果)】!");
- if (yewuleixing.equals("")) {
- //业务类型(修正改这列)
- map.put("textField_lp2aqls1", yewuleixing);
- //业务类型(统计用,勿动)
- map.put("textField_los8y15z", XXX);
- //TODO 后面如果需要在宜搭手动修改,要判断是否存在该数据,如果存在的话这个字段不做更新
- //业务类型(初版结果,勿动)
- map.put("textField_lp2aqls2", XXX);
- } else {
- //业务类型(修正改这列)
- map.put("textField_lp2aqls1", yewuleixing);
- //业务类型(统计用,勿动)
- map.put("textField_los8y15z", yewuleixing);
- //TODO 后面如果需要在宜搭手动修改,要判断是否存在该数据,如果存在的话这个字段不做更新
- //业务类型(初版结果,勿动)
- map.put("textField_lp2aqls2", yewuleixing);
- }
- }else {
- log.info("该人员在宜搭中该任务的工时【存在】,不更新写入【业务类型(初版结果)】!");
- if (yewuleixing.equals("")) {
- //业务类型(修正改这列)
- map.put("textField_lp2aqls1", yewuleixing);
- //业务类型(统计用,勿动)
- map.put("textField_los8y15z", XXX);
- } else {
- //业务类型(修正改这列)
- map.put("textField_lp2aqls1", yewuleixing);
- //业务类型(统计用,勿动)
- map.put("textField_los8y15z", yewuleixing);
- }
- }
- //统一工时数(天)
- map.put("numberField_los8y164", gs);
- /*钉钉考勤数据*/
- //每月人天(应出勤天数)
- map.put("numberField_los8y16g", ycqtsAll);
- //请假天数
- map.put("numberField_los8y16f", qjtsAll);
- //是否全投入
- // map.put("selectField_los8y16e", "否");
- /*计算字段*/
- //人月数据:统一工时数(天)/每月人天 //【废弃】
- map.put("numberField_los8y16c", 0);
- //SaaS合计:统一工时数(天)+请假成本(天)
- map.put("numberField_los8y16h", gs);
- //占比:SaaS合计/每月人天 //【废弃】
- map.put("numberField_los8y16p", 0);
- String mapJson = JSON.toJSONString(map);
- System.out.println("mapJson:" + mapJson);
- //宜搭表单判断查询条件
- //判断宜搭人员信息表是否有当前人员userid
- Map map1 = new HashMap();
- //字段编号
- map1.put("key", "textField_los8y15p");
- //同步类型
- map1.put("value", userId);
- // map1.put("value", "userId");
- //控件类型
- map1.put("type", "TEXT");
- //逻辑判断符
- map1.put("operator", "eq");
- //控件名称
- map1.put("componentName", "TextField");
- //同步数据的所属日期
- Map map2 = new HashMap();
- //字段编号
- map2.put("key", "textField_losayxi8");
- //同步类型
- map2.put("value", lastMonthNow);
- //控件类型
- map2.put("type", "TEXT");
- //逻辑判断符
- map2.put("operator", "eq");
- //控件名称
- map2.put("componentName", "TextField");
- //任务id
- Map map3 = new HashMap();
- //字段编号
- map3.put("key", "textField_lp8ihks3");
- //同步类型
- map3.put("value", objectId);
- //控件类型
- map3.put("type", "TEXT");
- //逻辑判断符
- map3.put("operator", "eq");
- //控件名称
- map3.put("componentName", "TextField");
- //任务工时所属日期
- Map map4 = new HashMap();
- //字段编号
- map4.put("key", "textField_lqn3tjjv");
- //同步类型
- map4.put("value", rwgsssrq);
- //控件类型
- map4.put("type", "TEXT");
- //逻辑判断符
- map4.put("operator", "eq");
- //控件名称
- map4.put("componentName", "TextField");
- /**
- * 工时类型(计划工时、实际工时)
- * */
- Map map5 = new HashMap();
- //字段编号
- map5.put("key", "textField_lrq4uku2");
- //同步类型
- map5.put("value", "计划工时");
- //控件类型
- map5.put("type", "TEXT");
- //逻辑判断符
- map5.put("operator", "eq");
- //控件名称
- map5.put("componentName", "TextField");
- List list11 = new ArrayList();
- list11.add(map1);
- list11.add(map2);
- list11.add(map3);
- list11.add(map4);
- list11.add(map5);
- String listJson = JSON.toJSONString(list11);
- System.out.println("查询条件listJson:" + listJson);
- //将汇总数据写入【宜搭汇总表】
- JSONObject jsonObject1;
- //新增或更新表单实例【宜搭】
- try {
- com.aliyun.dingtalkyida_1_0.Client client11 = createClient();
- com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataHeaders createOrUpdateFormDataHeaders = new com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataHeaders();
- createOrUpdateFormDataHeaders.xAcsDingtalkAccessToken = accessTokenService.getAccessToken();
- com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataRequest createOrUpdateFormDataRequest = new com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataRequest()
- //应用秘钥
- .setSystemToken("J0A6698165EFMED0AHIG76FW7C6Q3ON1PG5OL482")
- //表单编码
- .setFormUuid("FORM-BH766Y61W4CFWBS0869YFBF8COTE2QEHIH5OLM")
- .setUserId("yida_pub_account")
- .setSearchCondition(listJson)
- //应用编码
- .setAppType("APP_QHPV3T4ZU2Y88Q4U0UDA")
- .setFormDataJson(mapJson);
- CreateOrUpdateFormDataResponse orUpdateFormDataWithOptions = client11.createOrUpdateFormDataWithOptions(createOrUpdateFormDataRequest, createOrUpdateFormDataHeaders, new RuntimeOptions());
- String s = JSON.toJSONString(orUpdateFormDataWithOptions.getBody());
- jsonObject1 = JSON.parseObject(s);
- System.out.println("【创建或更新】表单object对象:" + jsonObject1);
- } catch (TeaException err) {
- if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // err 中含有 code 和 message 属性,可帮助开发定位问题
- }
- } catch (Exception _err) {
- TeaException err = new TeaException(_err.getMessage(), _err);
- if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // err 中含有 code 和 message 属性,可帮助开发定位问题
- }
- }
- /*同步至宜搭*/
- }
- }else {
- System.out.println("该任务该日期的工时已存在!!!");
- log.info("该人员在宜搭中该任务该日期的工时已存在,跳过!");
- // //工时(毫秒:转换成天)
- // long plantime = result1.getJSONObject(i1).getLong("plantime");
- // System.out.println("计划工时(毫秒):" + plantime);
- // double gongshi = (double) plantime / 3600000 / 8;
- // BigDecimal gongshiTwo = new BigDecimal(gongshi);
- // double gs = gongshiTwo.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
- // System.out.println("计划工时(毫秒转换成天):" + gs);
- // //汇总工时
- //// BigDecimal gsDouble = new BigDecimal(gs);
- //// gsAll = gsAll.add(gsDouble);
- //
- // //根据任务ID获取任务详情,解析得到任务标题和项目ID
- // JSONArray renwuxiangqing = getRenwuxiangqing(objectId);
- //
- // JSONObject jsonObject = renwuxiangqing.getJSONObject(0);
- //
- // //是否放入回收站
- // String isArchived = jsonObject.getString("isArchived");
- // System.out.println("是否放入回收站:" + isArchived);
- //
- // String content = "";
- // String yewuleixing = "";
- // String tBxaingmuName = "";
- // String xiangmufenzuName = "";
- // String diedaiName = "";
- //
- // String XXX = "";
- //
- // if (renwuxiangqing == null) {
- // log.info("该任务不存在!");
- // } else if (isArchived.equals("true")) {
- // log.info("该任务已放入回收站,不统计!");
- // } else {
- // log.info("该任务没有放入回收站,正常统计!");
- //
- // //任务标题
- // content = jsonObject.getString("content");
- // System.out.println("任务标题:" + content);
- //
- // //获取迭代ID
- // String diedaiID = null;
- // try {
- // diedaiID = jsonObject.getString("sprintId");
- // } catch (Exception e) {
- // e.printStackTrace();
- // }
- // System.out.println("迭代ID:" + diedaiID);
- //
- //
- //// /*调用封装接口获取自定义字段【业务类型】选项值集合*/
- //// log.info("调用封装接口获取自定义字段【业务类型】选项值集合。");
- //// JSONArray tBzidingyiArray = getTBzidingyi();
- // for (int i11 = 0; i11 < tBzidingyi.size(); i11++) {
- // JSONObject jsonObject1 = tBzidingyi.getJSONObject(i11);
- // //自定义字段id
- // String zidingyiID = jsonObject1.getString("id");
- // System.out.println("自定义字段【业务类型】id:" + zidingyiID);
- // //自定义字段名称
- // String zidingyiName = jsonObject1.getString("value");
- // System.out.println("自定义字段【业务类型】名称:" + zidingyiName);
- //
- // //业务类型
- // JSONArray yewuleixingjsonArray = renwuxiangqing.getJSONObject(0).getJSONArray("customfields");
- // for (int j = 0; j < yewuleixingjsonArray.size(); j++) {
- // JSONArray yewuleixingjsonArray1 = yewuleixingjsonArray.getJSONObject(j).getJSONArray("value");
- // if (yewuleixingjsonArray1.isEmpty()) {
- // log.info("任务中的字段没有内容,跳过~");
- // } else {
- // String ziduanName = yewuleixingjsonArray1.getJSONObject(0).getString("title");
- // System.out.println("任务中包含的字段内容:" + ziduanName);
- // //判断当前循环到的字段内容是否属于自定义字段【业务类型】中的某个值,如果符合其中一个则取该值
- // if (ziduanName.equals(zidingyiName)) {
- // yewuleixing = ziduanName;
- // }
- // }
- // }
- // }
- // System.out.println("【匹配】业务类型:" + yewuleixing);
- //
- // //项目ID
- // String projectId = jsonObject.getString("projectId");
- // System.out.println("项目ID:" + projectId);
- // /*根据项目ID获取项目详情*/
- // log.info("根据TB项目ID获取项目名称===");
- // tBxaingmuName = getTBxaingmu(projectId);
- //
- // /*根据项目ID和任务中的迭代ID获取迭代名称*/
- // log.info("根据项目ID和任务中的迭代ID获取迭代名称===");
- // diedaiName = getDiedai(projectId, diedaiID);
- // System.out.println("获取最终的迭代名称:" + diedaiName);
- //
- //
- // if (yewuleixing.equals("")) {
- // log.info("业务类型为空,去取该TB项目中属于IDX分组名称。");
- //
- // /*根据项目ID获取项目分组ID*/
- // log.info("根据项目ID获取项目分组ID===");
- // String xiangmufenzuID = getXiangmufenzuID(projectId);
- // System.out.println("项目分组ID:" + xiangmufenzuID);
- // /*根据项目分组ID获取项目分组名称*/
- // log.info("根据项目分组ID获取项目分组名称===");
- // xiangmufenzuName = getXiangmufenzuName(xiangmufenzuID);
- // System.out.println("项目分组名称:" + xiangmufenzuName);
- //
- //// //调用接口获取IDX分组下的目录名称,匹配逻辑下最终的业务类型名称
- //// log.info("调用接口获取IDX分组下的目录名称===");
- //// JSONArray IDXfenzu = getIDXfenzu();
- //// for (int f = 0; f < IDXfenzu.size(); f++) {
- //// String fenzuId = IDXfenzu.getJSONObject(f).getString("id");
- //// System.out.println("分组id:" + fenzuId);
- //// String fenzuName = IDXfenzu.getJSONObject(f).getString("name");
- //// System.out.println("分组名称:" + fenzuName);
- ////
- //// if (xiangmufenzuName.equals(fenzuName)){
- //// log.info("匹配到IDX分组名称,去取该IDX分组下的目录名称。");
- //// }else {
- //// xiangmufenzuName = "";
- //// }
- //// }
- //
- // int flag = 0;
- // //调用接口获取IDX分组下的目录名称,匹配逻辑下最终的业务类型名称
- // log.info("调用接口获取IDX分组下的目录名称===");
- // JSONArray IDXfenzu = getIDXfenzu();
- // for (int f = 0; f < IDXfenzu.size(); f++) {
- // String fenzuId = IDXfenzu.getJSONObject(f).getString("id");
- // System.out.println("分组id:" + fenzuId);
- // String fenzuName = IDXfenzu.getJSONObject(f).getString("name");
- // System.out.println("分组名称:" + fenzuName);
- //
- // if (flag == 0) {
- // if (xiangmufenzuName.equals(fenzuName)) {
- // log.info("匹配到IDX分组名称,去取该IDX分组下的目录名称。");
- // XXX = fenzuName;
- // //添加标识,说明已经匹配到了
- // flag = flag + 1;
- // } else {
- // log.info("匹配不到IDX分组名称,继续匹配下一个IDX分组。");
- // }
- // }
- // }
- // System.out.println("获取的IDX分组下的目录名称用作最终的【业务类型】:" + XXX);
- // }
- //// }
- //
- //
- //
- //
- // /*同步钉钉数据*/
- // //应出勤天数
- // float yingchuqintianshu = 0;
- // //请假天数
- // float qingjiatianshu = 0;
- //
- // //查询上月考勤数据,统计上月应出勤天数、请假天数
- // try {
- // DingTalkClient client11 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/attendance/getcolumnval");
- // OapiAttendanceGetcolumnvalRequest req = new OapiAttendanceGetcolumnvalRequest();
- // //TODO 待查询人员的userid
- // req.setUserid(userId);
- // //考勤报表列定义查出来的工作时长的列id(固定)
- // req.setColumnIdList("176150482,985267953");
- // //TODO 查询开始时间
- // req.setFromDate(StringUtils.parseDateTime(FORMtime));
- // //TODO 查询结束时间
- // req.setToDate(StringUtils.parseDateTime(TOtime));
- // OapiAttendanceGetcolumnvalResponse rsp = client11.execute(req, accessTokenService.getAccessToken());
- //// System.out.println(rsp.getBody());
- // String string = rsp.getBody();
- // JSONObject jsonObjectKaoqin = JSON.parseObject(string);
- //
- // int errcode = jsonObjectKaoqin.getInteger("errcode");
- // System.out.println("考勤时间周期查询结果状态码:" + errcode);
- // String errmsg = jsonObjectKaoqin.getString("errmsg");
- // System.out.println("考勤时间周期查询结果状态信息:" + errmsg);
- //
- //
- // if (errcode != 0) {
- // log.info("考勤时间周期查询结果反馈异常,异常状态码:" + errcode + "【" + errmsg + "】");
- //
- // } else {
- // //应出勤天数
- // JSONArray jsonArray1 = jsonObjectKaoqin.getJSONObject("result").
- // getJSONArray("column_vals").
- // getJSONObject(0).
- // getJSONArray("column_vals");
- // for (int x = 0; x < jsonArray1.size(); x++) {
- // //应出勤天数
- // String value = jsonArray1.getJSONObject(x).getString("value");
- // System.out.println("应出勤天数:" + value);
- // float v = Float.parseFloat(value);
- // if (v == 1) {
- // System.out.println("应出勤天数,进行循环统计!");
- // yingchuqintianshu = yingchuqintianshu + 1;
- // }
- // }
- //
- // //请假天数
- // JSONArray jsonArray = jsonObjectKaoqin.getJSONObject("result").
- // getJSONArray("column_vals").
- // getJSONObject(1).
- // getJSONArray("column_vals");
- // for (int x = 0; x < jsonArray.size(); x++) {
- // //请假天数
- // String value = jsonArray.getJSONObject(x).getString("value");
- // System.out.println("请假天数:" + value);
- // float v = Float.parseFloat(value);
- // if (v > 0) {
- // System.out.println("请假天数,进行循环统计!");
- // qingjiatianshu = qingjiatianshu + v;
- // }
- // }
- // }
- //
- // } catch (ApiException e) {
- // e.printStackTrace();
- // }
- //
- // //应出勤天数
- // BigDecimal ycqts = new BigDecimal(yingchuqintianshu);
- // BigDecimal ycqtsAll = ycqts.setScale(2, BigDecimal.ROUND_DOWN);
- // System.out.println("应出勤天数(浮点数,保留2位小数):" + ycqtsAll);
- // //请假天数
- // BigDecimal qjts = new BigDecimal(qingjiatianshu);
- // BigDecimal qjtsAll = qjts.setScale(2, BigDecimal.ROUND_DOWN);
- // System.out.println("请假天数(浮点数,保留2位小数):" + qjtsAll);
- //
- //
- // /*同步至宜搭*/
- // Map map = new HashMap();
- // //实际统计月份
- // map.put("textField_losayxi8", lastMonthNow);
- //
- // //钉钉userid
- // map.put("textField_los8y15p", userId);
- // //姓名
- // map.put("textField_los8y15q", userName);
- // //主部门
- // map.put("textField_los8y15s", zhubumen);
- // //职位
- // map.put("textField_los8y15x", zhiwei);
- // //邮箱
- // map.put("textField_los8y15y", youxiang);
- //
- // /*TB项目/任务数据*/
- // //项目名称
- // map.put("textField_lp0m06bd", tBxaingmuName);
- // //任务名称
- // map.put("textField_lp0m06be", content);
- // //任务ID
- // map.put("textField_lp8ihks3", objectId);
- // //迭代
- // map.put("textField_lpf88002", diedaiName);
- //
- // //任务工时所属日期
- // map.put("textField_lqn3tjjv", rwgsssrq);
- //
- // //工时类型(计划工时、实际工时)
- // map.put("textField_lrq4uku2", "计划工时");
- //
- //// if (yewuleixing.equals("")) {
- //// //业务类型(修正改这列)
- //// map.put("textField_lp2aqls1", yewuleixing);
- //// //业务类型(统计用,勿动)
- //// map.put("textField_los8y15z", XXX);
- ////
- //// //TODO 后面如果需要在宜搭手动修改,要判断是否存在该数据,如果存在的话这个字段不做更新
- //// //业务类型(原数据,勿动)
- //// map.put("textField_lp2aqls2", XXX);
- //// } else {
- //// //业务类型(修正改这列)
- //// map.put("textField_lp2aqls1", yewuleixing);
- //// //业务类型(统计用,勿动)
- //// map.put("textField_los8y15z", yewuleixing);
- ////
- //// //TODO 后面如果需要在宜搭手动修改,要判断是否存在该数据,如果存在的话这个字段不做更新
- //// //业务类型(原数据,勿动)
- //// map.put("textField_lp2aqls2", yewuleixing);
- //// }
- //
- // /**
- // * 判断同步月份、userid、任务id、任务工时所属日期,是否有该任务
- // * */
- //// String panduan = getYida(lastMonthNow, userId, objectId, rwgsssrq);
- // if (panduan.equals("不存在")) {
- // log.info("该人员在宜搭中该任务的工时【不存在】,写入【业务类型(初版结果)】!");
- //
- // if (yewuleixing.equals("")) {
- // //业务类型(修正改这列)
- // map.put("textField_lp2aqls1", yewuleixing);
- // //业务类型(统计用,勿动)
- // map.put("textField_los8y15z", XXX);
- //
- // //TODO 后面如果需要在宜搭手动修改,要判断是否存在该数据,如果存在的话这个字段不做更新
- // //业务类型(初版结果,勿动)
- // map.put("textField_lp2aqls2", XXX);
- // } else {
- // //业务类型(修正改这列)
- // map.put("textField_lp2aqls1", yewuleixing);
- // //业务类型(统计用,勿动)
- // map.put("textField_los8y15z", yewuleixing);
- //
- // //TODO 后面如果需要在宜搭手动修改,要判断是否存在该数据,如果存在的话这个字段不做更新
- // //业务类型(初版结果,勿动)
- // map.put("textField_lp2aqls2", yewuleixing);
- // }
- // }else {
- // log.info("该人员在宜搭中该任务的工时【存在】,不更新写入【业务类型(初版结果)】!");
- //
- // if (yewuleixing.equals("")) {
- // //业务类型(修正改这列)
- // map.put("textField_lp2aqls1", yewuleixing);
- // //业务类型(统计用,勿动)
- // map.put("textField_los8y15z", XXX);
- // } else {
- // //业务类型(修正改这列)
- // map.put("textField_lp2aqls1", yewuleixing);
- // //业务类型(统计用,勿动)
- // map.put("textField_los8y15z", yewuleixing);
- // }
- // }
- //
- // //统一工时数(天)
- // map.put("numberField_los8y164", gs);
- //
- // /*钉钉考勤数据*/
- // //每月人天(应出勤天数)
- // map.put("numberField_los8y16g", ycqtsAll);
- // //请假天数
- // map.put("numberField_los8y16f", qjtsAll);
- // //是否全投入
- //// map.put("selectField_los8y16e", "否");
- //
- // /*计算字段*/
- // //人月数据:统一工时数(天)/每月人天 //【废弃】
- // map.put("numberField_los8y16c", 0);
- // //SaaS合计:统一工时数(天)+请假成本(天)
- // map.put("numberField_los8y16h", gs);
- // //占比:SaaS合计/每月人天 //【废弃】
- // map.put("numberField_los8y16p", 0);
- //
- // String mapJson = JSON.toJSONString(map);
- // System.out.println("mapJson:" + mapJson);
- //
- // //宜搭表单判断查询条件
- // //判断宜搭人员信息表是否有当前人员userid
- // Map map1 = new HashMap();
- // //字段编号
- // map1.put("key", "textField_los8y15p");
- // //同步类型
- // map1.put("value", userId);
- //// map1.put("value", "userId");
- // //控件类型
- // map1.put("type", "TEXT");
- // //逻辑判断符
- // map1.put("operator", "eq");
- // //控件名称
- // map1.put("componentName", "TextField");
- //
- // //同步数据的所属日期
- // Map map2 = new HashMap();
- // //字段编号
- // map2.put("key", "textField_losayxi8");
- // //同步类型
- // map2.put("value", lastMonthNow);
- // //控件类型
- // map2.put("type", "TEXT");
- // //逻辑判断符
- // map2.put("operator", "eq");
- // //控件名称
- // map2.put("componentName", "TextField");
- //
- // //任务id
- // Map map3 = new HashMap();
- // //字段编号
- // map3.put("key", "textField_lp8ihks3");
- // //同步类型
- // map3.put("value", objectId);
- // //控件类型
- // map3.put("type", "TEXT");
- // //逻辑判断符
- // map3.put("operator", "eq");
- // //控件名称
- // map3.put("componentName", "TextField");
- //
- // //任务工时所属日期
- // Map map4 = new HashMap();
- // //字段编号
- // map4.put("key", "textField_lqn3tjjv");
- // //同步类型
- // map4.put("value", rwgsssrq);
- // //控件类型
- // map4.put("type", "TEXT");
- // //逻辑判断符
- // map4.put("operator", "eq");
- // //控件名称
- // map4.put("componentName", "TextField");
- //
- // /**
- // * 工时类型(计划工时、实际工时)
- // * */
- // Map map5 = new HashMap();
- // //字段编号
- // map5.put("key", "textField_lrq4uku2");
- // //同步类型
- // map5.put("value", "计划工时");
- // //控件类型
- // map5.put("type", "TEXT");
- // //逻辑判断符
- // map5.put("operator", "eq");
- // //控件名称
- // map5.put("componentName", "TextField");
- //
- // List list11 = new ArrayList();
- // list11.add(map1);
- // list11.add(map2);
- // list11.add(map3);
- // list11.add(map4);
- // list11.add(map5);
- //
- // String listJson = JSON.toJSONString(list11);
- // System.out.println("查询条件listJson:" + listJson);
- //
- // //将汇总数据写入【宜搭汇总表】
- // JSONObject jsonObject1;
- // //新增或更新表单实例【宜搭】
- // try {
- // com.aliyun.dingtalkyida_1_0.Client client11 = createClient();
- // com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataHeaders createOrUpdateFormDataHeaders = new com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataHeaders();
- // createOrUpdateFormDataHeaders.xAcsDingtalkAccessToken = accessTokenService.getAccessToken();
- // com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataRequest createOrUpdateFormDataRequest = new com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataRequest()
- // //应用秘钥
- // .setSystemToken("J0A6698165EFMED0AHIG76FW7C6Q3ON1PG5OL482")
- // //表单编码
- // .setFormUuid("FORM-BH766Y61W4CFWBS0869YFBF8COTE2QEHIH5OLM")
- // .setUserId("yida_pub_account")
- // .setSearchCondition(listJson)
- // //应用编码
- // .setAppType("APP_QHPV3T4ZU2Y88Q4U0UDA")
- // .setFormDataJson(mapJson);
- //
- // CreateOrUpdateFormDataResponse orUpdateFormDataWithOptions = client11.createOrUpdateFormDataWithOptions(createOrUpdateFormDataRequest, createOrUpdateFormDataHeaders, new RuntimeOptions());
- // String s = JSON.toJSONString(orUpdateFormDataWithOptions.getBody());
- // jsonObject1 = JSON.parseObject(s);
- // System.out.println("【创建或更新】表单object对象:" + jsonObject1);
- // } catch (TeaException err) {
- // if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // // err 中含有 code 和 message 属性,可帮助开发定位问题
- // }
- // } catch (Exception _err) {
- // TeaException err = new TeaException(_err.getMessage(), _err);
- // if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // // err 中含有 code 和 message 属性,可帮助开发定位问题
- // }
- // }
- // /*同步至宜搭*/
- // }
- }
- }
- }
- if (result.isEmpty() && result1.isEmpty()){
- log.info("当计划工时和实际工时都为空的情况,将同步该人员的一条记录,并记录钉钉考勤信息。");
- /*同步钉钉数据*/
- //应出勤天数
- float yingchuqintianshu = 0;
- //请假天数
- float qingjiatianshu = 0;
- //查询上月考勤数据,统计上月应出勤天数、请假天数
- try {
- DingTalkClient client11 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/attendance/getcolumnval");
- OapiAttendanceGetcolumnvalRequest req = new OapiAttendanceGetcolumnvalRequest();
- //TODO 待查询人员的userid
- req.setUserid(userId);
- //考勤报表列定义查出来的工作时长的列id(固定)
- req.setColumnIdList("176150482,985267953");
- //TODO 查询开始时间
- req.setFromDate(StringUtils.parseDateTime(FORMtime));
- //TODO 查询结束时间
- req.setToDate(StringUtils.parseDateTime(TOtime));
- OapiAttendanceGetcolumnvalResponse rsp = client11.execute(req, accessTokenService.getAccessToken());
- // System.out.println(rsp.getBody());
- String string = rsp.getBody();
- JSONObject jsonObjectKaoqin = JSON.parseObject(string);
- int errcode = jsonObjectKaoqin.getInteger("errcode");
- System.out.println("考勤时间周期查询结果状态码:" + errcode);
- String errmsg = jsonObjectKaoqin.getString("errmsg");
- System.out.println("考勤时间周期查询结果状态信息:" + errmsg);
- if (errcode != 0) {
- log.info("考勤时间周期查询结果反馈异常,异常状态码:" + errcode + "【" + errmsg + "】");
- } else {
- //应出勤天数
- JSONArray jsonArray1 = jsonObjectKaoqin.getJSONObject("result").
- getJSONArray("column_vals").
- getJSONObject(0).
- getJSONArray("column_vals");
- for (int x = 0; x < jsonArray1.size(); x++) {
- //应出勤天数
- String value = jsonArray1.getJSONObject(x).getString("value");
- System.out.println("应出勤天数:" + value);
- float v = Float.parseFloat(value);
- if (v == 1) {
- System.out.println("应出勤天数,进行循环统计!");
- yingchuqintianshu = yingchuqintianshu + 1;
- }
- }
- //请假天数
- JSONArray jsonArray = jsonObjectKaoqin.getJSONObject("result").
- getJSONArray("column_vals").
- getJSONObject(1).
- getJSONArray("column_vals");
- for (int x = 0; x < jsonArray.size(); x++) {
- //请假天数
- String value = jsonArray.getJSONObject(x).getString("value");
- System.out.println("请假天数:" + value);
- float v = Float.parseFloat(value);
- if (v > 0) {
- System.out.println("请假天数,进行循环统计!");
- qingjiatianshu = qingjiatianshu + v;
- }
- }
- }
- } catch (ApiException e) {
- e.printStackTrace();
- }
- //应出勤天数
- BigDecimal ycqts = new BigDecimal(yingchuqintianshu);
- BigDecimal ycqtsAll = ycqts.setScale(2, BigDecimal.ROUND_DOWN);
- System.out.println("应出勤天数(浮点数,保留2位小数):" + ycqtsAll);
- //请假天数
- BigDecimal qjts = new BigDecimal(qingjiatianshu);
- BigDecimal qjtsAll = qjts.setScale(2, BigDecimal.ROUND_DOWN);
- System.out.println("请假天数(浮点数,保留2位小数):" + qjtsAll);
- /*同步至宜搭*/
- Map map = new HashMap();
- //实际统计月份
- map.put("textField_losayxi8", lastMonthNow);
- //钉钉userid
- map.put("textField_los8y15p", userId);
- //姓名
- map.put("textField_los8y15q", userName);
- //主部门
- map.put("textField_los8y15s", zhubumen);
- //职位
- map.put("textField_los8y15x", zhiwei);
- //邮箱
- map.put("textField_los8y15y", youxiang);
- /*TB项目/任务数据*/
- // //项目名称
- // map.put("textField_lp0m06bd", "");
- // //任务名称
- // map.put("textField_lp0m06be", "");
- // //业务类型
- // map.put("textField_los8y15z", "");
- // //统一工时数(天)
- // map.put("numberField_los8y164", 0);
- /*钉钉考勤数据*/
- //每月人天(应出勤天数)
- map.put("numberField_los8y16g", ycqtsAll);
- //请假天数
- map.put("numberField_los8y16f", qjtsAll);
- //是否全投入
- // map.put("selectField_los8y16e", "否");
- /*计算字段*/
- // //人月数据:统一工时数(天)/每月人天
- // map.put("numberField_los8y16c", 0);
- // //SaaS合计:统一工时数(天)+请假成本(天)
- // map.put("numberField_los8y16h", 0);
- // //占比:SaaS合计/每月人天
- // map.put("numberField_los8y16p", 0);
- String mapJson = JSON.toJSONString(map);
- System.out.println("mapJson:" + mapJson);
- //宜搭表单判断查询条件
- //判断宜搭人员信息表是否有当前人员userid
- Map map1 = new HashMap();
- //字段编号
- map1.put("key", "textField_los8y15p");
- //同步类型
- map1.put("value", userId);
- // map1.put("value", "userId");
- //控件类型
- map1.put("type", "TEXT");
- //逻辑判断符
- map1.put("operator", "eq");
- //控件名称
- map1.put("componentName", "TextField");
- Map map2 = new HashMap();
- //字段编号
- map2.put("key", "textField_losayxi8");
- //同步类型
- map2.put("value", lastMonthNow);
- //控件类型
- map2.put("type", "TEXT");
- //逻辑判断符
- map2.put("operator", "eq");
- //控件名称
- map2.put("componentName", "TextField");
- List list11 = new ArrayList();
- list11.add(map1);
- list11.add(map2);
- String listJson = JSON.toJSONString(list11);
- System.out.println("查询条件listJson:" + listJson);
- //将汇总数据写入【宜搭汇总表】
- JSONObject jsonObject;
- //新增或更新表单实例【宜搭】
- try {
- com.aliyun.dingtalkyida_1_0.Client client11 = createClient();
- com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataHeaders createOrUpdateFormDataHeaders = new com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataHeaders();
- createOrUpdateFormDataHeaders.xAcsDingtalkAccessToken = accessTokenService.getAccessToken();
- com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataRequest createOrUpdateFormDataRequest = new com.aliyun.dingtalkyida_1_0.models.CreateOrUpdateFormDataRequest()
- //应用秘钥
- .setSystemToken("J0A6698165EFMED0AHIG76FW7C6Q3ON1PG5OL482")
- //表单编码
- .setFormUuid("FORM-BH766Y61W4CFWBS0869YFBF8COTE2QEHIH5OLM")
- .setUserId("yida_pub_account")
- .setSearchCondition(listJson)
- //应用编码
- .setAppType("APP_QHPV3T4ZU2Y88Q4U0UDA")
- .setFormDataJson(mapJson);
- CreateOrUpdateFormDataResponse orUpdateFormDataWithOptions = client11.createOrUpdateFormDataWithOptions(createOrUpdateFormDataRequest, createOrUpdateFormDataHeaders, new RuntimeOptions());
- String s = JSON.toJSONString(orUpdateFormDataWithOptions.getBody());
- jsonObject = JSON.parseObject(s);
- // System.out.println("【创建或更新】表单object对象:" + jsonObject);
- } catch (TeaException err) {
- if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // err 中含有 code 和 message 属性,可帮助开发定位问题
- }
- } catch (Exception _err) {
- TeaException err = new TeaException(_err.getMessage(), _err);
- if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // err 中含有 code 和 message 属性,可帮助开发定位问题
- }
- }
- /*同步至宜搭*/
- }
- // }
- }
- }
- }
- log.info("统计结束!");
- return "统计完成!";
- }
- }
|