Commit 224ed2bb authored by pchxue's avatar pchxue

迁移问题处理

parent 16eab8bb
package com.yonde.dcs.common.vo; package com.yonde.dcs.common.vo;
import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.time.LocalDateTime;
import java.util.ArrayList;
import cn.hutool.core.convert.Convert;
import com.yonde.dex.basedata.entity.annotation.XmlElementProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.annotation.JsonUnwrapped;
import lombok.ToString;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.math.BigInteger;
import org.springframework.data.annotation.Transient;
import lombok.experimental.Delegate;
import javax.xml.bind.annotation.*;
import javax.xml.bind.annotation.XmlAttribute;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.yonde.dex.basedata.entity.annotation.DexEmbedded; import com.yonde.dex.basedata.entity.xmladapters.LocalDateTimeXmlAdapter;
import com.yonde.dex.basedata.entity.annotation.ReferenceProperty; import lombok.Data;
import com.yonde.dex.basedata.entity.annotation.RelationProperty; import com.yonde.dex.basedata.entity.annotation.*;
import com.yonde.dex.basedata.entity.annotation.VersionProperty; import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import com.yonde.dex.basedata.entity.vo.IdOnlyVO;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.TypeReference;
import com.yonde.dex.basedata.entity.data.VersionRelationType; import com.yonde.dex.basedata.entity.data.VersionRelationType;
import com.yonde.dcs.common.vo.ExtInterfaceVO;
import com.yonde.dex.basedata.entity.vo.DxIdVOEmbeddable; import com.yonde.dex.basedata.entity.vo.DxIdVOEmbeddable;
import com.yonde.dex.basedata.entity.vo.IdOnlyVO; import com.yonde.dex.context.plugin.common.entity.DxContextVOEmbeddable;
import com.yonde.dex.basedata.entity.vo.IdVO;
import com.yonde.dex.dfs.objfilelink.plugin.common.entity.DxObjFileLinkVOEmbeddable;
import com.yonde.dex.dfs.objfilelink.plugin.common.entity.DxObjFileLinkVOHolder; import com.yonde.dex.dfs.objfilelink.plugin.common.entity.DxObjFileLinkVOHolder;
import com.yonde.dex.lcycle.plugin.common.entity.DxLifecycleManageBaseVOEmbeddable; import com.yonde.dex.context.plugin.common.entity.DxContextVOHolder;
import com.yonde.dex.container.folder.plugin.common.entity.DxObjFolderVOEmbeddable;
import com.yonde.dex.version.plugin.common.entity.DxIterationVOEmbeddable;
import com.yonde.dex.basedata.entity.users.DxUserVO;
import com.yonde.dcs.common.vo.ExtApplicantLinkVO;
import com.yonde.dex.lcycle.plugin.common.entity.DxLifecycleManageBaseVOHolder; import com.yonde.dex.lcycle.plugin.common.entity.DxLifecycleManageBaseVOHolder;
import com.yonde.dex.logicdelete.plugin.common.entity.DxLogicDeleteVOEmbeddable; import com.yonde.dex.lcycle.plugin.common.entity.DxLifecycleManageBaseVOEmbeddable;
import com.yonde.dex.logicdelete.plugin.common.entity.DxLogicDeleteVOHolder; import com.yonde.dex.logicdelete.plugin.common.entity.DxLogicDeleteVOHolder;
import com.yonde.dex.logicdelete.plugin.common.entity.DxLogicDeleteVOEmbeddable;
import com.yonde.dex.basedata.entity.vo.IdVO;
import com.yonde.dex.user.common.vo.DxOrganizationVO; import com.yonde.dex.user.common.vo.DxOrganizationVO;
import com.yonde.dex.version.plugin.common.entity.DxIterationVOEmbeddable; import com.yonde.dex.container.folder.plugin.common.entity.DxObjFolderVOHolder;
import com.yonde.dex.dfs.objfilelink.plugin.common.entity.DxObjFileLinkVOEmbeddable;
import com.yonde.dex.version.plugin.common.entity.DxIterationVOHolder; import com.yonde.dex.version.plugin.common.entity.DxIterationVOHolder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.time.LocalDateTime;
import java.util.List;
/** /**
* @description: ExtApplicant-VO * @description: ExtApplicant-VO
* @author: dexadmin * @author: dexadmin
* @version: V * @version: V
* @date: 2024-7-15 15:32:39 * @date: 2024-8-15 16:14:30
**/ **/
@JsonTypeInfo( use = JsonTypeInfo.Id.CLASS, property = "dxClassname", visible = true, defaultImpl = ExtApplicantVO.class) @JsonTypeInfo( use = JsonTypeInfo.Id.CLASS, property = "dxClassname", visible = true, defaultImpl = ExtApplicantVO.class)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
@ToString(callSuper = true) @ToString(callSuper = true)
public class ExtApplicantVO extends IdOnlyVO implements IdVO ,DxLifecycleManageBaseVOHolder ,DxObjFileLinkVOHolder ,DxIterationVOHolder<ExtApplicantVO> ,DxLogicDeleteVOHolder{ public class ExtApplicantVO extends IdOnlyVO implements IdVO ,DxContextVOHolder ,DxLifecycleManageBaseVOHolder ,DxObjFileLinkVOHolder ,DxObjFolderVOHolder ,DxIterationVOHolder<ExtApplicantVO> ,DxLogicDeleteVOHolder{
public static final String DX_CONTEXT_EMBEDDABLE_PROP_NAME = "dxContextEmbeddable";
public static final String DX_OBJ_FILE_LINK_EMBEDDABLE_PROP_NAME = "dxObjFileLinkEmbeddable"; public static final String DX_OBJ_FILE_LINK_EMBEDDABLE_PROP_NAME = "dxObjFileLinkEmbeddable";
public static final String DX_OBJ_FOLDER_EMBEDDABLE_PROP_NAME = "dxObjFolderEmbeddable";
public static final String DX_LIFECYCLE_MANAGE_BASE_EMBEDDABLE_PROP_NAME = "dxLifecycleManageBaseEmbeddable"; public static final String DX_LIFECYCLE_MANAGE_BASE_EMBEDDABLE_PROP_NAME = "dxLifecycleManageBaseEmbeddable";
public static final String DX_ID_EMBEDDABLE_PROP_NAME = "dxIdEmbeddable"; public static final String DX_ID_EMBEDDABLE_PROP_NAME = "dxIdEmbeddable";
public static final String DX_LOGIC_DELETE_EMBEDDABLE_PROP_NAME = "dxLogicDeleteEmbeddable"; public static final String DX_LOGIC_DELETE_EMBEDDABLE_PROP_NAME = "dxLogicDeleteEmbeddable";
...@@ -56,101 +81,115 @@ public class ExtApplicantVO extends IdOnlyVO implements IdVO ,DxLifecycleManageB ...@@ -56,101 +81,115 @@ public class ExtApplicantVO extends IdOnlyVO implements IdVO ,DxLifecycleManageB
public static final String TYPE_PROP_NAME = "type"; public static final String TYPE_PROP_NAME = "type";
/** /**
* 扩展VO属性 * 扩展VO属性
*/ */
@DexEmbedded()
@JsonIgnore
private DxContextVOEmbeddable dxContextEmbeddable;
/**
* 扩展VO属性
*/
@DexEmbedded() @DexEmbedded()
@JsonIgnore @JsonIgnore
private DxObjFileLinkVOEmbeddable dxObjFileLinkEmbeddable; private DxObjFileLinkVOEmbeddable dxObjFileLinkEmbeddable;
/** /**
* 扩展VO属性 * 扩展VO属性
*/ */
@DexEmbedded()
@JsonIgnore
private DxObjFolderVOEmbeddable dxObjFolderEmbeddable;
/**
* 扩展VO属性
*/
@DexEmbedded() @DexEmbedded()
@JsonIgnore @JsonIgnore
private DxLifecycleManageBaseVOEmbeddable dxLifecycleManageBaseEmbeddable; private DxLifecycleManageBaseVOEmbeddable dxLifecycleManageBaseEmbeddable;
/** /**
* dao扩展对象 * dao扩展对象
*/ */
@DexEmbedded() @DexEmbedded()
@JsonIgnore @JsonIgnore
private DxIdVOEmbeddable dxIdEmbeddable; private DxIdVOEmbeddable dxIdEmbeddable;
/** /**
* 扩展VO属性 * 扩展VO属性
*/ */
@DexEmbedded() @DexEmbedded()
@JsonIgnore @JsonIgnore
private DxLogicDeleteVOEmbeddable dxLogicDeleteEmbeddable; private DxLogicDeleteVOEmbeddable dxLogicDeleteEmbeddable;
/** /**
* 扩展VO属性 * 扩展VO属性
*/ */
@DexEmbedded() @DexEmbedded()
@JsonIgnore @JsonIgnore
private DxIterationVOEmbeddable<ExtApplicantVO> dxIterationEmbeddable; private DxIterationVOEmbeddable<ExtApplicantVO> dxIterationEmbeddable;
/** /**
* 申请方 * 申请方
*/ */
@ReferenceProperty(baseProperty = "applicantOrgId") @ReferenceProperty(baseProperty = "applicantOrgId")
@VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.NONE) @VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.NONE)
private DxOrganizationVO applicantOrg; private DxOrganizationVO applicantOrg;
/** /**
* 申请方 * 申请方
*/ */
private Long applicantOrgId; private Long applicantOrgId;
/** /**
* 申请方 * 申请方
*/ */
private String applicantOrgIdType; private String applicantOrgIdType;
/** /**
* 申请内容 * 申请内容
*/ */
private String applicatContent; private String applicatContent;
/** /**
* 设计阶段 * 设计阶段
*/ */
private String design; private String design;
/** /**
* 接口单集合 * 接口单集合
*/ */
@RelationProperty(refProperty = "extApplicant") @RelationProperty(refProperty = "extApplicant")
@VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.ITERATION) @VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.ITERATION)
private List<ExtInterfaceVO> extInterfaces; private List<ExtInterfaceVO> extInterfaces;
/** /**
* 提资方集合 * 提资方集合
*/ */
private String providers; private String providers;
/** /**
* 申请内容link集合 * 申请内容link集合
*/ */
@RelationProperty(refProperty = "source") @RelationProperty(refProperty = "source")
@VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.NONE) @VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.NONE)
private List<ExtApplicantLinkVO> sourceExtApplicantLink; private List<ExtApplicantLinkVO> sourceExtApplicantLink;
/** /**
* 要求提交日期 * 要求提交日期
*/ */
private LocalDateTime submitDate; private LocalDateTime submitDate;
/** /**
* 申请内容link集合 * 申请内容link集合
*/ */
@RelationProperty(refProperty = "target") @RelationProperty(refProperty = "target")
@VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.NONE) @VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.NONE)
private List<ExtApplicantLinkVO> targetExtApplicantLink; private List<ExtApplicantLinkVO> targetExtApplicantLink;
/** /**
* 类型 * 类型
*/ */
private String type; private String type;
} }
......
package com.yonde.dcs.common.vo; package com.yonde.dcs.common.vo;
import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.time.LocalDateTime;
import java.util.ArrayList;
import cn.hutool.core.convert.Convert;
import com.yonde.dex.basedata.entity.annotation.XmlElementProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.annotation.JsonUnwrapped;
import lombok.ToString;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.math.BigInteger;
import org.springframework.data.annotation.Transient;
import lombok.experimental.Delegate;
import javax.xml.bind.annotation.*;
import javax.xml.bind.annotation.XmlAttribute;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.yonde.dex.basedata.entity.annotation.DexEmbedded; import com.yonde.dex.basedata.entity.xmladapters.LocalDateTimeXmlAdapter;
import com.yonde.dex.basedata.entity.annotation.ReferenceProperty; import lombok.Data;
import com.yonde.dex.basedata.entity.annotation.RelationProperty; import com.yonde.dex.basedata.entity.annotation.*;
import com.yonde.dex.basedata.entity.annotation.VersionProperty; import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import com.yonde.dex.basedata.entity.vo.IdOnlyVO;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.TypeReference;
import com.yonde.dex.basedata.entity.data.VersionRelationType; import com.yonde.dex.basedata.entity.data.VersionRelationType;
import com.yonde.dex.basedata.entity.vo.DxIdVOEmbeddable; import com.yonde.dex.basedata.entity.vo.DxIdVOEmbeddable;
import com.yonde.dex.basedata.entity.vo.IdOnlyVO; import com.yonde.dex.context.plugin.common.entity.DxContextVOEmbeddable;
import com.yonde.dex.basedata.entity.vo.IdVO;
import com.yonde.dex.dfs.objfilelink.plugin.common.entity.DxObjFileLinkVOEmbeddable;
import com.yonde.dex.dfs.objfilelink.plugin.common.entity.DxObjFileLinkVOHolder; import com.yonde.dex.dfs.objfilelink.plugin.common.entity.DxObjFileLinkVOHolder;
import com.yonde.dex.lcycle.plugin.common.entity.DxLifecycleManageBaseVOEmbeddable; import com.yonde.dex.context.plugin.common.entity.DxContextVOHolder;
import com.yonde.dex.container.folder.plugin.common.entity.DxObjFolderVOEmbeddable;
import com.yonde.dex.version.plugin.common.entity.DxIterationVOEmbeddable;
import com.yonde.dex.basedata.entity.users.DxUserVO;
import com.yonde.dex.lcycle.plugin.common.entity.DxLifecycleManageBaseVOHolder; import com.yonde.dex.lcycle.plugin.common.entity.DxLifecycleManageBaseVOHolder;
import com.yonde.dex.logicdelete.plugin.common.entity.DxLogicDeleteVOEmbeddable; import com.yonde.dcs.common.vo.ExtInterfaceDocLinkVO;
import com.yonde.dex.lcycle.plugin.common.entity.DxLifecycleManageBaseVOEmbeddable;
import com.yonde.dex.logicdelete.plugin.common.entity.DxLogicDeleteVOHolder; import com.yonde.dex.logicdelete.plugin.common.entity.DxLogicDeleteVOHolder;
import com.yonde.dex.logicdelete.plugin.common.entity.DxLogicDeleteVOEmbeddable;
import com.yonde.dex.basedata.entity.vo.IdVO;
import com.yonde.dcs.common.vo.ExtApplicantVO;
import com.yonde.dcs.common.vo.ExtAuditInterfLinkVO;
import com.yonde.dex.user.common.vo.DxOrganizationVO; import com.yonde.dex.user.common.vo.DxOrganizationVO;
import com.yonde.dex.container.folder.plugin.common.entity.DxObjFolderVOHolder;
import com.yonde.dex.user.common.vo.DxUserInfoVO; import com.yonde.dex.user.common.vo.DxUserInfoVO;
import com.yonde.dex.version.plugin.common.entity.DxIterationVOEmbeddable; import com.yonde.dex.dfs.objfilelink.plugin.common.entity.DxObjFileLinkVOEmbeddable;
import com.yonde.dex.version.plugin.common.entity.DxIterationVOHolder; import com.yonde.dex.version.plugin.common.entity.DxIterationVOHolder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.time.LocalDateTime;
import java.util.List;
/** /**
* @description: ExtInterface-VO * @description: ExtInterface-VO
* @author: dexadmin * @author: dexadmin
* @version: V * @version: V
* @date: 2024-7-15 15:32:39 * @date: 2024-8-15 16:08:09
**/ **/
@JsonTypeInfo( use = JsonTypeInfo.Id.CLASS, property = "dxClassname", visible = true, defaultImpl = ExtInterfaceVO.class) @JsonTypeInfo( use = JsonTypeInfo.Id.CLASS, property = "dxClassname", visible = true, defaultImpl = ExtInterfaceVO.class)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
@ToString(callSuper = true) @ToString(callSuper = true)
public class ExtInterfaceVO extends IdOnlyVO implements DxIterationVOHolder<ExtInterfaceVO> ,IdVO ,DxLifecycleManageBaseVOHolder ,DxObjFileLinkVOHolder ,DxLogicDeleteVOHolder{ public class ExtInterfaceVO extends IdOnlyVO implements DxIterationVOHolder<ExtInterfaceVO> ,IdVO ,DxContextVOHolder ,DxLifecycleManageBaseVOHolder ,DxObjFileLinkVOHolder ,DxObjFolderVOHolder ,DxLogicDeleteVOHolder{
public static final String DX_CONTEXT_EMBEDDABLE_PROP_NAME = "dxContextEmbeddable";
public static final String DX_OBJ_FILE_LINK_EMBEDDABLE_PROP_NAME = "dxObjFileLinkEmbeddable"; public static final String DX_OBJ_FILE_LINK_EMBEDDABLE_PROP_NAME = "dxObjFileLinkEmbeddable";
public static final String DX_OBJ_FOLDER_EMBEDDABLE_PROP_NAME = "dxObjFolderEmbeddable";
public static final String DX_LIFECYCLE_MANAGE_BASE_EMBEDDABLE_PROP_NAME = "dxLifecycleManageBaseEmbeddable"; public static final String DX_LIFECYCLE_MANAGE_BASE_EMBEDDABLE_PROP_NAME = "dxLifecycleManageBaseEmbeddable";
public static final String DX_ID_EMBEDDABLE_PROP_NAME = "dxIdEmbeddable"; public static final String DX_ID_EMBEDDABLE_PROP_NAME = "dxIdEmbeddable";
public static final String DX_LOGIC_DELETE_EMBEDDABLE_PROP_NAME = "dxLogicDeleteEmbeddable"; public static final String DX_LOGIC_DELETE_EMBEDDABLE_PROP_NAME = "dxLogicDeleteEmbeddable";
...@@ -67,155 +93,169 @@ public class ExtInterfaceVO extends IdOnlyVO implements DxIterationVOHolder<ExtI ...@@ -67,155 +93,169 @@ public class ExtInterfaceVO extends IdOnlyVO implements DxIterationVOHolder<ExtI
public static final String TZRQ_PROP_NAME = "tzrq"; public static final String TZRQ_PROP_NAME = "tzrq";
/** /**
* 扩展VO属性 * 扩展VO属性
*/ */
@DexEmbedded()
@JsonIgnore
private DxContextVOEmbeddable dxContextEmbeddable;
/**
* 扩展VO属性
*/
@DexEmbedded() @DexEmbedded()
@JsonIgnore @JsonIgnore
private DxObjFileLinkVOEmbeddable dxObjFileLinkEmbeddable; private DxObjFileLinkVOEmbeddable dxObjFileLinkEmbeddable;
/** /**
* 扩展VO属性 * 扩展VO属性
*/ */
@DexEmbedded()
@JsonIgnore
private DxObjFolderVOEmbeddable dxObjFolderEmbeddable;
/**
* 扩展VO属性
*/
@DexEmbedded() @DexEmbedded()
@JsonIgnore @JsonIgnore
private DxLifecycleManageBaseVOEmbeddable dxLifecycleManageBaseEmbeddable; private DxLifecycleManageBaseVOEmbeddable dxLifecycleManageBaseEmbeddable;
/** /**
* dao扩展对象 * dao扩展对象
*/ */
@DexEmbedded() @DexEmbedded()
@JsonIgnore @JsonIgnore
private DxIdVOEmbeddable dxIdEmbeddable; private DxIdVOEmbeddable dxIdEmbeddable;
/** /**
* 扩展VO属性 * 扩展VO属性
*/ */
@DexEmbedded() @DexEmbedded()
@JsonIgnore @JsonIgnore
private DxLogicDeleteVOEmbeddable dxLogicDeleteEmbeddable; private DxLogicDeleteVOEmbeddable dxLogicDeleteEmbeddable;
/** /**
* 扩展VO属性 * 扩展VO属性
*/ */
@DexEmbedded() @DexEmbedded()
@JsonIgnore @JsonIgnore
private DxIterationVOEmbeddable<ExtInterfaceVO> dxIterationEmbeddable; private DxIterationVOEmbeddable<ExtInterfaceVO> dxIterationEmbeddable;
/** /**
* 申请方确认 * 申请方确认
*/ */
private String applicantConfirm; private String applicantConfirm;
/** /**
* 申请方确认意见 * 申请方确认意见
*/ */
private String applicantConfirmView; private String applicantConfirmView;
/** /**
* 申请方 * 申请方
*/ */
@ReferenceProperty(baseProperty = "applicantOrgId") @ReferenceProperty(baseProperty = "applicantOrgId")
@VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.NONE) @VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.NONE)
private DxOrganizationVO applicantOrg; private DxOrganizationVO applicantOrg;
/** /**
* 申请方 * 申请方
*/ */
private Long applicantOrgId; private Long applicantOrgId;
/** /**
* 申请方 * 申请方
*/ */
private String applicantOrgIdType; private String applicantOrgIdType;
/** /**
* 要求提交日期 * 要求提交日期
*/ */
private LocalDateTime applicatDate; private LocalDateTime applicatDate;
/** /**
* 申请方接口申请 * 申请方接口申请
*/ */
@ReferenceProperty(baseProperty = "extApplicantId") @ReferenceProperty(baseProperty = "extApplicantId")
@VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.ITERATION) @VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.ITERATION)
private ExtApplicantVO extApplicant; private ExtApplicantVO extApplicant;
/** /**
* 申请方接口申请 * 申请方接口申请
*/ */
private Long extApplicantId; private Long extApplicantId;
/** /**
* 申请方接口申请 * 申请方接口申请
*/ */
private String extApplicantIdType; private String extApplicantIdType;
/** /**
* 签审接口单link集合 * 签审接口单link集合
*/ */
@RelationProperty(refProperty = "target") @RelationProperty(refProperty = "target")
@VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.NONE) @VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.NONE)
private List<ExtAuditInterfLinkVO> extAuditInterfLinks; private List<ExtAuditInterfLinkVO> extAuditInterfLinks;
/** /**
* 接口单文档link集合 * 接口单文档link集合
*/ */
@RelationProperty(refProperty = "source") @RelationProperty(refProperty = "source")
@VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.NONE) @VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.NONE)
private List<ExtInterfaceDocLinkVO> extInterfaceDocLinks; private List<ExtInterfaceDocLinkVO> extInterfaceDocLinks;
/** /**
* 接口单类型 * 接口单类型
*/ */
private String jkdlx; private String jkdlx;
/** /**
* 上一版本id * 上一版本id
*/ */
private Long previousId; private Long previousId;
/** /**
* 提资内容 * 提资内容
*/ */
private String provideContent; private String provideContent;
/** /**
* 提资人 * 提资人
*/ */
@ReferenceProperty(baseProperty = "providerId") @ReferenceProperty(baseProperty = "providerId")
@VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.NONE) @VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.NONE)
private DxUserInfoVO provider; private DxUserInfoVO provider;
/** /**
* 提资人 * 提资人
*/ */
private Long providerId; private Long providerId;
/** /**
* 提资人 * 提资人
*/ */
private String providerIdType; private String providerIdType;
/** /**
* 提资方 * 提资方
*/ */
@ReferenceProperty(baseProperty = "providerOrgId") @ReferenceProperty(baseProperty = "providerOrgId")
@VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.NONE) @VersionProperty(curVersion = VersionRelationType.ITERATION, refVersion = VersionRelationType.NONE)
private DxOrganizationVO providerOrg; private DxOrganizationVO providerOrg;
/** /**
* 提资方 * 提资方
*/ */
private Long providerOrgId; private Long providerOrgId;
/** /**
* 提资方 * 提资方
*/ */
private String providerOrgIdType; private String providerOrgIdType;
/** /**
* 提资日期 * 提资日期
*/ */
private LocalDateTime tzrq; private LocalDateTime tzrq;
} }
......
...@@ -160,9 +160,14 @@ ...@@ -160,9 +160,14 @@
<version>5.2.0</version> <version>5.2.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.yonde.dex</groupId> <groupId>com.yonde.dex</groupId>
<artifactId>dex-wfc-common</artifactId> <artifactId>dex-wfc-common</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.luhuiguo</groupId>
<artifactId>aspose-words</artifactId>
<version>23.1</version>
</dependency>
</dependencies> </dependencies>
</project> </project>
...@@ -10,12 +10,18 @@ import com.yonde.dcs.core.service.ExtSendFormLinkService; ...@@ -10,12 +10,18 @@ import com.yonde.dcs.core.service.ExtSendFormLinkService;
import com.yonde.dcs.core.util.ExtDocUtil; import com.yonde.dcs.core.util.ExtDocUtil;
import com.yonde.dcs.core.util.ExtWfcUtil; import com.yonde.dcs.core.util.ExtWfcUtil;
import com.yonde.dcs.document.common.entity.vo.DxDocumentVO; import com.yonde.dcs.document.common.entity.vo.DxDocumentVO;
import com.yonde.dcs.esign.plugin.message.WfcSignMessage;
import com.yonde.dcs.plan.common.vo.ExtPlanVO; import com.yonde.dcs.plan.common.vo.ExtPlanVO;
import com.yonde.dex.basedata.entity.api.ApiResult; import com.yonde.dex.basedata.entity.api.ApiResult;
import com.yonde.dex.basedata.entity.vo.IdVO; import com.yonde.dex.basedata.entity.vo.IdVO;
import com.yonde.dex.taskmonitor.api.data.TaskMessage;
import com.yonde.dex.taskmonitor.api.data.TaskMessageContext;
import com.yonde.dex.taskmonitor.api.data.TaskMessageStatus;
import com.yonde.dex.taskmonitor.api.interfaces.TaskMessageBuilder;
import com.yonde.dex.taskmonitor.api.interfaces.TaskMessagePusher; import com.yonde.dex.taskmonitor.api.interfaces.TaskMessagePusher;
import com.yonde.dex.wfc.common.vo.DxWfProcessSearchVO; import com.yonde.dex.wfc.common.vo.DxWfProcessSearchVO;
import com.yonde.dex.wfc.common.vo.DxWfProcessVO; import com.yonde.dex.wfc.common.vo.DxWfProcessVO;
import com.yonde.dex.wfc.common.vo.DxWfTaskContext;
import com.yonde.dex.wfc.feign.api.WfcProcessFeign; import com.yonde.dex.wfc.feign.api.WfcProcessFeign;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -26,8 +32,8 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -26,8 +32,8 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.Date; import java.time.LocalDateTime;
import java.util.Map; import java.util.*;
/** /**
* @program: service * @program: service
...@@ -70,14 +76,29 @@ public class ExtAutoTaskController { ...@@ -70,14 +76,29 @@ public class ExtAutoTaskController {
pboKey = "doc"; pboKey = "doc";
signNode = "Activity_0st1yf8"; signNode = "Activity_0st1yf8";
} }
// DxWfTaskContext dxWfTaskContext = new DxWfTaskContext(dxWfProcessVO.getBusinessKey(), dxWfProcessVO.getId(), dxWfProcessVO.getProcessDef().getId(), signNode, null, (Map) null);
//todo 在4.1中未找到WfcSignMessage 注释了71-74行 // TODO: WfcSignMessageBuilder不存在,根据2.1代码 new TaskMessage();
// WfcSignMessage wfcSignMessage = new WfcSignMessage(new HashMap()); // WfTaskContext wfTaskContext = new WfTaskContext(wfProcessInstVO.getBusinessKey(), wfProcessInstVO.getId(), wfProcessInstVO.getProcessDef().getId(), signNode, null, (Map) null);
// wfcSignMessage.setWfTaskContext(dxWfTaskContext); // WfcSignMessage wfcSignMessage = new WfcSignMessage(new HashMap());
// wfcSignMessage.setWfTaskContext(wfTaskContext);
// wfcSignMessage.setSignType(pboKey); // wfcSignMessage.setSignType(pboKey);
// TaskMessage taskMessage = (new WfcSignMessageBuilder()).newTasks(wfcSignMessage); // TaskMessage taskMessage = (new WfcSignMessageBuilder()).newTasks(wfcSignMessage);
// this.taskMessagePusher.sendMessage(taskMessage); DxWfTaskContext dxWfTaskContext = new DxWfTaskContext();
this.taskMessagePusher.sendMessage(null); dxWfTaskContext.setPboKey(dxWfProcessVO.getBusinessKey());
dxWfTaskContext.setProcessId(dxWfProcessVO.getId());
dxWfTaskContext.setProcessDefId( dxWfProcessVO.getProcDefId());
dxWfTaskContext.setCurrentActivityId(signNode);
WfcSignMessage wfcSignMessage = new WfcSignMessage(new HashMap<>());
wfcSignMessage.setWfTaskContext(dxWfTaskContext);
wfcSignMessage.setSignType(pboKey);
TaskMessage taskMessage = new TaskMessage();
taskMessage.setStartTime(LocalDateTime.now());
taskMessage.setFunKey("sign");
taskMessage.setDetails((List<Map<String, Object>>) wfcSignMessage.getContext());
taskMessage.setProcessKey(TaskMessageStatus.START.name());
taskMessage.setStatus(TaskMessageStatus.START);
taskMessage.setUpdateTime(taskMessage.getStartTime());
this.taskMessagePusher.sendMessage(taskMessage);
return ApiResult.ok("重新发送电子签名请求成功!"); return ApiResult.ok("重新发送电子签名请求成功!");
} else { } else {
return ApiResult.ok("该对象未走签审流程!"); return ApiResult.ok("该对象未走签审流程!");
......
package com.yonde.dcs.core.factory;
import cn.hutool.core.io.FileUtil;
import com.alibaba.fastjson.JSONObject;
import com.yonde.dcs.core.constants.Constants;
import com.yonde.dcs.core.constants.SignConstants;
import com.yonde.dcs.core.service.ExtDocService;
import com.yonde.dcs.core.word.ImportWordService;
import com.yonde.dcs.document.common.entity.vo.DxDocumentVO;
import com.yonde.dex.dfs.vo.ObjFileLinkVO;
import com.yonde.dex.wfc.common.vo.DxWfActivityVO;
import com.yonde.dex.wfc.common.vo.DxWfProcessInfoVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author xfchai
* @ClassName ContactListUtils.java
* @Description 技术联系单填充业务数据类
* @createTime 2021/11/22 14:20:00
*/
@Component
public class ContactListUtils {
@Autowired
private ExtDocService extDocService;
@Autowired
private ImportWordService importWordService;
/**
* 填充数据
*
* @param
* @return
*/
public void settingData(DxDocumentVO v, DxWfProcessInfoVO wfProcessInfoVO) {
String path = Constants.MTEMPLATE_ABSOLUTE_PATH;
String file = v.getSubTypeName();
String outFilePath = Constants.MERGER_FILE_ABSOLUTE_PATH + v.getSubTypeName() + "\\" + v.getNumber() + "\\";
//生成特定的文档目录,保存生成的word文件
FileUtil.mkdir(outFilePath);
//获取动态属性
Map<String, Object> dynamicAttrs = v.getDynamicAttrs();
String category = Objects.isNull(dynamicAttrs.get("category")) ? "" : (String) dynamicAttrs.get("category");
String content = Objects.isNull(dynamicAttrs.get("content")) ? "" : (String) dynamicAttrs.get("content");
String recipient = Objects.isNull(dynamicAttrs.get("recipient")) ? "" : (String) dynamicAttrs.get("recipient");
JSONObject jsonObject = new JSONObject();
//密级
String secretCode = v.getSecretCode();
jsonObject.put("SecretCode", extDocService.searchDictDataByDictCode(Constants.SECRET_CODE, secretCode));
//项目代号
String projectCode = ObjectUtils.isEmpty(v.getDxDocumentExpand().getProjectCode()) ? "" : v.getDxDocumentExpand().getProjectCode();
jsonObject.put("projectCode", projectCode);
//类别
jsonObject.put("category", extDocService.searchDictDataByDictCode(Constants.CATEGORY, category));
//技术联系单编号
jsonObject.put("number", ObjectUtils.isEmpty(v.getNumber()) ? "" : v.getNumber());
//技术联系单名称
jsonObject.put("name", ObjectUtils.isEmpty(v.getName()) ? "" : v.getName());
//页数
jsonObject.put("pages", v.getDxDocumentExpand().getAttachPages());
//判断类型为:内部外部
String type = (String) dynamicAttrs.get("type");
//拼接字符
if (Constants.INTER_CONTACT.equals(type)) {
List<String> proposingUnit = (ArrayList) dynamicAttrs.get("proposingUnit");
//内部-提出单位
jsonObject.put("proposingUnit", JoinUnitStr(proposingUnit));
List<String> interReceiveUnit = (ArrayList) dynamicAttrs.get("interReceiveUnit");
//内部-收件人单位
jsonObject.put("recipUnit", JoinUnitStr(interReceiveUnit));
} else {
//外部-提出单位
jsonObject.put("proposingUnit", "清华大学核研院");
//外部-收件人单位
jsonObject.put("recipUnit", this.generateProposer((String) dynamicAttrs.get("extReceiveUnit")));
}
//收件人
jsonObject.put("recipient", recipient);
//内容
jsonObject.put("content", content);
//备注
jsonObject.put("remark", ObjectUtils.isEmpty(v.getNote()) ? "" : v.getNote());
//校验技术联系单是否有内容附件
this.checkObjFileLinks(jsonObject, v.getObjFileLinks(), "");
//获取参与者
List<DxWfActivityVO> activities = wfProcessInfoVO.getActivityInfo();
if (!CollectionUtils.isEmpty(activities)) {
//写入签名数据
jsonObject.put("bz_photo", extDocService.getSignImage(activities, SignConstants.SIGN_KEY_PREPARED));
jsonObject.put("bz_date", extDocService.getEndDate(activities, SignConstants.SIGN_KEY_PREPARED));
jsonObject.put("sh_photo", extDocService.getSignImage(activities, SignConstants.SIGN_KEY_SH));
jsonObject.put("sh_date", extDocService.getEndDate(activities, SignConstants.SIGN_KEY_SH));
//分系统总师审核
jsonObject.put("fxtsh_photo", extDocService.getSignImage(activities, SignConstants.SIGN_KEY_FXTZSSH));
jsonObject.put("fxtsh_date", extDocService.getEndDate(activities, SignConstants.SIGN_KEY_FXTZSSH));
jsonObject.put("pz_photo", extDocService.getSignImage(activities, SignConstants.SIGN_KEY_APPROVED));
jsonObject.put("pz_date", extDocService.getEndDate(activities, SignConstants.SIGN_KEY_APPROVED));
//总体室审核
jsonObject.put("zts_photo", extDocService.getSignImage(activities, SignConstants.SIGN_KEY_ZTSSH));
jsonObject.put("zts_date", extDocService.getEndDate(activities, SignConstants.SIGN_KEY_ZTSSH));
}
//模板名称
importWordService.getWordAllTable(jsonObject, path + file + ".docx", outFilePath + "outFile.docx");
}
/**
* 校验是否有内容附件
*
* @param jsonObject
* @param objFileLinks
* @param attach
*/
private void checkObjFileLinks(JSONObject jsonObject, List<ObjFileLinkVO> objFileLinks, String attach) {
if (CollectionUtils.isEmpty(objFileLinks)) {
//对号
jsonObject.put("noselect", "\u0052");
//方框
jsonObject.put("select", "\u00A3");
} else {
List<ObjFileLinkVO> collect = objFileLinks.stream().filter(item ->
Constants.CONTACT_CONTENT_ATTACH.equals(item.getContentType())
).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(collect)) {
jsonObject.put("noselect", "\u00A3");
jsonObject.put("select", "\u0052");
} else {
//对号
jsonObject.put("noselect", "\u0052");
//方框
jsonObject.put("select", "\u00A3");
}
}
}
/**
* 获取内部技术联系单类型
*
* @param proposingUnit
* @return
*/
private String JoinUnitStr(List<String> proposingUnit) {
StringJoiner joiner = new StringJoiner(",");
if (!CollectionUtils.isEmpty(proposingUnit)) {
proposingUnit.stream().forEach(item -> {
joiner.add(item);
});
}
return joiner.toString();
}
/**
* 获取外部收文单位
*
* @param proposer
* @return
*/
private String generateProposer(String proposer) {
if (StringUtils.isEmpty(proposer)) {
return "";
}
//根据提出方获取提出方单位
String[] split = proposer.split(",");
//拼接字符
StringJoiner joiner = new StringJoiner(",");
for (String proSplit : split) {
if (proSplit.length() > 0) {
//字典为外单位
String s = extDocService.searchDictDataByDictCode(Constants.NCR_SUPPLIER, proSplit);
joiner.add(s);
}
}
return joiner.toString();
}
}
package com.yonde.dcs.core.factory;
import cn.hutool.core.io.FileUtil;
import com.alibaba.fastjson.JSONObject;
import com.yonde.dcs.core.constants.Constants;
import com.yonde.dcs.core.constants.SignConstants;
import com.yonde.dcs.core.service.ExtDocService;
import com.yonde.dcs.core.word.ImportWordService;
import com.yonde.dcs.document.common.entity.vo.DxDocumentVO;
import com.yonde.dex.wfc.common.vo.DxWfActivityVO;
import com.yonde.dex.wfc.common.vo.DxWfProcessInfoVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @author xfchai
* @ClassName DesignInputUtils.java
* @Description 设计输入资料单
* @createTime 2021/11/24 14:35:00
*/
@Component
public class DesignEnterUtils {
@Autowired
private ExtDocService extDocService;
@Autowired
private ImportWordService importWordService;
/**
* 填充数据
*
* @param
* @return
*/
public Map<String, Object> settingData(DxDocumentVO v, DxWfProcessInfoVO wfProcessInfoVO) {
String path = Constants.MTEMPLATE_ABSOLUTE_PATH;
String file = v.getSubTypeName();
String outFilePath = Constants.MERGER_FILE_ABSOLUTE_PATH + v.getSubTypeName() + "\\" + v.getNumber() + "\\";
//生成特定的文档目录,保存生成的word文件
FileUtil.mkdir(outFilePath);
//获取动态属性
Map<String, Object> dynamicAttrs = v.getDynamicAttrs();
String content = Objects.isNull(dynamicAttrs.get("content")) ? "" : (String) dynamicAttrs.get("content");
String designPhase = Objects.isNull(dynamicAttrs.get("designPhase")) ? "" : (String) dynamicAttrs.get("designPhase");
JSONObject jsonObject = new JSONObject();
//项目代号
String projectCode = ObjectUtils.isEmpty(v.getDxDocumentExpand().getProjectCode()) ? "" : v.getDxDocumentExpand().getProjectCode();
// jsonObject.put("projectCode", extDocService.searchDictDataByDictCode(Constants.PROJECT_CODE, projectCode));
jsonObject.put("projectCode", projectCode);
//设计阶段
jsonObject.put("designPhase", extDocService.searchDictDataByDictCode(Constants.DESIGN_STAGE, designPhase));
//编号
jsonObject.put("number", ObjectUtils.isEmpty(v.getNumber()) ? "" : v.getNumber());
//设计输入名称
jsonObject.put("name", ObjectUtils.isEmpty(v.getName()) ? "" : v.getName());
//内容
jsonObject.put("content", content);
//备注
jsonObject.put("remark", ObjectUtils.isEmpty(v.getNote()) ? "" : v.getNote());
//页数
jsonObject.put("pages",v.getDxDocumentExpand().getAttachPages());
//获取参与者
List<DxWfActivityVO> activities = wfProcessInfoVO.getActivityInfo();
if (!CollectionUtils.isEmpty(activities)) {
//写入签名数据
jsonObject.put("bz_photo", extDocService.getSignImage(activities, SignConstants.SIGN_KEY_PREPARED));
jsonObject.put("bz_date", extDocService.getEndDate(activities, SignConstants.SIGN_KEY_PREPARED));
jsonObject.put("sh_photo", extDocService.getSignImage(activities, SignConstants.SIGN_KEY_SH));
jsonObject.put("sh_date", extDocService.getEndDate(activities, SignConstants.SIGN_KEY_SH));
//总体室审核
jsonObject.put("zts_photo", extDocService.getSignImage(activities, SignConstants.SIGN_KEY_ZTSSH));
jsonObject.put("zts_date", extDocService.getEndDate(activities, SignConstants.SIGN_KEY_ZTSSH));
jsonObject.put("pz_photo", extDocService.getSignImage(activities, SignConstants.SIGN_KEY_APPROVED));
jsonObject.put("pz_date", extDocService.getEndDate(activities, SignConstants.SIGN_KEY_APPROVED));
}
//模板名称
importWordService.getWordAllTable(jsonObject, path + file + ".docx", outFilePath + "outFile.docx");
return jsonObject;
}
}
package com.yonde.dcs.core.factory;
import cn.hutool.core.io.FileUtil;
import com.alibaba.fastjson.JSONObject;
import com.yonde.dcs.core.constants.Constants;
import com.yonde.dcs.core.constants.SignConstants;
import com.yonde.dcs.core.service.ExtDocService;
import com.yonde.dcs.core.util.DateUtils;
import com.yonde.dcs.core.word.ImportWordService;
import com.yonde.dcs.document.common.entity.vo.DxDocumentVO;
import com.yonde.dex.wfc.common.vo.DxWfActivityVO;
import com.yonde.dex.wfc.common.vo.DxWfProcessInfoVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @author xfchai
* @ClassName WorkContactListUtils.java
* @Description 工作联系单
* @createTime 2021/11/22 15:15:00
*/
@Component
public class WorkContactListUtils {
@Autowired
private ExtDocService extDocService;
@Autowired
private ImportWordService importWordService;
/**
* 填充数据
*
* @param
* @return
*/
public JSONObject settingData(DxDocumentVO v, DxWfProcessInfoVO wfProcessInfoVO) {
String path = Constants.MTEMPLATE_ABSOLUTE_PATH;
String file = v.getSubTypeName();
String outFilePath = Constants.MERGER_FILE_ABSOLUTE_PATH + v.getSubTypeName() + "\\" + v.getNumber() + "\\";
//生成特定的文档目录,保存生成的word文件
FileUtil.mkdir(outFilePath);
//获取动态属性
Map<String, Object> dynamicAttrs = v.getDynamicAttrs();
String recipientFaxNo = Objects.isNull(dynamicAttrs.get("recipientFaxNo")) ? "" : (String) dynamicAttrs.get("recipientFaxNo");
String sender = Objects.isNull(dynamicAttrs.get("sender")) ? "" : (String) dynamicAttrs.get("sender");
String senderPeople = Objects.isNull(dynamicAttrs.get("senderPeople")) ? "" : (String) dynamicAttrs.get("senderPeople");
String senderPhone = Objects.isNull(dynamicAttrs.get("senderPhone")) ? "" : (String) dynamicAttrs.get("senderPhone");
String faxNumber = Objects.isNull(dynamicAttrs.get("faxNumber")) ? "" : (String) dynamicAttrs.get("faxNumber");
String content = Objects.isNull(dynamicAttrs.get("content")) ? "" : (String) dynamicAttrs.get("content");
String recipient = Objects.isNull(dynamicAttrs.get("recipient")) ? "" : (String) dynamicAttrs.get("recipient");
String recipientPhone = Objects.isNull(dynamicAttrs.get("recipientPhone")) ? "" : (String) dynamicAttrs.get("recipientPhone");
String sendTo = Objects.isNull(dynamicAttrs.get("sentTo")) ? "" : (String) dynamicAttrs.get("sentTo");
//是否需要回复
String needReply = Objects.isNull(dynamicAttrs.get("needReply")) ? "" : (String) dynamicAttrs.get("needReply");
String secretCode = v.getSecretCode();
JSONObject jsonObject = new JSONObject();
if ("false".equals(needReply)) {
//对号
jsonObject.put("noselect", "\u0052");
//方框
jsonObject.put("select", "\u00A3");
jsonObject.put("urgent", "\u00A3");
} else if ("true".equals(needReply)) {
//对号
jsonObject.put("select", "\u0052");
//方框
jsonObject.put("noselect", "\u00A3");
jsonObject.put("urgent", "\u00A3");
} else {
//对号
jsonObject.put("urgent", "\u0052");
//方框
jsonObject.put("noselect", "\u00A3");
jsonObject.put("select", "\u00A3");
}
//密级
jsonObject.put("SecretCode", extDocService.searchDictDataByDictCode(Constants.SECRET_CODE, secretCode));
//发出方
jsonObject.put("sender", sender);
//发出人
jsonObject.put("senderPeople", senderPeople);
//发出人联系电话
jsonObject.put("senderPhone", senderPhone);
//传真号码
jsonObject.put("faxNumber", faxNumber);
//工作联系单编号
jsonObject.put("number", ObjectUtils.isEmpty(v.getNumber()) ? "" : v.getNumber());
//发至
jsonObject.put("sentToName", extDocService.searchDictDataByDictCode(Constants.NCR_SUPPLIER, sendTo));
//接收人、联系人
jsonObject.put("recipient", recipient);
//联系电话
jsonObject.put("recipientPhone", recipientPhone);
//发送时间
jsonObject.put("sendDate", DateUtils.converLocalDateToString(v.getCreateTime()));
//传真号
jsonObject.put("recipientFaxNo", recipientFaxNo);
//内容
jsonObject.put("content", content);
//备注
jsonObject.put("remark", ObjectUtils.isEmpty(v.getNote()) ? "" : v.getNote());
//页数
jsonObject.put("pages", v.getDxDocumentExpand().getAttachPages());
//获取参与者
List<DxWfActivityVO> activities = wfProcessInfoVO.getActivityInfo();
if (!CollectionUtils.isEmpty(activities)) {
//写入签名数据
jsonObject.put("bz_photo", extDocService.getSignImage(activities, SignConstants.SIGN_KEY_PREPARED));
jsonObject.put("bz_date", extDocService.getEndDate(activities, SignConstants.SIGN_KEY_PREPARED));
jsonObject.put("sh_photo", extDocService.getSignImage(activities, SignConstants.SIGN_KEY_SH));
jsonObject.put("sh_date", extDocService.getEndDate(activities, SignConstants.SIGN_KEY_SH));
jsonObject.put("qf_photo", extDocService.getSignImage(activities, SignConstants.SIGN_KEY_QF));
jsonObject.put("qf_date", extDocService.getEndDate(activities, SignConstants.SIGN_KEY_QF));
}
//模板名称
importWordService.getWordAllTable(jsonObject, path + file + ".docx", outFilePath + "outFile.docx");
return jsonObject;
}
}
...@@ -319,7 +319,7 @@ public class ExtDocServiceImpl implements ExtDocService { ...@@ -319,7 +319,7 @@ public class ExtDocServiceImpl implements ExtDocService {
newVersionVo.setMasterId(sourceDoc.getMasterId()); newVersionVo.setMasterId(sourceDoc.getMasterId());
newVersionVo.setPredecessorId(sourceDoc.getId()); newVersionVo.setPredecessorId(sourceDoc.getId());
newVersionVo = (DxVersionVO) versionService.save((IdVO) newVersionVo, true); newVersionVo = (DxVersionVO) versionService.save((IdVO) newVersionVo, true);
// TODO: xpc DxIterationVO不存在,听同事说此方法已被弃用 // TODO: xpc DcsBuilder不存在,听同事说此方法已被弃用
// newViewDoc = DcsBuilder.of(newViewDoc).with(IdVO::setSubTypeName, sourceDoc.getSubTypeName()) // newViewDoc = DcsBuilder.of(newViewDoc).with(IdVO::setSubTypeName, sourceDoc.getSubTypeName())
// .with(DxIterationVO::setMaster, sourceDoc.getMaster()) // .with(DxIterationVO::setMaster, sourceDoc.getMaster())
// .with(DxIterationVO::setLatest, true) // .with(DxIterationVO::setLatest, true)
......
...@@ -41,7 +41,7 @@ public class ExtDxDocumentServiceImpl<V extends DxDocumentVO> extends DocumentSe ...@@ -41,7 +41,7 @@ public class ExtDxDocumentServiceImpl<V extends DxDocumentVO> extends DocumentSe
super.beforeSave(target); super.beforeSave(target);
}
} }
package com.yonde.dcs.document.core.util; package com.yonde.dcs.core.util;
import com.aspose.words.*; import com.aspose.words.*;
import com.aspose.words.ParagraphAlignment; import com.aspose.words.ParagraphAlignment;
......
...@@ -7,10 +7,8 @@ import com.yonde.dex.user.common.vo.DxUserInfoVO; ...@@ -7,10 +7,8 @@ import com.yonde.dex.user.common.vo.DxUserInfoVO;
import com.yonde.dex.user.feign.DxUserInfoFeign; import com.yonde.dex.user.feign.DxUserInfoFeign;
import com.yonde.dex.version.plugin.common.entity.DxIterationVOHolder; import com.yonde.dex.version.plugin.common.entity.DxIterationVOHolder;
import com.yonde.dex.wfc.common.enums.TaskStateEnum; import com.yonde.dex.wfc.common.enums.TaskStateEnum;
import com.yonde.dex.wfc.common.vo.DxWfActivityVO; import com.yonde.dex.wfc.common.vo.*;
import com.yonde.dex.wfc.common.vo.DxWfProcessSearchVO; import com.yonde.dex.wfc.feign.api.WfcActivityFeign;
import com.yonde.dex.wfc.common.vo.DxWfProcessTaskVO;
import com.yonde.dex.wfc.common.vo.DxWfProcessVO;
import com.yonde.dex.wfc.feign.api.WfcProcessFeign; import com.yonde.dex.wfc.feign.api.WfcProcessFeign;
import com.yonde.dex.wfc.feign.api.WfcTaskFeign; import com.yonde.dex.wfc.feign.api.WfcTaskFeign;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -18,6 +16,7 @@ import org.springframework.data.domain.Page; ...@@ -18,6 +16,7 @@ import org.springframework.data.domain.Page;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PathVariable;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
...@@ -33,7 +32,9 @@ import java.util.stream.Collectors; ...@@ -33,7 +32,9 @@ import java.util.stream.Collectors;
public class WorkFlowUtil { public class WorkFlowUtil {
@Autowired @Autowired
private WfcProcessFeign instanceService; private WfcProcessFeign wfcProcessFeign;
@Autowired
private WfcActivityFeign wfcActivityFeign;
@Autowired @Autowired
private WfcTaskFeign wfcTaskFeign; private WfcTaskFeign wfcTaskFeign;
@Autowired @Autowired
...@@ -55,7 +56,7 @@ public class WorkFlowUtil { ...@@ -55,7 +56,7 @@ public class WorkFlowUtil {
DxWfProcessSearchVO dxWfProcessSearchVO = new DxWfProcessSearchVO(); DxWfProcessSearchVO dxWfProcessSearchVO = new DxWfProcessSearchVO();
dxWfProcessSearchVO.setPboClass(iterationVO.getClass().getName()); dxWfProcessSearchVO.setPboClass(iterationVO.getClass().getName());
dxWfProcessSearchVO.setPboId(iterationVO.getVersionId()); dxWfProcessSearchVO.setPboId(iterationVO.getVersionId());
Page<DxWfProcessVO> processList = instanceService.getProcessList(dxWfProcessSearchVO, 1, 10); Page<DxWfProcessVO> processList = wfcProcessFeign.getProcessList(dxWfProcessSearchVO, 1, 10);
if (!CollectionUtils.isEmpty(processList.getContent())) { if (!CollectionUtils.isEmpty(processList.getContent())) {
return processList.getContent().get(0); return processList.getContent().get(0);
} }
...@@ -78,7 +79,7 @@ public class WorkFlowUtil { ...@@ -78,7 +79,7 @@ public class WorkFlowUtil {
DxWfProcessSearchVO dxWfProcessSearchVO = new DxWfProcessSearchVO(); DxWfProcessSearchVO dxWfProcessSearchVO = new DxWfProcessSearchVO();
dxWfProcessSearchVO.setPboClass(DxDocumentVO.class.getName()); dxWfProcessSearchVO.setPboClass(DxDocumentVO.class.getName());
dxWfProcessSearchVO.setPboId(doc.getVersionId()); dxWfProcessSearchVO.setPboId(doc.getVersionId());
Page<DxWfProcessVO> processList = instanceService.getProcessList(dxWfProcessSearchVO, 1, 10); Page<DxWfProcessVO> processList = wfcProcessFeign.getProcessList(dxWfProcessSearchVO, 1, 10);
if (!CollectionUtils.isEmpty(processList.getContent())) { if (!CollectionUtils.isEmpty(processList.getContent())) {
return processList.getContent().get(0); return processList.getContent().get(0);
} }
...@@ -213,4 +214,15 @@ public class WorkFlowUtil { ...@@ -213,4 +214,15 @@ public class WorkFlowUtil {
} }
return date; return date;
} }
//根据流程实例id获取组装信息
public DxWfProcessInfoVO getProcessInstDetail(DxWfProcessVO dxWfProcessVO) {
DxWfProcessInfoVO processInfoVO = new DxWfProcessInfoVO();
processInfoVO.setProcessVO(wfcProcessFeign.getProcessDetail(dxWfProcessVO.getId()));
processInfoVO.setActivityInfo(wfcActivityFeign.getActivities(dxWfProcessVO.getId(),dxWfProcessVO.getProcDefId()));
processInfoVO.setHistoryInfo(wfcTaskFeign.getHisTaskList(dxWfProcessVO.getId(),null, 1, Integer.MAX_VALUE).getContent());
return processInfoVO;
}
} }
...@@ -23,88 +23,104 @@ import javax.persistence.Embedded; ...@@ -23,88 +23,104 @@ import javax.persistence.Embedded;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Table; import javax.persistence.Table;
import com.yonde.dex.lcycle.plugin.entities.DxLifecycleManageBaseEmbeddable; import com.yonde.dex.lcycle.plugin.entities.DxLifecycleManageBaseEmbeddable;
import com.yonde.dex.dao.entity.base.IdEntity; import com.yonde.dex.container.folder.plugin.entities.DxObjFolderEmbeddable;
import javax.persistence.Column; import com.yonde.dex.context.plugin.entities.DxContextHolder;
import com.yonde.dex.dfs.objfilelink.plugin.entities.DxObjFileLinkHolder; import com.yonde.dex.dfs.objfilelink.plugin.entities.DxObjFileLinkHolder;
import com.yonde.dex.dfs.objfilelink.plugin.entities.DxObjFileLinkEmbeddable; import com.yonde.dex.dfs.objfilelink.plugin.entities.DxObjFileLinkEmbeddable;
import com.yonde.dex.lcycle.plugin.entities.DxLifecycleManageBaseHolder; import com.yonde.dex.context.plugin.entities.DxContextEmbeddable;
import com.yonde.dex.dao.entity.base.DxIdEntityEmbeddable;
import com.yonde.dex.dao.entity.base.IdOnlyEntity; import com.yonde.dex.dao.entity.base.IdOnlyEntity;
import com.yonde.dex.version.plugin.entities.DxIterationHolder; import com.yonde.dex.version.plugin.entities.DxIterationHolder;
import com.yonde.dex.logicdelete.plugin.entities.DxLogicDeleteHolder; import com.yonde.dex.logicdelete.plugin.entities.DxLogicDeleteHolder;
import com.yonde.dex.container.folder.plugin.entities.DxObjFolderHolder;
import com.yonde.dex.dao.entity.base.IdEntity;
import javax.persistence.Column;
import com.yonde.dex.lcycle.plugin.entities.DxLifecycleManageBaseHolder;
import com.yonde.dex.dao.entity.base.DxIdEntityEmbeddable;
import com.yonde.dex.logicdelete.plugin.entities.DxLogicDeleteEmbeddable; import com.yonde.dex.logicdelete.plugin.entities.DxLogicDeleteEmbeddable;
import com.yonde.dex.version.plugin.entities.DxIterationEmbeddable; import com.yonde.dex.version.plugin.entities.DxIterationEmbeddable;
/** /**
* @description: ExtApplicant-PO实体 * @description: ExtApplicant-PO实体
* @author: dexadmin * @author: dexadmin
* @version: V * @version: V
* @date: 2024-8-2 15:26:37 * @date: 2024-8-15 16:14:30
**/ **/
@Entity @Entity
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@NoArgsConstructor @NoArgsConstructor
@Data @Data
@Table(name = "EXT_APPLICANT") @Table(name = "EXT_APPLICANT")
public class ExtApplicant extends IdOnlyEntity implements DxObjFileLinkHolder ,DxLifecycleManageBaseHolder ,IdEntity ,DxLogicDeleteHolder ,DxIterationHolder{ public class ExtApplicant extends IdOnlyEntity implements DxContextHolder ,DxObjFileLinkHolder ,DxObjFolderHolder ,DxLifecycleManageBaseHolder ,IdEntity ,DxLogicDeleteHolder ,DxIterationHolder{
/** /**
* 扩展PO属性 * 扩展PO属性
*/ */
@DexEmbedded()
@Embedded()
private DxContextEmbeddable dxContextEmbeddable;
/**
* 扩展PO属性
*/
@DexEmbedded() @DexEmbedded()
@Embedded() @Embedded()
private DxObjFileLinkEmbeddable dxObjFileLinkEmbeddable; private DxObjFileLinkEmbeddable dxObjFileLinkEmbeddable;
/** /**
* 扩展PO属性 * 扩展PO属性
*/ */
@DexEmbedded()
@Embedded()
private DxObjFolderEmbeddable dxObjFolderEmbeddable;
/**
* 扩展PO属性
*/
@DexEmbedded() @DexEmbedded()
@Embedded() @Embedded()
private DxLifecycleManageBaseEmbeddable dxLifecycleManageBaseEmbeddable; private DxLifecycleManageBaseEmbeddable dxLifecycleManageBaseEmbeddable;
/** /**
* dao扩展对象 * dao扩展对象
*/ */
@DexEmbedded() @DexEmbedded()
@Embedded() @Embedded()
private DxIdEntityEmbeddable dxIdEmbeddable; private DxIdEntityEmbeddable dxIdEmbeddable;
/** /**
* 扩展PO属性 * 扩展PO属性
*/ */
@DexEmbedded() @DexEmbedded()
@Embedded() @Embedded()
private DxLogicDeleteEmbeddable dxLogicDeleteEmbeddable; private DxLogicDeleteEmbeddable dxLogicDeleteEmbeddable;
/** /**
* 扩展PO属性 * 扩展PO属性
*/ */
@DexEmbedded() @DexEmbedded()
@Embedded() @Embedded()
private DxIterationEmbeddable dxIterationEmbeddable; private DxIterationEmbeddable dxIterationEmbeddable;
/** /**
* 申请方的id * 申请方的id
*/ */
private Long applicantOrgId; private Long applicantOrgId;
/** /**
* 申请方的类型 * 申请方的类型
*/ */
private String applicantOrgIdType; private String applicantOrgIdType;
/** /**
* 申请内容 * 申请内容
*/ */
private String applicatContent; private String applicatContent;
/** /**
* 设计阶段 * 设计阶段
*/ */
private String design; private String design;
/** /**
* 提资方集合 * 提资方集合
*/ */
private String providers; private String providers;
/** /**
* 要求提交日期 * 要求提交日期
*/ */
private LocalDateTime submitDate; private LocalDateTime submitDate;
/** /**
* 类型 * 类型
*/ */
private String type; private String type;
} }
......
...@@ -23,120 +23,136 @@ import javax.persistence.Embedded; ...@@ -23,120 +23,136 @@ import javax.persistence.Embedded;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Table; import javax.persistence.Table;
import com.yonde.dex.lcycle.plugin.entities.DxLifecycleManageBaseEmbeddable; import com.yonde.dex.lcycle.plugin.entities.DxLifecycleManageBaseEmbeddable;
import com.yonde.dex.dao.entity.base.IdEntity; import com.yonde.dex.container.folder.plugin.entities.DxObjFolderEmbeddable;
import javax.persistence.Column; import com.yonde.dex.context.plugin.entities.DxContextHolder;
import com.yonde.dex.dfs.objfilelink.plugin.entities.DxObjFileLinkHolder; import com.yonde.dex.dfs.objfilelink.plugin.entities.DxObjFileLinkHolder;
import com.yonde.dex.dfs.objfilelink.plugin.entities.DxObjFileLinkEmbeddable; import com.yonde.dex.dfs.objfilelink.plugin.entities.DxObjFileLinkEmbeddable;
import com.yonde.dex.lcycle.plugin.entities.DxLifecycleManageBaseHolder; import com.yonde.dex.context.plugin.entities.DxContextEmbeddable;
import com.yonde.dex.dao.entity.base.DxIdEntityEmbeddable;
import com.yonde.dex.dao.entity.base.IdOnlyEntity; import com.yonde.dex.dao.entity.base.IdOnlyEntity;
import com.yonde.dex.version.plugin.entities.DxIterationHolder; import com.yonde.dex.version.plugin.entities.DxIterationHolder;
import com.yonde.dex.logicdelete.plugin.entities.DxLogicDeleteHolder; import com.yonde.dex.logicdelete.plugin.entities.DxLogicDeleteHolder;
import com.yonde.dex.container.folder.plugin.entities.DxObjFolderHolder;
import com.yonde.dex.dao.entity.base.IdEntity;
import javax.persistence.Column;
import com.yonde.dex.lcycle.plugin.entities.DxLifecycleManageBaseHolder;
import com.yonde.dex.dao.entity.base.DxIdEntityEmbeddable;
import com.yonde.dex.logicdelete.plugin.entities.DxLogicDeleteEmbeddable; import com.yonde.dex.logicdelete.plugin.entities.DxLogicDeleteEmbeddable;
import com.yonde.dex.version.plugin.entities.DxIterationEmbeddable; import com.yonde.dex.version.plugin.entities.DxIterationEmbeddable;
/** /**
* @description: ExtInterface-PO实体 * @description: ExtInterface-PO实体
* @author: dexadmin * @author: dexadmin
* @version: V * @version: V
* @date: 2024-8-2 15:26:37 * @date: 2024-8-15 16:08:09
**/ **/
@Entity @Entity
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@NoArgsConstructor @NoArgsConstructor
@Data @Data
@Table(name = "EXT_INTERFACE") @Table(name = "EXT_INTERFACE")
public class ExtInterface extends IdOnlyEntity implements DxObjFileLinkHolder ,DxLifecycleManageBaseHolder ,IdEntity ,DxLogicDeleteHolder ,DxIterationHolder{ public class ExtInterface extends IdOnlyEntity implements DxContextHolder ,DxObjFileLinkHolder ,DxObjFolderHolder ,DxLifecycleManageBaseHolder ,IdEntity ,DxLogicDeleteHolder ,DxIterationHolder{
/** /**
* 扩展PO属性 * 扩展PO属性
*/ */
@DexEmbedded()
@Embedded()
private DxContextEmbeddable dxContextEmbeddable;
/**
* 扩展PO属性
*/
@DexEmbedded() @DexEmbedded()
@Embedded() @Embedded()
private DxObjFileLinkEmbeddable dxObjFileLinkEmbeddable; private DxObjFileLinkEmbeddable dxObjFileLinkEmbeddable;
/** /**
* 扩展PO属性 * 扩展PO属性
*/ */
@DexEmbedded()
@Embedded()
private DxObjFolderEmbeddable dxObjFolderEmbeddable;
/**
* 扩展PO属性
*/
@DexEmbedded() @DexEmbedded()
@Embedded() @Embedded()
private DxLifecycleManageBaseEmbeddable dxLifecycleManageBaseEmbeddable; private DxLifecycleManageBaseEmbeddable dxLifecycleManageBaseEmbeddable;
/** /**
* dao扩展对象 * dao扩展对象
*/ */
@DexEmbedded() @DexEmbedded()
@Embedded() @Embedded()
private DxIdEntityEmbeddable dxIdEmbeddable; private DxIdEntityEmbeddable dxIdEmbeddable;
/** /**
* 扩展PO属性 * 扩展PO属性
*/ */
@DexEmbedded() @DexEmbedded()
@Embedded() @Embedded()
private DxLogicDeleteEmbeddable dxLogicDeleteEmbeddable; private DxLogicDeleteEmbeddable dxLogicDeleteEmbeddable;
/** /**
* 扩展PO属性 * 扩展PO属性
*/ */
@DexEmbedded() @DexEmbedded()
@Embedded() @Embedded()
private DxIterationEmbeddable dxIterationEmbeddable; private DxIterationEmbeddable dxIterationEmbeddable;
/** /**
* 申请方确认 * 申请方确认
*/ */
private String applicantConfirm; private String applicantConfirm;
/** /**
* 申请方确认意见 * 申请方确认意见
*/ */
private String applicantConfirmView; private String applicantConfirmView;
/** /**
* 申请方的id * 申请方的id
*/ */
private Long applicantOrgId; private Long applicantOrgId;
/** /**
* 申请方的类型 * 申请方的类型
*/ */
private String applicantOrgIdType; private String applicantOrgIdType;
/** /**
* 要求提交日期 * 要求提交日期
*/ */
private LocalDateTime applicatDate; private LocalDateTime applicatDate;
/** /**
* 申请方接口申请的id * 申请方接口申请的id
*/ */
private Long extApplicantId; private Long extApplicantId;
/** /**
* 申请方接口申请的类型 * 申请方接口申请的类型
*/ */
private String extApplicantIdType; private String extApplicantIdType;
/** /**
* 接口单类型 * 接口单类型
*/ */
private String jkdlx; private String jkdlx;
/** /**
* 上一版本id * 上一版本id
*/ */
private Long previousId; private Long previousId;
/** /**
* 提资内容 * 提资内容
*/ */
private String provideContent; private String provideContent;
/** /**
* 提资人的id * 提资人的id
*/ */
private Long providerId; private Long providerId;
/** /**
* 提资人的类型 * 提资人的类型
*/ */
private String providerIdType; private String providerIdType;
/** /**
* 提资方的id * 提资方的id
*/ */
private Long providerOrgId; private Long providerOrgId;
/** /**
* 提资方的类型 * 提资方的类型
*/ */
private String providerOrgIdType; private String providerOrgIdType;
/** /**
* 提资日期 * 提资日期
*/ */
private LocalDateTime tzrq; private LocalDateTime tzrq;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment