123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485 |
- package com.malk.ruisi.service.impl;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.google.gson.Gson;
- import com.google.gson.JsonArray;
- import com.google.gson.JsonElement;
- import com.google.gson.JsonObject;
- import com.malk.ruisi.server.YDParam_T;
- import com.malk.ruisi.service.QysApiService;
- import com.malk.ruisi.service.QysService;
- import com.malk.ruisi.service.dingshiqi;
- import com.malk.server.aliwork.YDConf;
- import com.malk.server.aliwork.YDParam;
- import com.malk.server.common.McException;
- import com.malk.server.common.McR;
- import com.malk.server.dingtalk.DDR;
- import com.malk.server.dingtalk.DDR_New;
- import com.malk.service.aliwork.YDClient;
- import com.malk.service.aliwork.YDService;
- import com.malk.service.dingtalk.DDClient;
- import com.malk.service.dingtalk.DDClient_Contacts;
- import com.malk.utils.UtilDateTime;
- import com.malk.utils.UtilHttp;
- import com.malk.utils.UtilMap;
- import com.malk.utils.UtilToken;
- import lombok.SneakyThrows;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.Statement;
- import java.util.*;
- import java.util.*;
- import static com.malk.ruisi.constant.QysConstant.*;
- @Service
- @Slf4j
- public class dingshiqiImpl implements dingshiqi {
- @Autowired
- private QysService qysService;
- @Autowired
- private QysServiceImpl qysServiceImpl;
- @Autowired
- private QysApiService qysApiService;
- @Autowired
- private YDClient ydClient;
- @Autowired
- private YDConf ydConf;
- @Autowired
- private DDClient ddClient;
- @Autowired
- private DDClient_Contacts ddClient_contacts;
- @Override
- public JSONObject getYWFLid() throws Exception {
- Map<String, Object> data = new HashMap();
- //通过接口获取所有业务分类列表
- JSONObject ywfLid = qysApiService.sendGet(data, QYS_API_CATEGORIES, false);
- JSONArray ids = ywfLid.getJSONArray("categories");//得到所有业务分类数据
- if (ids != null && ids.size() > 0) {
- for (int i = 0; i < ids.size(); i++) {
- String scon = "";//签署配置
- //判断所需数据是否为空
- if (ids.getJSONObject(i).getString("name") != "" && ids.getJSONObject(i).getString("id") != ""
- && ids.getJSONObject(i).getString("tenantName") != "" && ids.getJSONObject(i).getString("tenantId") != ""
- && ids.getJSONObject(i).getString("config") != "") {
- String name = ids.getJSONObject(i).getString("name");//业务分类名称
- String yycj = "";
- String wbdwlx = "";
- if(name.equals("我方电子对方物理(企业)")){
- yycj = "我方电子对方物理用印";
- wbdwlx = "企业";
- }else if (name.equals("我方电子对方物理(个人)")){
- yycj = "我方电子对方物理用印";
- wbdwlx = "个人";
- }else if (name.equals("我方电子对方物理(企业&个人)")){
- yycj = "我方电子对方物理用印";
- wbdwlx = "企业&个人";
- }else if (name.equals("多方电子用印(个人)(我方先签)")){
- yycj = "多方-电子用印";
- wbdwlx = "个人";
- }else if (name.equals("多方电子用印(企业)(我方先签)")){
- yycj = "多方-电子用印";
- wbdwlx = "企业";
- }else if (name.equals("多方电子用印(企业&个人)(我方先签)")){
- yycj = "多方-电子用印";
- wbdwlx = "企业&个人";
- }else if (name.equals("我方电子对方物理(企业)(我方先签)")){
- yycj = "我方电子对方物理用印";
- wbdwlx = "企业";
- }else if (name.equals("我方电子对方物理(个人)(我方先签)")){
- yycj = "我方电子对方物理用印";
- wbdwlx = "个人";
- }else if (name.equals("我方电子对方物理(企业&个人)(我方先签)")){
- yycj = "我方电子对方物理用印";
- wbdwlx= "企业&个人";
- }else if (name.equals("多方电子用印(个人)(对方先签)")){
- yycj = "多方-电子用印";
- wbdwlx = "个人";
- }else if (name.equals("多方电子用印(企业)(对方先签)")){
- yycj = "多方-电子用印";
- wbdwlx = "企业";
- }else if (name.equals("多方电子用印(企业&个人)(对方先签)")){
- yycj = "多方-电子用印";
- wbdwlx = "企业&个人";
- }else if (name.equals("续签(固定几年)") || name.equals("续签(无固定期限)") ||
- name.equals("续签(员工合同到期公司不再与员工续签)") || name.equals("续签(员工合同到期员工本人不愿意与公司续签时签订)")){
- yycj = "续签";
- wbdwlx = "";
- }else if (name.equals("内部企业单签")){
- yycj = "单方-电子用印";
- wbdwlx = "";
- }else if (name.equals("物理用印公司用印场景")){
- yycj = "物理用印-内部使用";
- wbdwlx = "企业";
- }else if (name.equals("物理用印外带场景")){
- yycj = "物理用印-外带";
- wbdwlx = "企业";
- }else if (name.equals("劳动合同") || name.equals("校区劳动合同") ||
- name.equals("劳务协议") || name.equals("校区劳务协议")){
- yycj = "新签劳动合同";
- wbdwlx = "";
- }
- else{
- yycj = "";
- wbdwlx = "";
- }
- String id = ids.getJSONObject(i).getString("id");//业务分类id
- String config = ids.getJSONObject(i).getString("config");
- String tenantName = ids.getJSONObject(i).getString("tenantName");//公司名称
- String tenantID = ids.getJSONObject(i).getString("tenantId");//公司id
- String sc = "textField_lvkbxugq, textField_lvkbxugr, textField_lvyy8a3l";
- String fd = "textField_lvkbxugq, textField_lvkbxugr, textField_lvyy8a3l, textField_lvyy8a3m, textareaField_lw1py1td, textField_lvkbxugo, textField_lvkbxugp";
- //把配置数据转换成json
- Gson gson = new Gson();
- JsonObject jsonObject = gson.fromJson(config, JsonObject.class);
- JsonArray signatories = jsonObject.getAsJsonArray("signatories");
- if (signatories == null || signatories.size() == 0) {
- signatories = new JsonArray();
- }
- //封装所需配置数据为列表
- List<Map<String, Object>> signatoriesData = new ArrayList<>();
- for (JsonElement signatory : signatories) {
- JsonObject signatoryObj = signatory.getAsJsonObject();
- String tenantType = signatoryObj.has("tenantType") ? signatoryObj.get("tenantType").getAsString() : "COMPANY";
- int serialNo = signatoryObj.get("serialNo").getAsInt();
- List<Map<String, Object>> actionData = new ArrayList<>();
- JsonArray actions = signatoryObj.getAsJsonArray("actions");
- for (JsonElement action : actions) {
- JsonObject actionObj = action.getAsJsonObject();
- String type = actionObj.get("type").getAsString();
- String name1 = actionObj.get("name").getAsString();
- int actionSerialNo = actionObj.get("serialNo").getAsInt();
- Map<String, Object> actionMap = new HashMap<>();
- actionMap.put("type", type);
- actionMap.put("name", name1);
- actionMap.put("serialNo", actionSerialNo);
- actionData.add(actionMap);
- }
- Map<String, Object> signatoryMap = new HashMap<>();
- if (tenantType != null) {
- signatoryMap.put("tenantType", tenantType);
- }
- signatoryMap.put("serialNo", serialNo);
- signatoryMap.put("actions", actionData);
- signatoriesData.add(signatoryMap);
- }
- //把配置数据转换成json
- Gson gson1 = new Gson();
- scon = gson1.toJson(signatoriesData);
- Map mapForm = UtilMap.map(fd, name, id, tenantName, tenantID, scon, yycj, wbdwlx);
- mapForm.put("radioField_lznyvvav","启用");//状态
- mapForm.put("dateField_lznyvvaw",new Date().getTime());//同步时间
- //把数据插入宜搭基础表单中
- String tquid = ydClient.operateData(YDParam.builder()
- .formUuid("FORM-417576F4EE9F4AA1B2395BCD93B7A08C8ASN")
- .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, name, id, tenantName)))
- .formDataJson(JSONObject.toJSONString(mapForm))
- .build(), YDConf.FORM_OPERATION.upsert).toString();
- System.out.println("tquid:" + tquid);
- }
- }
- }
- return null;
- }
- public static String getAccessToken_PJSS() {
- //
- String accessToken = UtilToken.get("invalid-token-dingtalk");
- if (StringUtils.isNotBlank(accessToken)) {
- return accessToken;
- }
- Map param = new HashMap();
- param.put("appkey", "dingwnds0gg0vpbu44cd");
- param.put("appsecret", "B7tDWb3hPjP4rksRd_PqOsOVBv6QWY6F9gvn1X2aIoAIMFchRGw69aDeHly-6XXn");
- DDR r = (DDR) UtilHttp.doGet("https://oapi.dingtalk.com/gettoken", param, DDR.class);
- log.info("响应token, {}", r.getAccessToken());
- accessToken = r.getAccessToken();
- // token失效自动重置: DD重新调用会重置过期时间
- UtilToken.put("invalid-token-dingtalk", accessToken, r.getExpiresIn() * 1000L);
- return accessToken;
- }
- @Override
- public JSONObject getYWFLid1() throws Exception {
- List<Map> LegaltList = new ArrayList<>();
- String sql = "select * from V_SEAL_COM_USER where miaosu ='物理' order by yzmc desc";
- String jdbcUrl = "jdbc:mysql://10.9.33.236/qiyuesuodb?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC";
- String userName = "root";
- String password = "hpZbPf6YnVr7";
- try{
- Class.forName("com.mysql.cj.jdbc.Driver");
- Connection conn = DriverManager.getConnection(jdbcUrl, userName, password);
- Statement statement = conn.createStatement();
- ResultSet resultSet = statement.executeQuery(sql);
- int i5=0;
- while (resultSet.next()){
- i5++;
- System.out.println(i5+"-"+resultSet.getFetchSize());
- String yzsysmz = resultSet.getString("yzsysmz");//编号
- String yzsyzid1 = resultSet.getString("yzsyzid");//使用人id
- String yzsyzid = "";
- if(yzsyzid1!=null){
- yzsyzid = yzsyzid1.replace("\'", "")
- .replace("[", "")
- .replace("]", "");
- }
- String gszt = resultSet.getString("gszt");//公司名称
- String sid = resultSet.getString("id");//印章名称
- String yzmc = resultSet.getString("yzmc");//印章名称
- HashMap<String, Object> bankmap = new HashMap<>();
- bankmap.put("yzsysmz",yzsysmz);
- bankmap.put("yzsyzid",yzsyzid);
- bankmap.put("gszt",gszt);
- bankmap.put("id",sid);
- bankmap.put("yzmc",yzmc);
- LegaltList.add(bankmap);
- }
- resultSet.close();
- statement.close();
- conn.close();
- }catch (Exception e){
- e.printStackTrace();
- }
- if (LegaltList.size() > 0 && LegaltList != null) {
- for (int i11 = 0; i11 < LegaltList.size(); i11++) {
- Map sealDetail = LegaltList.get(i11);
- ArrayList<Object> yzsyzid1 = new ArrayList<>();
- try {
- String yzsysmz = String.valueOf(sealDetail.get("yzsysmz")); // 印章使用人名字
- String yzsyzid = String.valueOf(sealDetail.get("yzsyzid")); // 使用人id
- String mobile = "";
- if (StringUtils.isNotBlank(yzsyzid)) {
- String[] userIds = yzsyzid.split(",");
- String yzsyzid2 = userIds[0];
- Map userInfoByMobile1 = ddClient_contacts.getUserInfoById(ddClient.getAccessToken(), yzsyzid2);
- mobile = String.valueOf(userInfoByMobile1.get("mobile"));
- }
- String[] userIds = yzsyzid.split(",");
- String gszt = String.valueOf(sealDetail.get("gszt")); // 公司名称
- String id = String.valueOf(sealDetail.get("id")); // 印章id
- String yzmc = String.valueOf(sealDetail.get("yzmc")); // 印章名称
- yzsyzid1.add(yzsyzid);
- String sc = "textField_lw6aecvd, textField_lw6aecvg, textField_lw6aecve";
- String fd = "textField_lw6aecvd, textField_lw6aecvg, textField_lw6aecve";
- String fd1 = "textField_lw6aecvd, textField_lw6aecvg, textField_lw6aecve";
- if (yzsyzid1 != null) {
- Map mapForm = UtilMap.map(fd, gszt, id, yzmc);
- mapForm.put("employeeField_lwr509pq", userIds);
- mapForm.put("textField_lwywohh0", mobile);
- mapForm.put("radioField_lznyvvav", "启用"); // 状态
- mapForm.put("dateField_lznyvvaw", new Date().getTime()); // 同步时间
- ydClient.operateData(YDParam.builder()
- .formUuid("FORM-7ACCB70D96FA4187BD2042243641E54CD6VH")
- .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, gszt, id, yzmc)))
- .formDataJson(JSONObject.toJSONString(mapForm))
- .build(), YDConf.FORM_OPERATION.upsert);
- } else {
- Map mapForm1 = UtilMap.map(fd1, gszt, id, yzmc);
- mapForm1.put("radioField_lznyvvav", "启用"); // 状态
- mapForm1.put("dateField_lznyvvaw", new Date().getTime()); // 同步时间
- ydClient.operateData(YDParam.builder()
- .formUuid("FORM-7ACCB70D96FA4187BD2042243641E54CD6VH")
- .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, gszt, id, yzmc)))
- .formDataJson(JSONObject.toJSONString(mapForm1))
- .build(), YDConf.FORM_OPERATION.upsert);
- }
- } catch (Exception e) {
- // 处理异常
- e.printStackTrace();
- // 可以在这里记录错误信息或者采取其他措施
- System.err.println("An error occurred while processing the data: " + e.getMessage());
- }
- }
- }
- return null;
- }
- @Override
- public JSONObject getYWFLid2() throws Exception {
- List<Map> LegaltList = new ArrayList<>();
- String sql = "select * from V_SEAL_COM_USER where miaosu ='电子' order by gszt";
- String jdbcUrl = "jdbc:mysql://10.9.33.236/qiyuesuodb?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC";
- String userName = "root";
- String password = "hpZbPf6YnVr7";
- try{
- Class.forName("com.mysql.cj.jdbc.Driver");
- Connection conn = DriverManager.getConnection(jdbcUrl, userName, password);
- Statement statement = conn.createStatement();
- ResultSet resultSet = statement.executeQuery(sql);
- int i5=0;
- while (resultSet.next()){
- i5++;
- System.out.println(i5+"-"+resultSet.getFetchSize());
- String yzsysmz = resultSet.getString("yzsysmz");//编号
- String yzsyzid1 = resultSet.getString("yzsyzid");//使用人id
- String yzsyzid = "";
- if(yzsyzid1!=null){
- yzsyzid = yzsyzid1.replace("\'", "")
- .replace("[", "")
- .replace("]", "");
- }
- String gszt = resultSet.getString("gszt");//公司名称
- String sid = resultSet.getString("id");//印章名称
- String yzmc = resultSet.getString("yzmc");//印章名称
- HashMap<String, Object> bankmap = new HashMap<>();
- bankmap.put("yzsysmz",yzsysmz);
- bankmap.put("yzsyzid",yzsyzid);
- bankmap.put("gszt",gszt);
- bankmap.put("id",sid);
- bankmap.put("yzmc",yzmc);
- LegaltList.add(bankmap);
- }
- resultSet.close();
- statement.close();
- conn.close();
- }catch (Exception e){
- e.printStackTrace();
- }
- if (LegaltList.size() > 0 && LegaltList != null) {
- for (int i11 = 0; i11 < LegaltList.size(); i11++) {
- Map sealDetail = LegaltList.get(i11);
- ArrayList<Object> yzsyzid1 = new ArrayList<>();
- try {
- String yzsysmz = String.valueOf(sealDetail.get("yzsysmz")); // 印章使用人名字
- String yzsyzid = String.valueOf(sealDetail.get("yzsyzid")); // 使用人id
- String mobile = "";
- if (StringUtils.isNotBlank(yzsyzid)) {
- try {
- String[] userIds = yzsyzid.split(",");
- if (userIds.length > 0) {
- String yzsyzid2 = userIds[0];
- Map userInfoByMobile1 = ddClient_contacts.getUserInfoById(ddClient.getAccessToken(), yzsyzid2);
- if (userInfoByMobile1 != null && userInfoByMobile1.containsKey("mobile")) {
- mobile = String.valueOf(userInfoByMobile1.get("mobile"));
- } else {
- // 处理 userInfoByMobile1 没有 "mobile" 键的情况
- log.error("User info does not contain the 'mobile' key.");
- }
- } else {
- // 处理 userIds 数组为空的情况
- log.error("User ID list is empty.");
- }
- } catch (Exception e) {
- // 捕获并处理所有其他异常
- log.error("Error while processing user information: ", e);
- }
- }
- String[] userIds = yzsyzid.split(",");
- String gszt = String.valueOf(sealDetail.get("gszt")); // 公司名称
- String id = String.valueOf(sealDetail.get("id")); // 印章id
- String yzmc = String.valueOf(sealDetail.get("yzmc")); // 印章名称
- yzsyzid1.add(yzsyzid);
- String sc = "textField_lu0k70cf, textField_lw5pfnr9, textField_lu0k70cg";
- String fd = "textField_lu0k70cf, textField_lw5pfnr9, textField_lu0k70cg";
- String fd1 = "textField_lu0k70cf, textField_lw5pfnr9, textField_lu0k70cg";
- if (yzsyzid1 != null) {
- Map mapForm = UtilMap.map(fd, gszt, id, yzmc);
- mapForm.put("employeeField_lwqbilgc", userIds);
- mapForm.put("textField_lwywvrx9", mobile);
- mapForm.put("radioField_lznyvvav", "启用"); // 状态
- mapForm.put("dateField_lznyvvaw", new Date().getTime()); // 同步时间
- ydClient.operateData(YDParam.builder()
- .formUuid("FORM-6D5B2C469B45456F9287C3575BFF92C7KUF6")
- .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, gszt, id, yzmc)))
- .formDataJson(JSONObject.toJSONString(mapForm))
- .build(), YDConf.FORM_OPERATION.upsert);
- } else {
- Map mapForm1 = UtilMap.map(fd1, gszt, id, yzmc);
- mapForm1.put("radioField_lznyvvav", "启用"); // 状态
- mapForm1.put("dateField_lznyvvaw", new Date().getTime()); // 同步时间
- ydClient.operateData(YDParam.builder()
- .formUuid("FORM-6D5B2C469B45456F9287C3575BFF92C7KUF6")
- .searchCondition(JSONObject.toJSONString(UtilMap.map(sc, gszt, id, yzmc)))
- .formDataJson(JSONObject.toJSONString(mapForm1))
- .build(), YDConf.FORM_OPERATION.upsert);
- }
- } catch (Exception e) {
- // 处理异常
- e.printStackTrace();
- // 可以在这里记录错误信息或者采取其他措施
- System.err.println("An error occurred while processing the data: " + e.getMessage());
- }
- }
- }
- return null;
- }
- @Override
- public void syncDelete() {
- DDR_New ddrNew = ydClient.queryData(YDParam.builder()
- .formUuid("FORM-7ACCB70D96FA4187BD2042243641E54CD6VH")
- .build(), YDConf.FORM_QUERY.retrieve_search_form_id);
- System.out.println(ddrNew.getTotalCount());
- ydClient.operateData(YDParam.builder()
- .formUuid("FORM-7ACCB70D96FA4187BD2042243641E54CD6VH")
- .asynchronousExecution(true)
- .formInstanceIdList((List<String>) ddrNew.getData())
- .build(), YDConf.FORM_OPERATION.delete_batch);
- }
- @Autowired
- private YDService ydService;
- /**
- * 停用数据同步逻辑
- */
- @Override
- public void syncRecruitSource(String type) {
- Map mapForm = UtilMap.map("YWFL, YZDZ, YZWL", "FORM-417576F4EE9F4AA1B2395BCD93B7A08C8ASN", "FORM-6D5B2C469B45456F9287C3575BFF92C7KUF6", "FORM-7ACCB70D96FA4187BD2042243641E54CD6VH");
- String formUuid = UtilMap.getString(mapForm, type);
- McException.assertParamException(StringUtils.isBlank(formUuid), "同步数据档案不存在!");
- YDParam_T ydParamT = new YDParam_T();
- ydParamT.setFormUuid(formUuid);
- ydParamT.setSearchCondition(JSON.toJSONString(UtilMap.map("radioField_lznyvvav", "启用")));
- ydParamT.setModifiedToTimeGMT(UtilDateTime.formatDate(new Date(new Date().getTime() - 1 * 24 * 60 * 60 * 1000L)));
- List<Map> dataList = ydService.queryFormData_all(ydParamT);
- dataList.forEach(item -> {
- ydClient.operateData(YDParam.builder()
- .formInstanceId(UtilMap.getString(item, "instanceId"))
- .updateFormDataJson(JSON.toJSONString(UtilMap.map("radioField_lznyvvav", "停用")))
- .build(), YDConf.FORM_OPERATION.update);
- });
- }
- /**
- * 同步数据公共方法, 手动 + 定时
- */
- @SneakyThrows
- @Override
- public void syncCommon(String type) {
- // todo 罗:: 判定不同来源, 这里触发原有逻辑同步, 添加同步时间和状态写入
- if(type.equals("YWFL")){
- getYWFLid();
- }
- if (type.equals("YZDZ")) {
- getYWFLid2();
- }
- if (type.equals("YZWL")) {
- getYWFLid1();
- }
- // 匹配停用数据做更新
- this.syncRecruitSource(type);
- }
- }
|