From 4d74f29e409e6f89bdf9dd0dfc1435cafebbfc8b Mon Sep 17 00:00:00 2001 From: itzhang <2019326567@qq.com> Date: Tue, 5 Aug 2025 16:11:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=E8=A6=81=E8=B4=A7?= =?UTF-8?q?=E8=AE=A1=E5=88=92=E5=92=8C=E9=94=80=E5=94=AE=E5=90=88=E5=90=8C?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/GoodsPlanController.java | 8 +- .../tzcontroller/TZXSHTController.java | 219 +++++++++++++++++- 2 files changed, 221 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/management/controller/GoodsPlanController.java b/src/main/java/com/management/controller/GoodsPlanController.java index 25618f5..48e749d 100644 --- a/src/main/java/com/management/controller/GoodsPlanController.java +++ b/src/main/java/com/management/controller/GoodsPlanController.java @@ -972,9 +972,9 @@ public class GoodsPlanController { } trackingNumMap.put("f9w5_deviceid", trackingNumData.getString("device_id_third__c") != null ? trackingNumData.getString("device_id_third__c") : "");//设备ID(第三方编号) - trackingNumMap.put("f9w5_apn", trackingNumData.getString("apn_parameters__c") != null ? trackingNumData.getString("apn_parameters__c") : "");//APN参数 - trackingNumMap.put("f9w5_ip", trackingNumData.getString("ip_address__c") != null ? trackingNumData.getString("ip_address__c") : "");//ip - trackingNumMap.put("f9w5_port", trackingNumData.getString("port__c") != null ? trackingNumData.getString("port__c") : "");//端口 + trackingNumMap.put("f9w5_apn", trackingNumData.getString("apn_parameters__c") != null ? trackingNumData.getString("apn_parameters__c") : "无");//APN参数 + trackingNumMap.put("f9w5_ip", trackingNumData.getString("ip_address__c") != null ? trackingNumData.getString("ip_address__c") : "无");//ip + trackingNumMap.put("f9w5_port", trackingNumData.getString("port__c") != null ? trackingNumData.getString("port__c") : "无");//端口 //是否插卡 String isCard = trackingNumData.getString("is_card_inserted__c") != null ? trackingNumData.getString("is_card_inserted__c") : ""; @@ -1051,7 +1051,7 @@ public class GoodsPlanController { trackingNumMap.put("f9w5_auxiliarytype", auxiliarychanneltype); //维护时间段 - trackingNumMap.put("f9w5_maintenancetime", trackingNumData.getString("maintenance_time_period__c") != null ? trackingNumData.getString("maintenance_time_period__c") : ""); + trackingNumMap.put("f9w5_maintenancetime", trackingNumData.getString("maintenance_time_period__c") != null ? trackingNumData.getString("maintenance_time_period__c") : "无"); //出厂内外卡选择 trackingNumMap.put("f9w5_inoutcard", trackingNumData.getString("factory_external_card_choi__c__r") != null ? trackingNumData.getString("factory_external_card_choi__c__r") : ""); //出厂平台选择 diff --git a/src/main/java/com/management/tzcontroller/TZXSHTController.java b/src/main/java/com/management/tzcontroller/TZXSHTController.java index 2042aee..fd0b730 100644 --- a/src/main/java/com/management/tzcontroller/TZXSHTController.java +++ b/src/main/java/com/management/tzcontroller/TZXSHTController.java @@ -14,6 +14,8 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -43,7 +45,7 @@ public class TZXSHTController { String[] syncStatus = {"option_pending_sync__c", "option_resync__c"}; JSONObject salesOrderReq = crmRequestUtil.getCRMList(Arrays.asList( - new Filter("GT", "last_modified_time", Arrays.asList("1748923200000")), + new Filter("GT", "create_time", Arrays.asList("1748923200000")), new Filter("EQ", "life_status", Arrays.asList("normal")), new Filter("N", "is_initial__c", Arrays.asList("true")), new Filter("ISN", "zhy_contract_number__c", Arrays.asList("")), @@ -78,7 +80,7 @@ public class TZXSHTController { continue; } - String modifyTime = salesOrderData.getString("last_modified_time"); + String modifyTime = salesOrderData.getString("create_time"); //开始查询数据库是否已经存在该数据 JSONObject salesOrderIsExist = new JSONObject(); @@ -239,4 +241,217 @@ public class TZXSHTController { } } + /** + * 更新销售合同 + * + * @return void + * @Author weiloong_zhang + */ + @PostMapping + public void updateSalesOrder() { + CrmRequestUtil crmRequestUtil = new CrmRequestUtil(); + + long twoDaysAgo = LocalDateTime.now() + .minusDays(3) + .atZone(ZoneId.systemDefault()) + .toInstant() + .toEpochMilli(); + + JSONObject salesOrderReq = crmRequestUtil.getCRMList(Arrays.asList( + new Filter("GT", "last_modified_time", Arrays.asList(String.valueOf(twoDaysAgo))), + new Filter("EQ", "life_status", Arrays.asList("normal")), + new Filter("N", "is_initial__c", Arrays.asList("true")), + new Filter("ISN", "zhy_contract_number__c", Arrays.asList("")), + //new Filter("EQ", "name", Arrays.asList("ZHY2505260018")), + new Filter("EQ", "ledger_sync_status__c", Arrays.asList("option_sync_success__c")) + ), "SaleContractObj"); + + JSONObject salesOrderRes = new JSONObject(); + + try { + salesOrderRes = restTemplate.postForObject(URLConstant.GET_CRM_LIST_URL, salesOrderReq, JSONObject.class); + } catch (RestClientException e) { + e.printStackTrace(); + } + + if (!"success".equals(salesOrderRes.getString("errorDescription")) || salesOrderRes.getJSONObject("data").getJSONArray("dataList").isEmpty()) { + log.info("销售合同为空或者请求失败,将不再向下执行"); + return; + } + + for (Object salesOrderObj : salesOrderRes.getJSONObject("data").getJSONArray("dataList")) { + JSONObject salesOrderData = JSON.parseObject(JSON.toJSONString(salesOrderObj)); + + System.out.println("当前正在处理的数据为:" + salesOrderData); + + //开始截取关键数据 + String salesOrderId = salesOrderData.getString("_id");//唯一id + String salesOrderName = salesOrderData.getString("zhy_contract_number__c") != null ? salesOrderData.getString("zhy_contract_number__c") : ""; + + if ("".equals(salesOrderName)) { + log.info("合同名称不存在,将不再向下执行"); + continue; + } + + String modifyTime = salesOrderData.getString("last_modified_time"); + + //开始查询数据库是否已经存在该数据 + JSONObject salesOrderIsExist = new JSONObject(); + + try { + salesOrderIsExist = restTemplate.getForObject("http://localhost:18085/Log/query/log_data?table=send_log_tzht&log_type=TZXSHTUP&dataId=" + salesOrderId + "&mark=" + modifyTime, JSONObject.class); + } catch (RestClientException e) { + e.printStackTrace(); + } + + if (!salesOrderIsExist.getJSONArray("data").isEmpty()) { + log.info("数据已经存在,将不再继续向下执行"); + continue; + } + + log.info("数据不存在,将开始向下执行"); + + Map salesOrderReqMap = new HashMap<>(); + salesOrderReqMap.put("crmId", salesOrderId); + salesOrderReqMap.put("contract", salesOrderName);//合同号 + salesOrderReqMap.put("contractName", salesOrderData.getString("project_name__c") != null ? salesOrderData.getString("project_name__c") : "");//合同名称 + salesOrderReqMap.put("signingUnit", salesOrderData.getString("account_id__r") != null ? salesOrderData.getString("account_id__r") : "");//签订单位 + salesOrderReqMap.put("customerId", salesOrderData.getString("account_id") != null ? salesOrderData.getString("account_id") : "");//签订单位唯一性ID + + //开始获取地区 + //省 + String province = salesOrderData.getString("field_9IuQE__c__r") != null ? salesOrderData.getString("field_9IuQE__c__r") : ""; + //市 + String city = salesOrderData.getString("field_cuMW9__c__r") != null ? salesOrderData.getString("field_cuMW9__c__r") : ""; + //区 + String district = salesOrderData.getString("field_e9XrV__c__r") != null ? salesOrderData.getString("field_e9XrV__c__r") : ""; + //详细地址 + String address = salesOrderData.getString("field_tfkq9__c") != null ? salesOrderData.getString("field_tfkq9__c") : ""; + //地址 + String region = province + city + district + address; + + salesOrderReqMap.put("region", region);//地区 + + //是否竣工 + String isComplete = salesOrderData.getString("is_completed__c") != null ? salesOrderData.getString("is_completed__c") : ""; + + Integer isCompletion = 0; + + switch (isComplete) { + case "yes": + isCompletion = 1; + break; + case "no": + isCompletion = 0; + break; + default: + isCompletion = 0; + } + + salesOrderReqMap.put("isCompletion", isCompletion);//是否竣工 + + //开始获取oken + String token = new LedgerTokenController().getToken(); + + if (token == null || "".equals(token)) { + log.info("台账token获取失败,将不再向下执行"); + continue; + } + + HttpHeaders headers = new HttpHeaders(); + headers.set("Content-Type", "application/json"); + headers.set("accessToken", token); + + HttpEntity reqEntity = new HttpEntity(Arrays.asList(salesOrderReqMap), headers); + + System.out.println(JSON.parseObject(JSON.toJSONString(reqEntity))); + + String url = "http://192.168.9.4:9011/crm/initContract"; + + JSONObject salesOrderResult = new JSONObject(); + + try { + salesOrderResult = restTemplate.postForObject(url, reqEntity, JSONObject.class); + } catch (RestClientException e) { + e.printStackTrace(); + } + + System.out.println(JSON.parseObject(JSON.toJSONString(salesOrderResult))); + + //开始封装回写程序 + Map backReqMap = new HashMap(); + backReqMap.put("_id", salesOrderId); + backReqMap.put("dataObjectApiName", "SaleContractObj"); + + //开始封装日志 + Map logMap = new HashMap<>(); + logMap.put("log_id", UUID.randomUUID().toString().replace("-", "")); + logMap.put("log_type", "TZXSHTUP"); + logMap.put("syn_type", "0"); + logMap.put("data_name", salesOrderName); + logMap.put("data_id", salesOrderId); + logMap.put("mark", modifyTime); + logMap.put("send_body", JSON.toJSONString(reqEntity)); + logMap.put("send_res", JSON.toJSONString(salesOrderResult)); + logMap.put("tableName", "send_log_tzht"); + + //判断是否执行成功 + if (salesOrderResult.getInteger("code") == 0) { + //同步成功 + logMap.put("log_status", "0"); + logMap.put("res_body", "同步成功"); + backReqMap.put("ledger_sync_status__c", "option_sync_success__c"); + backReqMap.put("ledger_response_status__c", salesOrderResult.getString("msg")); + } else { + //同步失败 + logMap.put("log_status", "1"); + logMap.put("res_body", "同步失败:" + salesOrderResult.getString("msg")); + backReqMap.put("ledger_sync_status__c", "option_sync_failure__c"); + backReqMap.put("ledger_response_status__c", salesOrderResult.getString("msg")); + } + + //开始回写 + JSONObject unlockReq = crmRequestUtil.unlockCRM(salesOrderId, "SaleContractObj"); + //解锁 + if ("1".equals(salesOrderData.getString("lock_status"))) { + log.info("解锁"); + + JSONObject unlockRes = new JSONObject(); + + try { + unlockRes = restTemplate.postForObject(URLConstant.UNLOCK_CRM_URL, unlockReq, JSONObject.class); + } catch (RestClientException e) { + e.printStackTrace(); + } + System.out.println("解锁" + unlockRes); + } + + JSONObject backReq = crmRequestUtil.updateCRM(backReqMap); + + JSONObject backRes = new JSONObject(); + + try { + backRes = restTemplate.postForObject(URLConstant.UPDATE_CRM_MAIN, backReq, JSONObject.class); + } catch (RestClientException e) { + e.printStackTrace(); + } + + System.out.println("回写结果为:" + backRes); + + logMap.put("send_memo", JSON.toJSONString(backRes)); + + //开始记录日志 + 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); + + } + } + }