From 3224e878145fee9a593f9e40e16cdb93dace9b29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E8=BE=89?= <2830717623@qq.com> Date: Tue, 23 Jun 2026 10:14:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=89=E6=96=B9=E4=BF=A1=E7=94=A8=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserShipperApplicationService.java | 476 ++++++++++++------ .../entity/UserShipperEntity.java | 3 + .../repository/po/UserShipperPo.java | 3 + 3 files changed, 338 insertions(+), 144 deletions(-) diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java index b83a922a7..6182e5ceb 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java @@ -1587,89 +1587,183 @@ public class UserShipperApplicationService { UserShipperEntity userShipperEntity1 = userShipperMapper.selectOne(new LambdaQueryWrapper() .eq(UserShipperEntity::getCustomerNcCode, userShipperEntity.getCustomerNcCode()) .eq(UserShipperEntity::getUserId, userShipperEntity.getUserId())); - String orgcode = userShipperMapper.getOrgNcCode(userShipperEntity1.getOrganizationId()); - if (StringUtils.isEmpty(orgcode)) { - return AjaxResult.error("组织NC编码不能为空"); + + if (userShipperEntity1 == null) { + log.warn("未找到对应货主,custcode={}", userShipperEntity.getCustomerNcCode()); + continue; } - try { - com.alibaba.fastjson.JSONObject queryParam = new com.alibaba.fastjson.JSONObject(); - queryParam.put("custcode", userShipperEntity.getCustomerNcCode()); - queryParam.put("orgcode", orgcode); - log.info("调用赊销额度查询接口,custcode={},orgcode={}", userShipperEntity.getCustomerNcCode(), orgcode); - - String queryResult = HttpRequest.post(queryUrl) - .header("Content-Type", "application/json") - .header("uap_token", uapToken) - .header("uap_usercode", uapUsercode) - .header("uap_dataSource", uapDataSource) - .header("token", "94B3992EAD9747D3598CC6F7775F6239B5DC3B526DF7DE0091CB8B2D") - .body(queryParam.toJSONString()) - .execute() - .body(); - log.info("赊销额度查询接口返回,custcode={},result={}", userShipperEntity.getCustomerNcCode(), queryResult); - - if (StringUtils.isNotEmpty(queryResult)) { - com.alibaba.fastjson.JSONObject resultJson = com.alibaba.fastjson.JSONObject.parseObject(queryResult); - allResults.put(userShipperEntity.getCustomerNcCode(), resultJson); - - // 第三步:查询成功,更新货主的额度同步时间(limitTime) - - if (userShipperEntity1 != null) { - // 根据查询结果同步数据 - com.alibaba.fastjson.JSONObject dataJson = resultJson.getJSONObject("data"); - if (dataJson != null) { - // 同步额度数据(limitdatas) - com.alibaba.fastjson.JSONArray limitdatas = dataJson.getJSONArray("limitdatas"); - if (limitdatas != null && !limitdatas.isEmpty()) { - com.alibaba.fastjson.JSONObject limitData = limitdatas.getJSONObject(0); - userShipperEntity1.setLimitTime(new Date()); - userShipperEntity1.setAuthorizedQuota(limitData.getBigDecimal("nlimitmny")); - userShipperEntity1.setAuthorizedUsedAmount(limitData.getBigDecimal("nengrossmny")); - userShipperEntity1.setSettlementCurrency(limitData.getString("currencycode")); - userShipperEntity1.setCreditAmount(limitData.getBigDecimal("nbalancemny")); - userShipperMapper.updateById(userShipperEntity1); - log.info("更新货主额度同步成功,custcode={},shipperId={}", userShipperEntity1.getCustomerNcCode(), userShipperEntity1.getShipperId()); - } else { - log.info("赊销额度查询无limitdatas返回,跳过额度更新,custcode={}", userShipperEntity1.getCustomerNcCode()); + + // 解析org_code,支持多组织 + List orgCodeList = new ArrayList<>(); + if (StringUtils.isNotEmpty(userShipperEntity1.getOrgCode())) { + try { + // 解析JSON数组:[{"name":"通宇","code":2830,"ncOrganizationId":"145222101124","names":2830},...] + com.alibaba.fastjson.JSONArray orgCodeArray = com.alibaba.fastjson.JSONArray.parseArray(userShipperEntity1.getOrgCode()); + if (orgCodeArray != null && !orgCodeArray.isEmpty()) { + for (int i = 0; i < orgCodeArray.size(); i++) { + com.alibaba.fastjson.JSONObject orgItem = orgCodeArray.getJSONObject(i); + Long code = orgItem.getLong("code"); + if (code != null) { + orgCodeList.add(code); } + } + } + log.info("解析org_code成功,custcode={},orgCodeList={}", userShipperEntity.getCustomerNcCode(), orgCodeList); + } catch (Exception e) { + log.error("解析org_code失败,custcode={},orgCode={}", userShipperEntity.getCustomerNcCode(), userShipperEntity1.getOrgCode(), e); + } + } + + // 如果org_code为空或解析失败,使用原来的organizationId方式 + if (orgCodeList.isEmpty()) { + Long organizationId = userShipperEntity1.getOrganizationId(); + if (organizationId != null) { + orgCodeList.add(organizationId); + log.info("org_code为空,使用organizationId,custcode={},organizationId={}", userShipperEntity.getCustomerNcCode(), organizationId); + } + } + + if (orgCodeList.isEmpty()) { + log.warn("货主无组织信息,跳过查询,custcode={}", userShipperEntity.getCustomerNcCode()); + continue; + } + + // 遍历每个组织code,分别调用接口 + for (Long orgCode : orgCodeList) { + String orgcode = userShipperMapper.getOrgNcCode(orgCode); + if (StringUtils.isEmpty(orgcode)) { + log.warn("组织NC编码为空,跳过查询,custcode={},orgCode={}", userShipperEntity.getCustomerNcCode(), orgCode); + continue; + } + + try { + com.alibaba.fastjson.JSONObject queryParam = new com.alibaba.fastjson.JSONObject(); + queryParam.put("custcode", userShipperEntity.getCustomerNcCode()); + queryParam.put("orgcode", orgcode); + log.info("调用赊销额度查询接口,custcode={},orgcode={}", userShipperEntity.getCustomerNcCode(), orgcode); - // 同步协议明细(agreedaydatas),与limitdatas独立 - com.alibaba.fastjson.JSONArray agreedaydatas = dataJson.getJSONArray("agreedaydatas"); - if (agreedaydatas != null && !agreedaydatas.isEmpty()) { - // 先删除该货主已有的协议明细,避免重复 - agreementDetailsMapper.delete(new LambdaQueryWrapper() - .eq(AgreementDetails::getShipperId, userShipperEntity1.getShipperId())); - int i; - for (i = 0; i < agreedaydatas.size(); i++) { - com.alibaba.fastjson.JSONObject agreeItem = agreedaydatas.getJSONObject(i); - AgreementDetails agreementDetails = new AgreementDetails(); - agreementDetails.setShipperId(userShipperEntity1.getShipperId()); - agreementDetails.setOrgcode(agreeItem.getString("orgcode")); - agreementDetails.setCode(agreeItem.getString("code")); - agreementDetails.setPday(agreeItem.getString("pday")); - agreementDetails.setPname(agreeItem.getString("pname")); - agreementDetails.setPtypename(agreeItem.getString("ptypename")); - agreementDetails.setPcode(agreeItem.getString("pcode")); - agreementDetails.setPtype(agreeItem.getString("ptype")); - agreementDetailsMapper.insert(agreementDetails); + String queryResult = HttpRequest.post(queryUrl) + .header("Content-Type", "application/json") + .header("uap_token", uapToken) + .header("uap_usercode", uapUsercode) + .header("uap_dataSource", uapDataSource) + .header("token", "94B3992EAD9747D3598CC6F7775F6239B5DC3B526DF7DE0091CB8B2D") + .body(queryParam.toJSONString()) + .execute() + .body(); + log.info("赊销额度查询接口返回,custcode={},orgcode={},result={}", userShipperEntity.getCustomerNcCode(), orgcode, queryResult); + + if (StringUtils.isNotEmpty(queryResult)) { + com.alibaba.fastjson.JSONObject resultJson = com.alibaba.fastjson.JSONObject.parseObject(queryResult); + allResults.put(userShipperEntity.getCustomerNcCode() + "_" + orgcode, resultJson); + + // 第三步:查询成功,更新货主的额度同步时间(limitTime) + + if (userShipperEntity1 != null) { + // 根据查询结果同步数据 + com.alibaba.fastjson.JSONObject dataJson = resultJson.getJSONObject("data"); + if (dataJson != null) { + // 同步额度数据(limitdatas) + com.alibaba.fastjson.JSONArray limitdatas = dataJson.getJSONArray("limitdatas"); + if (limitdatas != null && !limitdatas.isEmpty()) { + // 解析现有的orgCode数组 + com.alibaba.fastjson.JSONArray orgCodeArray = new com.alibaba.fastjson.JSONArray(); + if (StringUtils.isNotEmpty(userShipperEntity1.getOrgCode())) { + try { + orgCodeArray = com.alibaba.fastjson.JSONArray.parseArray(userShipperEntity1.getOrgCode()); + } catch (Exception e) { + log.warn("解析现有orgCode失败,将创建新的数组,shipperId={}", userShipperEntity1.getShipperId()); + } + } + + // 将limitdatas按orgcode值合并到orgCode数组中 + for (int i = 0; i < limitdatas.size(); i++) { + com.alibaba.fastjson.JSONObject limitItem = limitdatas.getJSONObject(i); + String limitOrgcode = limitItem.getString("orgcode"); // 例如 "NA01" + + if (StringUtils.isNotEmpty(limitOrgcode)) { + // 在orgCode数组中查找code匹配的组织(注意:这里的code是2830, 2839等) + boolean found = false; + for (int j = 0; j < orgCodeArray.size(); j++) { + com.alibaba.fastjson.JSONObject orgItem = orgCodeArray.getJSONObject(j); + String orgItemCode = orgItem.getString("code"); // orgCode数组中的code + + // 如果orgCode数组中的code与当前orgCode(如2830)匹配,将limitdatas的字段添加到该组织对象中 + String currentOrgCodeStr = String.valueOf(orgCode); + if (currentOrgCodeStr.equals(orgItemCode)) { + orgItem.putAll(limitItem); + found = true; + log.info("匹配到code={}的组织,将额度数据(orgcode={})添加到orgCode中,custcode={}", orgItemCode, limitOrgcode, userShipperEntity1.getCustomerNcCode()); + break; + } + } + + // 如果没有找到匹配的组织,创建新的组织对象 + if (!found) { + com.alibaba.fastjson.JSONObject newOrgItem = new com.alibaba.fastjson.JSONObject(); + newOrgItem.put("code", orgCode); // 使用当前orgCode + newOrgItem.putAll(limitItem); + orgCodeArray.add(newOrgItem); + log.info("未找到code={}的组织,创建新组织并添加额度数据(orgcode={}),custcode={}", orgCode, limitOrgcode, userShipperEntity1.getCustomerNcCode()); + } + } + } + + // 保存更新后的orgCode数组 + userShipperEntity1.setOrgCode(orgCodeArray.toJSONString()); + + // 使用limitdatas中的数据更新额度字段 + com.alibaba.fastjson.JSONObject firstLimitData = limitdatas.getJSONObject(0); + userShipperEntity1.setLimitTime(new Date()); + userShipperEntity1.setAuthorizedQuota(firstLimitData.getBigDecimal("nlimitmny")); + userShipperEntity1.setAuthorizedUsedAmount(firstLimitData.getBigDecimal("nengrossmny")); + userShipperEntity1.setSettlementCurrency(firstLimitData.getString("currencycode")); + userShipperEntity1.setCreditAmount(firstLimitData.getBigDecimal("nbalancemny")); + + userShipperMapper.updateById(userShipperEntity1); + log.info("更新货主额度同步成功,custcode={},orgcode={},shipperId={},orgCode组织数={}", userShipperEntity1.getCustomerNcCode(), orgcode, userShipperEntity1.getShipperId(), orgCodeArray.size()); + } else { + log.info("赊销额度查询无limitdatas返回,跳过额度更新,custcode={},orgcode={}", userShipperEntity1.getCustomerNcCode(), orgcode); + } + + // 同步协议明细(agreedaydatas),与limitdatas独立 + com.alibaba.fastjson.JSONArray agreedaydatas = dataJson.getJSONArray("agreedaydatas"); + if (agreedaydatas != null && !agreedaydatas.isEmpty()) { + // 先删除该货主已有的协议明细,避免重复 + agreementDetailsMapper.delete(new LambdaQueryWrapper() + .eq(AgreementDetails::getShipperId, userShipperEntity1.getShipperId())); + int i; + for (i = 0; i < agreedaydatas.size(); i++) { + com.alibaba.fastjson.JSONObject agreeItem = agreedaydatas.getJSONObject(i); + AgreementDetails agreementDetails = new AgreementDetails(); + agreementDetails.setShipperId(userShipperEntity1.getShipperId()); + agreementDetails.setOrgcode(agreeItem.getString("orgcode")); + agreementDetails.setCode(agreeItem.getString("code")); + agreementDetails.setPday(agreeItem.getString("pday")); + agreementDetails.setPname(agreeItem.getString("pname")); + agreementDetails.setPtypename(agreeItem.getString("ptypename")); + agreementDetails.setPcode(agreeItem.getString("pcode")); + agreementDetails.setPtype(agreeItem.getString("ptype")); + agreementDetailsMapper.insert(agreementDetails); + } + userShipperEntity1.setAgreementCount(i); + userShipperMapper.updateById(userShipperEntity1); + log.info("同步协议明细成功,custcode={},orgcode={},shipperId={},共{}条", userShipperEntity1.getCustomerNcCode(), orgcode, userShipperEntity1.getShipperId(), agreedaydatas.size()); + } else { + log.info("赊销额度查询无agreedaydatas返回,跳过协议明细同步,custcode={},orgcode={}", userShipperEntity1.getCustomerNcCode(), orgcode); } - userShipperEntity1.setAgreementCount(i); - userShipperMapper.updateById(userShipperEntity1); - log.info("同步协议明细成功,custcode={},shipperId={},共{}条", userShipperEntity1.getCustomerNcCode(), userShipperEntity1.getShipperId(), agreedaydatas.size()); } else { - log.info("赊销额度查询无agreedaydatas返回,跳过协议明细同步,custcode={}", userShipperEntity1.getCustomerNcCode()); + log.info("赊销额度查询无data返回,跳过更新,custcode={},orgcode={}", userShipperEntity1.getCustomerNcCode(), orgcode); } } else { - log.info("赊销额度查询无data返回,跳过更新,custcode={}", userShipperEntity1.getCustomerNcCode()); + log.warn("未找到对应货主,custcode={},orgCode={}", userShipperEntity.getCustomerNcCode(), orgCode); } } else { - log.warn("未找到对应货主,custcode={},organizationId={}", userShipperEntity1.getCustomerNcCode(), userShipperDTO.getOrganizationId()); + log.warn("赊销额度查询返回为空,custcode={},orgcode={}", userShipperEntity1.getCustomerNcCode(), orgcode); } - } else { - log.warn("赊销额度查询返回为空,custcode={}", userShipperEntity1.getCustomerNcCode()); + } catch (Exception e) { + log.error("查询赊销额度异常,custcode={},orgcode={}", userShipperEntity1.getCustomerNcCode(), orgcode, e); } - } catch (Exception e) { - log.error("查询赊销额度异常,custcode={}", userShipperEntity1.getCustomerNcCode(), e); } } return AjaxResult.success(allResults); @@ -1723,89 +1817,183 @@ public class UserShipperApplicationService { UserShipperEntity userShipperEntity1 = userShipperMapper.selectOne(new LambdaQueryWrapper() .eq(UserShipperEntity::getCustomerNcCode, userShipperEntity.getCustomerNcCode()) .eq(UserShipperEntity::getUserId, userShipperEntity.getUserId())); - String orgcode = userShipperMapper.getOrgNcCode(userShipperEntity1.getOrganizationId()); - if (StringUtils.isEmpty(orgcode)) { - return AjaxResult.error("组织NC编码不能为空"); + + if (userShipperEntity1 == null) { + log.warn("未找到对应货主,custcode={}", userShipperEntity.getCustomerNcCode()); + continue; } - try { - com.alibaba.fastjson.JSONObject queryParam = new com.alibaba.fastjson.JSONObject(); - queryParam.put("custcode", userShipperEntity.getCustomerNcCode()); - queryParam.put("orgcode", orgcode); - log.info("调用赊销额度查询接口,custcode={},orgcode={}", userShipperEntity.getCustomerNcCode(), orgcode); - - String queryResult = HttpRequest.post(queryUrl) - .header("Content-Type", "application/json") - .header("uap_token", uapToken) - .header("uap_usercode", uapUsercode) - .header("uap_dataSource", uapDataSource) - .header("token", "94B3992EAD9747D3598CC6F7775F6239B5DC3B526DF7DE0091CB8B2D") - .body(queryParam.toJSONString()) - .execute() - .body(); - log.info("赊销额度查询接口返回,custcode={},result={}", userShipperEntity.getCustomerNcCode(), queryResult); - - if (StringUtils.isNotEmpty(queryResult)) { - com.alibaba.fastjson.JSONObject resultJson = com.alibaba.fastjson.JSONObject.parseObject(queryResult); - allResults.put(userShipperEntity.getCustomerNcCode(), resultJson); - - // 第三步:查询成功,更新货主的额度同步时间(limitTime) - - if (userShipperEntity1 != null) { - // 根据查询结果同步数据 - com.alibaba.fastjson.JSONObject dataJson = resultJson.getJSONObject("data"); - if (dataJson != null) { - // 同步额度数据(limitdatas) - com.alibaba.fastjson.JSONArray limitdatas = dataJson.getJSONArray("limitdatas"); - if (limitdatas != null && !limitdatas.isEmpty()) { - com.alibaba.fastjson.JSONObject limitData = limitdatas.getJSONObject(0); - userShipperEntity1.setLimitTime(new Date()); - userShipperEntity1.setAuthorizedQuota(limitData.getBigDecimal("nlimitmny")); - userShipperEntity1.setAuthorizedUsedAmount(limitData.getBigDecimal("nengrossmny")); - userShipperEntity1.setSettlementCurrency(limitData.getString("currencycode")); - userShipperEntity1.setCreditAmount(limitData.getBigDecimal("nbalancemny")); - userShipperMapper.updateById(userShipperEntity1); - log.info("更新货主额度同步成功,custcode={},shipperId={}", userShipperEntity1.getCustomerNcCode(), userShipperEntity1.getShipperId()); - } else { - log.info("赊销额度查询无limitdatas返回,跳过额度更新,custcode={}", userShipperEntity1.getCustomerNcCode()); + + // 解析org_code,支持多组织 + List orgCodeList = new ArrayList<>(); + if (StringUtils.isNotEmpty(userShipperEntity1.getOrgCode())) { + try { + // 解析JSON数组:[{"name":"通宇","code":2830,"ncOrganizationId":"145222101124","names":2830},...] + com.alibaba.fastjson.JSONArray orgCodeArray = com.alibaba.fastjson.JSONArray.parseArray(userShipperEntity1.getOrgCode()); + if (orgCodeArray != null && !orgCodeArray.isEmpty()) { + for (int i = 0; i < orgCodeArray.size(); i++) { + com.alibaba.fastjson.JSONObject orgItem = orgCodeArray.getJSONObject(i); + Long code = orgItem.getLong("code"); + if (code != null) { + orgCodeList.add(code); } + } + } + log.info("解析org_code成功,custcode={},orgCodeList={}", userShipperEntity.getCustomerNcCode(), orgCodeList); + } catch (Exception e) { + log.error("解析org_code失败,custcode={},orgCode={}", userShipperEntity.getCustomerNcCode(), userShipperEntity1.getOrgCode(), e); + } + } + + // 如果org_code为空或解析失败,使用原来的organizationId方式 + if (orgCodeList.isEmpty()) { + Long organizationId = userShipperEntity1.getOrganizationId(); + if (organizationId != null) { + orgCodeList.add(organizationId); + log.info("org_code为空,使用organizationId,custcode={},organizationId={}", userShipperEntity.getCustomerNcCode(), organizationId); + } + } + + if (orgCodeList.isEmpty()) { + log.warn("货主无组织信息,跳过查询,custcode={}", userShipperEntity.getCustomerNcCode()); + continue; + } + + // 遍历每个组织code,分别调用接口 + for (Long orgCode : orgCodeList) { + String orgcode = userShipperMapper.getOrgNcCode(orgCode); + if (StringUtils.isEmpty(orgcode)) { + log.warn("组织NC编码为空,跳过查询,custcode={},orgCode={}", userShipperEntity.getCustomerNcCode(), orgCode); + continue; + } + + try { + com.alibaba.fastjson.JSONObject queryParam = new com.alibaba.fastjson.JSONObject(); + queryParam.put("custcode", userShipperEntity.getCustomerNcCode()); + queryParam.put("orgcode", orgcode); + log.info("调用赊销额度查询接口,custcode={},orgcode={}", userShipperEntity.getCustomerNcCode(), orgcode); - // 同步协议明细(agreedaydatas),与limitdatas独立 - com.alibaba.fastjson.JSONArray agreedaydatas = dataJson.getJSONArray("agreedaydatas"); - if (agreedaydatas != null && !agreedaydatas.isEmpty()) { - // 先删除该货主已有的协议明细,避免重复 - agreementDetailsMapper.delete(new LambdaQueryWrapper() - .eq(AgreementDetails::getShipperId, userShipperEntity1.getShipperId())); - int i; - for (i = 0; i < agreedaydatas.size(); i++) { - com.alibaba.fastjson.JSONObject agreeItem = agreedaydatas.getJSONObject(i); - AgreementDetails agreementDetails = new AgreementDetails(); - agreementDetails.setShipperId(userShipperEntity1.getShipperId()); - agreementDetails.setOrgcode(agreeItem.getString("orgcode")); - agreementDetails.setCode(agreeItem.getString("code")); - agreementDetails.setPday(agreeItem.getString("pday")); - agreementDetails.setPname(agreeItem.getString("pname")); - agreementDetails.setPtypename(agreeItem.getString("ptypename")); - agreementDetails.setPcode(agreeItem.getString("pcode")); - agreementDetails.setPtype(agreeItem.getString("ptype")); - agreementDetailsMapper.insert(agreementDetails); + String queryResult = HttpRequest.post(queryUrl) + .header("Content-Type", "application/json") + .header("uap_token", uapToken) + .header("uap_usercode", uapUsercode) + .header("uap_dataSource", uapDataSource) + .header("token", "94B3992EAD9747D3598CC6F7775F6239B5DC3B526DF7DE0091CB8B2D") + .body(queryParam.toJSONString()) + .execute() + .body(); + log.info("赊销额度查询接口返回,custcode={},orgcode={},result={}", userShipperEntity.getCustomerNcCode(), orgcode, queryResult); + + if (StringUtils.isNotEmpty(queryResult)) { + com.alibaba.fastjson.JSONObject resultJson = com.alibaba.fastjson.JSONObject.parseObject(queryResult); + allResults.put(userShipperEntity.getCustomerNcCode() + "_" + orgcode, resultJson); + + // 第三步:查询成功,更新货主的额度同步时间(limitTime) + + if (userShipperEntity1 != null) { + // 根据查询结果同步数据 + com.alibaba.fastjson.JSONObject dataJson = resultJson.getJSONObject("data"); + if (dataJson != null) { + // 同步额度数据(limitdatas) + com.alibaba.fastjson.JSONArray limitdatas = dataJson.getJSONArray("limitdatas"); + if (limitdatas != null && !limitdatas.isEmpty()) { + // 解析现有的orgCode数组 + com.alibaba.fastjson.JSONArray orgCodeArray = new com.alibaba.fastjson.JSONArray(); + if (StringUtils.isNotEmpty(userShipperEntity1.getOrgCode())) { + try { + orgCodeArray = com.alibaba.fastjson.JSONArray.parseArray(userShipperEntity1.getOrgCode()); + } catch (Exception e) { + log.warn("解析现有orgCode失败,将创建新的数组,shipperId={}", userShipperEntity1.getShipperId()); + } + } + + // 将limitdatas按orgcode值合并到orgCode数组中 + for (int i = 0; i < limitdatas.size(); i++) { + com.alibaba.fastjson.JSONObject limitItem = limitdatas.getJSONObject(i); + String limitOrgcode = limitItem.getString("orgcode"); // 例如 "NA01" + + if (StringUtils.isNotEmpty(limitOrgcode)) { + // 在orgCode数组中查找code匹配的组织(注意:这里的code是2830, 2839等) + boolean found = false; + for (int j = 0; j < orgCodeArray.size(); j++) { + com.alibaba.fastjson.JSONObject orgItem = orgCodeArray.getJSONObject(j); + String orgItemCode = orgItem.getString("code"); // orgCode数组中的code + + // 如果orgCode数组中的code与当前orgCode(如2830)匹配,将limitdatas的字段添加到该组织对象中 + String currentOrgCodeStr = String.valueOf(orgCode); + if (currentOrgCodeStr.equals(orgItemCode)) { + orgItem.putAll(limitItem); + found = true; + log.info("匹配到code={}的组织,将额度数据(orgcode={})添加到orgCode中,custcode={}", orgItemCode, limitOrgcode, userShipperEntity1.getCustomerNcCode()); + break; + } + } + + // 如果没有找到匹配的组织,创建新的组织对象 + if (!found) { + com.alibaba.fastjson.JSONObject newOrgItem = new com.alibaba.fastjson.JSONObject(); + newOrgItem.put("code", orgCode); // 使用当前orgCode + newOrgItem.putAll(limitItem); + orgCodeArray.add(newOrgItem); + log.info("未找到code={}的组织,创建新组织并添加额度数据(orgcode={}),custcode={}", orgCode, limitOrgcode, userShipperEntity1.getCustomerNcCode()); + } + } + } + + // 保存更新后的orgCode数组 + userShipperEntity1.setOrgCode(orgCodeArray.toJSONString()); + + // 使用limitdatas中的数据更新额度字段 + com.alibaba.fastjson.JSONObject firstLimitData = limitdatas.getJSONObject(0); + userShipperEntity1.setLimitTime(new Date()); + userShipperEntity1.setAuthorizedQuota(firstLimitData.getBigDecimal("nlimitmny")); + userShipperEntity1.setAuthorizedUsedAmount(firstLimitData.getBigDecimal("nengrossmny")); + userShipperEntity1.setSettlementCurrency(firstLimitData.getString("currencycode")); + userShipperEntity1.setCreditAmount(firstLimitData.getBigDecimal("nbalancemny")); + + userShipperMapper.updateById(userShipperEntity1); + log.info("更新货主额度同步成功,custcode={},orgcode={},shipperId={},orgCode组织数={}", userShipperEntity1.getCustomerNcCode(), orgcode, userShipperEntity1.getShipperId(), orgCodeArray.size()); + } else { + log.info("赊销额度查询无limitdatas返回,跳过额度更新,custcode={},orgcode={}", userShipperEntity1.getCustomerNcCode(), orgcode); + } + + // 同步协议明细(agreedaydatas),与limitdatas独立 + com.alibaba.fastjson.JSONArray agreedaydatas = dataJson.getJSONArray("agreedaydatas"); + if (agreedaydatas != null && !agreedaydatas.isEmpty()) { + // 先删除该货主已有的协议明细,避免重复 + agreementDetailsMapper.delete(new LambdaQueryWrapper() + .eq(AgreementDetails::getShipperId, userShipperEntity1.getShipperId())); + int i; + for (i = 0; i < agreedaydatas.size(); i++) { + com.alibaba.fastjson.JSONObject agreeItem = agreedaydatas.getJSONObject(i); + AgreementDetails agreementDetails = new AgreementDetails(); + agreementDetails.setShipperId(userShipperEntity1.getShipperId()); + agreementDetails.setOrgcode(agreeItem.getString("orgcode")); + agreementDetails.setCode(agreeItem.getString("code")); + agreementDetails.setPday(agreeItem.getString("pday")); + agreementDetails.setPname(agreeItem.getString("pname")); + agreementDetails.setPtypename(agreeItem.getString("ptypename")); + agreementDetails.setPcode(agreeItem.getString("pcode")); + agreementDetails.setPtype(agreeItem.getString("ptype")); + agreementDetailsMapper.insert(agreementDetails); + } + userShipperEntity1.setAgreementCount(i); + userShipperMapper.updateById(userShipperEntity1); + log.info("同步协议明细成功,custcode={},orgcode={},shipperId={},共{}条", userShipperEntity1.getCustomerNcCode(), orgcode, userShipperEntity1.getShipperId(), agreedaydatas.size()); + } else { + log.info("赊销额度查询无agreedaydatas返回,跳过协议明细同步,custcode={},orgcode={}", userShipperEntity1.getCustomerNcCode(), orgcode); } - userShipperEntity1.setAgreementCount(i); - userShipperMapper.updateById(userShipperEntity1); - log.info("同步协议明细成功,custcode={},shipperId={},共{}条", userShipperEntity1.getCustomerNcCode(), userShipperEntity1.getShipperId(), agreedaydatas.size()); } else { - log.info("赊销额度查询无agreedaydatas返回,跳过协议明细同步,custcode={}", userShipperEntity1.getCustomerNcCode()); + log.info("赊销额度查询无data返回,跳过更新,custcode={},orgcode={}", userShipperEntity1.getCustomerNcCode(), orgcode); } } else { - log.info("赊销额度查询无data返回,跳过更新,custcode={}", userShipperEntity1.getCustomerNcCode()); + log.warn("未找到对应货主,custcode={},orgCode={}", userShipperEntity.getCustomerNcCode(), orgCode); } } else { - log.warn("未找到对应货主,custcode={},organizationId={}", userShipperEntity1.getCustomerNcCode(), userShipperDTO.getOrganizationId()); + log.warn("赊销额度查询返回为空,custcode={},orgcode={}", userShipperEntity1.getCustomerNcCode(), orgcode); } - } else { - log.warn("赊销额度查询返回为空,custcode={}", userShipperEntity1.getCustomerNcCode()); + } catch (Exception e) { + log.error("查询赊销额度异常,custcode={},orgcode={}", userShipperEntity1.getCustomerNcCode(), orgcode, e); } - } catch (Exception e) { - log.error("查询赊销额度异常,custcode={}", userShipperEntity1.getCustomerNcCode(), e); } } return AjaxResult.success(allResults); diff --git a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/entity/UserShipperEntity.java b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/entity/UserShipperEntity.java index 56f93c213..6c2674591 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/entity/UserShipperEntity.java +++ b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/entity/UserShipperEntity.java @@ -294,4 +294,7 @@ public class UserShipperEntity extends BaseVOEntity { @ApiModelProperty(name = "组织代码") private String orgCode; + @ApiModelProperty(name = "额度数据JSON") + private String limitDataJson; + } \ No newline at end of file diff --git a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/repository/po/UserShipperPo.java b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/repository/po/UserShipperPo.java index 8d6869c92..b04901198 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/repository/po/UserShipperPo.java +++ b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/repository/po/UserShipperPo.java @@ -356,4 +356,7 @@ public class UserShipperPo implements Serializable { private String isCheckCredit; @ApiModelProperty(name = "组织代码") private String orgCode; + + @ApiModelProperty(name = "额度数据JSON") + private String limitDataJson; } \ No newline at end of file