diff --git a/src/main/java/com/nbport/zgwl/contractlaunch/service/ContractLaunchServiceImpl.java b/src/main/java/com/nbport/zgwl/contractlaunch/service/ContractLaunchServiceImpl.java index 4629b08..3247242 100644 --- a/src/main/java/com/nbport/zgwl/contractlaunch/service/ContractLaunchServiceImpl.java +++ b/src/main/java/com/nbport/zgwl/contractlaunch/service/ContractLaunchServiceImpl.java @@ -554,13 +554,20 @@ public class ContractLaunchServiceImpl implements ContractLaunchService { contractLaunchMapper.updateContract(contract); replaceArchiveChildren(id, archiveDto, currentUser.getUsername()); - Map payload = buildArchivePayload(contract, archiveDto, false); + // 1. 构造归档报文(true → 附件路径转为法务系统路径) + // buildArchivePayload(..., true) 内部会调用 legalFileBridgeService.buildCollectionPayload, + // 自动上传未缓存的附件到法务系统并缓存 legalFileUrl。 + Map payload = buildArchivePayload(contract, archiveDto, true); log.info("合同归档参数:{}", JsonUtils.toJson(payload)); - insertLog(id, ContractLaunchConstants.ACTION_ARCHIVE, "合同归档", ContractLaunchConstants.ACTION_STATUS_PENDING, "合同归档接口当前先注释,使用测试按钮流转", payload, currentUser); + insertLog(id, ContractLaunchConstants.ACTION_ARCHIVE, "合同归档", + ContractLaunchConstants.ACTION_STATUS_PENDING, + "合同归档接口当前先注释,使用测试按钮流转", + payload, currentUser); // TODO: 法务接口当前不可用,真实联调时打开下面调用即可 + // payload 已构造好(含法务路径),直接用 // PushPayloadDTO requestDTO = new PushPayloadDTO(); - // requestDTO.setPayload(buildArchivePayload(contract, archiveDto, true)); + // requestDTO.setPayload(payload); // dataCollectionPushService.collectContractArchive(requestDTO); return getDetail(id); diff --git a/src/main/java/com/nbport/zgwl/partner/service/PartnerManageServiceImpl.java b/src/main/java/com/nbport/zgwl/partner/service/PartnerManageServiceImpl.java index 78408ca..86465f9 100644 --- a/src/main/java/com/nbport/zgwl/partner/service/PartnerManageServiceImpl.java +++ b/src/main/java/com/nbport/zgwl/partner/service/PartnerManageServiceImpl.java @@ -2,6 +2,9 @@ package com.nbport.zgwl.partner.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.nbport.zgwl.common.PageResult; +import com.nbport.zgwl.contractlaunch.utils.JsonUtils; +import com.nbport.zgwl.contractpush.dto.PushPayloadDTO; +import com.nbport.zgwl.contractpush.service.DataCollectionPushService; import com.nbport.zgwl.exception.ServiceException; import com.nbport.zgwl.partner.dto.PartnerContactDto; import com.nbport.zgwl.partner.dto.PartnerManageDto; @@ -35,6 +38,8 @@ public class PartnerManageServiceImpl implements PartnerManageService { private final PartnerDataHandler partnerDataHandler; + private final DataCollectionPushService dataCollectionPushService; + /** 分页查询相对方列表(结果中会带上联系人数据) */ @Override public PageResult queryPartnerList(PartnerQueryDto queryDto) { @@ -141,7 +146,7 @@ public class PartnerManageServiceImpl implements PartnerManageService { PartnerManageConstants.PARTNER_IS_DELETED_DELETED); } - /** 模拟同步相对方到法务系统(本地测试用,TODO:替换为真实 collectOpposites 调用) */ + /** 同步相对方到法务系统 */ @Override @Transactional(rollbackFor = Exception.class) public PartnerManageDto mockSyncPartner(Long customerSysid) { @@ -153,31 +158,66 @@ public class PartnerManageServiceImpl implements PartnerManageService { attachContacts(Collections.singletonList(partner)); LocalDateTime now = LocalDateTime.now(); - String oppositeId = StrUtilHelper.hasText(partner.getOppositeId()) + + // 1. 构造报文并调用法务相对方信息采集接口 + PushPayloadDTO payloadDTO = + PartnerSyncPayloadBuilder.buildCollectOppositesPayload(partner); + log.info("法务系统同步参数: {}", JsonUtils.toJson(payloadDTO)); +// Map response = dataCollectionPushService.collectOpposites(payloadDTO); +// +// // 2. 解析法务返回结果 +// // 响应格式: { "code": "200", "data": [{ "o_id": "11007", "jtId": "10256" }], "msg": "接收成功" } +// String returnedOppositeId = null; // jtId → oppositeId +// String syncMessage; + +// Object codeObj = response.get("code"); +// if (codeObj != null && ("200".equals(String.valueOf(codeObj)) || Integer.valueOf(200).equals(codeObj))) { +// Object dataObj = response.get("data"); +// if (dataObj instanceof List) { +// List dataList = (List) dataObj; +// if (!dataList.isEmpty() && dataList.get(0) instanceof Map) { +// Map firstItem = (Map) dataList.get(0); +// Object jtId = firstItem.get("jtId"); +// returnedOppositeId = jtId != null ? String.valueOf(jtId) : null; +// } +// } +// syncMessage = response.containsKey("msg") +// ? String.valueOf(response.get("msg")) +// : "相对方信息采集同步成功"; +// } else { +// syncMessage = "相对方信息采集接口返回异常: code=" + codeObj +// + ", msg=" + response.get("msg"); +// } +// +// // 3. 回写法务返回的 oppositeId(jtId → oppositeId) +// String finalOppositeId = returnedOppositeId != null +// ? returnedOppositeId +// : partner.getOppositeId(); + +// partnerManageMapper.updatePartnerSyncInfo( +// customerSysid, +// finalOppositeId, +// returnedOppositeId != null +// ? PartnerManageConstants.SYNC_STATUS_SYNCED +// : PartnerManageConstants.SYNC_STATUS_FAILED, +// now, +// syncMessage, +// PartnerManageConstants.DEFAULT_OPERATOR, +// now); + + String finalOppositeId = StrUtilHelper.hasText(partner.getOppositeId()) ? partner.getOppositeId() : PartnerIdUtils.buildGroupPartnerId(); - - PartnerSyncPayloadBuilder.buildCollectOppositesPayload(partner); - // PushPayloadDTO payloadDTO = - // PartnerSyncPayloadBuilder.buildCollectOppositesPayload(partner); - // Map response = - // dataCollectionPushService.collectOpposites(payloadDTO); String syncMessage = "本地测试模拟同步成功。TODO:后续在这里调用相对方信息采集接口 collectOpposites。"; - // // 从法务系统响应中取出返回的 oppositeId(比如 response 里有个 "jtId" 字段) - // String oppositeIdFromLawSystem = ...; // 具体 key 看法务返回的字段名 - // String syncMessage = response.containsKey("msg") - // ? String.valueOf(response.get("msg")) - // : "相对方信息采集同步成功"; - - // // 回写法务返回的 oppositeId,而不是本地生成的 - partnerManageMapper.updatePartnerSyncInfo( + partnerManageMapper.updatePartnerSyncInfo( customerSysid, - oppositeId, + finalOppositeId, PartnerManageConstants.SYNC_STATUS_SYNCED, now, syncMessage, PartnerManageConstants.DEFAULT_OPERATOR, now); + return selectPartnerById(customerSysid); }