From c24f033b8ee95a87f3be6553bfcffdc056745710 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=85=89=E8=B5=B7?= <1198568182@qq.com> Date: Tue, 3 Jun 2025 11:07:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../magicboot/controller/DeptController.java | 12 +- .../magicboot/controller/UsceController.java | 4 +- .../controller/customerContactController.java | 32 +- .../controller/customerController.java | 142 ++++++--- .../controller/customerFinInfoController.java | 273 ++++++++++++++++++ .../org/ssssssss/magicboot/task/testTask.java | 56 ++++ 6 files changed, 457 insertions(+), 62 deletions(-) create mode 100644 magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerFinInfoController.java create mode 100644 magic-boot/src/main/java/org/ssssssss/magicboot/task/testTask.java diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/DeptController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/DeptController.java index fe5cc40..5fa4322 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/DeptController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/DeptController.java @@ -46,8 +46,8 @@ public class DeptController { private RestTemplate restTemplate = new RestTemplate(); public static void main(String[] args) { - new DeptController().syncDept(); - //new DeptController().syncDeptUp(); + // new DeptController().syncDept(); + new DeptController().syncDeptUp(); } /** @@ -71,9 +71,9 @@ public class DeptController { //开始查询部门(暂时使用固定值) Map data = new HashMap<>(); - data.put("createtime", "2020-01-01 00:00:00"); + data.put("createtime", "2025-06-01 00:00:00"); data.put("enable", "1"); - data.put("number", Arrays.asList("ZHY002.005.003.004")); + // data.put("number", Arrays.asList("ZHY002.005.003.004")); // data.put("level", "3"); Map deptReq = new HashMap<>(); @@ -311,9 +311,9 @@ public class DeptController { //开始查询部门(暂时使用固定值) Map data = new HashMap<>(); - data.put("modifytime", "2020-01-01 00:00:00"); + data.put("modifytime", "2025-06-01 00:00:00"); data.put("enable", "1"); - data.put("number", Arrays.asList("ZHY002.005.001.006")); + // data.put("number", Arrays.asList("ZHY002.005.001.006")); // data.put("level", "3"); Map deptReq = new HashMap<>(); 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 index 0cd5bde..b57a70d 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/UsceController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/UsceController.java @@ -56,7 +56,7 @@ public class UsceController { JSONObject params = new JSONObject(); JSONObject datajson = new JSONObject(); - datajson.put("createtime", "2012-02-26 11:04:43"); + datajson.put("createtime", "2025-06-01 00:00:00"); JSONArray arr = new JSONArray(); String[] strings = { "苗依达" @@ -68,7 +68,7 @@ public class UsceController { } - datajson.put("name", arr); + // datajson.put("name", arr); params.put("data", datajson); diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerContactController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerContactController.java index 691b1ce..44d975b 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerContactController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerContactController.java @@ -55,11 +55,20 @@ public class customerContactController { JSONObject jsonject = fxapi.getSynNewDataObj(false, "联系人", apiName, paramList); JSONArray array = jsonject.getJSONObject("data").getJSONArray("dataList"); + List paramListB = Arrays.asList( + new CrmFXApiParam("EQ", "sync_status__c", "option_resync__c"), + new CrmFXApiParam("EQ", "life_status", "normal") + ); + JSONObject jsonjectB = fxapi.getSynNewDataObj(false, "联系人重新同步", apiName, paramListB); + JSONArray arrayA = jsonjectB.getJSONObject("data").getJSONArray("dataList"); + array.addAll(arrayA); for (int i = 0; i < array.size(); i++) { JSONObject str = array.getJSONObject(i); String dataId = GcjJson.getNodeValue(str, "JSON._id") != null ? GcjJson.getNodeValue(str, "JSON._id").toString() : ""; String nameData = GcjJson.getNodeValue(str, "JSON.name") != null ? GcjJson.getNodeValue(str, "JSON.name").toString() : ""; + String endtime = GcjJson.getNodeValue(str, "JSON.last_modified_time") != null ? GcjJson.getNodeValue(str, "JSON.last_modified_time").toString() : ""; + String status = GcjJson.getNodeValue(str, "JSON.sync_status__c") != null ? GcjJson.getNodeValue(str, "JSON.sync_status__c").toString() : ""; String syn_type = "0";//同步类型 0新增 1修改 2删除 log.info("-------------------开始执行联系人" + i + " -------------------" + nameData); @@ -77,6 +86,9 @@ public class customerContactController { log.info("数据已存在-" + nameData); XxlJobHelper.log("--数据已存在---" + nameData); tbflag = true; + if("option_resync__c".equals(status) && !endtime.equals(dataSyn.getString("mark"))){ + tbflag = false; + } } if (tbflag) { continue; @@ -89,7 +101,7 @@ public class customerContactController { jsonObjectData.put("crmzhu_id", dataId);//数据id jsonObjectData.put("send_status", 3);//同步状态 true同步成功 false同步失败 3待同步 jsonObjectData.put("crm_code", nameData);//数据名称 - jsonObjectData.put("mark", nameData);//标识 + jsonObjectData.put("mark", endtime);//标识 jsonObjectData.put("crm_json", str.toJSONString());//标识 MagicApi.saveSendSYNDatacustomer(jsonObjectData); @@ -121,6 +133,8 @@ public class customerContactController { String nameData = GcjJson.getNodeValue(str, "JSON.name") != null ? GcjJson.getNodeValue(str, "JSON.name").toString() : ""; String account_id = GcjJson.getNodeValue(str, "JSON.account_id") != null ? GcjJson.getNodeValue(str, "JSON.account_id").toString() : ""; String customer_code__c = GcjJson.getNodeValue(str, "JSON.customer_code__c") != null ? GcjJson.getNodeValue(str, "JSON.customer_code__c").toString() : ""; + String endtime = GcjJson.getNodeValue(str, "JSON.last_modified_time") != null ? GcjJson.getNodeValue(str, "JSON.last_modified_time").toString() : ""; + String status = GcjJson.getNodeValue(str, "JSON.sync_status__c") != null ? GcjJson.getNodeValue(str, "JSON.sync_status__c").toString() : ""; String strJson = ""; @@ -130,6 +144,9 @@ public class customerContactController { log.info("数据已存在-" + nameData); XxlJobHelper.log("--数据已存在---" + nameData); tbflag = true; + if("option_resync__c".equals(status) && !endtime.equals(dataSyn.getString("mark"))){ + tbflag = false; + } } if (tbflag) { continue; @@ -159,13 +176,16 @@ public class customerContactController { groupstandardjson.put("dept",GcjJson.getNodeValue(stra, "JSON.department")); groupstandardjson.put("email",GcjJson.getNodeValue(stra, "JSON.email")); groupstandardjson.put("phone",GcjJson.getNodeValue(stra, "JSON.mobile1")); - groupstandardarr.add(groupstandardjson); + if(j==0){ + groupstandardjson.put("isdefault_linkman",true); + } + groupstandardarr.add(groupstandardjson); } datajson.put("entry_linkman",groupstandardarr);//联系人 //创建组织 - datajson.put("createorg_number","zycxjtpoc.test"); + datajson.put("createorg_number","zyierp"); dataarr.add(datajson); params.put("data",dataarr); log.info("--请求json---" + params.toJSONString()); @@ -208,7 +228,7 @@ public class customerContactController { Map paramMap = new HashMap(); paramMap.put("sync_status__c", "option_sync_success__c"); - // paramMap.put("sync_info__c", resjs.getString("message")); + paramMap.put("sync_info__c", resjs.getString("message")); //回写json fxapi.upSynFieldParam("", "ContactObj", dataId, paramMap); }else{ @@ -216,7 +236,7 @@ public class customerContactController { stringBuffer.append("联系人创建接口调用失败:"+resjs.getString("message")); Map paramMap = new HashMap(); paramMap.put("sync_status__c", "option_sync_failure__c"); - // paramMap.put("sync_info__c", stringBuffer); + paramMap.put("sync_info__c", stringBuffer); //回写json fxapi.upSynFieldParam("", "ContactObj", dataId, paramMap); } @@ -225,7 +245,7 @@ public class customerContactController { stringBuffer.append("联系人创建接口调用失败,请检查网络配置"); Map paramMap = new HashMap(); paramMap.put("sync_status__c", "option_sync_failure__c"); - // paramMap.put("sync_info__c", stringBuffer); + paramMap.put("sync_info__c", stringBuffer); //回写json fxapi.upSynFieldParam("", "ContactObj", dataId, paramMap); } diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerController.java index 5b9f87a..630d7b8 100644 --- a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerController.java +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerController.java @@ -44,24 +44,37 @@ public class customerController { String apiName = "AccountObj"; - /* List paramList = Arrays.asList( + List paramList = Arrays.asList( new CrmFXApiParam("GT", "last_modified_time", System.currentTimeMillis() - (1000 * 60 * 60 * 24)), new CrmFXApiParam("IS", "erp_id__c", ""), new CrmFXApiParam("ISN", "erp_category__c", ""), + new CrmFXApiParam("EQ", "sync_status__c", "option_test__c"), new CrmFXApiParam("EQ", "life_status", "normal") - );*/ + ); - List paramList = Arrays.asList(new CrmFXApiParam("EQ", "name", "灵宝市窄口水务管理局")); + // List paramList = Arrays.asList(new CrmFXApiParam("EQ", "name", "灵宝市窄口水务管理局")); JSONObject jsonject = fxapi.getSynNewDataObj(false, "客户", apiName, paramList); JSONArray array = jsonject.getJSONObject("data").getJSONArray("dataList"); + List paramListB = Arrays.asList( + new CrmFXApiParam("EQ", "sync_status__c", "option_resync__c"), + new CrmFXApiParam("EQ", "life_status", "normal") + ); + JSONObject jsonjectB = fxapi.getSynNewDataObj(false, "客户重新同步", apiName, paramListB); + JSONArray arrayA = jsonjectB.getJSONObject("data").getJSONArray("dataList"); + array.addAll(arrayA); + + for (int i = 0; i < array.size(); i++) { JSONObject str = array.getJSONObject(i); String dataId = GcjJson.getNodeValue(str, "JSON._id") != null ? GcjJson.getNodeValue(str, "JSON._id").toString() : ""; String nameData = GcjJson.getNodeValue(str, "JSON.name") != null ? GcjJson.getNodeValue(str, "JSON.name").toString() : ""; + String status = GcjJson.getNodeValue(str, "JSON.sync_status__c") != null ? GcjJson.getNodeValue(str, "JSON.sync_status__c").toString() : ""; + String endtime = GcjJson.getNodeValue(str, "JSON.last_modified_time") != null ? GcjJson.getNodeValue(str, "JSON.last_modified_time").toString() : ""; + String syn_type = "0";//同步类型 0新增 1修改 2删除 log.info("-------------------开始执行客户" + i + " -------------------" + nameData); @@ -79,6 +92,9 @@ public class customerController { log.info("数据已存在-" + nameData); XxlJobHelper.log("--数据已存在---" + nameData); tbflag = true; + if("option_resync__c".equals(status) && !endtime.equals(dataSyn.getString("mark"))){ + tbflag = false; + } } if (tbflag) { continue; @@ -91,7 +107,7 @@ public class customerController { jsonObjectData.put("crmzhu_id", dataId);//数据id jsonObjectData.put("send_status", 3);//同步状态 true同步成功 false同步失败 3待同步 jsonObjectData.put("crm_code", nameData);//数据名称 - jsonObjectData.put("mark", nameData);//标识 + jsonObjectData.put("mark", endtime);//标识 jsonObjectData.put("crm_json", str.toJSONString());//标识 MagicApi.saveSendSYNDatacustomer(jsonObjectData); @@ -127,6 +143,8 @@ public class customerController { String account_no = GcjJson.getNodeValue(str, "JSON.account_no") != null ? GcjJson.getNodeValue(str, "JSON.account_no").toString() : ""; String erp_category__c = GcjJson.getNodeValue(str, "JSON.erp_category__c") != null ? GcjJson.getNodeValue(str, "JSON.erp_category__c").toString() : ""; + String endtime = GcjJson.getNodeValue(str, "JSON.last_modified_time") != null ? GcjJson.getNodeValue(str, "JSON.last_modified_time").toString() : ""; + String status = GcjJson.getNodeValue(str, "JSON.sync_status__c") != null ? GcjJson.getNodeValue(str, "JSON.sync_status__c").toString() : ""; String strJson = ""; try{ @@ -135,6 +153,9 @@ public class customerController { log.info("数据已存在-" + nameData); XxlJobHelper.log("--数据已存在---" + nameData); tbflag = true; + if("option_resync__c".equals(status) && !endtime.equals(dataSyn.getString("mark"))){ + tbflag = false; + } } if (tbflag) { continue; @@ -173,7 +194,6 @@ public class customerController { JSONArray arrayZ = jsonjectZ.getJSONObject("data").getJSONArray("dataList"); if (!arrayZ.isEmpty()){ for (int j = 0; j < arrayZ.size(); j++) { - JSONObject stra = arrayZ.getJSONObject(j); JSONObject lxrjson = new JSONObject(); lxrjson.put("contactperson",GcjJson.getNodeValue(stra, "JSON.name")); @@ -184,32 +204,33 @@ public class customerController { if(j==0){ lxrjson.put("isdefault_linkman",true); } - lxrarr.add(lxrjson); } datajson.put("entry_linkman",lxrarr);//联系人 } JSONArray groupstandardarr2 = new JSONArray(); - JSONObject groupstandardjson2 = new JSONObject(); - groupstandardjson2.put("bank_number","001100001509"); - groupstandardjson2.put("accountname","1"); - groupstandardjson2.put("currency_number","CNY"); - groupstandardjson2.put("bankaccount","1"); - groupstandardjson2.put("isdefault_bank",true); - groupstandardarr2.add(groupstandardjson2); + JSONObject jsonjectC = fxapi.getSynDataObj("客户下财务信息", "AccountFinInfoObj", "account_id", dataId); + JSONArray arrayC = jsonjectC.getJSONObject("data").getJSONArray("dataList"); + if (!arrayC.isEmpty()){ + for (int j = 0; j < arrayC.size(); j++) { + JSONObject stra = arrayC.getJSONObject(j); + JSONObject groupstandardjson2 = new JSONObject(); + groupstandardjson2.put("bank_number",GcjJson.getNodeValue(stra, "JSON.bank_name_branch_number__c")); + groupstandardjson2.put("accountname",GcjJson.getNodeValue(stra, "JSON.account_name__c")); + groupstandardjson2.put("currency_number","CNY"); + groupstandardjson2.put("bankaccount",GcjJson.getNodeValue(stra, "JSON.account_bank_no")); + + groupstandardjson2.put("isdefault_bank",false); + if(j==0){ + groupstandardjson2.put("isdefault_bank",true); + } + groupstandardarr2.add(groupstandardjson2); + } + datajson.put("entry_bank",groupstandardarr2);//银行信息 + } - JSONObject groupstandardjson3 = new JSONObject(); - groupstandardjson3.put("bank_number","001110012009"); - groupstandardjson3.put("accountname","2"); - groupstandardjson3.put("currency_number","CNY"); - groupstandardjson3.put("bankaccount","2"); - groupstandardjson3.put("isdefault_bank",false); - groupstandardarr2.add(groupstandardjson3); - - - datajson.put("entry_bank",groupstandardarr2);//银行信息 //创建组织 datajson.put("createorg_number","zyierp"); @@ -258,6 +279,7 @@ public class customerController { paramMap.put("erp_id__c", erpid);//数据ID paramMap.put("sync_status__c", "option_sync_success__c"); paramMap.put("sync_info__c", resjs.getString("message")); + //fxapi.lock(false, dataId, "AccountObj"); //回写json fxapi.upSynFieldParam("", "AccountObj", dataId, paramMap); }else{ @@ -314,16 +336,16 @@ public class customerController { String apiName = "AccountObj"; - /* List paramList = Arrays.asList( + List paramList = Arrays.asList( new CrmFXApiParam("GT", "last_modified_time", System.currentTimeMillis() - (1000 * 60 * 60 * 24)), new CrmFXApiParam("ISN", "erp_id__c", ""), new CrmFXApiParam("ISN", "erp_category__c", ""), new CrmFXApiParam("EQ", "sync_status__c", "option_sync_success__c"), new CrmFXApiParam("EQ", "life_status", "normal") - );*/ + ); - List paramList = Arrays.asList(new CrmFXApiParam("EQ", "name", "国网湖北省电力有限公司武汉供电公司")); + // List paramList = Arrays.asList(new CrmFXApiParam("EQ", "name", "国网湖北省电力有限公司武汉供电公司")); JSONObject jsonject = fxapi.getSynNewDataObj(false, "客户", apiName, paramList); JSONArray array = jsonject.getJSONObject("data").getJSONArray("dataList"); @@ -439,26 +461,46 @@ public class customerController { datajson.put("entry_groupstandard",groupstandardarr);//分类标准 + JSONArray lxrarr = new JSONArray(); + JSONObject jsonjectZ = fxapi.getSynDataObj("客户下联系人", "ContactObj", "account_id", dataId); + JSONArray arrayZ = jsonjectZ.getJSONObject("data").getJSONArray("dataList"); + if (!arrayZ.isEmpty()){ + for (int j = 0; j < arrayZ.size(); j++) { + JSONObject stra = arrayZ.getJSONObject(j); + JSONObject lxrjson = new JSONObject(); + lxrjson.put("contactperson",GcjJson.getNodeValue(stra, "JSON.name")); + lxrjson.put("contactpersonpost",GcjJson.getNodeValue(stra, "JSON.job_title")); + lxrjson.put("dept",GcjJson.getNodeValue(stra, "JSON.department")); + lxrjson.put("email",GcjJson.getNodeValue(stra, "JSON.email")); + lxrjson.put("phone",GcjJson.getNodeValue(stra, "JSON.mobile1")); + if(j==0){ + lxrjson.put("isdefault_linkman",true); + } + lxrarr.add(lxrjson); + } + datajson.put("entry_linkman",lxrarr);//联系人 + } + JSONArray groupstandardarr2 = new JSONArray(); - JSONObject groupstandardjson2 = new JSONObject(); - groupstandardjson2.put("bank_number","001100001509"); - groupstandardjson2.put("accountname","1"); - groupstandardjson2.put("currency_number","CNY"); - groupstandardjson2.put("bankaccount","1"); - groupstandardjson2.put("isdefault_bank",true); - groupstandardarr2.add(groupstandardjson2); + JSONObject jsonjectC = fxapi.getSynDataObj("客户下财务信息", "AccountFinInfoObj", "account_id", dataId); + JSONArray arrayC = jsonjectC.getJSONObject("data").getJSONArray("dataList"); + if (!arrayC.isEmpty()){ + for (int j = 0; j < arrayC.size(); j++) { + JSONObject stra = arrayC.getJSONObject(j); + JSONObject groupstandardjson2 = new JSONObject(); + groupstandardjson2.put("bank_number",GcjJson.getNodeValue(stra, "JSON.bank_name_branch_number__c")); + groupstandardjson2.put("accountname",GcjJson.getNodeValue(stra, "JSON.account_name__c")); + groupstandardjson2.put("currency_number","CNY"); + groupstandardjson2.put("bankaccount",GcjJson.getNodeValue(stra, "JSON.account_bank_no")); - - JSONObject groupstandardjson3 = new JSONObject(); - groupstandardjson3.put("bank_number","001110012009"); - groupstandardjson3.put("accountname","2"); - groupstandardjson3.put("currency_number","CNY"); - groupstandardjson3.put("bankaccount","2"); - groupstandardjson3.put("isdefault_bank",false); - groupstandardarr2.add(groupstandardjson3); - - - datajson.put("entry_bank",groupstandardarr2);//银行信息 + groupstandardjson2.put("isdefault_bank",false); + if(j==0){ + groupstandardjson2.put("isdefault_bank",true); + } + groupstandardarr2.add(groupstandardjson2); + } + datajson.put("entry_bank",groupstandardarr2);//银行信息 + } @@ -503,13 +545,17 @@ public class customerController { JSONArray result = successdata.getJSONArray("result"); JSONObject erpdata = (JSONObject) result.get(0); String erpid = erpdata.getString("id"); - + Map paramMap = new HashMap(); + // paramMap.put("sync_status__c", "option_sync_failure__c"); + paramMap.put("sync_info__c", "修改成功"); + //回写json + fxapi.upSynFieldParam("", "AccountObj", dataId, paramMap); }else{ sendFlag=true; - stringBuffer.append("客户修改接口调用失败:"+resjs.getString("message")); + stringBuffer.append("客户修改失败:"+resjs.getString("message")); Map paramMap = new HashMap(); - paramMap.put("sync_status__c", "option_sync_failure__c"); + // paramMap.put("sync_status__c", "option_sync_failure__c"); paramMap.put("sync_info__c", stringBuffer); //回写json fxapi.upSynFieldParam("", "AccountObj", dataId, paramMap); @@ -518,7 +564,7 @@ public class customerController { sendFlag = true; stringBuffer.append("客户修改接口调用失败,请检查网络配置"); Map paramMap = new HashMap(); - paramMap.put("sync_status__c", "option_sync_failure__c"); + //paramMap.put("sync_status__c", "option_sync_failure__c"); paramMap.put("sync_info__c", stringBuffer); //回写json fxapi.upSynFieldParam("", "AccountObj", dataId, paramMap); diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerFinInfoController.java b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerFinInfoController.java new file mode 100644 index 0000000..be0b88b --- /dev/null +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/controller/customerFinInfoController.java @@ -0,0 +1,273 @@ +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.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.fxapi.model.CrmFXApiParam; +import org.ssssssss.magicboot.zdyutils.FXHTTP; +import org.ssssssss.magicboot.zdyutils.GcjJson; +import org.ssssssss.magicboot.zdyutils.MagicApi; + +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/FinInfo") +public class customerFinInfoController { + static Logger log = LoggerFactory.getLogger("FinInfo"); + + public static void main(String[] args) throws Exception { + new customerFinInfoController().getSynDataAdd(); + new customerFinInfoController().SaveSyn(); + + } + + public void getSynDataAdd() throws Exception { + FXHTTP fxapi = new FXHTTP(); + XKTokenAccess xktonken = new XKTokenAccess(); + // 查询magic接口 + //获取时间戳 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String time = sdf.format(System.currentTimeMillis() - (1000 * 60 * 60)); + + String apiName = "AccountFinInfoObj"; + + List paramList = Arrays.asList( + new CrmFXApiParam("GT", "last_modified_time", System.currentTimeMillis() - (1000 * 60 * 60 * 24)), + new CrmFXApiParam("EQ", "sync_status__c", "option_pending_sync__c"), + new CrmFXApiParam("ISN", "field_7qGnx__c", ""), + new CrmFXApiParam("EQ", "life_status", "normal") + ); + + /* List paramList = Arrays.asList(new CrmFXApiParam("EQ", "name", "河北省水利行业协会"));*/ + + JSONObject jsonject = fxapi.getSynNewDataObj(false, "财务信息", apiName, paramList); + JSONArray array = jsonject.getJSONObject("data").getJSONArray("dataList"); + List paramListB = Arrays.asList( + new CrmFXApiParam("EQ", "sync_status__c", "option_resync__c"), + new CrmFXApiParam("EQ", "life_status", "normal") + ); + JSONObject jsonjectB = fxapi.getSynNewDataObj(false, "财务信息重新同步", apiName, paramListB); + JSONArray arrayA = jsonjectB.getJSONObject("data").getJSONArray("dataList"); + array.addAll(arrayA); + + for (int i = 0; i < array.size(); i++) { + JSONObject str = array.getJSONObject(i); + String dataId = GcjJson.getNodeValue(str, "JSON._id") != null ? GcjJson.getNodeValue(str, "JSON._id").toString() : ""; + String nameData = GcjJson.getNodeValue(str, "JSON.name") != null ? GcjJson.getNodeValue(str, "JSON.name").toString() : ""; + String endtime = GcjJson.getNodeValue(str, "JSON.last_modified_time") != null ? GcjJson.getNodeValue(str, "JSON.last_modified_time").toString() : ""; + String status = GcjJson.getNodeValue(str, "JSON.sync_status__c") != null ? GcjJson.getNodeValue(str, "JSON.sync_status__c").toString() : ""; + + String syn_type = "0";//同步类型 0新增 1修改 2删除 + log.info("-------------------开始执行财务信息" + i + " -------------------" + nameData); + XxlJobHelper.log("-------------------开始执行财务信息" + i + " -------------------" + nameData); + + Boolean sendFlag = false; + StringBuffer stringBuffer = new StringBuffer(); + + try { + boolean tbflag = false; + //验证数据是否已存在 + JSONObject dataSyn = MagicApi.getSendSYNDataCustomer("CW", syn_type, dataId); + + if (dataSyn != null && dataId.equals(dataSyn.getString("crmId"))) { + log.info("数据已存在-" + nameData); + XxlJobHelper.log("--数据已存在---" + nameData); + tbflag = true; + if("option_resync__c".equals(status) && !endtime.equals(dataSyn.getString("mark"))){ + tbflag = false; + } + } + if (tbflag) { + continue; + } + log.info("财务信息待同步数据-" + i + " ------" + nameData); + JSONObject jsonObjectData = new JSONObject(); + jsonObjectData.put("send_type", "CW"); //业务类型 + jsonObjectData.put("send_syn", "0"); //同步类型 0新增 1修改 2删除 + jsonObjectData.put("crm_id", dataId);//数据id + jsonObjectData.put("crmzhu_id", dataId);//数据id + jsonObjectData.put("send_status", 3);//同步状态 true同步成功 false同步失败 3待同步 + jsonObjectData.put("crm_code", nameData);//数据名称 + jsonObjectData.put("mark", endtime);//标识 + jsonObjectData.put("crm_json", str.toJSONString());//标识 + + MagicApi.saveSendSYNDatacustomer(jsonObjectData); + } catch (Exception e) { + continue; + } + + } + } + + public void SaveSyn() throws Exception { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); + FXHTTP fxapi = new FXHTTP(); + String resJsonStr = MagicApi.getWNRES("http://localhost:18088/syn/queryCustomer?sendType=CW&sendStatus=3&sendSyn=0", ""); + JSONObject resJson = JSON.parseObject(resJsonStr); + if (resJson != null) { + log.info("待同步财务信息数" + resJson.getJSONArray("data").size()); + for (int i = 0; i < resJson.getJSONArray("data").size(); i++) { + + JSONObject getData = resJson.getJSONArray("data").getJSONObject(i); + JSONObject str = getData.getJSONObject("crmJson"); + String syn_type = "0";//同步类型 0新增 1修改 2删除 + Boolean sendFlag = false; + StringBuffer stringBuffer = new StringBuffer(); + boolean tbflag = false; + // 构建json + + String dataId = GcjJson.getNodeValue(str, "JSON._id") != null ? GcjJson.getNodeValue(str, "JSON._id").toString() : ""; + String nameData = GcjJson.getNodeValue(str, "JSON.name") != null ? GcjJson.getNodeValue(str, "JSON.name").toString() : ""; + String account_id = GcjJson.getNodeValue(str, "JSON.account_id") != null ? GcjJson.getNodeValue(str, "JSON.account_id").toString() : ""; + String customer_code__c = GcjJson.getNodeValue(str, "JSON.customer_code__c") != null ? GcjJson.getNodeValue(str, "JSON.customer_code__c").toString() : ""; + String endtime = GcjJson.getNodeValue(str, "JSON.last_modified_time") != null ? GcjJson.getNodeValue(str, "JSON.last_modified_time").toString() : ""; + String status = GcjJson.getNodeValue(str, "JSON.sync_status__c") != null ? GcjJson.getNodeValue(str, "JSON.sync_status__c").toString() : ""; + + + String strJson = ""; + try{ + JSONObject dataSyn = MagicApi.getSendSYNDataCustomer("CW", syn_type, dataId,"3"); + if (dataSyn != null && dataId.equals(dataSyn.getString("crmId"))) { + log.info("数据已存在-" + nameData); + XxlJobHelper.log("--数据已存在---" + nameData); + tbflag = true; + if("option_resync__c".equals(status) && !endtime.equals(dataSyn.getString("mark"))){ + tbflag = false; + } + } + if (tbflag) { + continue; + } + + JSONObject params = new JSONObject(); + + JSONArray dataarr = new JSONArray(); + JSONObject datajson = new JSONObject(); + + //编码 + datajson.put("number",customer_code__c); + + JSONArray groupstandardarr2 = new JSONArray(); + JSONObject jsonjectC = fxapi.getSynDataObj("客户下财务信息", "AccountFinInfoObj", "account_id", dataId); + JSONArray arrayC = jsonjectC.getJSONObject("data").getJSONArray("dataList"); + if (!arrayC.isEmpty()){ + for (int j = 0; j < arrayC.size(); j++) { + JSONObject stra = arrayC.getJSONObject(j); + JSONObject groupstandardjson2 = new JSONObject(); + groupstandardjson2.put("bank_number",GcjJson.getNodeValue(stra, "JSON.bank_name_branch_number__c")); + groupstandardjson2.put("accountname",GcjJson.getNodeValue(stra, "JSON.account_name__c")); + groupstandardjson2.put("currency_number","CNY"); + groupstandardjson2.put("bankaccount",GcjJson.getNodeValue(stra, "JSON.account_bank_no")); + + groupstandardjson2.put("isdefault_bank",false); + if(j==0){ + groupstandardjson2.put("isdefault_bank",true); + } + groupstandardarr2.add(groupstandardjson2); + } + datajson.put("entry_bank",groupstandardarr2);//银行信息 + } + //创建组织 + datajson.put("createorg_number","zyierp"); + dataarr.add(datajson); + params.put("data",dataarr); + log.info("--请求json---" + params.toJSONString()); + System.out.println("--请求json:---" +params.toJSONString()); + strJson = params.toJSONString(); + + }catch (Exception e) { + sendFlag = true; + stringBuffer.append("参数解析错误,请联系开发人员"); + e.printStackTrace(); + } + getSynDataSave(stringBuffer,sendFlag,fxapi,dataId,nameData,strJson,getData); + + } + } + } + /** + * 写数据 + */ + public void getSynDataSave(StringBuffer stringBuffer,Boolean sendFlag,FXHTTP fxapi,String dataId,String nameData,String obj,JSONObject str) { + String syn_type = "0";//同步类型 0新增 1修改 2删除 + String res_url = "http://192.168.31.158:8022/ierp/kapi/v2/f9w5/basedata/bd_customer/customerSave"; + String res_param = obj; + String res = ""; + try { + // String token = "2096108315279888384_HJyMZK1Lco9gSZUKU1ipq85P5J32eQDdaz8WgChd1DvHrPZylIodiBmBYa8U2smKVC8MKAspXtjNQ2Fjw5MlWXDnkn5nPFPQWzSB03"; + String accessToken = new KDTokenController().getKDAccessToken(); + + + Map headers = new HashMap(); + headers.put("accessToken", accessToken);//放token + HttpClientResult rtn = HttpClientUtils.doPostJson(res_url, headers, obj); + String resStr = rtn.getContent(); + JSONObject resjs = JSONObject.parseObject(resStr); + res = resStr; + if (resjs != null && resjs.getBoolean("status")) { + JSONObject successdata = resjs.getJSONObject("data"); + JSONArray result = successdata.getJSONArray("result"); + JSONObject erpdata = (JSONObject) result.get(0); + Map paramMap = new HashMap(); + + paramMap.put("sync_status__c", "option_sync_success__c"); + paramMap.put("sync_info__c", resjs.getString("message")); + //回写json + fxapi.upSynFieldParam("", "AccountFinInfoObj", dataId, paramMap); + }else{ + sendFlag=true; + stringBuffer.append("财务信息创建接口调用失败:"+resjs.getString("message")); + Map paramMap = new HashMap(); + paramMap.put("sync_status__c", "option_sync_failure__c"); + paramMap.put("sync_info__c", stringBuffer); + //回写json + fxapi.upSynFieldParam("", "AccountFinInfoObj", dataId, paramMap); + } + } catch (Exception e) { + sendFlag = true; + stringBuffer.append("财务信息创建接口调用失败,请检查网络配置"); + Map paramMap = new HashMap(); + paramMap.put("sync_status__c", "option_sync_failure__c"); + paramMap.put("sync_info__c", stringBuffer); + //回写json + fxapi.upSynFieldParam("", "AccountFinInfoObj", dataId, paramMap); + } + + JSONObject sendData = new JSONObject(); + + sendData.put("send_status", !sendFlag);//同步状态 true同步成功 false同步失败 3待同步 + + sendData.put("send_id", str.getString("sendId")); //send_id + MagicApi.updateSendSYUPDATEcustomer(sendData); + + JSONObject logData = new JSONObject(); + logData.put("log_type", "CW"); //业务类型 + 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.saveCustomerLog(logData); + } + + + } diff --git a/magic-boot/src/main/java/org/ssssssss/magicboot/task/testTask.java b/magic-boot/src/main/java/org/ssssssss/magicboot/task/testTask.java new file mode 100644 index 0000000..78fbdda --- /dev/null +++ b/magic-boot/src/main/java/org/ssssssss/magicboot/task/testTask.java @@ -0,0 +1,56 @@ +package org.ssssssss.magicboot.task; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.ssssssss.magicboot.controller.UsceController; +import org.ssssssss.magicboot.controller.customerContactController; +import org.ssssssss.magicboot.controller.customerController; +import org.ssssssss.magicboot.controller.customerFinInfoController; + +import java.time.LocalDateTime; + +@Configuration //1.主要用于标记配置类,兼备Component的效果。 +@EnableScheduling // 2.开启定时任务 +public class testTask { + @Autowired + UsceController user; + + @Autowired + customerController customer; + @Autowired + customerContactController contact; + @Autowired + customerFinInfoController finInfo; + + @Scheduled(cron = "0 */1 * * * ?") + //或直接指定时间间隔,例如:5秒 + private void configureTasks() throws Exception { + customer.getSynDataAdd(); + customer.getSynKH(); + customer.getSynDataUpdate(); + customer.getSynKHUPdate(); + + System.err.println("执行静态定时任务时间: " + LocalDateTime.now()); + } + + @Scheduled(cron = "0 */2 * * * ?") + //或直接指定时间间隔,例如:5秒 + private void configureTasks2() throws Exception { + contact.getSynDataAdd(); + contact.SaveSyn(); + finInfo.getSynDataAdd(); + finInfo.SaveSyn(); + + System.err.println("执行2静态定时任务时间: " + LocalDateTime.now()); + } + + @Scheduled(cron = "0 */30 * * * ?") + //或直接指定时间间隔,例如:5秒 + private void configureTasks30() throws Exception { + user.getUserData(); + user.saveSynUser(); + System.err.println("执行30静态定时任务时间: " + LocalDateTime.now()); + } +}