Commit 1055f81c by lanmw

更新内网代码

parent fab1cd77
......@@ -8,6 +8,10 @@ package com.keymobile.publicplatform.runtime.constant;
public class PublicConstant {
//PO URL
//发起portal审批流程接口
//发起portal资产审批流程接口
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;
import com.keymobile.publicplatform.runtime.model.Result;
import com.keymobile.publicplatform.runtime.model.dto.ApprovalProcessDTO;
import com.keymobile.publicplatform.runtime.model.dto.ApprovedDTO;
import com.keymobile.publicplatform.runtime.model.dto.ProcessSuspendDTO;
import com.keymobile.publicplatform.runtime.model.dto.portalprocess.ApprovalProcessDTO;
import com.keymobile.publicplatform.runtime.model.dto.portalprocess.ApprovedDTO;
import com.keymobile.publicplatform.runtime.model.dto.portalprocess.ProcessInterruptCallBackDTO;
import com.keymobile.publicplatform.runtime.service.PortalApprovalProcessService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -26,49 +26,69 @@ public class PortalApprovalProcessController {
@Autowired
private PortalApprovalProcessService portalApprovalProcessService;
/**
* 发起portal审批流程
*/
@PostMapping("/propertyProcess")
public Result<Void> propertyProcess(@RequestBody @Validated ApprovalProcessDTO param) {
portalApprovalProcessService.propertyProcess(param);
return Result.ok();
}
/**
* 流程审批通过回调(发布)
*/
@PostMapping("/workFlowReleaseApprovedCallBack")
public Result<Void> workFlowReleaseApprovedCallBack(@RequestBody @Validated ApprovedDTO param) {
portalApprovalProcessService.workFlowReleaseApprovedCallBack(param);
return Result.ok();
}
/**
* 流程审批不通过回调(发布)
*/
@PostMapping("/workFlowReleaseRejectedCallBack")
public Result<Void> workFlowReleaseRejectedCallBack(@RequestBody @Validated ProcessSuspendDTO param) {
public Result<Void> workFlowReleaseRejectedCallBack(@RequestBody @Validated ProcessInterruptCallBackDTO param) {
portalApprovalProcessService.workFlowReleaseRejectedCallBack(param);
return Result.ok();
}
/**
* 流程审批中止回调(发布)
*/
@PostMapping("/workFlowReleaseInterruptedCallBack")
public Result<Void> workFlowReleaseInterruptedCallBack(@RequestBody @Validated ProcessSuspendDTO param) {
public Result<Void> workFlowReleaseInterruptedCallBack(@RequestBody @Validated ProcessInterruptCallBackDTO param) {
portalApprovalProcessService.workFlowReleaseInterruptedCallBack(param);
return Result.ok();
}
/**
* 流程审批通过回调(岗位)
*/
@PostMapping("/workFlowPostAuthorApprovedCallBack")
public Result<Void> workFlowPostAuthorApprovedCallBack(@RequestBody @Validated ApprovedDTO param) {
portalApprovalProcessService.workFlowPostAuthorApprovedCallBack(param);
return Result.ok();
}
/**
* 流程审批不通过回调(岗位)
*/
@PostMapping("/workFlowPostAuthorRejectedCallBack")
public Result<Void> workFlowPostAuthorRejectedCallBack(@RequestBody @Validated ProcessSuspendDTO param) {
public Result<Void> workFlowPostAuthorRejectedCallBack(@RequestBody @Validated ProcessInterruptCallBackDTO param) {
portalApprovalProcessService.workFlowPostAuthorRejectedCallBack(param);
return Result.ok();
}
/**
* 流程审批中止回调(岗位)
*/
@PostMapping("/workFlowPostAuthorInterruptedCallBack")
public Result<Void> workFlowPostAuthorInterruptedCallBack(@RequestBody @Validated ProcessSuspendDTO param) {
public Result<Void> workFlowPostAuthorInterruptedCallBack(@RequestBody @Validated ProcessInterruptCallBackDTO param) {
portalApprovalProcessService.workFlowPostAuthorInterruptedCallBack(param);
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 lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
......@@ -16,15 +15,16 @@ import java.util.List;
public class ApprovalProcessDTO {
/**
* 流程实例ID(重新提交时,必填)
* 资产类型
*/
private String procinsId;
@NotBlank(message = "资产类型不能为空")
private String propertyType;
/**
* 申请人/处理人工号(必填)
*/
@NotBlank(message = "申请人/处理人工号不能为空")
private String applicanter;
private String applicant;
/**
* 申请类型(0上架流程 1下架流程)(必填)
......@@ -40,13 +40,83 @@ public class ApprovalProcessDTO {
/**
* 资产明细
*/
@NotEmpty(message = "资产明细不能为空")
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
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 = "数据关键用户不能为空")
......@@ -62,14 +132,20 @@ public class ApprovalProcessDTO {
* IT责任人
*/
@NotBlank(message = "IT责任人不能为空")
private String itResponsibilityer;
private String itResponsibility;
/**
* 资产目录负责人
*/
@NotBlank(message = "资产目录负责人不能为空")
private String propertyUserId;
}
/**
* 岗位明细
*/
@Data
public static class Post {
/**
* 资产的连接地址
*/
......@@ -83,6 +159,12 @@ public class ApprovalProcessDTO {
private String propertyType;
/**
* 资产Id
*/
@NotBlank(message = "资产Id不能为空")
private String propertyId;
/**
* 资产编码
*/
@NotBlank(message = "资产编码不能为空")
......@@ -93,29 +175,94 @@ public class ApprovalProcessDTO {
*/
@NotBlank(message = "资产名称不能为空")
private String propertyName;
/**
* IT责任人
*/
@NotBlank(message = "IT责任人不能为空")
private String itResponsibility;
/**
* 数据关键用户
*/
@NotBlank(message = "数据关键用户不能为空")
private String keyUserId;
/**
* 数据Owner
*/
@NotBlank(message = "数据Owner不能为空")
private String dataOwner;
}
public ApprovalProcessPortalDTO toPortal() {
/**
* 转换资产-岗位信息
*
* @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;
}
/**
* 转换资产信息
*
* @param uuid 流程主键id
* @return DTO
*/
public ApprovalProcessPortalDTO toProcessPortal(String uuid) {
ApprovalProcessPortalDTO portalDTO = new ApprovalProcessPortalDTO();
portalDTO.setProcinsId(this.procinsId);
portalDTO.setApplicanter(this.applicanter);
portalDTO.setPropertyReceiptsId(uuid);
portalDTO.setApplicanter(this.applicant);
portalDTO.setApplicationType(this.applicationType);
portalDTO.setReason(this.reason);
List<ApprovalProcessPortalDTO.Property> PropertyList = CollUtil.newArrayList();
List<ApprovalProcessPortalDTO.Property> propertyList = CollUtil.newArrayList();
this.propertyList.forEach(v -> {
ApprovalProcessPortalDTO.Property property = new ApprovalProcessPortalDTO.Property();
property.setKeyUserId(v.getKeyUserId());
property.setDataOwner(v.getDataOwner());
property.setItResponsibilityer(v.getItResponsibilityer());
property.setItResponsibilityer(v.getItResponsibility());
property.setPropertyUserId(v.getPropertyUserId());
property.setPropertyLink(v.getPropertyLink());
property.setPropertyType(v.getPropertyType());
property.setPropertyType(this.propertyType);
property.setPropertyNo(v.getPropertyNo());
property.setPropertyName(v.getPropertyName());
PropertyList.add(property);
propertyList.add(property);
});
portalDTO.setPropertyList(PropertyList);
portalDTO.setPropertyList(propertyList);
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 lombok.Data;
......@@ -22,6 +22,13 @@ public class ApprovalProcessPortalDTO {
private String ProcinsId;
/**
* 资产包唯一Id
*/
@NotBlank(message = "资产包唯一Id不能为空")
@JsonProperty("PropertyReceiptsId")
private String PropertyReceiptsId;
/**
* 申请人/处理人工号(必填)
*/
@NotBlank(message = "申请人/处理人工号不能为空")
......
package com.keymobile.publicplatform.runtime.model.dto;
package com.keymobile.publicplatform.runtime.model.dto.portalprocess;
import lombok.Data;
......
package com.keymobile.publicplatform.runtime.model.dto;
package com.keymobile.publicplatform.runtime.model.dto.portalprocess;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* portal审批流程中止
* portal审批流程中止回调
*
* @author 50267262
*/
@Data
public class ProcessSuspendDTO {
public class ProcessInterruptCallBackDTO {
/**
* 流程实例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 {
private static final long serialVersionUID = -4425077517320374105L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String id;
/**
* 数据资产资产类型
* 流程实例ID(portal)
*/
@Column(nullable = false, length = 100)
private String propertyType;
private String procinsId;
/**
* 数据资产资产ID
* 申请人/处理人工号
*/
@Column(nullable = false, length = 100)
private String propertyId;
private String applicant;
/**
* 流程实例ID(portal)
* 数据资产资产类型
*/
@Column(nullable = false, length = 100)
private String procinsId;
private String propertyType;
/**
* 流程审批状态
*/
@Column(nullable = false, length = 20)
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;
import com.keymobile.publicplatform.runtime.model.entity.ProcessRelationAbstract;
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;
......@@ -11,7 +12,7 @@ import java.time.LocalDateTime;
/**
* @author 50267262
*/
public interface ProcessRelationRepository extends JpaRepository<ProcessRelationAbstract, Long> {
public interface ProcessRelationRepository extends JpaRepository<ProcessRelationAbstract, String>, JpaSpecificationExecutor<ProcessRelationAbstract> {
@Modifying
@Query("update ProcessRelationAbstract pr set pr.state=?2, pr.updateTime=?3 where pr.procinsId=?1")
......
package com.keymobile.publicplatform.runtime.service;
import com.keymobile.publicplatform.runtime.model.dto.ApprovalProcessDTO;
import com.keymobile.publicplatform.runtime.model.dto.ApprovedDTO;
import com.keymobile.publicplatform.runtime.model.dto.ProcessSuspendDTO;
import com.keymobile.publicplatform.runtime.model.dto.portalprocess.ApprovalProcessDTO;
import com.keymobile.publicplatform.runtime.model.dto.portalprocess.ApprovedDTO;
import com.keymobile.publicplatform.runtime.model.dto.portalprocess.ProcessInterruptCallBackDTO;
/**
* @author 50267262
......@@ -25,13 +25,13 @@ public interface PortalApprovalProcessService {
* 流程审批不通过(发布)
* @param param 请求参数
*/
void workFlowReleaseRejectedCallBack(ProcessSuspendDTO param);
void workFlowReleaseRejectedCallBack(ProcessInterruptCallBackDTO param);
/**
* 流程审批中止(发布)
* @param param 请求参数
*/
void workFlowReleaseInterruptedCallBack(ProcessSuspendDTO param);
void workFlowReleaseInterruptedCallBack(ProcessInterruptCallBackDTO param);
/**
* 流程审批通过(岗位)
......@@ -43,11 +43,11 @@ public interface PortalApprovalProcessService {
* 流程审批不通过(岗位)
* @param param 请求参数
*/
void workFlowPostAuthorRejectedCallBack(ProcessSuspendDTO param);
void workFlowPostAuthorRejectedCallBack(ProcessInterruptCallBackDTO 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;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.UUID;
import com.keymobile.publicplatform.runtime.constant.PublicConstant;
import com.keymobile.publicplatform.runtime.enums.PropertyProcessStateEnum;
import com.keymobile.publicplatform.runtime.model.Result;
import com.keymobile.publicplatform.runtime.model.dto.ApprovalProcessDTO;
import com.keymobile.publicplatform.runtime.model.dto.ApprovedDTO;
import com.keymobile.publicplatform.runtime.model.dto.ProcessSuspendDTO;
import com.keymobile.publicplatform.runtime.model.dto.portalprocess.ApprovalProcessDTO;
import com.keymobile.publicplatform.runtime.model.dto.portalprocess.ApprovedDTO;
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.vo.ApprovalProcessVO;
import com.keymobile.publicplatform.runtime.repository.ProcessPropertyRepository;
import com.keymobile.publicplatform.runtime.repository.ProcessRelationRepository;
import com.keymobile.publicplatform.runtime.service.PortalApprovalProcessService;
import com.keymobile.publicplatform.runtime.util.RestTemplateUtils;
......@@ -39,28 +42,38 @@ public class PortalApprovalProcessServiceImpl implements PortalApprovalProcessSe
@Autowired
private ProcessRelationRepository processRelationRepository;
@Autowired
private ProcessPropertyRepository propertyRepository;
@Override
@Transactional(rollbackFor = Exception.class)
public void propertyProcess(ApprovalProcessDTO param) {
/* 调用portal发起/重新提交审批流程 */
/* 调用portal发起/重新提交审批流程 TODO 区分资产和岗位 */
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();
// TODO 流程重新提交的状态维护、是否存在资产调整可能
/* 维护资产与流程的关系及状态 */
List<ProcessRelationAbstract> relations = CollUtil.newArrayList();
/* 维护资产与流程的关联关系及状态 */
List<ProcessPropertyAbstract> properties = CollUtil.newArrayList();
ProcessRelationAbstract processRelation = processRelationRepository.save(ProcessRelationAbstract.builder()
.id(propertyReceiptsId)
.applicant(param.getApplicant())
.procinsId(approvalProcessVO.getProcinsId())
.propertyType(param.getPropertyType())
.state(PropertyProcessStateEnum.DOING.getType())
.build());
param.getPropertyList().forEach(property -> {
relations.add(ProcessRelationAbstract.builder()
.propertyType(property.getPropertyType())
.propertyId(property.getPropertyNo())
.procinsId(approvalProcessVO.getProcinsId())
.state(PropertyProcessStateEnum.DOING.getType())
properties.add(ProcessPropertyAbstract.builder()
.processId(processRelation.getId())
.propertyType(param.getPropertyType())
.propertyId(property.getPropertyId())
.propertyNo(property.getPropertyNo())
.build());
});
processRelationRepository.saveAll(relations);
propertyRepository.saveAll(properties);
}
@Override
......@@ -72,13 +85,13 @@ public class PortalApprovalProcessServiceImpl implements PortalApprovalProcessSe
@Override
@Transactional(rollbackFor = Exception.class)
public void workFlowReleaseRejectedCallBack(ProcessSuspendDTO param) {
public void workFlowReleaseRejectedCallBack(ProcessInterruptCallBackDTO param) {
processRelationRepository.updateStateByProcinsId(param.getProcinsId(), PropertyProcessStateEnum.REJECTED.getType(), LocalDateTime.now());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void workFlowReleaseInterruptedCallBack(ProcessSuspendDTO param) {
public void workFlowReleaseInterruptedCallBack(ProcessInterruptCallBackDTO param) {
processRelationRepository.updateStateByProcinsId(param.getProcinsId(), PropertyProcessStateEnum.INTERRUPTED.getType(), LocalDateTime.now());
}
......@@ -91,13 +104,13 @@ public class PortalApprovalProcessServiceImpl implements PortalApprovalProcessSe
@Override
@Transactional(rollbackFor = Exception.class)
public void workFlowPostAuthorRejectedCallBack(ProcessSuspendDTO param) {
public void workFlowPostAuthorRejectedCallBack(ProcessInterruptCallBackDTO param) {
processRelationRepository.updateStateByProcinsId(param.getProcinsId(), PropertyProcessStateEnum.REJECTED.getType(), LocalDateTime.now());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void workFlowPostAuthorInterruptedCallBack(ProcessSuspendDTO param) {
public void workFlowPostAuthorInterruptedCallBack(ProcessInterruptCallBackDTO param) {
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;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.*;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
/**
......@@ -35,8 +36,15 @@ public class RestTemplateUtils {
headers.set(HttpHeaders.AUTHORIZATION, "Basic " + auth);
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
log.info("PO url:{}, request:{}", url, JSON.toJSONString(requestBody));
ResponseEntity<Result<T>> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, responseType);
log.info("PO exchange begin url:{}, request:{}", url, JSON.toJSONString(requestBody));
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();
}
......
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