From f4e5898b6c13f7488e1a2b10571929e2e21c4f07 Mon Sep 17 00:00:00 2001 From: itzhang <2019326567@qq.com> Date: Tue, 1 Jul 2025 14:17:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=93=B6=E8=A1=8C=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E6=9F=A5=E8=AF=A2=EF=BC=8C=E5=AF=B9=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E5=92=8C=E6=A0=87=E4=B9=A6=E8=B4=AD=E4=B9=B0=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E5=81=9A=E4=BA=86=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BankInfoController.java | 235 +++++++++++++++++- .../management/controller/DeptController.java | 7 +- .../controller/TenderingController.java | 2 +- 3 files changed, 239 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/management/controller/BankInfoController.java b/src/main/java/com/management/controller/BankInfoController.java index ca365f6..52656ea 100644 --- a/src/main/java/com/management/controller/BankInfoController.java +++ b/src/main/java/com/management/controller/BankInfoController.java @@ -293,7 +293,7 @@ public class BankInfoController { deptReq.put("pageSize", 1999); //开始获取金蝶token - String accessToken = new KDTokenController().getKDAppToken(); + String accessToken = new KDTokenController().getKDAccessTokenTest(); if (accessToken == null || accessToken.equals("")) { log.info("金蝶token为空或不存在"); @@ -438,4 +438,237 @@ public class BankInfoController { } } + + /** + * 批量翻页执行银行信息 + * + * @return void + * @Author weiloong_zhang + */ + @PostMapping("/batch/sync/bank") + public void bankInfoBatch() { + + int page = 1; + int pageSize = 2000; + + Boolean flag = true; + + while (flag) { + CrmRequestUtil crmRequestUtil = new CrmRequestUtil(); + + log.info("开始同步银行信息"); + + //获取当前时间 + LocalDateTime now = LocalDateTime.now(); + log.info("当前时间:{}", now); + //获取两天前的时间 + LocalDateTime twoDaysAgo = now.minusDays(30); + + //将时间转换样式 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String twoDaysAgoStr = twoDaysAgo.format(formatter); + String nowStr = now.format(formatter); + + //开始查询部门(暂时使用固定值) + Map data = new HashMap<>(); + data.put("startTime", twoDaysAgoStr); + data.put("endTime", nowStr); + //data.put("number", Arrays.asList("ZHY002.005.003.004")); +// data.put("level", "3"); + + Map deptReq = new HashMap<>(); + deptReq.put("data", data); + deptReq.put("pageNo", page); + deptReq.put("pageSize", pageSize); + + //开始获取金蝶token + String accessToken = new KDTokenController().getKDAccessTokenTest(); + + if (accessToken == null || accessToken.equals("")) { + log.info("金蝶token为空或不存在"); + break; + } + + //开始封装请求头 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.set("accessToken", accessToken); + + HttpEntity bankReqEntity = new HttpEntity(deptReq, headers); + + //开始发起请求 + //String bankInfoUrl = ERPURLConstant.ERP_URL +"/ierp/kapi/v2/f9w5/basedata/bd_bebank/bebankQuery"; + String bankInfoUrl = "https://lxr2.zhydsp.cn:40448/ierp/kapi/v2/f9w5/basedata/bd_bebank/bebankQuery"; + + String bankInfoResStr = ""; + + //开始发起请求 + try { + bankInfoResStr = restTemplate.postForObject(bankInfoUrl, bankReqEntity, String.class); + } catch (RestClientException e) { + e.printStackTrace(); + } + + JSONObject bankInfoRes = JSONObject.parseObject(bankInfoResStr); + + System.out.println("获取到金蝶银行信息:" + bankInfoRes); + + if (!"0".equals(bankInfoRes.getString("errorCode")) || bankInfoRes.getJSONObject("data").isEmpty() || bankInfoRes.getJSONObject("data").getJSONArray("rows").isEmpty()) { + log.info("金蝶查询银行信息失败或者没有符合条件的数据"); + flag = false; + return; + } + + log.info("数据存在,将继续向下执行"); + + for (Object bankInfoObj : bankInfoRes.getJSONObject("data").getJSONArray("rows")) { + JSONObject bankInfoData = JSON.parseObject(JSON.toJSONString(bankInfoObj)); + + //开始截取关键数据 + //银行名称 + String bankName = bankInfoData.getString("name"); + //行号 + String bankNumber = bankInfoData.getString("number"); + //todo 创建时间 + String createTime = "2025-05-14 00:00:00"; + + //开始查询是否已经集成过了 + JSONObject isLog = new JSONObject(); + + try { + isLog = restTemplate.getForObject("http://localhost:18085/Log/query/log_data?table=send_log_bank&log_type=BANK&dataId=" + bankNumber + "&mark=" + createTime, JSONObject.class); + } catch (RestClientException e) { + e.printStackTrace(); + } + + if (!isLog.getJSONArray("data").isEmpty()) { + log.info("当前银行已经集成过了,将不再向下执行"); + continue; + } + + //开始封装数据 + Map bankInfoMap = new HashMap<>(); + bankInfoMap.put("name", bankNumber);//行号 + bankInfoMap.put("bank_name__c", bankName);//银行名称 + bankInfoMap.put("province__c", bankInfoData.getString("province_name") != null ? bankInfoData.getString("province_name") : "");//省份 + bankInfoMap.put("city_banking__c", bankInfoData.getString("city_name") != null ? bankInfoData.getString("city_name") : "");//市 + bankInfoMap.put("country_region__c", bankInfoData.getString("country_fullname") != null ? bankInfoData.getString("country_fullname") : "");//国家地区 + bankInfoMap.put("branch_number__c", bankInfoData.getString("union_number") != null ? bankInfoData.getString("union_number") : "");//联行号 + bankInfoMap.put("dataObjectApiName", "bank_info__c"); + + //发起请求前查询是否已存在该数据 + JSONObject isCrmExist = crmRequestUtil.getCRMList(Arrays.asList( + new Filter("EQ", "name", Arrays.asList(bankNumber)), + new Filter("EQ", "bank_name__c", Arrays.asList(bankName)) + ), "bank_info__c"); + + JSONObject isCrmExistRes = new JSONObject(); + + try { + isCrmExistRes = restTemplate.postForObject(URLConstant.GET_CUSTOMIZE_LIST_URL, isCrmExist, JSONObject.class); + } catch (RestClientException e) { + e.printStackTrace(); + } + + if ("success".equals(isCrmExistRes.getString("errorDescription")) && !isCrmExistRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { + log.info("数据已存在,将执行更新"); + JSONObject isCrmExistData = isCrmExistRes.getJSONObject("data").getJSONArray("dataList").getJSONObject(0); + + bankInfoMap.put("_id", isCrmExistData.getString("_id")); + + //更新请求 + JSONObject updateReq = crmRequestUtil.updateCRM(bankInfoMap); + + JSONObject updateRes = new JSONObject(); + + try { + updateRes = restTemplate.postForObject(URLConstant.UPDATE_CRM_CUSTOMIZE, updateReq, JSONObject.class); + } catch (RestClientException e) { + e.printStackTrace(); + } + + System.out.println("更新结果为:" + JSON.parseObject(JSON.toJSONString(updateRes))); + + //记录日志 + //开始封装日志 + Map logMap = new HashMap<>(); + logMap.put("log_id", UUID.randomUUID().toString().replace("-", "")); + logMap.put("log_type", "BANKUP"); + logMap.put("syn_type", "0"); + logMap.put("data_name", bankName); + logMap.put("data_id", bankNumber); + logMap.put("mark", createTime); + logMap.put("send_body", JSON.toJSONString(updateReq)); + logMap.put("send_res", JSON.toJSONString(updateRes)); + logMap.put("tableName", "send_log_bank"); + + //判断 + if ("success".equals(updateRes.getString("errorDescription"))) { + logMap.put("log_status", "0"); + logMap.put("res_body", "同步成功"); + } else { + logMap.put("log_status", "1"); + logMap.put("res_body", "同步失败" + updateRes.getString("errorMessage")); + } + + JSONObject logRes = new JSONObject(); + + try { + logRes = restTemplate.postForObject("http://localhost:18085/Log/insert/log_data", logMap, JSONObject.class); + } catch (RestClientException e) { + e.printStackTrace(); + } + + continue; + } + + log.info("数据不存在,将执行创建"); + + JSONObject createReq = crmRequestUtil.createCRM(bankInfoMap); + + JSONObject createRes = new JSONObject(); + + try { + createRes = restTemplate.postForObject(URLConstant.CREATE_CRM_CUSTOMER_MAIN, createReq, JSONObject.class); + } catch (RestClientException e) { + e.printStackTrace(); + } + + System.out.println("创建结果为:" + JSON.parseObject(JSON.toJSONString(createRes))); + + Map logMap = new HashMap<>(); + logMap.put("log_id", UUID.randomUUID().toString().replace("-", "")); + logMap.put("log_type", "BANK"); + logMap.put("syn_type", "0"); + logMap.put("data_name", bankName); + logMap.put("data_id", bankNumber); + logMap.put("mark", createTime); + logMap.put("send_body", JSON.toJSONString(createReq)); + logMap.put("send_res", JSON.toJSONString(createRes)); + logMap.put("tableName", "send_log_bank"); + + //判断 + if ("success".equals(createRes.getString("errorDescription"))) { + logMap.put("log_status", "0"); + logMap.put("res_body", "同步成功"); + } else { + logMap.put("log_status", "1"); + logMap.put("res_body", "同步失败" + createRes.getString("errorMessage")); + } + + JSONObject logRes = new JSONObject(); + + try { + logRes = restTemplate.postForObject("http://localhost:18085/Log/insert/log_data", logMap, JSONObject.class); + } catch (RestClientException e) { + e.printStackTrace(); + } + + System.out.println(logRes); + + } + + page++; + } + } } diff --git a/src/main/java/com/management/controller/DeptController.java b/src/main/java/com/management/controller/DeptController.java index 54e9576..838a19c 100644 --- a/src/main/java/com/management/controller/DeptController.java +++ b/src/main/java/com/management/controller/DeptController.java @@ -202,9 +202,10 @@ public class DeptController { //判断部门是否在crm中存在 //请求封装 JSONObject deptIsExistReq = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("EQ", "name", Arrays.asList(deptName)), - new Filter("EQ", "field_v711K__c", Arrays.asList(parentDeptName)), - new Filter("EQ", "field_31u4r__c", Arrays.asList(parentDeptCode)) + //new Filter("EQ", "name", Arrays.asList(deptName)), + new Filter("EQ", "erp_id__c", Arrays.asList(deptId)) + //new Filter("EQ", "field_v711K__c", Arrays.asList(parentDeptName)), + //new Filter("EQ", "field_31u4r__c", Arrays.asList(parentDeptCode)) ), "DepartmentObj"); //开始发起请求 diff --git a/src/main/java/com/management/controller/TenderingController.java b/src/main/java/com/management/controller/TenderingController.java index e9f52b8..8c91362 100644 --- a/src/main/java/com/management/controller/TenderingController.java +++ b/src/main/java/com/management/controller/TenderingController.java @@ -124,7 +124,7 @@ public class TenderingController { tenderingMapReq.put("f9w5_applytype", applyTypeStr);//申请类型 tenderingMapReq.put("f9w5_lot", tenderingData.getString("batch_name__c") != null ? tenderingData.getString("batch_name__c") : "");//批次名称 - tenderingMapReq.put("createorg_number", tenderingData.getString("erp_organization__c__v") != null ? tenderingData.getString("erp_organization__c__v") : "");//组织 + tenderingMapReq.put("createorg_number", tenderingData.getString("erp_organization__c") != null ? tenderingData.getString("erp_organization__c") : "");//组织 //供应商ID String vendorId = tenderingData.getString("bidding_agency__c") != null ? tenderingData.getString("bidding_agency__c") : "";