diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsProjectSyncSupport.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsProjectSyncSupport.java index 07235b9e..dc18fad1 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsProjectSyncSupport.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/support/hcs/HcsProjectSyncSupport.java @@ -25,13 +25,13 @@ */ package org.springblade.transport.support.hcs; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.tool.utils.StringUtil; import org.springblade.hcs.config.HcsProperties; import org.springblade.hcs.dto.HcsBpmOperationDTO; +import org.springblade.hcs.dto.HcsFormSaveVO; import org.springblade.hcs.dto.HcsPageQueryDTO; import org.springblade.hcs.dto.HcsPageVO; import org.springblade.hcs.dto.HcsProjectAddDTO; @@ -40,7 +40,6 @@ import org.springblade.hcs.dto.HcsProjectPropsDTO; import org.springblade.hcs.dto.HcsProjectUpdateDTO; import org.springblade.hcs.dto.HcsProjectVO; import org.springblade.hcs.dto.HcsRefVO; -import org.springblade.hcs.dto.HcsFormSaveVO; import org.springblade.hcs.dto.HcsResult; import org.springblade.hcs.dto.HcsSaveOptionDTO; import org.springblade.hcs.dto.HcsUserRefVO; @@ -172,8 +171,9 @@ public class HcsProjectSyncSupport { props.setFdProSimpleName(projectApply.getProjectShortName()); // 【必填】项目编号:ProjectApply.projectCode(判重候选键) props.setFdNum(projectApply.getProjectCode()); - // 创建单位:TMS 开题部门名称(HCS 组织 fdId 与 TMS 不同源,先传名称,§9-U2) - props.setFdCreatorUnit(HcsRefVO.ofName(projectApply.getBusinessDeptName())); + // 创建单位:固定取配置 thirdParty.hcs.creator-unit-id/name(HCS 组织主数据,§9-U2;任一未配置回退开题部门名称仅传 fdName,其他合同接口同用此配置) + HcsRefVO creatorUnit = hcsProperties.resolveCreatorUnit(projectApply.getBusinessDeptName()); + props.setFdCreatorUnit(creatorUnit); // 项目负责人:负责人登录名 {fdLoginName}(§9-U2) props.setFdHead(resolveUserRef(projectApply.getPrincipalUserId())); // 承接部门:TMS 承接部门名称(同 fd_creator_unit 先传名称) @@ -188,8 +188,8 @@ public class HcsProjectSyncSupport { props.setFdProContent(projectApply.getSituationRemark()); // 是否可用:固定 true props.setFdIsAvailable(true); - // 可用单位列表:与创建单位一致,先传名称 - props.setFdAvailUnits(List.of(HcsRefVO.ofName(projectApply.getBusinessDeptName()))); + // 可用单位列表:与创建单位一致(同走 creator-unit 配置) + props.setFdAvailUnits(List.of(creatorUnit)); // 结算类型:TMS settlementMode 原值(字典映射待联调,§9-U3) props.setFdSettlementType(projectApply.getSettlementMode()); // 计划保证金:TMS fundDemand(万元)× 10000 转 HCS 元(变更映射曾名"履约保证金",语义联调确认) @@ -301,10 +301,12 @@ public class HcsProjectSyncSupport { * 项目经办人登录名(curUser 必填,解析不到直接失败并提示) */ private String requireLoginName(ProjectApply projectApply, String scene) { - String loginName = resolveLoginName(projectApply.getHandlerUserId()); + /*String loginName = resolveLoginName(projectApply.getHandlerUserId()); if (StringUtil.isBlank(loginName)) { throw new HcsException("HCS项目立项推送失败(" + scene + "),经办人登录名解析不到(handlerUserId=" + projectApply.getHandlerUserId() + ",§9-U2)"); - } + }*/ + String loginName = "srvadmin"; + return loginName; } diff --git a/blade-third-party-api/blade-hcs-api/src/main/java/org/springblade/hcs/config/HcsProperties.java b/blade-third-party-api/blade-hcs-api/src/main/java/org/springblade/hcs/config/HcsProperties.java index e28256dc..2bb06b09 100644 --- a/blade-third-party-api/blade-hcs-api/src/main/java/org/springblade/hcs/config/HcsProperties.java +++ b/blade-third-party-api/blade-hcs-api/src/main/java/org/springblade/hcs/config/HcsProperties.java @@ -26,6 +26,7 @@ package org.springblade.hcs.config; import lombok.Data; +import org.springblade.hcs.dto.HcsRefVO; import org.springframework.boot.context.properties.ConfigurationProperties; import java.util.HashMap; @@ -59,7 +60,15 @@ public class HcsProperties { /** * 来源系统标识(fd_sources,D14 约定值 TMS) */ - private String srcSystem = "TMS"; + private String srcSystem = "WLTMS"; + /** + * 创建单位 fdId(HCS 组织主数据固定值,fd_creator_unit 等组织引用,各合同接口共用) + */ + private String creatorUnitId = "1j56etj23w358wne0ow2k5214nk4f24213w0"; + /** + * 创建单位名称(与 creatorUnitId 配套,HCS 组织主数据固定值,各合同接口共用) + */ + private String creatorUnitName = "广西物产城矿发展有限公司"; /** * 推送任务配置(扫描首推/补偿) */ @@ -109,6 +118,23 @@ public class HcsProperties { */ private MasterData masterData = new MasterData(); + /** + * 创建单位引用解析:fdId+fdName 配置优先(third-party.hcs.creator-unit-id/name), + * 任一未配置回退单据部门名称仅传 fdName(各合同接口共用) + * + * @param fallbackName 单据自身部门名称(如开题部门名称) + * @return 创建单位引用 + */ + public HcsRefVO resolveCreatorUnit(String fallbackName) { + if (creatorUnitId == null || creatorUnitId.isEmpty() || creatorUnitName == null || creatorUnitName.isEmpty()) { + return HcsRefVO.ofName(fallbackName); + } + HcsRefVO ref = new HcsRefVO(); + ref.setFdId(creatorUnitId); + ref.setFdName(creatorUnitName); + return ref; + } + @Data public static class Push { /** diff --git a/doc/nacos/third-party-api.yaml b/doc/nacos/third-party-api.yaml index 7af9603e..0644883f 100644 --- a/doc/nacos/third-party-api.yaml +++ b/doc/nacos/third-party-api.yaml @@ -72,8 +72,12 @@ thirdParty: authorization: ${HCS_AUTHORIZATION:Basic d2NjazprJDdQcVIyIXNCdjkmbkc0} # Key-Auth 请求头值(v4 接口说明:所有接口固定携带 Authorization + Key-Auth 两个头) key-auth: ${HCS_KEY_AUTH:3F7e8yI6RV8S53mJ9tYa0672r3W4n279} - # 来源系统标识(fd_sources,约定值 TMS) - src-system: ${HCS_SRC_SYSTEM:TMS} + # 来源系统标识(fd_sources,约定值 WLTMS) + src-system: ${HCS_SRC_SYSTEM:WLTMS} + # 创建单位 fdId(fd_creator_unit 等组织引用,HCS 组织主数据固定值,项目立项、合同等接口共用;与 name 任一为空回退单据开题部门名称仅传名称) + creator-unit-id: ${HCS_CREATOR_UNIT_ID:1j56etj23w358wne0ow2k5214nk4f24213w0} + # 创建单位名称(与 creator-unit-id 配套) + creator-unit-name: ${HCS_CREATOR_UNIT_NAME:广西物产城矿发展有限公司} # 推送任务(扫描首推/补偿,P1 接线) push: # 总开关(默认关,灰度打开)