!6 fix: 项目+合同对接合同系统
Merge pull request !6 from mindless/feature/hcs-api-p0
This commit is contained in:
+49
@@ -220,4 +220,53 @@ public class ContractManage extends TenantEntity {
|
||||
@Schema(description = "其他事项说明")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "合规系统单据ID(fdContractId)")
|
||||
private String hcsFdId;
|
||||
|
||||
@Schema(description = "合规同步状态 unsynced/synced/failed")
|
||||
private String hcsSyncStatus;
|
||||
|
||||
@Schema(description = "合规推送失败重试次数")
|
||||
@TableField(insertStrategy = FieldStrategy.ALWAYS, updateStrategy = FieldStrategy.ALWAYS)
|
||||
private Integer hcsRetryCount;
|
||||
|
||||
@Schema(description = "合规最近同步时间")
|
||||
private LocalDateTime hcsSyncTime;
|
||||
|
||||
@Schema(description = "合规最近同步结果信息/失败原因")
|
||||
@TableField(insertStrategy = FieldStrategy.ALWAYS, updateStrategy = FieldStrategy.ALWAYS)
|
||||
private String hcsSyncMsg;
|
||||
|
||||
@Schema(description = "合规履约计划ID(C103-9 返回 fdExeplanId)")
|
||||
private String hcsExeplanId;
|
||||
|
||||
@Schema(description = "合规客商风险等级(C101-1,甲方/乙方取高)")
|
||||
private String hcsRiskLevel;
|
||||
|
||||
@Schema(description = "合规客商黑名单状态(C101-1,甲方/乙方取是)")
|
||||
private String hcsBlackStatus;
|
||||
|
||||
@Schema(description = "合规风险校验时间")
|
||||
private LocalDateTime hcsRiskTime;
|
||||
|
||||
@Schema(description = "合规特批流程ID(C103-8 返回)")
|
||||
private String hcsSpecFdId;
|
||||
|
||||
@Schema(description = "合规特批状态 none/need/processing/approved/rejected")
|
||||
@TableField(insertStrategy = FieldStrategy.ALWAYS, updateStrategy = FieldStrategy.ALWAYS)
|
||||
private String hcsSpecStatus;
|
||||
|
||||
@Schema(description = "合规最近特批动作时间")
|
||||
private LocalDateTime hcsSpecTime;
|
||||
|
||||
@Schema(description = "合规特批结果/发起失败原因")
|
||||
@TableField(insertStrategy = FieldStrategy.ALWAYS, updateStrategy = FieldStrategy.ALWAYS)
|
||||
private String hcsSpecMsg;
|
||||
|
||||
@Schema(description = "特批申请材料+内部审批附件JSON(含C103-2 合规附件ID)")
|
||||
private String hcsSpecFilesJson;
|
||||
|
||||
@Schema(description = "金蝶合同ID(contractLegal/result 合同特批金蝶同步结果回调回填)")
|
||||
private String kingdeeId;
|
||||
|
||||
}
|
||||
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
/**
|
||||
* BladeX Commercial License Agreement
|
||||
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
|
||||
* <p>
|
||||
* Use of this software is governed by the Commercial License Agreement
|
||||
* obtained after purchasing a license from BladeX.
|
||||
* <p>
|
||||
* 1. This software is for development use only under a valid license
|
||||
* from BladeX.
|
||||
* <p>
|
||||
* 2. Redistribution of this software's source code to any third party
|
||||
* without a commercial license is strictly prohibited.
|
||||
* <p>
|
||||
* 3. Licensees may copyright their own code but cannot use segments
|
||||
* from this software for such purposes. Copyright of this software
|
||||
* remains with BladeX.
|
||||
* <p>
|
||||
* Using this software signifies agreement to this License, and the software
|
||||
* must not be used for illegal purposes.
|
||||
* <p>
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
|
||||
* not liable for any claims arising from secondary or illegal development.
|
||||
* <p>
|
||||
* Author: Chill Zhuang (bladejava@qq.com)
|
||||
*/
|
||||
package org.springblade.transport.pojo.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.springblade.core.tenant.mp.TenantEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* HCS 附件转传映射实体类(C103-2 转传取得合规附件ID,单附件行级,照金蝶附件同步表设计)
|
||||
* <p>
|
||||
* 仅落成功记录:HCS 转传任一附件失败即抛异常整单重试(失败原因落单据 hcs_sync_msg),故无失败态字段。
|
||||
*
|
||||
* @author Chill
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("blade_hcs_attachment_sync")
|
||||
@Schema(description = "HCS附件转传映射")
|
||||
public class HcsAttachmentSync extends TenantEntity {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
/**
|
||||
* 业务单据类型(contract/payment/invoice-application/invoice-receipt)
|
||||
*/
|
||||
private String bizType;
|
||||
/**
|
||||
* 业务单据id
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long bizId;
|
||||
/**
|
||||
* 附件幂等键(url|link|fileUrl|downloadUrl|uid|originalName|name 依次取首个非空)
|
||||
*/
|
||||
private String attachmentKey;
|
||||
/**
|
||||
* 附件名称(展示/排查用)
|
||||
*/
|
||||
private String attachmentName;
|
||||
/**
|
||||
* 合规附件ID(C103-2 返回 fdId)
|
||||
*/
|
||||
private String fdId;
|
||||
/**
|
||||
* 最近转传时间
|
||||
*/
|
||||
private LocalDateTime syncTime;
|
||||
}
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
/**
|
||||
* BladeX Commercial License Agreement
|
||||
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
|
||||
* <p>
|
||||
* Use of this software is governed by the Commercial License Agreement
|
||||
* obtained after purchasing a license from BladeX.
|
||||
* <p>
|
||||
* 1. This software is for development use only under a valid license
|
||||
* from BladeX.
|
||||
* <p>
|
||||
* 2. Redistribution of this software's source code to any third party
|
||||
* without a commercial license is strictly prohibited.
|
||||
* <p>
|
||||
* 3. Licensees may copyright their own code but cannot use segments
|
||||
* from this software for such purposes. Copyright of this software
|
||||
* remains with BladeX.
|
||||
* <p>
|
||||
* Using this software signifies agreement to this License, and the software
|
||||
* must not be used for illegal purposes.
|
||||
* <p>
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
|
||||
* not liable for any claims arising from secondary or illegal development.
|
||||
* <p>
|
||||
* Author: Chill Zhuang (bladejava@qq.com)
|
||||
*/
|
||||
package org.springblade.transport.pojo.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* HCS 风险/额度校验留痕实体类(照 ops 日志惯例,仅插入不改)
|
||||
*
|
||||
* @author Chill
|
||||
*/
|
||||
@Data
|
||||
@TableName("blade_hcs_check_log")
|
||||
@Schema(description = "HCS 风险/额度校验留痕")
|
||||
public class HcsContractCheckLog implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
||||
@Schema(description = "主键")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "租户ID")
|
||||
private String tenantId;
|
||||
|
||||
@Schema(description = "业务类型 project/contract/payment")
|
||||
private String bizType;
|
||||
|
||||
@Schema(description = "业务单据ID")
|
||||
private Long bizId;
|
||||
|
||||
@Schema(description = "校验类型 risk=客商风险/credit=额度")
|
||||
private String checkType;
|
||||
|
||||
@Schema(description = "校验结果 pass=通过/fail=不通过/skip=跳过")
|
||||
private String result;
|
||||
|
||||
@Schema(description = "校验说明")
|
||||
private String msg;
|
||||
|
||||
@Schema(description = "合规系统链路追踪ID")
|
||||
private String traceId;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
}
|
||||
+101
@@ -0,0 +1,101 @@
|
||||
/**
|
||||
* BladeX Commercial License Agreement
|
||||
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
|
||||
* <p>
|
||||
* Use of this software is governed by the Commercial License Agreement
|
||||
* obtained after purchasing a license from BladeX.
|
||||
* <p>
|
||||
* 1. This software is for development use only under a valid license
|
||||
* from BladeX.
|
||||
* <p>
|
||||
* 2. Redistribution of this software's source code to any third party
|
||||
* without a commercial license is strictly prohibited.
|
||||
* <p>
|
||||
* 3. Licensees may copyright their own code but cannot use segments
|
||||
* from this software for such purposes. Copyright of this software
|
||||
* remains with BladeX.
|
||||
* <p>
|
||||
* Using this software signifies agreement to this License, and the software
|
||||
* must not be used for illegal purposes.
|
||||
* <p>
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
|
||||
* not liable for any claims arising from secondary or illegal development.
|
||||
* <p>
|
||||
* Author: Chill Zhuang (bladejava@qq.com)
|
||||
*/
|
||||
package org.springblade.transport.pojo.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldStrategy;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.springblade.core.tenant.mp.TenantEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 合同履约规则实体类(HCS 履约阶段,设计文档 §4.1,ADR-0002)
|
||||
* <p>
|
||||
* 合同维度的资金计划阶段,C103-9 行级同步的数据源:合同审批通过置 row_op=add,
|
||||
* 后续编辑按行差异置 add/update/delete,由扫描任务随合同链路同步;
|
||||
* 合规返回的阶段ID 必须持久化(hcsStageFdId),行更新/删除全靠它。
|
||||
*
|
||||
* @author Chill
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("blade_contract_exe_stage")
|
||||
@Schema(description = "合同履约规则(HCS 履约阶段)")
|
||||
public class HcsContractExeStage extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
@Schema(description = "合同ID")
|
||||
private Long contractId;
|
||||
|
||||
@Schema(description = "履约类型 payment=付款/collection=收款")
|
||||
private String performType;
|
||||
|
||||
@Schema(description = "款项性质 prepayment/progress/acceptance/retention")
|
||||
private String fundNature;
|
||||
|
||||
@Schema(description = "款项金额(元,付款审批通过按申请付款金额累加更新)")
|
||||
private BigDecimal fundAmount;
|
||||
|
||||
@Schema(description = "计划资金日期")
|
||||
private LocalDateTime fundDate;
|
||||
|
||||
@Schema(description = "开票规则(如 payFirst)")
|
||||
private String invoiceRule;
|
||||
|
||||
@Schema(description = "账期")
|
||||
private Integer invoiceCycle;
|
||||
|
||||
@Schema(description = "金额类型")
|
||||
private String fundType;
|
||||
|
||||
@Schema(description = "是否完成")
|
||||
private Integer isFinish;
|
||||
|
||||
@Schema(description = "行级同步操作 none/add/update/delete")
|
||||
private String rowOp;
|
||||
|
||||
@Schema(description = "合规阶段ID(C103-9 返回,update/delete 必用)")
|
||||
private String hcsStageFdId;
|
||||
|
||||
@Schema(description = "同步状态 unsynced/synced/failed")
|
||||
private String hcsSyncStatus;
|
||||
|
||||
@Schema(description = "同步结果信息/失败原因")
|
||||
@TableField(insertStrategy = FieldStrategy.ALWAYS, updateStrategy = FieldStrategy.ALWAYS)
|
||||
private String hcsSyncMsg;
|
||||
|
||||
}
|
||||
+10
@@ -183,4 +183,14 @@ public class InvoiceApplication extends TenantEntity {
|
||||
* 作废原因,驳回时记录驳回原因
|
||||
*/
|
||||
private String voidReason;
|
||||
/** 合规系统单据ID(fdId) */
|
||||
private String hcsFdId;
|
||||
/** 合规同步状态:unsynced 待同步 / synced 已同步 / failed 同步失败 */
|
||||
private String hcsSyncStatus;
|
||||
/** 合规推送失败重试次数 */
|
||||
private Integer hcsRetryCount;
|
||||
/** 合规最近同步时间 */
|
||||
private LocalDateTime hcsSyncTime;
|
||||
/** 合规最近同步结果信息/失败原因 */
|
||||
private String hcsSyncMsg;
|
||||
}
|
||||
|
||||
+14
@@ -180,4 +180,18 @@ public class InvoiceReceipt extends TenantEntity {
|
||||
* 作废原因
|
||||
*/
|
||||
private String voidReason;
|
||||
/** 合规系统单据ID(fdId) */
|
||||
private String hcsFdId;
|
||||
/** 合规同步状态:unsynced 待同步 / synced 已同步 / failed 同步失败 */
|
||||
private String hcsSyncStatus;
|
||||
/** 合规推送失败重试次数 */
|
||||
private Integer hcsRetryCount;
|
||||
/** 合规最近同步时间 */
|
||||
private LocalDateTime hcsSyncTime;
|
||||
/** 合规最近同步结果信息/失败原因 */
|
||||
private String hcsSyncMsg;
|
||||
/** 合规推送合同ID(应付结算回溯不到时人工补录,D13) */
|
||||
private Long hcsContractId;
|
||||
/** 合规推送合同编号(应付结算回溯不到时人工补录,D13) */
|
||||
private String hcsContractNo;
|
||||
}
|
||||
|
||||
+23
@@ -33,6 +33,7 @@ import org.springblade.core.tenant.mp.TenantEntity;
|
||||
import java.io.Serial;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/** 付款申请实体。 @author Chill */
|
||||
@Data
|
||||
@@ -120,4 +121,26 @@ public class PaymentApplication extends TenantEntity {
|
||||
private String attachmentsJson;
|
||||
/** 备注 */
|
||||
private String remark;
|
||||
/** 合规系统单据ID(fdId) */
|
||||
private String hcsFdId;
|
||||
/** 合规同步状态:unsynced 待同步 / synced 已同步 / failed 同步失败 */
|
||||
private String hcsSyncStatus;
|
||||
/** 合规推送失败重试次数 */
|
||||
private Integer hcsRetryCount;
|
||||
/** 合规最近同步时间 */
|
||||
private LocalDateTime hcsSyncTime;
|
||||
/** 合规最近同步结果信息/失败原因 */
|
||||
private String hcsSyncMsg;
|
||||
/** 额度校验结果:pass 通过 / over 超额(C106-1) */
|
||||
private String hcsCreditStatus;
|
||||
/** 额度校验说明(超额原因 fdMessage) */
|
||||
private String hcsCreditMsg;
|
||||
/** 额度校验时间 */
|
||||
private LocalDateTime hcsCreditTime;
|
||||
/** 结算付款特批流程ID(C106-3 返回,C106-4 必传) */
|
||||
private String hcsSpecFdId;
|
||||
/** 特批状态:none/need/pushing/processing/approved/rejected */
|
||||
private String hcsSpecStatus;
|
||||
/** 履约记录ID(C108-1 返回,C108-2 更新必传) */
|
||||
private String hcsPerfFdId;
|
||||
}
|
||||
|
||||
+23
@@ -198,4 +198,27 @@ public class ProjectApply extends TenantEntity {
|
||||
@Schema(description = "作废原因")
|
||||
private String voidReason;
|
||||
|
||||
@Schema(description = "合规系统单据ID(fdId)")
|
||||
private String hcsFdId;
|
||||
|
||||
@Schema(description = "合规同步状态 unsynced/synced/failed")
|
||||
private String hcsSyncStatus;
|
||||
|
||||
@Schema(description = "合规推送失败重试次数")
|
||||
@TableField(insertStrategy = FieldStrategy.ALWAYS, updateStrategy = FieldStrategy.ALWAYS)
|
||||
private Integer hcsRetryCount;
|
||||
|
||||
@Schema(description = "合规最近同步时间")
|
||||
private LocalDateTime hcsSyncTime;
|
||||
|
||||
@Schema(description = "合规最近同步结果信息/失败原因")
|
||||
@TableField(insertStrategy = FieldStrategy.ALWAYS, updateStrategy = FieldStrategy.ALWAYS)
|
||||
private String hcsSyncMsg;
|
||||
|
||||
@Schema(description = "金蝶项目ID(D902 项目金蝶同步结果回调回填)")
|
||||
private String kingdeeId;
|
||||
|
||||
@Schema(description = "金蝶项目编号(D902 项目金蝶同步结果回调回填)")
|
||||
private String kingdeeNumber;
|
||||
|
||||
}
|
||||
|
||||
+8
@@ -55,6 +55,14 @@ public class ContractManageVO extends ContractManage {
|
||||
@Schema(description = "到期快捷筛选")
|
||||
private String expireScope;
|
||||
|
||||
@TableField(exist = false)
|
||||
@Schema(description = "是否已同步金蝶(金蝶合同ID是否已回填)")
|
||||
private Boolean kingdeeSynced;
|
||||
|
||||
@TableField(exist = false)
|
||||
@Schema(description = "是否已同步合规(合规同步状态是否为 synced)")
|
||||
private Boolean hcsSynced;
|
||||
|
||||
@TableField(exist = false)
|
||||
@Schema(description = "生效类型筛选")
|
||||
private String effectiveType;
|
||||
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
* BladeX Commercial License Agreement
|
||||
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
|
||||
* <p>
|
||||
* Use of this software is governed by the Commercial License Agreement
|
||||
* obtained after purchasing a license from BladeX.
|
||||
* <p>
|
||||
* 1. This software is for development use only under a valid license
|
||||
* from BladeX.
|
||||
* <p>
|
||||
* 2. Redistribution of this software's source code to any third party
|
||||
* without a commercial license is strictly prohibited.
|
||||
* <p>
|
||||
* 3. Licensees may copyright their own code but cannot use segments
|
||||
* from this software for such purposes. Copyright of this software
|
||||
* remains with BladeX.
|
||||
* <p>
|
||||
* Using this software signifies agreement to this License, and the software
|
||||
* must not be used for illegal purposes.
|
||||
* <p>
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
|
||||
* not liable for any claims arising from secondary or illegal development.
|
||||
* <p>
|
||||
* Author: Chill Zhuang (bladejava@qq.com)
|
||||
*/
|
||||
package org.springblade.transport.pojo.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 客商风险展示 VO(C101-1 查询结果 + TMS 侧组装提示,前端接入设计 §3.3)
|
||||
* <p>
|
||||
* 内部组织类型客商默认无风险(不调 C101-1);外部客商高风险/黑名单时 risky=true 并返回 riskTip
|
||||
*
|
||||
* @author Chill
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "客商风险展示")
|
||||
public class CustomerRiskVO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "客商编号")
|
||||
private String customerCode;
|
||||
|
||||
@Schema(description = "客商类型:internal内部组织(默认无风险)/external外部客商")
|
||||
private String customerKind;
|
||||
|
||||
@Schema(description = "客商名称")
|
||||
private String customerName;
|
||||
|
||||
@Schema(description = "黑名单状态:yes/no")
|
||||
private String fdBlackStatus;
|
||||
|
||||
@Schema(description = "风险等级:0=低风险,1=中风险,2=高风险")
|
||||
private String fdRiskLevel;
|
||||
|
||||
@Schema(description = "风险等级名称(服务端转义:黑名单/高风险/中风险/低风险,黑名单优先;无等级为空)")
|
||||
private String riskLevelName;
|
||||
|
||||
@Schema(description = "是否高风险/黑名单客商(外部客商专用,内部组织恒为 false)")
|
||||
private Boolean risky;
|
||||
|
||||
@Schema(description = "风险客商提示文案(基本信息备注后展示,安全客商为空)")
|
||||
private String riskTip;
|
||||
|
||||
}
|
||||
+8
@@ -86,6 +86,14 @@ public class ProjectApplyVO extends ProjectApply {
|
||||
@Schema(description = "是否仅查询可用于合同选择的项目(含临时项目与正式审批通过项目)")
|
||||
private Boolean contractSelectable;
|
||||
|
||||
@TableField(exist = false)
|
||||
@Schema(description = "是否已同步金蝶(金蝶项目ID是否已回填)")
|
||||
private Boolean kingdeeSynced;
|
||||
|
||||
@TableField(exist = false)
|
||||
@Schema(description = "是否已同步合规(合规同步状态是否为 synced)")
|
||||
private Boolean hcsSynced;
|
||||
|
||||
@TableField(exist = false)
|
||||
@Schema(description = "资金使用风险等级:high、medium、none")
|
||||
private String fundUseRisk;
|
||||
|
||||
Reference in New Issue
Block a user