From 5d3ab059c62a9650ea4da421613af5e2f5d54be4 Mon Sep 17 00:00:00 2001 From: lvleigang <957075182@qq.com> Date: Fri, 21 Feb 2025 10:43:40 +0800 Subject: [PATCH] =?UTF-8?q?post=E8=BD=AC=E5=8F=91ssl=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E5=8E=BB=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/SendContractPluginInitializer.java | 2 +- .../plugin/businessData/dao/IBusinessDao.java | 8 + .../dao/impl/BusinessDaoImpl.java | 19 +- .../businessData/entity/BusinessEntity.xml | 127 +++++ .../plugin/BusinessPluginInitializer.java | 6 +- .../service/IBusinessService.java | 5 + .../service/impl/BusinessServiceImpl.java | 445 +++++++++++++++++- 7 files changed, 603 insertions(+), 9 deletions(-) diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/SendContract/plugin/SendContractPluginInitializer.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/SendContract/plugin/SendContractPluginInitializer.java index 1d139efe..b11689e1 100644 --- a/base-buildpackage/src/main/java/com/hzya/frame/plugin/SendContract/plugin/SendContractPluginInitializer.java +++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/SendContract/plugin/SendContractPluginInitializer.java @@ -23,7 +23,7 @@ import java.util.Date; import java.util.List; /** - * 业务数据同步 + * 未定合同号 * * @author makejava * @since 2024-06-21 13:52:35 diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/dao/IBusinessDao.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/dao/IBusinessDao.java index 71dcdc80..c354963b 100644 --- a/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/dao/IBusinessDao.java +++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/dao/IBusinessDao.java @@ -1,8 +1,11 @@ package com.hzya.frame.plugin.businessData.dao; +import com.alibaba.fastjson.JSONObject; import com.hzya.frame.basedao.dao.IBaseDao; import com.hzya.frame.plugin.businessData.entity.BusinessEntity; +import java.util.List; + /** * 客户档案(mdm_customer: table)表数据库访问层 * @@ -11,5 +14,10 @@ import com.hzya.frame.plugin.businessData.entity.BusinessEntity; */ public interface IBusinessDao extends IBaseDao { + List queryData(JSONObject saveData); + + int saveData(JSONObject saveData); + + int saveDetailData(JSONObject saveDetailData); } diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/dao/impl/BusinessDaoImpl.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/dao/impl/BusinessDaoImpl.java index a887057e..00726aee 100644 --- a/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/dao/impl/BusinessDaoImpl.java +++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/dao/impl/BusinessDaoImpl.java @@ -1,15 +1,32 @@ package com.hzya.frame.plugin.businessData.dao.impl; +import com.alibaba.fastjson.JSONObject; import com.hzya.frame.basedao.dao.MybatisGenericDao; import com.hzya.frame.plugin.businessData.dao.IBusinessDao; import com.hzya.frame.plugin.businessData.entity.BusinessEntity; +import java.util.List; + /** * * @author makejava * @since 2024-06-21 13:52:35 */ public class BusinessDaoImpl extends MybatisGenericDao implements IBusinessDao { - + + @Override + public List queryData(JSONObject saveData) { + List o = (List) super.selectList(getSqlIdPrifx() + "queryData", saveData); + return o; + } + + @Override + public int saveData(JSONObject saveData) { + return super.insert(getSqlIdPrifx() + "saveData", saveData); + } + @Override + public int saveDetailData(JSONObject saveData) { + return super.insert(getSqlIdPrifx() + "saveDetailData", saveData); + } } diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/entity/BusinessEntity.xml b/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/entity/BusinessEntity.xml index dc91442b..fb80d9ee 100644 --- a/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/entity/BusinessEntity.xml +++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/entity/BusinessEntity.xml @@ -2,6 +2,133 @@ + + + + insert into mdm_ccd( + + id , + document_rule , + document_rule_num , + data_status , + add_status , + update_status , + delete_status , + sorts , + create_user_id , + create_time , + modify_user_id , + modify_time , + sts , + org_id , + company_id , + field0011 , + field0001 , + field0002 , + field0012 , + field0013 , + field0014 , + field0003 , + field0015 , + field0016 , + field0017 , + field0018 , + field0019 , + field0020 , + field0021 , + + + )values + ( + + #{id} , + #{document_rule} , + #{document_rule_num} , + #{data_status} , + #{add_status} , + #{update_status} , + #{delete_status} , + #{sorts} , + #{create_user_id} , + #{create_time} , + #{modify_user_id} , + #{modify_time} , + #{sts} , + #{org_id} , + #{company_id} , + #{field0011} , + #{field0001} , + #{field0002} , + #{field0012} , + #{field0013} , + #{field0014} , + #{field0003} , + #{field0015} , + #{field0016} , + #{field0017} , + #{field0018} , + #{field0019} , + #{field0020} , + #{field0021} , + + + ) + + + insert into mdm_ccd_detail( + + id , + formmain_id , + data_status , + sorts , + create_user_id , + create_time , + modify_user_id , + modify_time , + sts , + org_id , + company_id , + field0004 , + field0005 , + field0022 , + field0008 , + field0006 , + field0007 , + field0009 , + + )values + ( + + #{id} , + #{formmain_id} , + #{data_status}, + #{sorts} , + #{create_user_id} , + #{create_time} , + #{modify_user_id} , + #{modify_time} , + #{sts} , + #{org_id} , + #{company_id} , + #{field0004} , + #{field0005} , + #{field0022} , + #{field0008} , + #{field0006} , + #{field0007} , + #{field0009} , + + + ) + diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/plugin/BusinessPluginInitializer.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/plugin/BusinessPluginInitializer.java index 0f1f6f5e..9d85e7d0 100644 --- a/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/plugin/BusinessPluginInitializer.java +++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/plugin/BusinessPluginInitializer.java @@ -2,9 +2,11 @@ package com.hzya.frame.plugin.businessData.plugin; import com.alibaba.fastjson.JSONObject; import com.hzya.frame.base.PluginBaseEntity; +import com.hzya.frame.plugin.businessData.service.IBusinessService; import com.hzya.frame.web.entity.JsonResultEntity; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; /** * 主数据同步 @@ -15,6 +17,8 @@ import org.slf4j.LoggerFactory; public class BusinessPluginInitializer extends PluginBaseEntity{ Logger logger = LoggerFactory.getLogger(BusinessPluginInitializer.class); + @Autowired + private IBusinessService businessService; @Override public void initialize() { @@ -49,7 +53,7 @@ public class BusinessPluginInitializer extends PluginBaseEntity{ public JsonResultEntity executeBusiness(JSONObject requestJson) { try { logger.info("======开始执行主数据信息同步========"); - return null; + return businessService.getBusinessData(requestJson); }catch (Exception e){ logger.info("======执行主数据同步失败:{}========",e.getMessage()); e.printStackTrace(); diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/service/IBusinessService.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/service/IBusinessService.java index 9a54a3d6..d16ae235 100644 --- a/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/service/IBusinessService.java +++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/service/IBusinessService.java @@ -1,7 +1,10 @@ package com.hzya.frame.plugin.businessData.service; +import com.alibaba.fastjson.JSONObject; import com.hzya.frame.basedao.service.IBaseService; import com.hzya.frame.plugin.businessData.entity.BusinessEntity; +import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity; +import com.hzya.frame.web.entity.JsonResultEntity; /** * @@ -9,4 +12,6 @@ import com.hzya.frame.plugin.businessData.entity.BusinessEntity; * @since 2024-06-21 13:52:35 */ public interface IBusinessService extends IBaseService { + JsonResultEntity getBusinessData(JSONObject requestJson); + SysExtensionApiEntity setData(SysExtensionApiEntity entity) throws Exception; } diff --git a/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/service/impl/BusinessServiceImpl.java b/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/service/impl/BusinessServiceImpl.java index 83e8dde9..807b120e 100644 --- a/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/service/impl/BusinessServiceImpl.java +++ b/base-buildpackage/src/main/java/com/hzya/frame/plugin/businessData/service/impl/BusinessServiceImpl.java @@ -1,21 +1,454 @@ package com.hzya.frame.plugin.businessData.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.hzya.frame.plugin.businessData.dao.IBusinessDao; import com.hzya.frame.plugin.businessData.entity.BusinessEntity; import com.hzya.frame.plugin.businessData.service.IBusinessService; +import com.hzya.frame.sysnew.application.database.entity.SysApplicationDatabaseEntity; +import com.hzya.frame.sysnew.application.entity.SysApplicationEntity; +import com.hzya.frame.sysnew.application.entity.SysExtensionApiEntity; +import com.hzya.frame.sysnew.comparison.controlsLog.dao.impl.ControlsLogDaoImpl; +import com.hzya.frame.sysnew.comparison.controlsLog.entity.ControlsLogEntity; +import com.hzya.frame.sysnew.comparison.dao.IComparisonDao; +import com.hzya.frame.sysnew.comparison.entity.ComparisonEntity; +import com.hzya.frame.uuid.UUIDLong; +import com.hzya.frame.uuid.UUIDUtils; +import com.hzya.frame.web.entity.BaseResult; +import com.hzya.frame.web.entity.JsonResultEntity; +import org.apache.http.HttpEntity; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.conn.ssl.NoopHostnameVerifier; +import org.apache.http.conn.ssl.TrustAllStrategy; +import org.apache.http.entity.ByteArrayEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.ssl.SSLContextBuilder; +import org.apache.http.util.EntityUtils; +import org.checkerframework.checker.units.qual.C; import org.springframework.beans.factory.annotation.Autowired; import com.hzya.frame.basedao.service.impl.BaseService; + +import javax.net.ssl.SSLContext; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * @author makejava * @since 2024-06-21 13:52:35 */ public class BusinessServiceImpl extends BaseService implements IBusinessService { - + private IBusinessDao businessDao; - @Autowired - public void setBusinessCustomerDao(IBusinessDao dao) { - this.businessDao = dao; - this.dao = dao; - } + private ControlsLogDaoImpl controlsLogDaoimpl; + + + @Autowired + private IComparisonDao comparisonDao; + @Autowired + public void setBusinessCustomerDao(IBusinessDao dao) { + this.businessDao = dao; + this.dao = dao; + } + + @Override + public JsonResultEntity getBusinessData(JSONObject requestJson) { + + //1、调用token + String access_token = getToken(); + if (access_token == null) { + return BaseResult.getFailureMessageEntity("token获取失败"); + } + Date date = new Date(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String times = sdf.format(date); + times = "2025-02-08";//todo + //2、调用接口获取数据 + String queryCursor = null; + String startDate = times+" 00:00:00"; + String endDate = times+" 23:59:59"; + JSONArray datalist = new JSONArray(); + sendBusinessData(datalist, access_token, queryCursor, startDate, endDate); + + if(datalist != null && datalist.size() > 0){ + for (int i = 0; i < datalist.size(); i++) { + JSONObject saveData = new JSONObject(); + //3、对照数据 + JSONObject jsonObject = datalist.getJSONObject(i); + //field0011 申请单号 + String field0011 = jsonObject.getString("serialNumber"); + if(field0011 == null || "".equals(field0011) ){ + continue; + } + saveData.put("field0011",field0011); + //判断是否有这个数据 + List checkData = businessDao.queryData(saveData); + if(checkData != null && checkData.size() > 0){ + continue; + } + saveData.put("id", String.valueOf(UUIDLong.longUUID())); + saveData.put("create_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443"); + saveData.put("modify_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443"); + saveData.put("org_id", "0"); + saveData.put("create_time", new Date()); + saveData.put("modify_time", new Date()); + saveData.put("sts", "Y"); + saveData.put("data_status", "Y");//新增状态 + saveData.put("add_status", "0");//新增状态 + saveData.put("update_status", "1");//修改状态 + saveData.put("delete_status", "1");//删除状态 + ComparisonEntity comparisonEntityRule = new ComparisonEntity(); + comparisonEntityRule.setRulePrefix("CCD"); + comparisonEntityRule.setRuleMiddle("%Y-%m-%d"); + comparisonEntityRule.setRuleSuffix(5); + comparisonEntityRule.setDbName("mdm_ccd"); + ComparisonEntity comparisonEntityRuleGz = comparisonDao.queryComparisonRule(comparisonEntityRule); + saveData.put("document_rule", comparisonEntityRuleGz.getDocumentRule());//单据规则 + saveData.put("document_rule_num", comparisonEntityRuleGz.getDocumentRuleNum());//单据规则流水号 + saveData.put("field0001",jsonObject.getString("applyUser"));//申请人 + saveData.put("field0002",jsonObject.getString("jobNumber"));//申请人工号 + String oaToken = getOAToken(""); + JSONObject user = getUser(jsonObject.getString("jobNumber"),oaToken); + saveData.put("field0012",user.getString("orgPostName")); + saveData.put("field0013",user.getString("orgDepartmentName")); + saveData.put("field0014",user.getString("telNumber")); + saveData.put("field0003",jsonObject.getString("startDateTime"));// 出差时间 + saveData.put("field0015",jsonObject.getString("documentType")); + saveData.put("field0017",jsonObject.getString("dayValOfDuration"));// 出差时长(天) + saveData.put("field0018",jsonObject.getString("extshifouzhanhuichucha_109372_807255447"));// todo 是否境外出差 + saveData.put("field0019",jsonObject.getString("extshifouxuyaoapecka_109372_294746269"));// todo 是否需要APEC卡 + saveData.put("field0020",jsonObject.getString("extshifoujingwaichucha_109372_295886206"));// todo 是否展会出差 + saveData.put("field0021",jsonObject.getString("reason"));// 出差事由 + + JSONArray detaildata = jsonObject.getJSONArray("businessDetailsSync"); + if(detaildata != null && detaildata.size() > 0){ + for (int i1 = 0; i1 < detaildata.size(); i1++) { + JSONObject saveDetailData = new JSONObject(); + saveDetailData.put("field0004",detaildata.getJSONObject(i1).getString("startDateTime"));//明细表-出发时间 + saveDetailData.put("field0005",detaildata.getJSONObject(i1).getString("stopDateTime"));//明细表-结束时间 + saveDetailData.put("field0022",detaildata.getJSONObject(i1).getString("businessDuration"));//明细表-出差时长 + + if(detaildata.getJSONObject(i1).getString("businessVehicle") != null){// 明细表-交通工具 + if("0".equals(detaildata.getJSONObject(i1).getString("businessVehicle"))){ + saveDetailData.put("field0008","飞机"); + } + if("1".equals(detaildata.getJSONObject(i1).getString("businessVehicle"))){ + saveDetailData.put("field0008","火车"); + } + if("2".equals(detaildata.getJSONObject(i1).getString("businessVehicle"))){ + saveDetailData.put("field0008","汽车"); + } + if("3".equals(detaildata.getJSONObject(i1).getString("businessVehicle"))){ + saveDetailData.put("field0008","轮船"); + } + } + saveDetailData.put("field0006",detaildata.getJSONObject(i1).getString("departurePlace"));//明细表-出发地 + saveDetailData.put("field0007",detaildata.getJSONObject(i1).getString("destination"));//明细表-目的地 + saveDetailData.put("field0009",detaildata.getJSONObject(i1).getString("expectedCost"));//明细表-预计费用 + saveData.put("field0016",detaildata.getJSONObject(i1).getString("destination"));// 出差城市 + + + saveDetailData.put("id", String.valueOf(UUIDLong.longUUID())); + saveDetailData.put("formmain_id", saveData.getString("id")); + saveDetailData.put("data_status", "Y");//新增状态 + + saveDetailData.put("create_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443"); + saveDetailData.put("modify_user_id", "c796fd9ba4c9f5ff3cc2fa41a040e443"); + saveDetailData.put("org_id", "0"); + saveDetailData.put("create_time", new Date()); + saveDetailData.put("modify_time", new Date()); + saveDetailData.put("sts", "Y"); + businessDao.saveDetailData(saveDetailData); + } + } + businessDao.saveData(saveData); + + //5、保存写入日志 + ControlsLogEntity controlsLogEntity=new ControlsLogEntity(); + controlsLogEntity.setId(UUIDUtils.getUUID()); + controlsLogEntity.setFormmainId(saveData.getString("id")); + controlsLogEntity.setSourceName("数智中台"); + controlsLogEntity.setCode("800004"); + controlsLogEntity.setSourceData(jsonObject.toString()); + controlsLogEntity.setOptionType("接口新增"); + controlsLogEntity.setOptionName("数智中台"); + controlsLogEntity.setDbName("mdm_ccd_option_log"); + controlsLogEntity.setDataType("1"); + controlsLogEntity.setCreate_user_id("c796fd9ba4c9f5ff3cc2fa41a040e443"); + controlsLogEntity.setModify_user_id("c796fd9ba4c9f5ff3cc2fa41a040e443"); + controlsLogEntity.setOrg_id("0"); + controlsLogEntity.setRemark("插件新增"); + controlsLogDaoimpl.saveControlsLog(saveData.getString("id"), "数智中台", "800004", jsonObject.toJSONString(), "接口新增", "数智中台", "mdm_ccd_option_log", "1","插件新增"); + } + } + return BaseResult.getSuccessMessageEntity("处理成功"); + } + + private void sendBusinessData(JSONArray datalist, String access_token, String queryCursor, String startDate, String endDate) { + String url = "https://openapi.italent.cn/AttendanceOpen/api/v1/Business/GetApprovalCompletedBusinessListByDate"; + Map headers = new HashMap<>(); + headers.put("Authorization", "Bearer " + access_token); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("startDate", startDate); + jsonObject.put("endDate", endDate); + jsonObject.put("pageSize", 100); + if (queryCursor != null) { + jsonObject.put("queryCursor", queryCursor); + } + String returndata = sendPost(url, headers, jsonObject.toString()); + + if (returndata != null && JSONObject.isValidObject(returndata)) { + JSONObject dataJson = JSONObject.parseObject(returndata); + if(dataJson != null && dataJson.getString("code") != null && "200".equals( dataJson.getString("code"))){ + JSONObject data = dataJson.getJSONObject("data"); + if(data != null ){ + JSONArray businessList = data.getJSONArray("businessList"); + if(!data.getBoolean("isLastPage")){ + queryCursor = data.getString("sortCursor"); + sendBusinessData(datalist, access_token, queryCursor, startDate, endDate); + } + if(businessList != null && businessList.size() > 0){ + datalist.addAll(businessList); + } + } + } + } + + } + private JSONObject getUser(String usercode,String access_token) { + JSONObject jsonObject = new JSONObject(); + String url = "https://swoa.sunwave.com.cn:9999/seeyon/rest/orgMembers/code/"+usercode+"?pageNo=0&pageSize=100"; + Map headers = new HashMap<>(); + headers.put("token",access_token); + + String returndata = sendGet(url, headers); + if (returndata != null && JSONArray.isValidArray(returndata)) { + JSONArray dataJson = JSONObject.parseArray(returndata); + if(dataJson != null && dataJson.size() > 0){ + for (int i = 0; i < dataJson.size(); i++) { + if(dataJson.getJSONObject(i).getString("code") != null && !"".equals(dataJson.getJSONObject(i).getString("code")) + && usercode.toLowerCase().equals(dataJson.getJSONObject(i).getString("code").toLowerCase())){ + jsonObject.put("telNumber",dataJson.getJSONObject(i).getString("telNumber")); + jsonObject.put("orgDepartmentName",dataJson.getJSONObject(i).getString("orgDepartmentName")); + jsonObject.put("orgPostName",dataJson.getJSONObject(i).getString("orgPostName")); + break; + } + } + } + } + return jsonObject; + } + private String getOAToken(String name) { + String url = "https://swoa.sunwave.com.cn:9999/seeyon/rest/token"; + Map headers = null; + String bodys = "{\"password\":\"64de4de7-23ce-4946-ac91-dd9e322d86e5\",\"userName\":\"beis\",\"loginName\":\""+name+"\"}"; + String tokenData = sendPost(url, headers, bodys); + String access_token = null; + if (tokenData != null && JSONObject.isValidObject(tokenData)) { + JSONObject tokendataJson = JSONObject.parseObject(tokenData); + if (tokendataJson != null && tokendataJson.getString("id") != null) { + access_token = tokendataJson.getString("id"); + } + } + return access_token; + } + private String getToken() { + String url = "https://openapi.italent.cn/token"; + Map headers = null; + String bodys = "{\"grant_type\":\"client_credentials\",\"app_key\":\"1CBEBF66FABD4A25A94DF8BB7B0074E7\",\"app_secret\":\"AEFCFCE92804440E89682A3B9FA9BBB8774DDF4FB812428AB7EC340C54CC472B\"}"; + String tokenData = sendPost(url, headers, bodys); + String access_token = null; + if (tokenData != null && JSONObject.isValidObject(tokenData)) { + JSONObject tokendataJson = JSONObject.parseObject(tokenData); + if (tokendataJson != null && tokendataJson.getString("access_token") != null) { + access_token = tokendataJson.getString("access_token"); + } + } + return access_token; + } + + private String sendPost(String url, Map headers, String bodys) { + + SSLContext sslContext = null; + try { + sslContext = new SSLContextBuilder() + .loadTrustMaterial(null, TrustAllStrategy.INSTANCE) + .build(); + } catch (Exception e) { + + } + CloseableHttpClient closeableHttpClient = HttpClients.custom() + .setSSLContext(sslContext) + .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE) + .build(); + HttpPost post = new HttpPost(url); + CloseableHttpResponse response = null; + RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(60000).build(); + post.setConfig(requestConfig);//设置请求参数【超时时间】 + if (headers != null && headers.size() > 0) { + for (String key : headers.keySet()) { + post.setHeader(key, headers.get(key)); + } + } + StringBuilder body = new StringBuilder(); + try { + if (bodys != null && !"".equals(bodys)) { + ByteArrayEntity entity = new ByteArrayEntity(bodys.getBytes("UTF-8")); + entity.setContentType("application/json"); + post.setEntity(entity); + } + response = closeableHttpClient.execute(post); + HttpEntity entity = response.getEntity(); + body.append(EntityUtils.toString(entity, "UTF-8")); + logger.info("返回结果:" + body); + } catch (Exception e) { + logger.error("请求错误:" + e.getMessage()); + body = new StringBuilder(); + } finally { + try { + // 关闭响应对象 + if (response != null) { + response.close(); + } + // 关闭响应对象 + if (closeableHttpClient != null) { + closeableHttpClient.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + + } + + return body.toString(); + } + private String sendGet(String url, Map headers) { + SSLContext sslContext = null; + try { + sslContext = new SSLContextBuilder() + .loadTrustMaterial(null, TrustAllStrategy.INSTANCE) + .build(); + } catch (Exception e) { + + } + CloseableHttpClient closeableHttpClient = HttpClients.custom() + .setSSLContext(sslContext) + .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE) + .build(); + // HttpClient + HttpGet get = new HttpGet(url); + CloseableHttpResponse response = null; + + RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(60000).build(); + get.setConfig(requestConfig);//设置请求参数【超时时间】 + if (headers != null && headers.size() > 0) { + for (String key : headers.keySet()) { + get.setHeader(key, headers.get(key)); + } + } + StringBuilder body = new StringBuilder(); + + try { + response = closeableHttpClient.execute(get); + HttpEntity entity = response.getEntity(); + body.append(EntityUtils.toString(entity,"UTF-8")); + logger.info("返回结果:" + body); + } catch (Exception e) { + logger.error("请求错误:" + e.getMessage()); + body.append(e.getMessage()); + } finally { + try { + // 关闭响应对象 + if (response != null) { + response.close(); + } + // 关闭响应对象 + if (closeableHttpClient != null) { + closeableHttpClient.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + return body.toString(); + } + + + /** + * seeyon流程事件监听前置方法,绑定数据源 + * @param entity + * @return + * @throws Exception + */ + @Override + public SysExtensionApiEntity setData(SysExtensionApiEntity entity) throws Exception { + try { + JSONObject sendBody = new JSONObject(); + String bodys = entity.getBodys(); + Map headers = entity.getHeaders(); + JSONObject jsonObject = JSONObject.parseObject(bodys); + String loginName = jsonObject.getString("field0002"); + String dataXml = getXml(jsonObject); + //处理xml数据 + String oaToken = getOAToken(loginName); + headers.put("token",oaToken); + sendBody.put("token",oaToken); + sendBody.put("loginName",loginName); + sendBody.put("dataXml",dataXml); + entity.setBodys(sendBody.toJSONString()); + } catch (Exception e) { + e.printStackTrace(); + } + return entity; + } + + private String getXml(JSONObject jsonObject) { + StringBuffer stringBuffer = new StringBuffer(); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(" "); + //处理明细 + JSONArray jsonArray = JSONArray.parseArray(jsonObject.getString("mdm_ccd_detail")); + if(jsonArray != null&& jsonArray.size() > 0){ + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject detailObject = jsonArray.getJSONObject(i); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + stringBuffer.append(""); + return stringBuffer.toString(); + } }