From 0642ad29a2c00e228bf8be863b4b2e02a98c46fc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=BC=A0=E5=85=89=E8=B5=B7?= <1198568182@qq.com>
Date: Fri, 28 Mar 2025 09:42:10 +0800
Subject: [PATCH] 1
---
.../日志/{保存设备BOM.ms => 保存人员同步日志.ms} | 8 +-
.../{PLMBOM保存.ms => 人员待同步保存.ms} | 8 +-
.../B-同步日志/{修改.ms => 修改人员同步.ms} | 8 +-
data/magic-api/api/B-同步日志/查询人员同步.ms | 173 ++++++++++
.../magicboot/controller/UsceController.java | 316 ++++++++++++++++++
.../magicboot/fxapi/HttpClientUtils.java | 30 ++
.../magicboot/fxapi/XKTokenAccess.java | 6 +-
.../ssssssss/magicboot/zdyutils/FXTIC.java | 4 +-
.../ssssssss/magicboot/zdyutils/MagicApi.java | 72 ++--
.../magicboot/fxapi/HttpClientUtils.class | Bin 8989 -> 9691 bytes
.../magicboot/fxapi/XKTokenAccess.class | Bin 4828 -> 4828 bytes
.../ssssssss/magicboot/zdyutils/FXTIC.class | Bin 1427 -> 1427 bytes
.../magicboot/zdyutils/MagicApi.class | Bin 10507 -> 10510 bytes
13 files changed, 572 insertions(+), 53 deletions(-)
rename data/magic-api/api/B-传输日志/日志/{保存设备BOM.ms => 保存人员同步日志.ms} (87%)
rename data/magic-api/api/B-同步日志/{PLMBOM保存.ms => 人员待同步保存.ms} (94%)
rename data/magic-api/api/B-同步日志/{修改.ms => 修改人员同步.ms} (95%)
create mode 100644 data/magic-api/api/B-同步日志/查询人员同步.ms
create mode 100644 magic-boot/src/main/java/org/ssssssss/magicboot/controller/UsceController.java
diff --git a/data/magic-api/api/B-传输日志/日志/保存设备BOM.ms b/data/magic-api/api/B-传输日志/日志/保存人员同步日志.ms
similarity index 87%
rename from data/magic-api/api/B-传输日志/日志/保存设备BOM.ms
rename to data/magic-api/api/B-传输日志/日志/保存人员同步日志.ms
index dc6c736..10028d0 100644
--- a/data/magic-api/api/B-传输日志/日志/保存设备BOM.ms
+++ b/data/magic-api/api/B-传输日志/日志/保存人员同步日志.ms
@@ -3,13 +3,13 @@
"id" : "copy1724404999212d47014",
"script" : null,
"groupId" : "6ee06a9b9fe04b85b70a9364ef324ab4",
- "name" : "保存设备BOM",
+ "name" : "保存人员同步日志",
"createTime" : null,
- "updateTime" : 1741679160582,
+ "updateTime" : 1743054112942,
"lock" : null,
"createBy" : null,
"updateBy" : null,
- "path" : "/savesbbom",
+ "path" : "/saveuser",
"method" : "POST",
"parameters" : [ ],
"options" : [ {
@@ -47,4 +47,4 @@
}
================================
data.create_time = new Date()
-return db.table('send_log_sbbom').primary('log_id',uuid()).save(data)
\ No newline at end of file
+return db.table('send_log_user').primary('log_id',uuid()).save(data)
\ No newline at end of file
diff --git a/data/magic-api/api/B-同步日志/PLMBOM保存.ms b/data/magic-api/api/B-同步日志/人员待同步保存.ms
similarity index 94%
rename from data/magic-api/api/B-同步日志/PLMBOM保存.ms
rename to data/magic-api/api/B-同步日志/人员待同步保存.ms
index 6b3d004..474cf54 100644
--- a/data/magic-api/api/B-同步日志/PLMBOM保存.ms
+++ b/data/magic-api/api/B-同步日志/人员待同步保存.ms
@@ -3,13 +3,13 @@
"id" : "copy1701349941295d22163",
"script" : null,
"groupId" : "4506c21162d24d4c81bad5bc8707672a",
- "name" : "PLMBOM保存",
+ "name" : "人员待同步保存",
"createTime" : null,
- "updateTime" : 1740044319573,
+ "updateTime" : 1743047168232,
"lock" : null,
"createBy" : null,
"updateBy" : null,
- "path" : "/save",
+ "path" : "/saveuser",
"method" : "POST",
"parameters" : [ ],
"options" : [ {
@@ -122,5 +122,5 @@
data.create_time = new Date()
-return db.table("send_syn_plmbom").primary('send_id', () => uuid())
+return db.table("send_syn_user").primary('send_id', () => uuid())
.save(data)
\ No newline at end of file
diff --git a/data/magic-api/api/B-同步日志/修改.ms b/data/magic-api/api/B-同步日志/修改人员同步.ms
similarity index 95%
rename from data/magic-api/api/B-同步日志/修改.ms
rename to data/magic-api/api/B-同步日志/修改人员同步.ms
index 6b6a62a..51aafe2 100644
--- a/data/magic-api/api/B-同步日志/修改.ms
+++ b/data/magic-api/api/B-同步日志/修改人员同步.ms
@@ -3,13 +3,13 @@
"id" : "copy1701349998399d81042",
"script" : null,
"groupId" : "4506c21162d24d4c81bad5bc8707672a",
- "name" : "修改",
+ "name" : "修改人员同步",
"createTime" : null,
- "updateTime" : 1740193090239,
+ "updateTime" : 1743047188007,
"lock" : null,
"createBy" : null,
"updateBy" : null,
- "path" : "/update",
+ "path" : "/updateuser",
"method" : "POST",
"parameters" : [ ],
"options" : [ {
@@ -122,5 +122,5 @@
data.update_time = new Date()
-return db.table("send_syn_plmbom").primary('send_id')
+return db.table("send_syn_user").primary('send_id')
.update(data)
\ No newline at end of file
diff --git a/data/magic-api/api/B-同步日志/查询人员同步.ms b/data/magic-api/api/B-同步日志/查询人员同步.ms
new file mode 100644
index 0000000..5d2e572
--- /dev/null
+++ b/data/magic-api/api/B-同步日志/查询人员同步.ms
@@ -0,0 +1,173 @@
+{
+ "properties" : { },
+ "id" : "copy1743047080239d23438",
+ "script" : null,
+ "groupId" : "4506c21162d24d4c81bad5bc8707672a",
+ "name" : "查询人员同步",
+ "createTime" : null,
+ "updateTime" : 1743047414999,
+ "lock" : null,
+ "createBy" : null,
+ "updateBy" : null,
+ "path" : "/queryuser",
+ "method" : "GET",
+ "parameters" : [ {
+ "name" : "sendType",
+ "value" : "user",
+ "description" : null,
+ "required" : false,
+ "dataType" : "String",
+ "type" : null,
+ "defaultValue" : null,
+ "validateType" : null,
+ "error" : null,
+ "expression" : null,
+ "children" : null
+ }, {
+ "name" : "sendStatus3",
+ "value" : "3",
+ "description" : null,
+ "required" : false,
+ "dataType" : "String",
+ "type" : null,
+ "defaultValue" : null,
+ "validateType" : null,
+ "error" : null,
+ "expression" : null,
+ "children" : null
+ }, {
+ "name" : "crmId",
+ "value" : "665532391d23d0000111cab9",
+ "description" : null,
+ "required" : false,
+ "dataType" : "String",
+ "type" : null,
+ "defaultValue" : null,
+ "validateType" : null,
+ "error" : null,
+ "expression" : null,
+ "children" : null
+ }, {
+ "name" : "sendSyn",
+ "value" : "0",
+ "description" : null,
+ "required" : false,
+ "dataType" : "String",
+ "type" : null,
+ "defaultValue" : null,
+ "validateType" : null,
+ "error" : null,
+ "expression" : null,
+ "children" : null
+ } ],
+ "options" : [ ],
+ "requestBody" : "",
+ "headers" : [ ],
+ "paths" : [ ],
+ "responseBody" : "{\n \"code\": 200,\n \"message\": \"success\",\n \"data\": [],\n \"timestamp\": 1716889610473,\n \"executeTime\": 8\n}",
+ "description" : null,
+ "requestBodyDefinition" : null,
+ "responseBodyDefinition" : {
+ "name" : "",
+ "value" : "",
+ "description" : "",
+ "required" : false,
+ "dataType" : "Object",
+ "type" : null,
+ "defaultValue" : null,
+ "validateType" : "",
+ "error" : "",
+ "expression" : "",
+ "children" : [ {
+ "name" : "code",
+ "value" : "200",
+ "description" : "",
+ "required" : false,
+ "dataType" : "Integer",
+ "type" : null,
+ "defaultValue" : null,
+ "validateType" : "",
+ "error" : "",
+ "expression" : "",
+ "children" : [ ]
+ }, {
+ "name" : "message",
+ "value" : "success",
+ "description" : "",
+ "required" : false,
+ "dataType" : "String",
+ "type" : null,
+ "defaultValue" : null,
+ "validateType" : "",
+ "error" : "",
+ "expression" : "",
+ "children" : [ ]
+ }, {
+ "name" : "data",
+ "value" : "",
+ "description" : "",
+ "required" : false,
+ "dataType" : "Array",
+ "type" : null,
+ "defaultValue" : null,
+ "validateType" : "",
+ "error" : "",
+ "expression" : "",
+ "children" : [ ]
+ }, {
+ "name" : "timestamp",
+ "value" : "1716889610473",
+ "description" : "",
+ "required" : false,
+ "dataType" : "Long",
+ "type" : null,
+ "defaultValue" : null,
+ "validateType" : "",
+ "error" : "",
+ "expression" : "",
+ "children" : [ ]
+ }, {
+ "name" : "executeTime",
+ "value" : "8",
+ "description" : "",
+ "required" : false,
+ "dataType" : "Integer",
+ "type" : null,
+ "defaultValue" : null,
+ "validateType" : "",
+ "error" : "",
+ "expression" : "",
+ "children" : [ ]
+ } ]
+ }
+}
+================================
+//查询本机mysql
+return db.select(
+"""
+ SELECT * FROM `send_syn_user` where
+ send_type=#{sendType}
+
+ and dsf_id=#{dataId}
+
+
+ and dsfzhu_id=#{datapId}
+
+
+ and send_syn=#{sendSyn}
+
+
+ and send_status=#{sendStatus}
+
+
+ and crm_id=#{crmId}
+
+
+ and dsf_id=#{dsfId}
+
+
+ and send_status!=#{sendStatus3}
+
+ order by create_time desc
+
+""");
\ No newline at end of file
diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/UsceController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/UsceController.java
new file mode 100644
index 0000000..7489b3b
--- /dev/null
+++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/UsceController.java
@@ -0,0 +1,316 @@
+package org.ssssssss.magicboot.controller;
+ import com.alibaba.fastjson.JSON;
+ import com.alibaba.fastjson.JSONArray;
+ import com.alibaba.fastjson.JSONObject;
+ import com.xxl.job.core.context.XxlJobHelper;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+ import org.springframework.web.bind.annotation.PostMapping;
+ import org.springframework.web.bind.annotation.RequestMapping;
+ import org.springframework.web.bind.annotation.RestController;
+ import org.ssssssss.magicboot.fxapi.HttpClientResult;
+ import org.ssssssss.magicboot.fxapi.HttpClientUtils;
+ import org.ssssssss.magicboot.fxapi.XKTokenAccess;
+ import org.ssssssss.magicboot.zdyutils.FXHTTP;
+ import org.ssssssss.magicboot.zdyutils.FXTIC;
+ import org.ssssssss.magicboot.zdyutils.GcjJson;
+ import org.ssssssss.magicboot.zdyutils.MagicApi;
+
+ import java.text.SimpleDateFormat;
+ import java.util.HashMap;
+ import java.util.LinkedHashMap;
+ import java.util.Map;
+
+/**
+ * 人员同步
+ */
+@RestController
+@RequestMapping("/User")
+
+public class UsceController {
+ private final Logger log = LoggerFactory.getLogger(UsceController.class);
+
+ public static void main(String[] args) throws Exception {
+ new UsceController().getUserData();
+ new UsceController().saveSynUser();
+ }
+
+ @PostMapping("/getUserData")
+ public void getUserData() throws Exception {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String time = sdf.format(System.currentTimeMillis() - (1000 * 60 * 62 * 24));
+ // time = "2024-05-01";
+ String sendUrl = "http://192.168.31.121:8022/ierp/kapi/v2/f9w5/base/bos_user/userQuery";
+ Map headers = new HashMap();
+ String token = "2095350818281620480_9IJI28EuhdoKjvDlKJfdpmQuw3GJS28reo9vbBaMkf1U3t3djnTvWv6D36PjAaQr4k9nmBf6KWvdReC78XbPCQvjADli8lA2reOR08";
+ headers.put("accessToken", token);//放token
+
+ JSONObject params = new JSONObject();
+
+ JSONObject datajson = new JSONObject();
+ datajson.put("createtime","2012-02-26 11:04:43");
+ JSONArray arr = new JSONArray();
+ String[] strings = {
+ "ZHY002.001.005.003",
+ "ZHY002.001.005.002"
+ };
+
+ // 将字符串添加到 JSONArray 中
+ for (String str : strings) {
+ arr.add(str);
+ }
+
+
+
+ datajson.put("dpt_number",arr);
+
+
+ params.put("data",datajson);
+ params.put("pageNo",1);
+ params.put("pageSize",1000);
+
+
+ HttpClientResult rtn = HttpClientUtils.doPostJson(sendUrl, headers, params.toJSONString());
+ String resStr = rtn.getContent();
+ JSONObject resjs = JSONObject.parseObject(resStr);
+ if (resjs!=null){
+ if("0".equals(resjs.getString("errorCode"))){//查询成功
+ JSONObject data = resjs.getJSONObject("data");
+ System.out.println("查询人员总数量" + data.getInteger("totalCount"));
+ JSONArray resJson = data.getJSONArray("rows");
+
+ System.out.println("待同步人员数量" + resJson.size());
+
+ for (int i = 0; i < resJson.size(); i++) {
+ JSONObject str = resJson.getJSONObject(i);
+ //ERPID
+ String dataId = GcjJson.getNodeValue(str, "JSON.id") != null ? GcjJson.getNodeValue(str, "JSON.id").toString() : "";
+ //ERP人员编码
+ String number = GcjJson.getNodeValue(str, "JSON.number") != null ? GcjJson.getNodeValue(str, "JSON.number").toString() : "";
+
+ String name = GcjJson.getNodeValue(str, "JSON.name") != null ? GcjJson.getNodeValue(str, "JSON.name").toString() : "";
+
+ String endtime = GcjJson.getNodeValue(str, "JSON.modifytime") != null ? GcjJson.getNodeValue(str, "JSON.modifytime").toString() : "";
+
+ String syn_type = "0";//同步类型 0新增 1修改 2删除
+ log.info("-------------------开始执行人员" + i + " -------------------" + number);
+ XxlJobHelper.log("-------------------开始执行人员" + i + " -------------------" + number);
+
+ Boolean sendFlag = false;
+ StringBuffer stringBuffer = new StringBuffer();
+
+ try {
+ boolean tbflag = false;
+ //验证数据是否已存在
+ JSONObject dataSyn = MagicApi.getSendSYNUser("user", syn_type, dataId);
+
+ if (dataSyn != null && endtime.equals(dataSyn.getString("mark"))) {
+ log.info("数据已存在-" + name);
+ XxlJobHelper.log("--数据已存在---" + name);
+ tbflag = true;
+ }
+
+ if (tbflag) {
+ continue;
+ }
+ log.info("人员待同步数据-" + i + " ------" + name);
+
+ JSONObject jsonObjectData = new JSONObject();
+ jsonObjectData.put("send_type", "user"); //业务类型
+ jsonObjectData.put("send_syn", syn_type); //同步类型 0新增 1修改 2删除
+ jsonObjectData.put("dsf_id", dataId);//数据id
+ jsonObjectData.put("dsfzhu_id", dataId);//数据id
+ jsonObjectData.put("send_status", 3);//同步状态 true同步成功 false同步失败 3待同步
+ jsonObjectData.put("dsf_code", name);//数据名称
+ jsonObjectData.put("mark", endtime);//标识
+ jsonObjectData.put("dsf_json", str.toJSONString());//标识
+
+ MagicApi.saveSendSYNUser(jsonObjectData);
+ } catch (Exception e) {
+ continue;
+ }
+
+ }
+
+
+ }
+ }
+
+ }
+
+ //@PostMapping("/getSynProduct")
+ public void saveSynUser() throws Exception {
+ FXHTTP fxapi = new FXHTTP();
+ String resJsonStr = MagicApi.getWNRES("http://127.0.0.1:18088/syn/queryuser?sendType=user&sendStatus=3", "");
+ JSONObject resJson = JSON.parseObject(resJsonStr);
+ if (resJson != null) {
+ log.info("待同步人员数" + resJson.getJSONArray("data").size());
+ for (int i = 0; i < resJson.getJSONArray("data").size(); i++) {
+ XKTokenAccess xktonken = new XKTokenAccess();
+ JSONObject getData = resJson.getJSONArray("data").getJSONObject(i);
+ JSONObject str = getData.getJSONObject("dsfJson");
+ String syn_type = "0";//同步类型 0新增 1修改 2删除
+ Boolean sendFlag = false;
+ StringBuffer stringBuffer = new StringBuffer();
+ boolean tbflag = false;
+ // 构建json
+ JSONObject obj = new JSONObject();
+ LinkedHashMap map = new LinkedHashMap();
+ Boolean flag = true;
+ //ID
+ String dataId = GcjJson.getNodeValue(str, "JSON.id") != null ? GcjJson.getNodeValue(str, "JSON.id").toString() : "";
+ //编码
+ String number = GcjJson.getNodeValue(str, "JSON.number") != null ? GcjJson.getNodeValue(str, "JSON.number").toString() : "";
+
+ String name = GcjJson.getNodeValue(str, "JSON.name") != null ? GcjJson.getNodeValue(str, "JSON.name").toString() : "";
+
+ //最后修改时间
+ String endtime = GcjJson.getNodeValue(str, "JSON.modifytime") != null ? GcjJson.getNodeValue(str, "JSON.modifytime").toString() : "";
+ //性别
+ String gender = GcjJson.getNodeValue(str, "JSON.gender") != null ? GcjJson.getNodeValue(str, "JSON.gender").toString() : "";
+
+ String email = GcjJson.getNodeValue(str, "JSON.email") != null ? GcjJson.getNodeValue(str, "JSON.email").toString() : "";
+
+ String phone = GcjJson.getNodeValue(str, "JSON.phone") != null ? GcjJson.getNodeValue(str, "JSON.phone").toString() : "";
+
+ //状态
+ String enable = GcjJson.getNodeValue(str, "JSON.enable") != null ? GcjJson.getNodeValue(str, "JSON.enable").toString() : "";
+
+
+ JSONArray entryentity = str.getJSONArray("entryentity");
+ String deptNumber = "";
+ if(entryentity!=null){
+ JSONObject deptobj = (JSONObject) entryentity.get(0);
+ deptNumber = deptobj.getString("dpt_number");
+ }
+
+
+ try{
+ JSONObject dataSyn = MagicApi.getSendSYNDataUser("user", syn_type, dataId,"3");
+ if (dataSyn != null && dataId.equals(dataSyn.getString("dsfId")) && endtime.equals(dataSyn.getString("mark")) ) {
+ log.info("数据已存在-" + name);
+ XxlJobHelper.log("--数据已存在---" + name);
+ tbflag = true;
+ }
+ if (tbflag) {
+ continue;
+ }
+
+ //查询人员CRMID
+ String crmId = fxapi.getDataBYID("PersonnelObj", "field_T1xid__c", number, "JSON.data.dataList[0]._id");
+ if (crmId != null && !crmId.equals("")) {
+ //人员id
+ map.put("body.data.object_data._id", crmId);
+ flag=false;
+ }
+ String crmdeptID = "999999";
+ if (deptNumber!=""){
+ crmdeptID = fxapi.getDataBYID("DepartmentObj", "field_Vj6sf__c", deptNumber, "JSON.data.dataList[0]._id");
+ System.out.println(crmdeptID);
+ }
+
+ map.put("body.data.object_data.phone", phone);
+ map.put("body.data.object_data.name", name);
+ map.put("body.data.object_data.full_name", name);
+ map.put("body.data.object_data.erp_id__c", dataId);//ID
+ map.put("body.data.object_data.field_T1xid__c", number);//编码
+ map.put("body.data.object_data.user_name", phone);
+ map.put("body.data.object_data.email", email);
+
+ if(enable.equals("2")){
+ map.put("body.data.object_data.status", "1");
+ map.put("body.data.object_data.is_pause_login", true);
+ }else {
+ map.put("body.data.object_data.status", "0");
+ map.put("body.data.object_data.is_pause_login", false);
+ }
+ if(gender.equals("1")){
+ map.put("body.data.object_data.sex", "M");
+
+ }if(gender.equals("2")){
+ map.put("body.data.object_data.sex", "F");
+
+ }else {
+ map.put("body.data.object_data.sex", "P");
+ }
+ map.put("body.data.object_data.main_department[0]", crmdeptID);//主属部门
+
+ map.put("body.data.object_data.dataObjectApiName", "PersonnelObj");
+
+ map.put("body.corpId", FXTIC.CORPID);
+ map.put("body.corpAccessToken", xktonken.getCorpAccessToken().getCorpAccessToken());
+ map.put("body.currentOpenUserId", FXTIC.CURRENTOPENUSERID);
+ for (Object key : map.keySet()) {
+ GcjJson.setNodeValue(obj, key.toString(), map.get(key));
+ }
+ log.info("--请求json---" + obj);
+ XxlJobHelper.log("--请求json---" + obj);
+
+ }catch (Exception e) {
+ sendFlag = true;
+ stringBuffer.append("参数解析错误,请联系开发人员");
+ e.printStackTrace();
+ }
+ getSynDataSave(stringBuffer,sendFlag,flag,fxapi,dataId,name,obj,getData);
+
+ }
+ }
+ }
+ /**
+ * 写数据
+ */
+ public void getSynDataSave(StringBuffer stringBuffer,Boolean sendFlag,Boolean flag,FXHTTP fxapi,String dataId,String nameData,JSONObject obj,JSONObject str) {
+ String syn_type = "0";//同步类型 0新增 1修改 2删除
+ String res_url = "";
+ String res_param = "";
+ String res = "";
+ try {
+ if (flag) {
+ res = fxapi.saveV2Obj(obj);
+ res_url=FXTIC.URL_FX_CREATE;
+ } else {
+ syn_type = "1";
+ res = fxapi.updateV2Obj(obj);
+ res_url=FXTIC.URL_FX_UPDATE;
+ }
+ res_param=obj.toJSONString();
+ log.info("返回值:"+res);
+ JSONObject resjs = JSON.parseObject(res);
+ if (resjs != null && "0".equals(resjs.getString("errorCode"))) {
+
+ } else {
+ sendFlag = true;
+ stringBuffer.append(resjs.getString("errorMessage") + "");
+ }
+ } catch (Exception e) {
+ sendFlag = true;
+ stringBuffer.append("纷享销客接口调用失败,请检查网络配置");
+ }
+ JSONObject sendData = new JSONObject();
+ sendData.put("send_status", !sendFlag);//同步状态 true同步成功 false同步失败 3待同步
+ sendData.put("crm_code", nameData);//数据名称
+ sendData.put("send_id", str.getString("sendId")); //send_id
+ MagicApi.updateSendSYUPDATENUser(sendData);
+
+ JSONObject logData = new JSONObject();
+ logData.put("log_type", "user"); //业务类型
+ logData.put("log_status", !sendFlag);//同步状态 true同步成功 false同步失败 3待同步
+ logData.put("syn_type", syn_type);//同步类型 0新增 1修改 2删除
+ logData.put("data_id", dataId);//数据id
+ logData.put("data_name", nameData);//数据名称
+ logData.put("res_body", "同步成功");//返回值
+ logData.put("res_url", res_url);//
+ logData.put("res_param", res_param);//
+ logData.put("res_res", res);//
+ if (sendFlag) {
+ logData.put("res_body", stringBuffer.toString());//返回值
+ }
+ //写入传输日志
+ MagicApi.saveUserLog(logData);
+ }
+
+
+
+
+
+}
diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/fxapi/HttpClientUtils.java b/magic-boot/src/main/java/org/ssssssss/magicboot/fxapi/HttpClientUtils.java
index b2ac4b4..121cacd 100644
--- a/magic-boot/src/main/java/org/ssssssss/magicboot/fxapi/HttpClientUtils.java
+++ b/magic-boot/src/main/java/org/ssssssss/magicboot/fxapi/HttpClientUtils.java
@@ -59,7 +59,37 @@ public class HttpClientUtils {
public static HttpClientResult doGet(String url, Map params) throws Exception {
return doGet(url, null, params);
}
+ public static HttpClientResult doPostJsonfromdata(String url, Map headers,List params) throws Exception {
+ // 创建httpClient对象
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ // 创建http对象
+ HttpPost httpPost = new HttpPost(url);
+ /**
+ * setConnectTimeout:设置连接超时时间,单位毫秒。
+ * setConnectionRequestTimeout:设置从connect Manager(连接池)获取Connection
+ * 超时时间,单位毫秒。这个属性是新加的属性,因为目前版本是可以共享连接池的。
+ * setSocketTimeout:请求获取数据的超时时间(即响应时间),单位毫秒。 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。
+ */
+ RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(CONNECT_TIMEOUT).setSocketTimeout(SOCKET_TIMEOUT).build();
+ httpPost.setConfig(requestConfig);
+ //封装请求头
+ packageHeader(headers, httpPost);
+
+ httpPost.setEntity(new UrlEncodedFormEntity(params));
+
+
+ // 创建httpResponse对象
+ CloseableHttpResponse httpResponse = null;
+
+ try {
+ // 执行请求并获得响应结果
+ return getHttpClientResult(httpResponse, httpClient, httpPost);
+ } finally {
+ // 释放资源
+ release(httpResponse, httpClient);
+ }
+ }
/**
* 发送get请求;带请求头和请求参数
*
diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/fxapi/XKTokenAccess.java b/magic-boot/src/main/java/org/ssssssss/magicboot/fxapi/XKTokenAccess.java
index bb5a09e..8d5715c 100644
--- a/magic-boot/src/main/java/org/ssssssss/magicboot/fxapi/XKTokenAccess.java
+++ b/magic-boot/src/main/java/org/ssssssss/magicboot/fxapi/XKTokenAccess.java
@@ -28,9 +28,9 @@ public class XKTokenAccess {
private static final String APP_ACCESS_TOKEN_KEY_PREX = "appAccessToken_";
private static final String CORP_ACCESS_TOKEN_KEY_PREX = "corpAccessToken_";
- private static final String appId = "FSAID_131ee7a";
- private static final String appSecret= "b9d85f718d46460aaf5c45b0afa27792";
- private static final String permanentCode= "334912202A8400E338E6A7BD8C45C219";
+ private static final String appId = "FSAID_131f56a";
+ private static final String appSecret= "5bda722932a54e80a05d2cc9b1722fed";
+ private static final String permanentCode= "1A49B50861909007935CAB5E33E52BAA";
private static final String prefix = "https://open.fxiaoke.com";
diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/zdyutils/FXTIC.java b/magic-boot/src/main/java/org/ssssssss/magicboot/zdyutils/FXTIC.java
index 38ae2b0..1ee29c8 100644
--- a/magic-boot/src/main/java/org/ssssssss/magicboot/zdyutils/FXTIC.java
+++ b/magic-boot/src/main/java/org/ssssssss/magicboot/zdyutils/FXTIC.java
@@ -14,8 +14,8 @@ public class FXTIC {
//解锁
public static String URL_FX_UNLOCK="https://open.fxiaoke.com/cgi/crm/v2/object/unlock";
- public static String CURRENTOPENUSERID="FSUID_0097DB273ACDA67353E1C0BAB997D8AC";
- public static String CORPID="FSCID_79069F6B50BC5CCF704283C5DEFD5670";
+ public static String CURRENTOPENUSERID="FSUID_A9AD0C360309427B3F431487883B73B9";
+ public static String CORPID="FSCID_11F505C980B5FE43D5D7230567802E09";
public static String URL_DESCRIBE="https://open.fxiaoke.com/cgi/crm/v2/object/describe";
diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/zdyutils/MagicApi.java b/magic-boot/src/main/java/org/ssssssss/magicboot/zdyutils/MagicApi.java
index aa6af8e..cb4cc5a 100644
--- a/magic-boot/src/main/java/org/ssssssss/magicboot/zdyutils/MagicApi.java
+++ b/magic-boot/src/main/java/org/ssssssss/magicboot/zdyutils/MagicApi.java
@@ -22,7 +22,7 @@ public class MagicApi {
public static void saveApiDataLog(JSONObject data) {
try {
String res = HttpSend.sendMagicPost(
- "http://127.0.0.1:3002/SYNCLOG/STOCK/SAVE"
+ "http://127.0.0.1:18088/SYNCLOG/STOCK/SAVE"
, data);
} catch (Exception e) {
e.printStackTrace();
@@ -32,17 +32,17 @@ public class MagicApi {
System.out.println(data);
try {
String res = HttpSend.sendMagicPost(
- "http://127.0.0.1:3002/send/log/save"
+ "http://127.0.0.1:18088/send/log/save"
, data);
} catch (Exception e) {
e.printStackTrace();
}
}
- public static void saveDataLogSbbom(JSONObject data) {
+ public static void saveUserLog(JSONObject data) {
System.out.println(data);
try {
String res = HttpSend.sendMagicPost(
- "http://127.0.0.1:3002/send/log/savesbbom"
+ "http://127.0.0.1:18088/send/log/saveuser"
, data);
} catch (Exception e) {
e.printStackTrace();
@@ -52,7 +52,7 @@ public class MagicApi {
//System.out.println(data.toJSONString());
try {
String res = HttpSend.sendMagicPost(
- "http://127.0.0.1:3002/cpfx/save"
+ "http://127.0.0.1:18088/cpfx/save"
, data);
} catch (Exception e) {
e.printStackTrace();
@@ -72,7 +72,7 @@ public class MagicApi {
try {
return HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/NCC/ZHRY/V_CRM_PSNDOC?NAME=" + URLEncoder.encode(name, "UTF-8")
+ "http://127.0.0.1:18088/NCC/ZHRY/V_CRM_PSNDOC?NAME=" + URLEncoder.encode(name, "UTF-8")
, "JSON.data[0].PK_PSNDOC");
} catch (Exception e) {
@@ -84,7 +84,7 @@ public class MagicApi {
try {
return HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/NCC/ZHRY/V_CRM_ORG?PK_ORG=" + name
+ "http://127.0.0.1:18088/NCC/ZHRY/V_CRM_ORG?PK_ORG=" + name
, "JSON.data[0].ORG_CODE");
} catch (Exception e) {
@@ -98,7 +98,7 @@ public class MagicApi {
try {
String res = HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/SYNCLOG/GELOGDATA" +
+ "http://127.0.0.1:18088/SYNCLOG/GELOGDATA" +
"?stock_code=" + URLEncoder.encode(stock_code, "UTF-8") +
"&pro_code=" + URLEncoder.encode(pro_code, "UTF-8")+
"&batch=" + URLEncoder.encode(batch, "UTF-8")+
@@ -119,7 +119,7 @@ public class MagicApi {
try {
String res = HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/SYNCLOG/GELOGDATA?type=" + URLEncoder.encode(type, "UTF-8") + "&dataId=" + URLEncoder.encode(dataId, "UTF-8")
+ "http://127.0.0.1:18088/SYNCLOG/GELOGDATA?type=" + URLEncoder.encode(type, "UTF-8") + "&dataId=" + URLEncoder.encode(dataId, "UTF-8")
, "");
JSONObject resJson = JSONObject.parseObject(res);
@@ -135,7 +135,7 @@ public class MagicApi {
try {
return HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/NCC/KH/V_CRM_CUSTOMER?DATAID=" + URLEncoder.encode(name, "UTF-8")
+ "http://127.0.0.1:18088/NCC/KH/V_CRM_CUSTOMER?DATAID=" + URLEncoder.encode(name, "UTF-8")
, "JSON.data[0].CODE");
} catch (Exception e) {
e.printStackTrace();
@@ -147,7 +147,7 @@ public class MagicApi {
try {
return HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/NCC/WL/V_CRM_TAXCODE?NAME=" + URLEncoder.encode(name, "UTF-8")
+ "http://127.0.0.1:18088/NCC/WL/V_CRM_TAXCODE?NAME=" + URLEncoder.encode(name, "UTF-8")
, "JSON.data[0].PK_TAXCODE");
} catch (Exception e) {
e.printStackTrace();
@@ -159,7 +159,7 @@ public class MagicApi {
try {
return HttpSend.sendMagicGet(
- "http://127.0.0.1:3002"+table+"?TS=" + URLEncoder.encode(TS, "UTF-8")
+ "http://127.0.0.1:18088"+table+"?TS=" + URLEncoder.encode(TS, "UTF-8")
, null);
} catch (Exception e) {
e.printStackTrace();
@@ -171,7 +171,7 @@ public class MagicApi {
try {
return HttpSend.sendMagicGet(
- "http://127.0.0.1:3002"+table+"?TS=" + URLEncoder.encode(TS, "UTF-8") + ">="+ URLEncoder.encode(GT, "UTF-8")
+ "http://127.0.0.1:18088"+table+"?TS=" + URLEncoder.encode(TS, "UTF-8") + ">="+ URLEncoder.encode(GT, "UTF-8")
, null);
} catch (Exception e) {
e.printStackTrace();
@@ -183,7 +183,7 @@ public class MagicApi {
try {
return HttpSend.sendMagicGet(
- "http://127.0.0.1:3002"+table
+ "http://127.0.0.1:18088"+table
, jsonPath);
} catch (Exception e) {
e.printStackTrace();
@@ -194,7 +194,7 @@ public class MagicApi {
try {
return HttpSend.sendMagicGet(
- "http://127.0.0.1:3002"+table+"?NAME=" + URLEncoder.encode(TS, "UTF-8")
+ "http://127.0.0.1:18088"+table+"?NAME=" + URLEncoder.encode(TS, "UTF-8")
, null);
} catch (Exception e) {
e.printStackTrace();
@@ -207,7 +207,7 @@ public class MagicApi {
try {
return HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/NCC/KH/V_CRM_CUSTCLASS?NAME=" + URLEncoder.encode(name, "UTF-8")
+ "http://127.0.0.1:18088/NCC/KH/V_CRM_CUSTCLASS?NAME=" + URLEncoder.encode(name, "UTF-8")
, "JSON.data[0].PK_CUSTCLASS");
} catch (Exception e) {
e.printStackTrace();
@@ -219,7 +219,7 @@ public class MagicApi {
try {
return HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/NCC/KH/V_CRM_COUNTRYZONE?NAME=" + URLEncoder.encode(name, "UTF-8")
+ "http://127.0.0.1:18088/NCC/KH/V_CRM_COUNTRYZONE?NAME=" + URLEncoder.encode(name, "UTF-8")
, "JSON.data[0].PK_COUNTRY");
} catch (Exception e) {
e.printStackTrace();
@@ -231,7 +231,7 @@ public class MagicApi {
try {
return HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/NCC/KH/V_CRM_REGION?NAME=" + URLEncoder.encode(name, "UTF-8")
+ "http://127.0.0.1:18088/NCC/KH/V_CRM_REGION?NAME=" + URLEncoder.encode(name, "UTF-8")
, "JSON.data[0].PK_REGION");
} catch (Exception e) {
e.printStackTrace();
@@ -243,7 +243,7 @@ public class MagicApi {
public static String bibie(String name) {
try {
return HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/NCC/KH/V_CRM_CURRTYPE?NAME=" + URLEncoder.encode(name, "UTF-8")
+ "http://127.0.0.1:18088/NCC/KH/V_CRM_CURRTYPE?NAME=" + URLEncoder.encode(name, "UTF-8")
, "JSON.data[0].PK_CURRTYPE");
} catch (Exception e) {
e.printStackTrace();
@@ -254,7 +254,7 @@ public class MagicApi {
public static String khyh(String name) {
try {
return HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/NCC/KH/V_CRM_BANKDOC?PKBANKDOC=" + URLEncoder.encode(name, "UTF-8")
+ "http://127.0.0.1:18088/NCC/KH/V_CRM_BANKDOC?PKBANKDOC=" + URLEncoder.encode(name, "UTF-8")
, "JSON.data[0].PK_BANKTYPE");
} catch (Exception e) {
e.printStackTrace();
@@ -267,17 +267,17 @@ public class MagicApi {
System.out.println(data.toJSONString());
try {
String res = HttpSend.sendMagicPost(
- "http://127.0.0.1:3002/syn/save"
+ "http://127.0.0.1:18088/syn/save"
, data);
} catch (Exception e) {
e.printStackTrace();
}
}
- public static void saveSendSYNDataSBBom(JSONObject data) {
+ public static void saveSendSYNUser(JSONObject data) {
System.out.println(data.toJSONString());
try {
String res = HttpSend.sendMagicPost(
- "http://127.0.0.1:3002/syn/savesbbom"
+ "http://127.0.0.1:18088/syn/saveuser"
, data);
} catch (Exception e) {
e.printStackTrace();
@@ -287,17 +287,17 @@ public class MagicApi {
System.out.println(data.toJSONString());
try {
String res = HttpSend.sendMagicPost(
- "http://127.0.0.1:3002/syn/update"
+ "http://127.0.0.1:18088/syn/update"
, data);
} catch (Exception e) {
e.printStackTrace();
}
}
- public static void updateSendSYUPDATENDataSbBom(JSONObject data) {
+ public static void updateSendSYUPDATENUser(JSONObject data) {
System.out.println(data.toJSONString());
try {
String res = HttpSend.sendMagicPost(
- "http://127.0.0.1:3002/syn/updatesbbom"
+ "http://127.0.0.1:18088/syn/updateuser"
, data);
} catch (Exception e) {
e.printStackTrace();
@@ -307,7 +307,7 @@ public class MagicApi {
try {
String res = HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/syn/query?sendType=" + URLEncoder.encode(type, "UTF-8")
+ "http://127.0.0.1:18088/syn/query?sendType=" + URLEncoder.encode(type, "UTF-8")
+ "&crmId=" + URLEncoder.encode(dataId, "UTF-8")
+ "&sendSyn=" + URLEncoder.encode(syn, "UTF-8")
, "");
@@ -326,7 +326,7 @@ public class MagicApi {
try {
String res = HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/syn/querysbbom?sendType=" + URLEncoder.encode(type, "UTF-8")
+ "http://127.0.0.1:18088/syn/querysbbom?sendType=" + URLEncoder.encode(type, "UTF-8")
+ "&crmId=" + URLEncoder.encode(dataId, "UTF-8")
+ "&sendSyn=" + URLEncoder.encode(syn, "UTF-8")
, "");
@@ -346,7 +346,7 @@ public class MagicApi {
try {
String res = HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/syn/query?sendType=" + URLEncoder.encode(type, "UTF-8")
+ "http://127.0.0.1:18088/syn/query?sendType=" + URLEncoder.encode(type, "UTF-8")
+ "&crmId=" + URLEncoder.encode(dataId, "UTF-8")
+ "&sendSyn=" + URLEncoder.encode(syn, "UTF-8")
+ "&sendStatus3="+sendStatus3
@@ -365,7 +365,7 @@ public class MagicApi {
try {
String res = HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/syn/query?sendType=" + URLEncoder.encode(type, "UTF-8")
+ "http://127.0.0.1:18088/syn/query?sendType=" + URLEncoder.encode(type, "UTF-8")
+ "&dsfId=" + URLEncoder.encode(dataId, "UTF-8")
+ "&sendSyn=" + URLEncoder.encode(syn, "UTF-8")
, "");
@@ -379,11 +379,11 @@ public class MagicApi {
}
return null;
}
- public static JSONObject getSendSYNDataDSF2(String type, String syn, String dataId) {
+ public static JSONObject getSendSYNUser(String type, String syn, String dataId) {
try {
String res = HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/syn/query2?sendType=" + URLEncoder.encode(type, "UTF-8")
+ "http://127.0.0.1:18088/syn/queryuser?sendType=" + URLEncoder.encode(type, "UTF-8")
+ "&dsfId=" + URLEncoder.encode(dataId, "UTF-8")
+ "&sendSyn=" + URLEncoder.encode(syn, "UTF-8")
, "");
@@ -401,7 +401,7 @@ public class MagicApi {
try {
String res = HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/syn/queryunit?name=" + URLEncoder.encode(name, "UTF-8")
+ "http://127.0.0.1:18088/syn/queryunit?name=" + URLEncoder.encode(name, "UTF-8")
, "");
JSONObject resJson = JSONObject.parseObject(res);
@@ -419,7 +419,7 @@ public class MagicApi {
try {
String res = HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/syn/query?sendType=" + URLEncoder.encode(type, "UTF-8")
+ "http://127.0.0.1:18088/syn/query?sendType=" + URLEncoder.encode(type, "UTF-8")
+ "&dsfId=" + URLEncoder.encode(dataId, "UTF-8")
+ "&sendSyn=" + URLEncoder.encode(syn, "UTF-8")
+ "&sendStatus3="+sendStatus3
@@ -435,11 +435,11 @@ public class MagicApi {
return null;
}
- public static JSONObject getSendSYNDataDSFBom(String type, String syn, String dataId, String sendStatus3) {
+ public static JSONObject getSendSYNDataUser(String type, String syn, String dataId, String sendStatus3) {
try {
String res = HttpSend.sendMagicGet(
- "http://127.0.0.1:3002/syn/querysbbom?sendType=" + URLEncoder.encode(type, "UTF-8")
+ "http://127.0.0.1:18088/syn/queryuser?sendType=" + URLEncoder.encode(type, "UTF-8")
+ "&crmId=" + URLEncoder.encode(dataId, "UTF-8")
+ "&sendSyn=" + URLEncoder.encode(syn, "UTF-8")
+ "&sendStatus3="+sendStatus3
diff --git a/magic-boot/target/classes/org/ssssssss/magicboot/fxapi/HttpClientUtils.class b/magic-boot/target/classes/org/ssssssss/magicboot/fxapi/HttpClientUtils.class
index 6c700558e62c024dfdd80fcd41c7f471a35d7303..422a2fbe579c126469eeaf5b8e3cbd9715403a2e 100644
GIT binary patch
literal 9691
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
diff --git a/magic-boot/target/classes/org/ssssssss/magicboot/fxapi/XKTokenAccess.class b/magic-boot/target/classes/org/ssssssss/magicboot/fxapi/XKTokenAccess.class
index 94c4bcbd7061508462dc379c2ef35f2e84e9696c..f42bdfec221005300df74799b68ef24cc4a92dd0 100644
GIT binary patch
delta 90
zcmcbkdPj9bB^z^^soCTjwv`H|NhyiuMn;y#Mv0~-sTKx_2Bs-S$;p;UhCtD@)Rf7t
t>`xU89Zf8qObsl|3@r^T4GhdJjZK{$olISgja^NRoE#lDdvQ$S0sz<68Danc
delta 90
zcmcbkdPj9bB^z^Us`=y^wv`G=mMIpdY37C&DJEtnW(J9gX{O00rbz~gX^BSW=9Wg2
uUD=;17#o{d8X6fH7&%&)7#O%38(X-VIhs4USU8)QIvW{UZua7s#03E3RT)%*G&BsrP*m(dfy7X(!QI)P{d09&)L0t?GMm56<`1W
delta 91
zcmbQtJ(+vMOlCg=150xkCnIxXM`ssDGjn58V^>3G11Co(OQ5)gqcabKGJ`ZDgPL2g
tv!_eExut=brJI?PsezNTsk5`2xq*q1g|V}#i>sT9shPRK=I6|77y;<~76AYN
diff --git a/magic-boot/target/classes/org/ssssssss/magicboot/zdyutils/MagicApi.class b/magic-boot/target/classes/org/ssssssss/magicboot/zdyutils/MagicApi.class
index 32a8482a696b4803c769a5dbf7fcc40712a2f906..329f04f761748ebf3494c23aee9fa016a81c8e38 100644
GIT binary patch
delta 793
zcmeAU>I>Qs$Hc>3oLH6`TAW(slb^mhpXo4@3qMFCI5jUNIMNR!!N?$9T9A@h0u>7l
zaB&QA^>axqNyIJ#(lfb%bptl+%G
z>lpx{p_QS9frZ6nHg;Qa6&!Mr>`De;RruMT&6hv{+G*A+zf|4A8scFdF*of#g%#BP@n9`E}{*M4X6+#A{4P}
zocx+wUKgPrlENT5v~cJ!
QKk$5zVszU4P+f}=08u>KTmS$7
delta 766
zcmeAR>JHiv$0R6FoLH9Xl30@Hlb;@(l$4*lIg9Bqlc)$tI5;&gB{l9B=|eSJeC
zb3FqfG_*1{Fff|@iOp6_8M~AlyOKUgjearEMfy4U>G~k&6@#41$RLkh&kS~LF+=Q9
zx7Y(GPv#P00bA?DVJc>fT^%E*@Z^OYo?^PVq*Zb0wB{6?^OmTVr8<(Y+DRy0M+)iS0
z*rn!k%W6TwzcLRw=oPRlf6gth16N*Jkdjyeiz`j+8jN{##PqOBmGPK5YhjhrF9tfM
mur#%((#Rf^E