Commit 1055f81c by lanmw

更新内网代码

parent fab1cd77
...@@ -8,6 +8,10 @@ package com.keymobile.publicplatform.runtime.constant; ...@@ -8,6 +8,10 @@ package com.keymobile.publicplatform.runtime.constant;
public class PublicConstant { public class PublicConstant {
//PO URL //PO URL
//发起portal审批流程接口 //发起portal资产审批流程接口
public static final String APPROVAL_PROCESS_URL = "/RESTAdapter/DAP/PropertyProcssInterface"; public static final String APPROVAL_PROCESS_URL = "/RESTAdapter/DAP/PropertyProcssInterface";
//发起portal岗位审批流程接口
public static final String PROCESS_POST_URL = "/RESTAdapter/DAP/PropertyPowerProcessInterface";
//portal审批流程中止接口
public static final String PROCESS_INTERRUPT_URL = "/RESTAdapter/DAP/PropertyPowerProcessInterface";
} }
package com.keymobile.publicplatform.runtime.controller; package com.keymobile.publicplatform.runtime.controller;
import com.keymobile.publicplatform.runtime.model.Result; import com.keymobile.publicplatform.runtime.model.Result;
import com.keymobile.publicplatform.runtime.model.dto.ApprovalProcessDTO; import com.keymobile.publicplatform.runtime.model.dto.portalprocess.ApprovalProcessDTO;
import com.keymobile.publicplatform.runtime.model.dto.ApprovedDTO; import com.keymobile.publicplatform.runtime.model.dto.portalprocess.ApprovedDTO;
import com.keymobile.publicplatform.runtime.model.dto.ProcessSuspendDTO; import com.keymobile.publicplatform.runtime.model.dto.portalprocess.ProcessInterruptCallBackDTO;
import com.keymobile.publicplatform.runtime.service.PortalApprovalProcessService; import com.keymobile.publicplatform.runtime.service.PortalApprovalProcessService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -26,49 +26,69 @@ public class PortalApprovalProcessController { ...@@ -26,49 +26,69 @@ public class PortalApprovalProcessController {
@Autowired @Autowired
private PortalApprovalProcessService portalApprovalProcessService; private PortalApprovalProcessService portalApprovalProcessService;
/**
* 发起portal审批流程
*/
@PostMapping("/propertyProcess") @PostMapping("/propertyProcess")
public Result<Void> propertyProcess(@RequestBody @Validated ApprovalProcessDTO param) { public Result<Void> propertyProcess(@RequestBody @Validated ApprovalProcessDTO param) {
portalApprovalProcessService.propertyProcess(param); portalApprovalProcessService.propertyProcess(param);
return Result.ok(); return Result.ok();
} }
/**
* 流程审批通过回调(发布)
*/
@PostMapping("/workFlowReleaseApprovedCallBack") @PostMapping("/workFlowReleaseApprovedCallBack")
public Result<Void> workFlowReleaseApprovedCallBack(@RequestBody @Validated ApprovedDTO param) { public Result<Void> workFlowReleaseApprovedCallBack(@RequestBody @Validated ApprovedDTO param) {
portalApprovalProcessService.workFlowReleaseApprovedCallBack(param); portalApprovalProcessService.workFlowReleaseApprovedCallBack(param);
return Result.ok(); return Result.ok();
} }
/**
* 流程审批不通过回调(发布)
*/
@PostMapping("/workFlowReleaseRejectedCallBack") @PostMapping("/workFlowReleaseRejectedCallBack")
public Result<Void> workFlowReleaseRejectedCallBack(@RequestBody @Validated ProcessSuspendDTO param) { public Result<Void> workFlowReleaseRejectedCallBack(@RequestBody @Validated ProcessInterruptCallBackDTO param) {
portalApprovalProcessService.workFlowReleaseRejectedCallBack(param); portalApprovalProcessService.workFlowReleaseRejectedCallBack(param);
return Result.ok(); return Result.ok();
} }
/**
* 流程审批中止回调(发布)
*/
@PostMapping("/workFlowReleaseInterruptedCallBack") @PostMapping("/workFlowReleaseInterruptedCallBack")
public Result<Void> workFlowReleaseInterruptedCallBack(@RequestBody @Validated ProcessSuspendDTO param) { public Result<Void> workFlowReleaseInterruptedCallBack(@RequestBody @Validated ProcessInterruptCallBackDTO param) {
portalApprovalProcessService.workFlowReleaseInterruptedCallBack(param); portalApprovalProcessService.workFlowReleaseInterruptedCallBack(param);
return Result.ok(); return Result.ok();
} }
/**
* 流程审批通过回调(岗位)
*/
@PostMapping("/workFlowPostAuthorApprovedCallBack") @PostMapping("/workFlowPostAuthorApprovedCallBack")
public Result<Void> workFlowPostAuthorApprovedCallBack(@RequestBody @Validated ApprovedDTO param) { public Result<Void> workFlowPostAuthorApprovedCallBack(@RequestBody @Validated ApprovedDTO param) {
portalApprovalProcessService.workFlowPostAuthorApprovedCallBack(param); portalApprovalProcessService.workFlowPostAuthorApprovedCallBack(param);
return Result.ok(); return Result.ok();
} }
/**
* 流程审批不通过回调(岗位)
*/
@PostMapping("/workFlowPostAuthorRejectedCallBack") @PostMapping("/workFlowPostAuthorRejectedCallBack")
public Result<Void> workFlowPostAuthorRejectedCallBack(@RequestBody @Validated ProcessSuspendDTO param) { public Result<Void> workFlowPostAuthorRejectedCallBack(@RequestBody @Validated ProcessInterruptCallBackDTO param) {
portalApprovalProcessService.workFlowPostAuthorRejectedCallBack(param); portalApprovalProcessService.workFlowPostAuthorRejectedCallBack(param);
return Result.ok(); return Result.ok();
} }
/**
* 流程审批中止回调(岗位)
*/
@PostMapping("/workFlowPostAuthorInterruptedCallBack") @PostMapping("/workFlowPostAuthorInterruptedCallBack")
public Result<Void> workFlowPostAuthorInterruptedCallBack(@RequestBody @Validated ProcessSuspendDTO param) { public Result<Void> workFlowPostAuthorInterruptedCallBack(@RequestBody @Validated ProcessInterruptCallBackDTO param) {
portalApprovalProcessService.workFlowPostAuthorInterruptedCallBack(param); portalApprovalProcessService.workFlowPostAuthorInterruptedCallBack(param);
return Result.ok(); return Result.ok();
} }
} }
......
package com.keymobile.publicplatform.runtime.controller;
import com.keymobile.publicplatform.runtime.model.Result;
import com.keymobile.publicplatform.runtime.model.dto.processmanage.ProcessInterruptDTO;
import com.keymobile.publicplatform.runtime.service.ProcessManageService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 我的流程管理
*
* @author 50267262
*/
@Slf4j
@RestController
@RequestMapping("/processManage")
public class ProcessManageController {
@Autowired
private ProcessManageService processManageService;
/**
* 中止流程(结束流程)
*/
@PostMapping("/interrupt")
public Result<Void> interruptProcess(@RequestBody @Validated ProcessInterruptDTO param) {
processManageService.processInterrupt(param);
return Result.ok();
}
}
package com.keymobile.publicplatform.runtime.controller;
import com.keymobile.publicplatform.runtime.model.Result;
import com.keymobile.publicplatform.runtime.model.dto.propertyManage.PropertyBatchDeleteDTO;
import com.keymobile.publicplatform.runtime.model.dto.propertyManage.PropertyBatchSaveDTO;
import com.keymobile.publicplatform.runtime.service.PropertyManageService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 我的流程管理
*
* @author 50267262
*/
@Slf4j
@RestController
@RequestMapping("/propertyManage")
public class PropertyManageController {
@Autowired
private PropertyManageService propertyManageService;
/**
* 流程批量新增资产
*/
@PostMapping("/saveBatch")
public Result<Void> saveBatch(@RequestBody @Validated PropertyBatchSaveDTO param) {
propertyManageService.saveBatch(param);
return Result.ok();
}
/**
* 流程批量删除资产
*/
@PostMapping("/deleteBatch")
public Result<Void> deleteBatch(@RequestBody @Validated PropertyBatchDeleteDTO param) {
propertyManageService.deleteBatch(param);
return Result.ok();
}
}
package com.keymobile.publicplatform.runtime.model.dto.portalprocess;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* 发起portal审批流程DTO
*
* @author 50267262
*/
@Data
public class ApprovalPostPortalDTO {
/**
* 流程实例ID(重新提交时,必填)
*/
@JsonProperty("ProcinsId")
private String ProcinsId;
/**
* 资产包唯一Id
*/
@NotBlank(message = "资产包唯一Id不能为空")
@JsonProperty("PropertyReceiptsId")
private String PropertyReceiptsId;
/**
* 申请人/处理人工号(必填)
*/
@NotBlank(message = "申请人/处理人工号不能为空")
@JsonProperty("Applicanter")
private String Applicanter;
/**
* 发布原因
*/
@JsonProperty("Reason")
private String Reason;
/**
* 岗位明细
*/
@NotEmpty(message = "资产岗位明细不能为空")
@JsonProperty("PropertyList")
private List<PostProperty> PropertyList;
/**
* 附件明细
*/
@JsonProperty("AttachmentList")
private List<Attachment> AttachmentList;
@Data
public static class PostProperty {
/**
* 资产的连接地址
*/
@NotBlank(message = "资产的连接地址不能为空")
@JsonProperty("PropertyLink")
private String PropertyLink;
/**
* 资产类型
*/
@NotBlank(message = "资产类型不能为空")
@JsonProperty("PropertyType")
private String PropertyType;
/**
* 资产编码
*/
@NotBlank(message = "资产编码不能为空")
@JsonProperty("PropertyNo")
private String PropertyNo;
/**
* 资产名称
*/
@NotBlank(message = "资产名称不能为空")
@JsonProperty("PropertyName")
private String PropertyName;
/**
* 类型(传0=资产)
*/
@NotBlank(message = "类型不能为空")
@JsonProperty("DataType")
private Integer DataType;
/**
* 数据关键用户
*/
@NotBlank(message = "数据关键用户不能为空")
@JsonProperty("KeyUserId")
private String KeyUserId;
/**
* 数据Owner
*/
@NotBlank(message = "数据Owner不能为空")
@JsonProperty("DataOwner")
private String DataOwner;
/**
* IT责任人
*/
@NotBlank(message = "IT责任人不能为空")
@JsonProperty("ItResponsibilityer")
private String ItResponsibilityer;
}
/**
* 附件明细(仅岗位有)
*/
@Data
public static class Attachment {
/**
* 附件名称
*/
@NotBlank(message = "附件名称不能为空")
@JsonProperty("AttachmentName")
private String AttachmentName;
/**
* 附件后缀
*/
@NotBlank(message = "附件后缀不能为空")
@JsonProperty("AttachmentSuffix")
private String AttachmentSuffix;
/**
* 附件大小
*/
@NotBlank(message = "附件大小不能为空")
@JsonProperty("AttachmentSize")
private Integer AttachmentSize;
/**
* 附件地址
*/
@NotBlank(message = "附件地址不能为空")
@JsonProperty("AttachmentUrl")
private String AttachmentUrl;
}
}
\ No newline at end of file
package com.keymobile.publicplatform.runtime.model.dto; package com.keymobile.publicplatform.runtime.model.dto.portalprocess;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List; import java.util.List;
/** /**
...@@ -16,15 +15,16 @@ import java.util.List; ...@@ -16,15 +15,16 @@ import java.util.List;
public class ApprovalProcessDTO { public class ApprovalProcessDTO {
/** /**
* 流程实例ID(重新提交时,必填) * 资产类型
*/ */
private String procinsId; @NotBlank(message = "资产类型不能为空")
private String propertyType;
/** /**
* 申请人/处理人工号(必填) * 申请人/处理人工号(必填)
*/ */
@NotBlank(message = "申请人/处理人工号不能为空") @NotBlank(message = "申请人/处理人工号不能为空")
private String applicanter; private String applicant;
/** /**
* 申请类型(0上架流程 1下架流程)(必填) * 申请类型(0上架流程 1下架流程)(必填)
...@@ -40,13 +40,83 @@ public class ApprovalProcessDTO { ...@@ -40,13 +40,83 @@ public class ApprovalProcessDTO {
/** /**
* 资产明细 * 资产明细
*/ */
@NotEmpty(message = "资产明细不能为空")
private List<Property> propertyList; private List<Property> propertyList;
/**
* 岗位明细
*/
private List<Post> postList;
/**
* 附件明细(仅岗位有)
*/
private List<Attachment> attachmentList;
/**
* 附件明细(仅岗位有)
*/
@Data
private static class Attachment {
/**
* 附件名称
*/
private String attachmentName;
/**
* 附件后缀
*/
private String attachmentSuffix;
/**
* 附件大小
*/
private Integer attachmentSize;
/**
* 附件地址
*/
private String attachmentUrl;
}
/**
* 资产明细
*/
@Data @Data
public static class Property { public static class Property {
/** /**
* 资产的连接地址
*/
@NotBlank(message = "资产的连接地址不能为空")
private String propertyLink;
/**
* 资产类型
*/
@NotBlank(message = "资产类型不能为空")
private String propertyType;
/**
* 资产Id
*/
@NotBlank(message = "资产Id不能为空")
private String propertyId;
/**
* 资产编码
*/
@NotBlank(message = "资产编码不能为空")
private String propertyNo;
/**
* 资产名称
*/
@NotBlank(message = "资产名称不能为空")
private String propertyName;
/**
* 数据关键用户 * 数据关键用户
*/ */
@NotBlank(message = "数据关键用户不能为空") @NotBlank(message = "数据关键用户不能为空")
...@@ -62,15 +132,21 @@ public class ApprovalProcessDTO { ...@@ -62,15 +132,21 @@ public class ApprovalProcessDTO {
* IT责任人 * IT责任人
*/ */
@NotBlank(message = "IT责任人不能为空") @NotBlank(message = "IT责任人不能为空")
private String itResponsibilityer; private String itResponsibility;
/** /**
* 资产目录负责人 * 资产目录负责人
*/ */
@NotBlank(message = "资产目录负责人不能为空") @NotBlank(message = "资产目录负责人不能为空")
private String propertyUserId; private String propertyUserId;
}
/** /**
* 岗位明细
*/
@Data
public static class Post {
/**
* 资产的连接地址 * 资产的连接地址
*/ */
@NotBlank(message = "资产的连接地址不能为空") @NotBlank(message = "资产的连接地址不能为空")
...@@ -83,6 +159,12 @@ public class ApprovalProcessDTO { ...@@ -83,6 +159,12 @@ public class ApprovalProcessDTO {
private String propertyType; private String propertyType;
/** /**
* 资产Id
*/
@NotBlank(message = "资产Id不能为空")
private String propertyId;
/**
* 资产编码 * 资产编码
*/ */
@NotBlank(message = "资产编码不能为空") @NotBlank(message = "资产编码不能为空")
...@@ -93,29 +175,94 @@ public class ApprovalProcessDTO { ...@@ -93,29 +175,94 @@ public class ApprovalProcessDTO {
*/ */
@NotBlank(message = "资产名称不能为空") @NotBlank(message = "资产名称不能为空")
private String propertyName; private String propertyName;
/**
* IT责任人
*/
@NotBlank(message = "IT责任人不能为空")
private String itResponsibility;
/**
* 数据关键用户
*/
@NotBlank(message = "数据关键用户不能为空")
private String keyUserId;
/**
* 数据Owner
*/
@NotBlank(message = "数据Owner不能为空")
private String dataOwner;
}
/**
* 转换资产-岗位信息
*
* @param uuid 流程主键id
* @return DTO
*/
public ApprovalPostPortalDTO toPostPortal(String uuid) {
ApprovalPostPortalDTO postPortalDTO = new ApprovalPostPortalDTO();
postPortalDTO.setPropertyReceiptsId(uuid);
postPortalDTO.setApplicanter(this.applicant);
postPortalDTO.setReason(this.reason);
List<ApprovalPostPortalDTO.PostProperty> postList = CollUtil.newArrayList();
List<ApprovalPostPortalDTO.Attachment> attachmentList = CollUtil.newArrayList();
this.postList.forEach(v -> {
ApprovalPostPortalDTO.PostProperty property = new ApprovalPostPortalDTO.PostProperty();
property.setKeyUserId(v.getKeyUserId());
property.setDataOwner(v.getDataOwner());
property.setDataType(0);
property.setItResponsibilityer(v.getItResponsibility());
property.setPropertyLink(v.getPropertyLink());
property.setPropertyType(this.propertyType);
property.setPropertyNo(v.getPropertyNo());
property.setPropertyName(v.getPropertyName());
postList.add(property);
});
this.attachmentList.forEach(v -> {
ApprovalPostPortalDTO.Attachment attachment = new ApprovalPostPortalDTO.Attachment();
attachment.setAttachmentUrl(v.getAttachmentUrl());
attachment.setAttachmentName(v.getAttachmentName());
attachment.setAttachmentSize(v.getAttachmentSize());
attachment.setAttachmentSuffix(v.getAttachmentSuffix());
attachmentList.add(attachment);
});
postPortalDTO.setPropertyList(postList);
postPortalDTO.setAttachmentList(attachmentList);
return postPortalDTO;
} }
public ApprovalProcessPortalDTO toPortal() {
/**
* 转换资产信息
*
* @param uuid 流程主键id
* @return DTO
*/
public ApprovalProcessPortalDTO toProcessPortal(String uuid) {
ApprovalProcessPortalDTO portalDTO = new ApprovalProcessPortalDTO(); ApprovalProcessPortalDTO portalDTO = new ApprovalProcessPortalDTO();
portalDTO.setProcinsId(this.procinsId); portalDTO.setPropertyReceiptsId(uuid);
portalDTO.setApplicanter(this.applicanter); portalDTO.setApplicanter(this.applicant);
portalDTO.setApplicationType(this.applicationType); portalDTO.setApplicationType(this.applicationType);
portalDTO.setReason(this.reason); portalDTO.setReason(this.reason);
List<ApprovalProcessPortalDTO.Property> PropertyList = CollUtil.newArrayList(); List<ApprovalProcessPortalDTO.Property> propertyList = CollUtil.newArrayList();
this.propertyList.forEach(v -> { this.propertyList.forEach(v -> {
ApprovalProcessPortalDTO.Property property = new ApprovalProcessPortalDTO.Property(); ApprovalProcessPortalDTO.Property property = new ApprovalProcessPortalDTO.Property();
property.setKeyUserId(v.getKeyUserId()); property.setKeyUserId(v.getKeyUserId());
property.setDataOwner(v.getDataOwner()); property.setDataOwner(v.getDataOwner());
property.setItResponsibilityer(v.getItResponsibilityer()); property.setItResponsibilityer(v.getItResponsibility());
property.setPropertyUserId(v.getPropertyUserId()); property.setPropertyUserId(v.getPropertyUserId());
property.setPropertyLink(v.getPropertyLink()); property.setPropertyLink(v.getPropertyLink());
property.setPropertyType(v.getPropertyType()); property.setPropertyType(this.propertyType);
property.setPropertyNo(v.getPropertyNo()); property.setPropertyNo(v.getPropertyNo());
property.setPropertyName(v.getPropertyName()); property.setPropertyName(v.getPropertyName());
PropertyList.add(property); propertyList.add(property);
}); });
portalDTO.setPropertyList(PropertyList); portalDTO.setPropertyList(propertyList);
return portalDTO; return portalDTO;
} }
} }
\ No newline at end of file
package com.keymobile.publicplatform.runtime.model.dto; package com.keymobile.publicplatform.runtime.model.dto.portalprocess;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data; import lombok.Data;
...@@ -22,6 +22,13 @@ public class ApprovalProcessPortalDTO { ...@@ -22,6 +22,13 @@ public class ApprovalProcessPortalDTO {
private String ProcinsId; private String ProcinsId;
/** /**
* 资产包唯一Id
*/
@NotBlank(message = "资产包唯一Id不能为空")
@JsonProperty("PropertyReceiptsId")
private String PropertyReceiptsId;
/**
* 申请人/处理人工号(必填) * 申请人/处理人工号(必填)
*/ */
@NotBlank(message = "申请人/处理人工号不能为空") @NotBlank(message = "申请人/处理人工号不能为空")
......
package com.keymobile.publicplatform.runtime.model.dto; package com.keymobile.publicplatform.runtime.model.dto.portalprocess;
import lombok.Data; import lombok.Data;
......
package com.keymobile.publicplatform.runtime.model.dto; package com.keymobile.publicplatform.runtime.model.dto.portalprocess;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
/** /**
* portal审批流程中止 * portal审批流程中止回调
* *
* @author 50267262 * @author 50267262
*/ */
@Data @Data
public class ProcessSuspendDTO { public class ProcessInterruptCallBackDTO {
/** /**
* 流程实例ID * 流程实例ID
......
package com.keymobile.publicplatform.runtime.model.dto.processmanage;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 流程中止(结束流程)
*
* @author 50267262
*/
@Data
public class ProcessInterruptDTO {
/**
* 流程主键ID
*/
@NotBlank(message = "流程主键ID不能为空")
private String id;
}
\ No newline at end of file
package com.keymobile.publicplatform.runtime.model.dto.processmanage;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 流程中止(结束流程)-portal
*
* @author 50267262
*/
@Data
public class ProcessInterruptPortalDTO {
/**
* 流程ID
*/
@JsonProperty("FProcInsID")
@NotBlank(message = "portal流程ID不能为空")
private String FProcInsID;
/**
* 中止流程申请人
*/
@JsonProperty("FApproversUser")
@NotBlank(message = "中止流程申请人不能为空")
private String FApproversUser;
/**
* 中止流程原因
*/
@JsonProperty("FApproversDesc")
private String FApproversDesc;
}
\ No newline at end of file
package com.keymobile.publicplatform.runtime.model.dto.propertyManage;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* 流程资产批量删除
*
* @author 50267262
*/
@Data
public class PropertyBatchDeleteDTO {
/**
* 流程主键ID
*/
@NotBlank(message = "流程主键ID不能为空")
private String processId;
/**
* 流程资产主键
*/
@NotEmpty(message = "流程资产主键不能为空")
private List<Long> ids;
}
\ No newline at end of file
package com.keymobile.publicplatform.runtime.model.dto.propertyManage;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* 流程资产批量新增
*
* @author 50267262
*/
@Data
public class PropertyBatchSaveDTO {
/**
* 流程主键ID
*/
@NotBlank(message = "流程主键ID不能为空")
private String processId;
/**
* 资产信息
*/
@NotEmpty(message = "资产信息不能为空")
private List<Property> propertyList;
@Data
public static class Property {
/**
* 资产类型
*/
@NotBlank(message = "资产类型不能为空")
private String propertyType;
/**
* 资产ID
*/
@NotBlank(message = "资产ID不能为空")
private String propertyId;
/**
* 资产编号
*/
@NotBlank(message = "资产编号不能为空")
private String propertyNo;
}
}
\ No newline at end of file
package com.keymobile.publicplatform.runtime.model.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author 50267262
*/
@Data
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "process_property")
@EntityListeners(AuditingEntityListener.class)
public class ProcessPropertyAbstract implements Serializable {
private static final long serialVersionUID = -4425077517320374105L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/**
* 流程ID
*/
private String processId;
/**
* 数据资产资产类型
*/
private String propertyType;
/**
* 数据资产资产ID
*/
private String propertyId;
/**
* 数据资产资产编号
*/
private String propertyNo;
/**
* 创建时间
*/
@CreatedDate
private LocalDateTime createTime;
/**
* 更新时间
*/
@LastModifiedDate
private LocalDateTime updateTime;
}
...@@ -27,31 +27,26 @@ public class ProcessRelationAbstract implements Serializable { ...@@ -27,31 +27,26 @@ public class ProcessRelationAbstract implements Serializable {
private static final long serialVersionUID = -4425077517320374105L; private static final long serialVersionUID = -4425077517320374105L;
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) private String id;
private Long id;
/** /**
* 数据资产资产类型 * 流程实例ID(portal)
*/ */
@Column(nullable = false, length = 100) private String procinsId;
private String propertyType;
/** /**
* 数据资产资产ID * 申请人/处理人工号
*/ */
@Column(nullable = false, length = 100) private String applicant;
private String propertyId;
/** /**
* 流程实例ID(portal) * 数据资产资产类型
*/ */
@Column(nullable = false, length = 100) private String propertyType;
private String procinsId;
/** /**
* 流程审批状态 * 流程审批状态
*/ */
@Column(nullable = false, length = 20)
private String state; private String state;
/** /**
......
package com.keymobile.publicplatform.runtime.repository;
import com.keymobile.publicplatform.runtime.model.entity.ProcessPropertyAbstract;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
/**
* @author 50267262
*/
public interface ProcessPropertyRepository extends JpaRepository<ProcessPropertyAbstract, Long>, JpaSpecificationExecutor<ProcessPropertyAbstract> {
@Modifying
@Query(value="DELETE FROM process_property WHERE id IN ?1",nativeQuery=true)
void deleteByIds(List<Long> ids);
}
...@@ -2,6 +2,7 @@ package com.keymobile.publicplatform.runtime.repository; ...@@ -2,6 +2,7 @@ package com.keymobile.publicplatform.runtime.repository;
import com.keymobile.publicplatform.runtime.model.entity.ProcessRelationAbstract; import com.keymobile.publicplatform.runtime.model.entity.ProcessRelationAbstract;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
...@@ -11,7 +12,7 @@ import java.time.LocalDateTime; ...@@ -11,7 +12,7 @@ import java.time.LocalDateTime;
/** /**
* @author 50267262 * @author 50267262
*/ */
public interface ProcessRelationRepository extends JpaRepository<ProcessRelationAbstract, Long> { public interface ProcessRelationRepository extends JpaRepository<ProcessRelationAbstract, String>, JpaSpecificationExecutor<ProcessRelationAbstract> {
@Modifying @Modifying
@Query("update ProcessRelationAbstract pr set pr.state=?2, pr.updateTime=?3 where pr.procinsId=?1") @Query("update ProcessRelationAbstract pr set pr.state=?2, pr.updateTime=?3 where pr.procinsId=?1")
......
package com.keymobile.publicplatform.runtime.service; package com.keymobile.publicplatform.runtime.service;
import com.keymobile.publicplatform.runtime.model.dto.ApprovalProcessDTO; import com.keymobile.publicplatform.runtime.model.dto.portalprocess.ApprovalProcessDTO;
import com.keymobile.publicplatform.runtime.model.dto.ApprovedDTO; import com.keymobile.publicplatform.runtime.model.dto.portalprocess.ApprovedDTO;
import com.keymobile.publicplatform.runtime.model.dto.ProcessSuspendDTO; import com.keymobile.publicplatform.runtime.model.dto.portalprocess.ProcessInterruptCallBackDTO;
/** /**
* @author 50267262 * @author 50267262
...@@ -25,13 +25,13 @@ public interface PortalApprovalProcessService { ...@@ -25,13 +25,13 @@ public interface PortalApprovalProcessService {
* 流程审批不通过(发布) * 流程审批不通过(发布)
* @param param 请求参数 * @param param 请求参数
*/ */
void workFlowReleaseRejectedCallBack(ProcessSuspendDTO param); void workFlowReleaseRejectedCallBack(ProcessInterruptCallBackDTO param);
/** /**
* 流程审批中止(发布) * 流程审批中止(发布)
* @param param 请求参数 * @param param 请求参数
*/ */
void workFlowReleaseInterruptedCallBack(ProcessSuspendDTO param); void workFlowReleaseInterruptedCallBack(ProcessInterruptCallBackDTO param);
/** /**
* 流程审批通过(岗位) * 流程审批通过(岗位)
...@@ -43,11 +43,11 @@ public interface PortalApprovalProcessService { ...@@ -43,11 +43,11 @@ public interface PortalApprovalProcessService {
* 流程审批不通过(岗位) * 流程审批不通过(岗位)
* @param param 请求参数 * @param param 请求参数
*/ */
void workFlowPostAuthorRejectedCallBack(ProcessSuspendDTO param); void workFlowPostAuthorRejectedCallBack(ProcessInterruptCallBackDTO param);
/** /**
* 流程审批中止(岗位) * 流程审批中止(岗位)
* @param param 请求参数 * @param param 请求参数
*/ */
void workFlowPostAuthorInterruptedCallBack(ProcessSuspendDTO param); void workFlowPostAuthorInterruptedCallBack(ProcessInterruptCallBackDTO param);
} }
package com.keymobile.publicplatform.runtime.service;
import com.keymobile.publicplatform.runtime.model.dto.processmanage.ProcessInterruptDTO;
/**
* @author 50267262
*/
public interface ProcessManageService {
/**
* 中止流程
* @param param 请求参数
*/
void processInterrupt(ProcessInterruptDTO param);
}
package com.keymobile.publicplatform.runtime.service;
import com.keymobile.publicplatform.runtime.model.dto.propertyManage.PropertyBatchDeleteDTO;
import com.keymobile.publicplatform.runtime.model.dto.propertyManage.PropertyBatchSaveDTO;
/**
* @author 50267262
*/
public interface PropertyManageService {
/**
* 批量新增资产
*
* @param param 请求参数
*/
void saveBatch(PropertyBatchSaveDTO param);
/**
* 批量删除资产
*
* @param param 请求参数
*/
void deleteBatch(PropertyBatchDeleteDTO param);
}
package com.keymobile.publicplatform.runtime.service.impl; package com.keymobile.publicplatform.runtime.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.UUID;
import com.keymobile.publicplatform.runtime.constant.PublicConstant; import com.keymobile.publicplatform.runtime.constant.PublicConstant;
import com.keymobile.publicplatform.runtime.enums.PropertyProcessStateEnum; import com.keymobile.publicplatform.runtime.enums.PropertyProcessStateEnum;
import com.keymobile.publicplatform.runtime.model.Result; import com.keymobile.publicplatform.runtime.model.Result;
import com.keymobile.publicplatform.runtime.model.dto.ApprovalProcessDTO; import com.keymobile.publicplatform.runtime.model.dto.portalprocess.ApprovalProcessDTO;
import com.keymobile.publicplatform.runtime.model.dto.ApprovedDTO; import com.keymobile.publicplatform.runtime.model.dto.portalprocess.ApprovedDTO;
import com.keymobile.publicplatform.runtime.model.dto.ProcessSuspendDTO; import com.keymobile.publicplatform.runtime.model.dto.portalprocess.ProcessInterruptCallBackDTO;
import com.keymobile.publicplatform.runtime.model.entity.ProcessPropertyAbstract;
import com.keymobile.publicplatform.runtime.model.entity.ProcessRelationAbstract; import com.keymobile.publicplatform.runtime.model.entity.ProcessRelationAbstract;
import com.keymobile.publicplatform.runtime.model.vo.ApprovalProcessVO; import com.keymobile.publicplatform.runtime.model.vo.ApprovalProcessVO;
import com.keymobile.publicplatform.runtime.repository.ProcessPropertyRepository;
import com.keymobile.publicplatform.runtime.repository.ProcessRelationRepository; import com.keymobile.publicplatform.runtime.repository.ProcessRelationRepository;
import com.keymobile.publicplatform.runtime.service.PortalApprovalProcessService; import com.keymobile.publicplatform.runtime.service.PortalApprovalProcessService;
import com.keymobile.publicplatform.runtime.util.RestTemplateUtils; import com.keymobile.publicplatform.runtime.util.RestTemplateUtils;
...@@ -39,28 +42,38 @@ public class PortalApprovalProcessServiceImpl implements PortalApprovalProcessSe ...@@ -39,28 +42,38 @@ public class PortalApprovalProcessServiceImpl implements PortalApprovalProcessSe
@Autowired @Autowired
private ProcessRelationRepository processRelationRepository; private ProcessRelationRepository processRelationRepository;
@Autowired
private ProcessPropertyRepository propertyRepository;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void propertyProcess(ApprovalProcessDTO param) { public void propertyProcess(ApprovalProcessDTO param) {
/* 调用portal发起/重新提交审批流程 */ /* 调用portal发起/重新提交审批流程 TODO 区分资产和岗位 */
String url = baseUrl + PublicConstant.APPROVAL_PROCESS_URL; String url = baseUrl + PublicConstant.APPROVAL_PROCESS_URL;
Result<ApprovalProcessVO> result = RestTemplateUtils.postJsonPO(url, param.toPortal(), poAuth, new ParameterizedTypeReference<>() { // 资产包唯一ID
String propertyReceiptsId = UUID.randomUUID().toString();
Result<ApprovalProcessVO> result = RestTemplateUtils.postJsonPO(url, param.toProcessPortal(propertyReceiptsId), poAuth, new ParameterizedTypeReference<>() {
}); });
ApprovalProcessVO approvalProcessVO = result.getData(); ApprovalProcessVO approvalProcessVO = result.getData();
// TODO 流程重新提交的状态维护、是否存在资产调整可能 /* 维护资产与流程的关联关系及状态 */
/* 维护资产与流程的关系及状态 */ List<ProcessPropertyAbstract> properties = CollUtil.newArrayList();
List<ProcessRelationAbstract> relations = CollUtil.newArrayList(); ProcessRelationAbstract processRelation = processRelationRepository.save(ProcessRelationAbstract.builder()
param.getPropertyList().forEach(property -> { .id(propertyReceiptsId)
relations.add(ProcessRelationAbstract.builder() .applicant(param.getApplicant())
.propertyType(property.getPropertyType())
.propertyId(property.getPropertyNo())
.procinsId(approvalProcessVO.getProcinsId()) .procinsId(approvalProcessVO.getProcinsId())
.propertyType(param.getPropertyType())
.state(PropertyProcessStateEnum.DOING.getType()) .state(PropertyProcessStateEnum.DOING.getType())
.build()); .build());
param.getPropertyList().forEach(property -> {
properties.add(ProcessPropertyAbstract.builder()
.processId(processRelation.getId())
.propertyType(param.getPropertyType())
.propertyId(property.getPropertyId())
.propertyNo(property.getPropertyNo())
.build());
}); });
processRelationRepository.saveAll(relations); propertyRepository.saveAll(properties);
} }
@Override @Override
...@@ -72,13 +85,13 @@ public class PortalApprovalProcessServiceImpl implements PortalApprovalProcessSe ...@@ -72,13 +85,13 @@ public class PortalApprovalProcessServiceImpl implements PortalApprovalProcessSe
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void workFlowReleaseRejectedCallBack(ProcessSuspendDTO param) { public void workFlowReleaseRejectedCallBack(ProcessInterruptCallBackDTO param) {
processRelationRepository.updateStateByProcinsId(param.getProcinsId(), PropertyProcessStateEnum.REJECTED.getType(), LocalDateTime.now()); processRelationRepository.updateStateByProcinsId(param.getProcinsId(), PropertyProcessStateEnum.REJECTED.getType(), LocalDateTime.now());
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void workFlowReleaseInterruptedCallBack(ProcessSuspendDTO param) { public void workFlowReleaseInterruptedCallBack(ProcessInterruptCallBackDTO param) {
processRelationRepository.updateStateByProcinsId(param.getProcinsId(), PropertyProcessStateEnum.INTERRUPTED.getType(), LocalDateTime.now()); processRelationRepository.updateStateByProcinsId(param.getProcinsId(), PropertyProcessStateEnum.INTERRUPTED.getType(), LocalDateTime.now());
} }
...@@ -91,13 +104,13 @@ public class PortalApprovalProcessServiceImpl implements PortalApprovalProcessSe ...@@ -91,13 +104,13 @@ public class PortalApprovalProcessServiceImpl implements PortalApprovalProcessSe
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void workFlowPostAuthorRejectedCallBack(ProcessSuspendDTO param) { public void workFlowPostAuthorRejectedCallBack(ProcessInterruptCallBackDTO param) {
processRelationRepository.updateStateByProcinsId(param.getProcinsId(), PropertyProcessStateEnum.REJECTED.getType(), LocalDateTime.now()); processRelationRepository.updateStateByProcinsId(param.getProcinsId(), PropertyProcessStateEnum.REJECTED.getType(), LocalDateTime.now());
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void workFlowPostAuthorInterruptedCallBack(ProcessSuspendDTO param) { public void workFlowPostAuthorInterruptedCallBack(ProcessInterruptCallBackDTO param) {
processRelationRepository.updateStateByProcinsId(param.getProcinsId(), PropertyProcessStateEnum.INTERRUPTED.getType(), LocalDateTime.now()); processRelationRepository.updateStateByProcinsId(param.getProcinsId(), PropertyProcessStateEnum.INTERRUPTED.getType(), LocalDateTime.now());
} }
......
package com.keymobile.publicplatform.runtime.service.impl;
import com.github.wenhao.jpa.Specifications;
import com.keymobile.publicplatform.runtime.constant.PublicConstant;
import com.keymobile.publicplatform.runtime.model.Result;
import com.keymobile.publicplatform.runtime.model.dto.processmanage.ProcessInterruptDTO;
import com.keymobile.publicplatform.runtime.model.dto.processmanage.ProcessInterruptPortalDTO;
import com.keymobile.publicplatform.runtime.model.entity.ProcessPropertyAbstract;
import com.keymobile.publicplatform.runtime.model.entity.ProcessRelationAbstract;
import com.keymobile.publicplatform.runtime.repository.ProcessPropertyRepository;
import com.keymobile.publicplatform.runtime.repository.ProcessRelationRepository;
import com.keymobile.publicplatform.runtime.service.ProcessManageService;
import com.keymobile.publicplatform.runtime.util.RestTemplateUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import java.util.Objects;
/**
* 我的流程管理
*
* @author lmg
*/
@Service
@Slf4j
public class ProcessManageServiceImpl implements ProcessManageService {
@Value("${mindray.po.url}")
private String baseUrl;
@Value("${mindray.po.auth}")
private String poAuth;
@Autowired
private ProcessRelationRepository processRelationRepository;
@Autowired
private ProcessPropertyRepository propertyRepository;
@Override
public void processInterrupt(ProcessInterruptDTO param) {
ProcessRelationAbstract processRelation = processRelationRepository.findById(param.getId()).orElse(null);
if (Objects.nonNull(processRelation)) {
/* 调用portal中止审批流程 TODO 中止流程PO地址 */
String url = baseUrl + PublicConstant.PROCESS_INTERRUPT_URL;
ProcessInterruptPortalDTO interruptPortalDTO = new ProcessInterruptPortalDTO();
interruptPortalDTO.setFProcInsID(processRelation.getProcinsId());
// TODO 用户上下文获取用户ID
interruptPortalDTO.setFApproversUser("USER");
interruptPortalDTO.setFApproversDesc("数据资产平台发起废弃");
Result<Object> result = RestTemplateUtils.postJsonPO(url, interruptPortalDTO, poAuth, new ParameterizedTypeReference<>() {
});
// TODO 更新状态,区分流程中止回调的更新逻辑
Specification<ProcessPropertyAbstract> specification = Specifications.<ProcessPropertyAbstract>and()
.like(StringUtils.isNotEmpty("queryBean.getName()"), "user_name", param.getId())
.build();
PageRequest pageRequest = new PageRequest(10, 20);
propertyRepository.findAll(specification, pageRequest);
}
}
}
package com.keymobile.publicplatform.runtime.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.keymobile.publicplatform.runtime.model.dto.propertyManage.PropertyBatchDeleteDTO;
import com.keymobile.publicplatform.runtime.model.dto.propertyManage.PropertyBatchSaveDTO;
import com.keymobile.publicplatform.runtime.model.entity.ProcessPropertyAbstract;
import com.keymobile.publicplatform.runtime.repository.ProcessPropertyRepository;
import com.keymobile.publicplatform.runtime.service.PropertyManageService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 流程资产管理
*
* @author lmg
*/
@Service
@Slf4j
public class PropertyManageServiceImpl implements PropertyManageService {
@Autowired
private ProcessPropertyRepository propertyRepository;
@Override
@Transactional(rollbackFor = Exception.class)
public void saveBatch(PropertyBatchSaveDTO param) {
List<ProcessPropertyAbstract> properties = CollUtil.newArrayList();
param.getPropertyList().forEach(property -> {
properties.add(ProcessPropertyAbstract.builder()
.processId(param.getProcessId())
.propertyType(property.getPropertyType())
.propertyId(property.getPropertyId())
.propertyNo(property.getPropertyNo())
.build());
});
propertyRepository.saveAll(properties);
// TODO 通知业务修改资产状态
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteBatch(PropertyBatchDeleteDTO param) {
propertyRepository.deleteByIds(param.getIds());
// TODO 通知业务修改资产状态
}
}
...@@ -7,6 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -7,6 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.ParameterizedTypeReference; import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.*; import org.springframework.http.*;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
/** /**
...@@ -35,8 +36,15 @@ public class RestTemplateUtils { ...@@ -35,8 +36,15 @@ public class RestTemplateUtils {
headers.set(HttpHeaders.AUTHORIZATION, "Basic " + auth); headers.set(HttpHeaders.AUTHORIZATION, "Basic " + auth);
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers); HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
log.info("PO url:{}, request:{}", url, JSON.toJSONString(requestBody)); log.info("PO exchange begin url:{}, request:{}", url, JSON.toJSONString(requestBody));
ResponseEntity<Result<T>> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, responseType); ResponseEntity<Result<T>> responseEntity;
try {
responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, responseType);
log.info("PO exchange end url:{}, request:{}, response:{}", url, JSON.toJSONString(requestBody), JSON.toJSONString(responseEntity));
} catch (RestClientException e) {
log.error("PO exchange error, url:{}, request:{}, exception:", url, JSON.toJSONString(requestBody), e);
throw new RuntimeException(e);
}
return responseEntity.getBody(); return responseEntity.getBody();
} }
......
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