Commit 15d090c3 by kenzo

{

parent 9ebf0d4c
......@@ -16,6 +16,7 @@ import com.cnooc.expert.controller.expert.model.request.ExpertInfoUpdateApiReq;
import com.cnooc.expert.controller.expert.model.request.FirstCategoryExpertApplyReq;
import com.cnooc.expert.controller.expert.model.request.GeRenXiuJiaApplyReq;
import com.cnooc.expert.controller.expert.model.request.GeRenXiuJiaPageReq;
import com.cnooc.expert.controller.expert.model.request.GeRenXiuJiaZhuXiaoTimeUpdateReq;
import com.cnooc.expert.controller.expert.model.request.PingBiaoXiangMuByOwnerPageReq;
import com.cnooc.expert.controller.expert.model.request.PingBiaoXiangMuInfoGetByChouQuMaReq;
import com.cnooc.expert.controller.expert.model.request.QingJiaJinJiApplyReq;
......@@ -50,6 +51,7 @@ import com.cnooc.expert.external.expert.model.response.ExpertInfoGetApiResp;
import com.cnooc.expert.external.expert.model.response.FirstCategoryExpertApplyApiResp;
import com.cnooc.expert.external.expert.model.response.GeRenXiuJiaApplyApiResp;
import com.cnooc.expert.external.expert.model.response.GeRenXiuJiaPageApiResp;
import com.cnooc.expert.external.expert.model.response.GeRenXiuJiaZhuXiaoTimeUpdateApiResp;
import com.cnooc.expert.external.expert.model.response.JinJiQingJiaApplyApiResp;
import com.cnooc.expert.external.expert.model.response.JinJiQingJiaPageApiResp;
import com.cnooc.expert.external.expert.model.response.TainLessonProgressUpdateApiResp;
......@@ -251,6 +253,13 @@ public class ExpertController extends AbstractBaseController {
return ApiResult.successWithResult(apiResp);
}
// 个人休假注销
@PostMapping("/xiu-jia/updateZhuXiaoTime")
public ApiResult<GeRenXiuJiaZhuXiaoTimeUpdateApiResp> geRenXiuJiaApply(@RequestBody @Validated GeRenXiuJiaZhuXiaoTimeUpdateReq req) {
GeRenXiuJiaZhuXiaoTimeUpdateApiResp apiResp = expertService.updateGeRenXiuJiaZhuXiaoTime(req.getQingJiaGuid());
return ApiResult.successWithResult(apiResp);
}
// *** 评标项目 ***
// 专家所属评标项目分页(请假状态)
......
......@@ -16,6 +16,7 @@ import com.cnooc.expert.controller.expert.model.request.ExpertInfoUpdateApiReq;
import com.cnooc.expert.controller.expert.model.request.FirstCategoryExpertApplyReq;
import com.cnooc.expert.controller.expert.model.request.GeRenXiuJiaApplyReq;
import com.cnooc.expert.controller.expert.model.request.GeRenXiuJiaPageReq;
import com.cnooc.expert.controller.expert.model.request.GeRenXiuJiaZhuXiaoTimeUpdateReq;
import com.cnooc.expert.controller.expert.model.request.KaoShiPageReq;
import com.cnooc.expert.controller.expert.model.request.PeiXunKeChengKeJieFuJianGetReq;
import com.cnooc.expert.controller.expert.model.request.PeiXunKeChengKeJieGetReq;
......@@ -45,6 +46,7 @@ import com.cnooc.expert.controller.expert.model.response.ExamRecordSaveResp;
import com.cnooc.expert.controller.expert.model.response.ExpertInfoGetResp;
import com.cnooc.expert.controller.expert.model.response.FirstCategoryExpertApplyResp;
import com.cnooc.expert.controller.expert.model.response.GeRenXiuJiaApplyResp;
import com.cnooc.expert.controller.expert.model.response.GeRenXiuJiaZhuXiaoTimeUpdateResp;
import com.cnooc.expert.controller.expert.model.response.KaoShiPageResp;
import com.cnooc.expert.controller.expert.model.response.NofilterListItemResp;
import com.cnooc.expert.controller.expert.model.response.PeiXunKeChengKeJieFuJianGetResp;
......@@ -67,6 +69,7 @@ import com.cnooc.expert.external.expert.model.request.TainLessonProgressUpdateAp
import com.cnooc.expert.external.expert.model.response.ApproveNodeGetApiResp;
import com.cnooc.expert.external.expert.model.response.CommonFuJianListApiResp;
import com.cnooc.expert.external.expert.model.response.FirstCategoryExpertApplyApiResp;
import com.cnooc.expert.external.expert.model.response.GeRenXiuJiaZhuXiaoTimeUpdateApiResp;
import com.cnooc.expert.external.expert.model.response.TainLessonProgressUpdateApiResp;
import com.cnooc.expert.external.expert.model.response.TrainCourseLessonGetApiResp;
import com.cnooc.expert.external.expert.model.response.TrainExamPageApiResp;
......@@ -274,6 +277,13 @@ public class ExpertMockController extends AbstractBaseController {
return ApiResult.successWithResult(expertMockService.applyGeRenXiuJia(req));
}
// 个人休假注销
@PostMapping("/xiu-jia/updateZhuXiaoTime")
public ApiResult<GeRenXiuJiaZhuXiaoTimeUpdateResp> geRenXiuJiaApply(@RequestBody @Validated GeRenXiuJiaZhuXiaoTimeUpdateReq req) {
GeRenXiuJiaZhuXiaoTimeUpdateResp apiResp = expertMockService.updateGeRenXiuJiaZhuXiaoTime(req.getQingJiaGuid());
return ApiResult.successWithResult(apiResp);
}
// *** 评标项目 ***
// 专家的评标项目分页列表
......
package com.cnooc.expert.controller.expert.model.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class GeRenXiuJiaZhuXiaoTimeUpdateReq {
@NotBlank
private String qingJiaGuid;
}
package com.cnooc.expert.controller.expert.model.response;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class GeRenXiuJiaZhuXiaoTimeUpdateResp {
private String qingJiaGuid;
private String zhuanJiaGuid;
private Integer leiXing;
private Long startTime;
private Long endTime;
private Long xiaoJiaTime;
private Float qingJiaDays;
private String qingJiaYuanYin;
private Long tiJiaoTime;
private Long shenPiTime;
private String shenPiYiJian;
private Integer shenPiZhuangTai;
private Long createTime;
private String creatorName;
private Long modifyTime;
private String modifierName;
private Long qingJiaStartTime;
private Long qingJiaEndTime;
private String zhuanJiaName;
private String shenFenZheng;
private Boolean isHaveChanged;
private Boolean isXiTongQj;//是否是系统请假
private String remark;//备注
private String zhuanJiaCode;
}
......@@ -3,15 +3,19 @@ package com.cnooc.expert.controller.file;
import com.cnooc.expert.common.response.ApiResult;
import com.cnooc.expert.controller.common.AbstractBaseController;
import com.cnooc.expert.controller.file.model.request.DownloadInfoReq;
import com.cnooc.expert.external.file.model.response.DownLoadInfoDTO;
import com.cnooc.expert.external.file.model.response.DownLoadInfoApiResp;
import com.cnooc.expert.service.FileService;
import lombok.AllArgsConstructor;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
@AllArgsConstructor
......@@ -21,9 +25,16 @@ public class FileController extends AbstractBaseController {
private final FileService fileService;
@PostMapping("/put/object")
public ApiResult<List<DownLoadInfoApiResp>> filePutObject(@RequestParam("file") MultipartFile file,
@RequestParam("fileType") Integer fileType) throws IOException {
List<DownLoadInfoApiResp> apiResp = fileService.putObject(file, fileType);
return ApiResult.successWithResult(apiResp);
}
@PostMapping("/generatorDownloadInfo")
public ApiResult<List<DownLoadInfoDTO>> downloadInfo(@RequestBody @Validated DownloadInfoReq req) {
List<DownLoadInfoDTO> apiResp = fileService.downloadInfo(req.getPathId());
public ApiResult<List<DownLoadInfoApiResp>> downloadInfo(@RequestBody @Validated DownloadInfoReq req) {
List<DownLoadInfoApiResp> apiResp = fileService.downloadInfo(req.getPathId());
return ApiResult.successWithResult(apiResp);
}
......
......@@ -3,15 +3,18 @@ package com.cnooc.expert.controller.file;
import com.cnooc.expert.common.response.ApiResult;
import com.cnooc.expert.controller.common.AbstractBaseController;
import com.cnooc.expert.controller.file.model.request.DownloadInfoReq;
import com.cnooc.expert.external.file.model.response.DownLoadInfoDTO;
import com.cnooc.expert.external.file.model.response.DownLoadInfoApiResp;
import com.cnooc.expert.service.FileMockService;
import lombok.AllArgsConstructor;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
@AllArgsConstructor
......@@ -21,9 +24,17 @@ public class FileMockController extends AbstractBaseController {
private final FileMockService fileMockService;
@PostMapping("/put/object")
public ApiResult<List<DownLoadInfoApiResp>> filePutObject(@RequestParam("file") MultipartFile file,
@RequestParam("fileType") Integer fileType) throws IOException {
List<DownLoadInfoApiResp> apiResp = fileMockService.putObject(file, fileType);
return ApiResult.successWithResult(apiResp);
}
@PostMapping("/generatorDownloadInfo")
public ApiResult<List<DownLoadInfoDTO>> downloadInfo(@RequestBody @Validated DownloadInfoReq req) {
List<DownLoadInfoDTO> apiResp = fileMockService.downloadInfo(req.getPathId());
public ApiResult<List<DownLoadInfoApiResp>> downloadInfo(@RequestBody @Validated DownloadInfoReq req) {
List<DownLoadInfoApiResp> apiResp = fileMockService.downloadInfo(req.getPathId());
return ApiResult.successWithResult(apiResp);
}
......
package com.cnooc.expert.controller.file.model.response;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class DownLoadInfoResp {
/**
* 文件名称
*/
private String fileName;
/**
* 预览地址
*/
private String downLoadUrl;
/**
* 下载地址
*/
private String directDownLoadUrl;
/**
* 创建时间
*/
private Long createTime;
private Long fileSize;
}
......@@ -3,11 +3,18 @@ package com.cnooc.expert.controller.workflow;
import com.cnooc.expert.common.response.ApiResult;
import com.cnooc.expert.common.response.BasePageResp;
import com.cnooc.expert.controller.common.AbstractBaseController;
import com.cnooc.expert.controller.workflow.model.request.ApprovePathSettingByConditionGetReq;
import com.cnooc.expert.controller.workflow.model.request.ApprovePathSettingPageReq;
import com.cnooc.expert.external.workflow.model.request.ApprovePathSettingByConditionGetApiReq;
import com.cnooc.expert.external.workflow.model.request.ApprovePathSettingSaveOrUpdateApiReq;
import com.cnooc.expert.external.workflow.model.request.InstCalculateApiReq;
import com.cnooc.expert.external.workflow.model.request.InstRevokeApiReq;
import com.cnooc.expert.external.workflow.model.request.InstStartApiReq;
import com.cnooc.expert.external.workflow.model.response.ApprovePathSettingByConditionGetApiResp;
import com.cnooc.expert.external.workflow.model.response.InstCalculateApiResp;
import com.cnooc.expert.external.workflow.model.response.InstStartApiResp;
import com.cnooc.expert.external.workflow.model.response.ProcDefPageApiResp;
import com.cnooc.expert.external.workflow.model.response.ReceiveSettingByConditionFindApiResp;
import com.cnooc.expert.service.WorkflowService;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
......@@ -16,6 +23,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@AllArgsConstructor
@RestController
@RequestMapping("/workflow")
......@@ -38,10 +47,38 @@ public class WorkflowController extends AbstractBaseController {
}
// 获取审批路径
@PostMapping("/approve-path-setting/page")
@PostMapping("/findDefInfoListByCondition")
public ApiResult<BasePageResp<ProcDefPageApiResp>> pageApprovePathSetting(@RequestBody @Validated ApprovePathSettingPageReq req) {
BasePageResp<ProcDefPageApiResp> apiResp = workflowService.pageApprovePathSetting(req);
return ApiResult.successWithResult(apiResp);
}
// 计算是否需要审批, 需要审批返回能使用的模板信息
@PostMapping("/inst/calculate")
public ApiResult<InstCalculateApiResp> instCalculate(@RequestBody @Validated InstCalculateApiReq req) {
InstCalculateApiResp apiResp = workflowService.calculateInst(req);
return ApiResult.successWithResult(apiResp);
}
// 保存、编辑审批路径配置
@PostMapping("/saveOrUpdateApprovePathSetting")
public ApiResult<Object> saveOrUpdateApprovePathSetting(@RequestBody @Validated ApprovePathSettingSaveOrUpdateApiReq req) {
workflowService.saveOrUpdateApprovePathSetting(req);
return ApiResult.success();
}
// 获取审批模版
@PostMapping("/getApprovePathSettingByCondition")
public ApiResult<ApprovePathSettingByConditionGetApiResp> saveOrUpdateApprovePathSetting(@RequestBody @Validated ApprovePathSettingByConditionGetApiReq req) {
ApprovePathSettingByConditionGetApiResp apiResp = workflowService.getApprovePathSettingByCondition(req);
return ApiResult.successWithResult(apiResp);
}
// 查询限上岗配置 - 没数据表示不需要配置限上岗"
@PostMapping("/fingReceiveSettingByCondition")
public ApiResult<List<ReceiveSettingByConditionFindApiResp>> fingReceiveSettingByCondition(@RequestBody @Validated ApprovePathSettingByConditionGetReq req) {
List<ReceiveSettingByConditionFindApiResp> apiResp = workflowService.findReceiveSettingByCondition(req);
return ApiResult.successWithResult(apiResp);
}
}
......@@ -3,11 +3,20 @@ package com.cnooc.expert.controller.workflow;
import com.cnooc.expert.common.response.ApiResult;
import com.cnooc.expert.common.response.BasePageResp;
import com.cnooc.expert.controller.common.AbstractBaseController;
import com.cnooc.expert.controller.workflow.model.request.ApprovePathSettingByConditionGetReq;
import com.cnooc.expert.controller.workflow.model.request.ApprovePathSettingPageReq;
import com.cnooc.expert.controller.workflow.model.response.ApprovePathSettingByConditionGetResp;
import com.cnooc.expert.controller.workflow.model.response.ApprovePathSettingPageResp;
import com.cnooc.expert.controller.workflow.model.response.InstCalculateResp;
import com.cnooc.expert.controller.workflow.model.response.InstStartResp;
import com.cnooc.expert.controller.workflow.model.response.ReceiveSettingByConditionFindResp;
import com.cnooc.expert.external.workflow.model.request.ApprovePathSettingByConditionGetApiReq;
import com.cnooc.expert.external.workflow.model.request.ApprovePathSettingSaveOrUpdateApiReq;
import com.cnooc.expert.external.workflow.model.request.InstCalculateApiReq;
import com.cnooc.expert.external.workflow.model.request.InstRevokeApiReq;
import com.cnooc.expert.external.workflow.model.request.InstStartApiReq;
import com.cnooc.expert.external.workflow.model.response.ApprovePathSettingByConditionGetApiResp;
import com.cnooc.expert.external.workflow.model.response.ReceiveSettingByConditionFindApiResp;
import com.cnooc.expert.service.WorkflowMockService;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
......@@ -16,6 +25,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@AllArgsConstructor
@RestController
@RequestMapping("/mock/workflow")
......@@ -38,9 +49,37 @@ public class WorkflowMockController extends AbstractBaseController {
}
// 获取审批路径
@PostMapping("/approve-path-setting/page")
@PostMapping("/findDefInfoListByCondition")
public ApiResult<BasePageResp<ApprovePathSettingPageResp>> pageApprovePathSetting(@RequestBody @Validated ApprovePathSettingPageReq req) {
return ApiResult.successWithResult(workflowMockService.pageApprovePathSetting(req));
}
// 计算是否需要审批, 需要审批返回能使用的模板信息
@PostMapping("/inst/calculate")
public ApiResult<InstCalculateResp> instCalculate(@RequestBody @Validated InstCalculateApiReq req) {
InstCalculateResp apiResp = workflowMockService.calculateInst(req);
return ApiResult.successWithResult(apiResp);
}
// 保存、编辑审批路径配置
@PostMapping("/saveOrUpdateApprovePathSetting")
public ApiResult<Object> saveOrUpdateApprovePathSetting(@RequestBody @Validated ApprovePathSettingSaveOrUpdateApiReq req) {
workflowMockService.saveOrUpdateApprovePathSetting(req);
return ApiResult.success();
}
// 获取审批模版
@PostMapping("/getApprovePathSettingByCondition")
public ApiResult<ApprovePathSettingByConditionGetResp> saveOrUpdateApprovePathSetting(@RequestBody @Validated ApprovePathSettingByConditionGetApiReq req) {
ApprovePathSettingByConditionGetResp apiResp = workflowMockService.getApprovePathSettingByCondition(req);
return ApiResult.successWithResult(apiResp);
}
// 查询限上岗配置 - 没数据表示不需要配置限上岗"
@PostMapping("/fingReceiveSettingByCondition")
public ApiResult<List<ReceiveSettingByConditionFindResp>> fingReceiveSettingByCondition(@RequestBody @Validated ApprovePathSettingByConditionGetReq req) {
List<ReceiveSettingByConditionFindResp> apiResp = workflowMockService.findReceiveSettingByCondition(req);
return ApiResult.successWithResult(apiResp);
}
}
package com.cnooc.expert.controller.workflow.model.request;
import lombok.Data;
@Data
public class ApprovePathSettingByConditionGetReq {
private String businessId;
private String businessTypeCode;
private String subjectId;
private String subjectName;
}
package com.cnooc.expert.controller.workflow.model.response;
import com.cnooc.expert.external.workflow.model.response.ApprovePathSettingByConditionGetApiResp;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class ApprovePathSettingByConditionGetResp {
// 模板id
private String defId;
// 模板名称
private String defName;
// 意见
private String opinion;
// 文件id
private Long pathId;
// 是否使用Ifream嵌入第三方模板
private Boolean useIfream;
// 配置来源
private Integer engineType;
// ifream嵌入url
private String ifreamUrl;
// 步骤信息
private List<JingDongProcDefPathVO> templatePaths;
// 审批备注下的附件id
@JsonFormat(shape = JsonFormat.Shape.STRING)
private String fileId;
// 申请备注
private String suggestMsg;
// 限上岗配置标识
private String receiveSettingCode;
// 限上岗配置名称
private String receiveSettingName;
// 上级单位名称
private String upSubjectName;
// 上级单位id
private String upSubjectId;
// 是否向上级单位报批
private Boolean needUpApproval;
// 签署意见
private String signingComments;
// 不报批理由code
private String noNeedUpApprovalCode;
// 不报批理由内容
private String noNeedUpApprovalInfo;
// 大采购反显模板数据
private ProcDefInfoVO procDefInfoVO;
@Data
@Builder
public static class JingDongProcDefPathVO {
// 节点id
private String nodeId;
// 审批步骤
private String nodeName;
// 审批人名称,该节点存在多个审批人时,以|拼接
private String approvePersonName;
// 账号,一个节点存在多个用户审批,一个用户对应一个account。多个以|来进行拼接
private List<AccountSubjectNameEmailVO> accountList;
// 所属单位,该节点存在多个审批人时,以|拼接
private String subjectName;
// 邮箱,该节点存在多个审批人时,以|拼接
private String email;
}
@Data
@Builder
public static class AccountSubjectNameEmailVO {
// 账号
private String account;
// 候选人名称
private String name;
// 候选人所属主体名称
private String subjectName;
// 邮箱
private String email;
}
@Data
@Builder
public static class ProcDefInfoVO {
// 业务类型名称
private String businessTypeName;
// 是否最新的版本
private Boolean newestVersion;
// 定义方式
private Short definitionWay;
// 版本
private Integer version;
// 发布的定义id
private String deployDefId;
// bpmn方式的流程定义
private BpmnDeployInfoVO bpmnDeployInfoVO;
// 树型流程定义
private TreeDeployInfoVO treeDeployInfoVO;
// 简单方式的流程定义
private SimpleDeployInfoVO simpleDeployInfoVO;
/**
* 节点的配置
* 暂时只有任务节点的配置
*/
// 任务节点配置 暂时只有任务节点的配置
private List<NodeConfigDTO> nodeConfigs;
// 启用状态
private Boolean off;
// 主体id
private String subjectId;
// 租户id
private String tenantId;
// 创建人id
private String creatorId;
// 创建人名称
private String creatorName;
// 发布时间
private String deployTime;
// 创建时间
private String createAt;
}
@Data
@Builder
public static class SimpleDeployInfoVO {
// 简单方式条件的配置信息
private List<SimpleNodeDTO> nodes;
}
@Data
@Builder
public static class SimpleNodeDTO {
// id信息
private String id;
// 名称
private String name;
}
@Data
@Builder
public static class NodeConfigDTO {
// 任务节点唯一标识
private String key;
// 任务名称
private String name;
// 节点类型 1: 普通 2:会签
private Integer nodeType;
/**
* 或签:单任务
* 会签:多任务 (并行(任务组并行))
* 依次审批:多任务(串行(任务组串行))
*/
// 通过方式 1: 或签 2:会签 3:依次审批
private Integer byWay;
// 通过标准 1:百分比,2:绝对票数
private Integer passedStandardPrefix;
// 通过标准输入项:整数
private Long passedStandardVal;
// 提醒配置 1:系统消息 2:短信
private List<Integer> reminderConfiguration;
// 是否允许加签
private Boolean allowAddSign;
// 是否允许转审
private Boolean allowTransfer;
// 是否开启催办
private Boolean startUrging;
// 表单配置
private String formVariableCode;
// 是否允许发起人修改审批人
private Boolean allowStartChangeParty;
// 是否允许发起人修改抄送人
private Boolean alloInitiatorToModify;
// 是否拆分审批人组
private Boolean allowSplitParty;
// 节点抄送人
private List<ParticipantDTO> ccParticipant;
// 审批人配置信息
private List<ParticipantGroupDTO> participantGroups;
}
@Data
@Builder
public static class ParticipantDTO {
// id
private String id;
// 名称
private String name;
}
@Data
@Builder
public static class ParticipantGroupDTO {
// 参与者类型:person-人员、orgHead-部门负责人、role-角色、trendsOrgHead-动态部门负责人、personVariable-人员变量
private String type;
/**
* 是否需要 协助(秘书协助等)
*/
// 是否需要 协助(秘书协助等)
private Boolean needAssist;
// 分组名称
private String groupName;
// 审批人
private List<ParticipantApproveDTO> participants;
}
@Data
@Builder
public static class ParticipantApproveDTO {
/**
* 审批人分 用户 , 角色 , 部门等。。id 和 name 存对应的id和名称
*/
// id
private String id;
// 名称
private String name;
}
@Data
@Builder
public static class TreeDeployInfoVO {
// 树节点
private List<TreeNodeDTO> treeNodes;
}
@Data
@Builder
public static class TreeNodeDTO {
// 任务节点唯一标识
private String key;
// 任务名称
private String name;
// 节点类型 1:条件节点 2:审批人节点
private Short type;
// 条件节点信息
// 流程条件
private TreeConditionDTO conditionNode;
// 审批人节点信息
private TreeNodeParticipantDTO nodeConfigDTO;
// 子节点
private List<TreeNodeDTO> subTreeNode;
}
@Data
@Builder
public static class TreeNodeParticipantDTO {
/**
* 或签:单任务
* 会签:多任务 (并行(任务组并行))
* 依次审批:多任务(串行(任务组串行))
*/
// 通过方式 1: 或签 2:会签 3:依次审批
private Integer byWay;
// 节点类型 1: 普通 2:会签
private Integer nodeType;
// 通过标准 1:百分比,2:绝对票数
private Integer passedStandardPrefix;
// 通过标准输入项:整数
private Long passedStandardVal;
// 提醒配置 1:系统消息 2:短信
private List<Integer> reminderConfiguration;
// 是否允许加签
private Boolean allowAddSign;
// 是否允许转审
private Boolean allowTransfer;
// 是否开启催办
private Boolean startUrging;
// 表单配置
private String formVariableCode;
// 是否允许发起人修改审批人
private Boolean allowStartChangeParty;
// 是否允许发起人修改抄送人
private Boolean alloInitiatorToModify;
// 是否拆分审批人组
private Boolean allowSplitParty;
// 节点抄送人
private List<ParticipantDTO> ccParticipant;
// 审批人配置信息
private List<ParticipantGroupDTO> participantGroups;
}
@Data
@Builder
public static class TreeConditionDTO {
// 是否默认路径
private Boolean defaultSeq;
// 审批条件
private FlowConditionGroupDTO matchCondition;
}
@Data
@Builder
public static class FlowConditionGroupDTO {
// 条件连接类型
private String conditionConnectType;
// 条件连接类型名称
private String conditionConnectName;
// 流程条件
private List<FlowConditionDTO> flowConditions;
}
@Data
@Builder
public static class BpmnDeployInfoVO {
// 前端绘制的bpmn的xml信息
private String bpmnXml;
// 条件的配置信息
private List<ConditionDTO> bpmnConditions;
}
@Data
@Builder
public static class ConditionDTO {
// 连线的id
private String flowSequenceId;
// 连线的名称
private String flowSequenceName;
// 是否默认路径
private Boolean defaultSeq;
// 审批条件
private FlowConditionGroupDTO matchCondition;
}
@Data
@Builder
public static class FlowConditionDTO {
// 变量key值
private String varKey;
// 变量名称
private String varName;
// 变量 扩展倍数; 如: 概算价
private Double variableExpansionMultiple;
// 操作key值
private String opKey;
// 操作名称
private String opType;
// 值key
private String key;
// 值名称
private String value;
}
}
package com.cnooc.expert.controller.workflow.model.response;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class InstCalculateResp {
// 是否需要审批
private Boolean needApprove;
// 符合条件的流程定义列表
private List<ApproveSettingVO> approveSettingVOList;
// 是否跳过大采购原有提交流程
private Boolean ifJumpProcess;
// 当前业务是否已经配置了审批流程
private Boolean ifApprovePathSetting;
@Data
@Builder
public static class ApproveSettingVO {
// id
private String id;
// 租户id
private String tenantId;
// 主体id
private String subjectId;
// 业务类型编码
private String businessTypeCode;
// 审批定义id
private String procDefId;
// 审批定义名称
private String procDefName;
// 是否需要审批
private Boolean needApprove;
// 匹配优先级
private Integer priority;
// 是否向上审批
private Boolean needUpApproval;
// 发起人是否可选无需向上审批
private Boolean sponsorCanChooseUpApproval;
// 配置来源
private Integer engineType;
}
}
package com.cnooc.expert.controller.workflow.model.response;
import com.cnooc.expert.external.workflow.model.response.ReceiveSettingByConditionFindApiResp;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class ReceiveSettingByConditionFindResp {
// 限上岗配置标识
private String receiveSettingCode;
// 限上岗配置名称
private String receiveSettingName;
// 上级单位名称
private String upSubjectName;
// 上级单位id
private String upSubjectId;
// upward:是否向上报批:1-向上报批,2-不向上报批
private Short upward;
// 限上岗配置不报批理由列表
private List<ReceiveSettingByConditionFindApiResp.JingDongReceiveReasonVO> jingDongReceiveReasons;
// 限上岗审批人员列表
private List<ReceiveSettingByConditionFindApiResp.JingDongReceivePersonnelVO> jingDongReceivePeronnelList;
@Data
@Builder
public static class JingDongReceiveReasonVO {
// 不报批理由code
private String noNeedUpApprovalCode;
// 不报批理由内容
private String noNeedUpApprovalInfo;
}
@Data
@Builder
public static class JingDongReceivePersonnelVO {
// 也搞不清什么鬼
private String did;
// 账号
private String account;
// 名称
private String name;
// 手机号码
private String mobile;
// 邮箱
private String email;
}
}
......@@ -19,6 +19,7 @@ import com.cnooc.expert.external.expert.model.request.ExpertInfoGetApiReq;
import com.cnooc.expert.external.expert.model.request.FirstCategoryExpertApplyApiReq;
import com.cnooc.expert.external.expert.model.request.GeRenXiuJiaApplyApiReq;
import com.cnooc.expert.external.expert.model.request.GeRenXiuJiaPageApiReq;
import com.cnooc.expert.external.expert.model.response.GeRenXiuJiaZhuXiaoTimeUpdateApiResp;
import com.cnooc.expert.external.expert.model.request.JinJiQingJiaApplyApiReq;
import com.cnooc.expert.external.expert.model.request.JinJiQingJiaPageApiReq;
import com.cnooc.expert.external.expert.model.request.TainLessonProgressUpdateApiReq;
......@@ -69,6 +70,7 @@ import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.HeaderMap;
import retrofit2.http.POST;
import retrofit2.http.Query;
import java.util.List;
import java.util.Map;
......@@ -143,6 +145,11 @@ public interface ExpertServiceApi {
@POST("/api/saas-expert/mini/zjfw/zggrxxgl/saveZhuanJiaQingJia")
Call<ApiBaseResult<GeRenXiuJiaApplyApiResp>> applyGeRenXiuJiaApi(@HeaderMap Map<String, Object> headers, @Body GeRenXiuJiaApplyApiReq req);
// 个人休假更新注销时间
@POST("/api/saas-expert/mini/zjfw/zggrxxgl/updateZhuXiaoTime")
Call<ApiBaseResult<GeRenXiuJiaZhuXiaoTimeUpdateApiResp>> updateGeRenXiuJiaZhuXiaoTimeApi(@HeaderMap Map<String, Object> headers, @Query("guid") String qingJiaGuid);
/* 违规、冻结 */
// 专家违规分页
......
package com.cnooc.expert.external.expert.model.response;
import lombok.Data;
@Data
public class GeRenXiuJiaZhuXiaoTimeUpdateApiResp {
private String qingJiaGuid;
private String zhuanJiaGuid;
private Integer leiXing;
private Long startTime;
private Long endTime;
private Long xiaoJiaTime;
private Float qingJiaDays;
private String qingJiaYuanYin;
private Long tiJiaoTime;
private Long shenPiTime;
private String shenPiYiJian;
private Integer shenPiZhuangTai;
private Long createTime;
private String creatorName;
private Long modifyTime;
private String modifierName;
private Long qingJiaStartTime;
private Long qingJiaEndTime;
private String zhuanJiaName;
private String shenFenZheng;
private Boolean isHaveChanged;
private Boolean isXiTongQj;//是否是系统请假
private String remark;//备注
private String zhuanJiaCode;
}
......@@ -51,6 +51,7 @@ import com.cnooc.expert.external.expert.model.response.ExpertInfoGetApiResp;
import com.cnooc.expert.external.expert.model.response.FirstCategoryExpertApplyApiResp;
import com.cnooc.expert.external.expert.model.response.GeRenXiuJiaApplyApiResp;
import com.cnooc.expert.external.expert.model.response.GeRenXiuJiaPageApiResp;
import com.cnooc.expert.external.expert.model.response.GeRenXiuJiaZhuXiaoTimeUpdateApiResp;
import com.cnooc.expert.external.expert.model.response.JinJiQingJiaApplyApiResp;
import com.cnooc.expert.external.expert.model.response.JinJiQingJiaPageApiResp;
import com.cnooc.expert.external.expert.model.response.TainLessonProgressUpdateApiResp;
......@@ -208,6 +209,13 @@ public class ExpertServiceClient extends AbstractRetrofitManager {
return this.getResponseBody(call, "applyJinJiQingJia");
}
// 个人休假撤销
public ApiBaseResult<GeRenXiuJiaZhuXiaoTimeUpdateApiResp> updateGeRenXiuJiaZhuXiaoTime(String qingJiaGuid) {
Map<String, Object> headers = super.getHeaders();
Call<ApiBaseResult<GeRenXiuJiaZhuXiaoTimeUpdateApiResp>> call = expertServiceApi.updateGeRenXiuJiaZhuXiaoTimeApi(headers, qingJiaGuid);
return this.getResponseBody(call, "updateGeRenXiuJiaZhuXiaoTime");
}
// *** 违规、冻结 ***
// 专家冻结分页
......
......@@ -2,16 +2,33 @@ package com.cnooc.expert.external.file.api;
import com.cnooc.expert.external.common.model.response.ApiBaseResult;
import com.cnooc.expert.external.file.model.request.GeneratorDownloadInfoApiReq;
import com.cnooc.expert.external.file.model.response.DownLoadInfoDTO;
import com.cnooc.expert.external.file.model.request.GeneratorUploadInfoApiReq;
import com.cnooc.expert.external.file.model.response.DownLoadInfoApiResp;
import com.cnooc.expert.external.file.model.response.GeneratorUploadInfoApiResp;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.PartMap;
import retrofit2.http.Url;
import java.util.List;
import java.util.Map;
public interface FileServiceApi {
@POST("/api/file/generatorUploadInfo")
Call<ApiBaseResult<GeneratorUploadInfoApiResp>> generatorUploadInfoApi(@Body GeneratorUploadInfoApiReq req);
@Multipart
@POST
Call<ResponseBody> uploadFile(@Url String url, @PartMap Map<String, RequestBody> params, @Part MultipartBody.Part file);
@POST("/api/file/generatorDownloadInfo")
Call<ApiBaseResult<List<DownLoadInfoDTO>>> generatorDownloadInfoApi(@Body GeneratorDownloadInfoApiReq req);
Call<ApiBaseResult<List<DownLoadInfoApiResp>>> generatorDownloadInfoApi(@Body GeneratorDownloadInfoApiReq req);
}
package com.cnooc.expert.external.file.model.request;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class GeneratorUploadInfoApiReq {
/**
* 此次文件的id,为空则重新生成前缀。不为空,则获取id的路径作为前缀。
*/
// 路径id
private Long pathId;
/**
* 最大有效时间
*/
// 路径有效时间,默认30分钟
private Integer maxValidTimeMinute;
/**
* 文件类型
* 分为:1:标书文件类型、2:普通文件类型、3:富文本文件类型
*/
// 文件类型。1:标书文件类型、2:普通文件类型、3:富文本文件类型
private Integer fileType;
}
......@@ -5,7 +5,7 @@ import lombok.Data;
@Data
@Builder
public class DownLoadInfoDTO {
public class DownLoadInfoApiResp {
/**
* 文件名称
......
package com.cnooc.expert.external.file.model.response;
import lombok.Data;
import java.util.List;
@Data
public class GeneratorUploadInfoApiResp {
// 路径id
private String pathId;
// 上传的url
private String url;
//路径前缀。提交表单的时候,将此地址+文件名称进行提交
private String pathPre;
// form表单需提交的数据
private List<PostObjectFormDTO> formDTOList;
@Data
public static class PostObjectFormDTO {
// 表单项key值
private String key;
// 表单项value值
private String value;
}
}
......@@ -4,14 +4,29 @@ import com.cnooc.expert.external.common.AbstractRetrofitManager;
import com.cnooc.expert.external.common.model.response.ApiBaseResult;
import com.cnooc.expert.external.file.api.FileServiceApi;
import com.cnooc.expert.external.file.model.request.GeneratorDownloadInfoApiReq;
import com.cnooc.expert.external.file.model.response.DownLoadInfoDTO;
import com.cnooc.expert.external.file.model.request.GeneratorUploadInfoApiReq;
import com.cnooc.expert.external.file.model.response.DownLoadInfoApiResp;
import com.cnooc.expert.external.file.model.response.GeneratorUploadInfoApiResp;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import retrofit2.Call;
import retrofit2.Response;
import retrofit2.Retrofit;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@Slf4j
@Service
public class FileServiceClient extends AbstractRetrofitManager {
......@@ -21,12 +36,71 @@ public class FileServiceClient extends AbstractRetrofitManager {
this.fileServiceApi = retrofit.create(FileServiceApi.class);
}
public ApiBaseResult<List<DownLoadInfoDTO>> generatorDownloadInfo(String pathId) {
public ApiBaseResult<GeneratorUploadInfoApiResp> generatorUploadInfo(GeneratorUploadInfoApiReq apiReq) {
Call<ApiBaseResult<GeneratorUploadInfoApiResp>> call = fileServiceApi.generatorUploadInfoApi(apiReq);
return this.getResponseBody(call, "generatorUploadInfo");
}
public boolean uploadFile(String url, Map<String, RequestBody> params, MultipartBody.Part file) {
try {
Call<ResponseBody> call = fileServiceApi.uploadFile(url, params, file);
log.info("{}", call.request());
Response response = call.execute();
return response.isSuccessful();
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
public ApiBaseResult<List<DownLoadInfoApiResp>> generatorDownloadInfo(String pathId) {
GeneratorDownloadInfoApiReq apiReq = GeneratorDownloadInfoApiReq.builder()
.pathId(pathId)
.build();
Call<ApiBaseResult<List<DownLoadInfoDTO>>> call = fileServiceApi.generatorDownloadInfoApi(apiReq);
Call<ApiBaseResult<List<DownLoadInfoApiResp>>> call = fileServiceApi.generatorDownloadInfoApi(apiReq);
return this.getResponseBody(call, "generatorDownloadInfo");
}
public List<DownLoadInfoApiResp> putObject(MultipartFile mulFile, int fileType) throws IOException {
// 生成上传信息
GeneratorUploadInfoApiReq uploadInfoApiReq = GeneratorUploadInfoApiReq.builder()
.fileType(fileType)
.build();
ApiBaseResult<GeneratorUploadInfoApiResp> uploadInfoApiResp = this.generatorUploadInfo(uploadInfoApiReq);
GeneratorUploadInfoApiResp uploadInfoApiData = uploadInfoApiResp.getData();
String pathId = uploadInfoApiData.getPathId();
String url = uploadInfoApiData.getUrl();
String pathPre = uploadInfoApiData.getPathPre();
List<GeneratorUploadInfoApiResp.PostObjectFormDTO> formDataList = uploadInfoApiData.getFormDTOList();
// 上传文件
String originalFilename = mulFile.getOriginalFilename();
Map<String, RequestBody> params = Maps.newHashMap();
for (GeneratorUploadInfoApiResp.PostObjectFormDTO formData : formDataList) {
params.put(formData.getKey(), RequestBody.create(formData.getValue(), MediaType.parse("text/plain")));
}
params.put("key", RequestBody.create(pathPre + originalFilename, MediaType.parse("text/plain")));
MultipartBody.Part file = MultipartBody.Part.createFormData(
"file",
mulFile.getOriginalFilename(),
RequestBody.create(
MediaType.parse(Objects.requireNonNull(mulFile.getContentType())),
mulFile.getBytes()
)
);
boolean success = this.uploadFile(url, params, file);
// 生成下载信息
if (success) {
ApiBaseResult<List<DownLoadInfoApiResp>> downloadInfoApiResp = this.generatorDownloadInfo(pathId);
return downloadInfoApiResp.getData();
}
return Collections.emptyList();
}
}
......@@ -3,15 +3,24 @@ package com.cnooc.expert.external.workflow.api;
import com.cnooc.expert.external.common.model.request.ProcDefPageApiReq;
import com.cnooc.expert.external.common.model.response.ApiBaseResult;
import com.cnooc.expert.external.common.model.response.ApiPagination;
import com.cnooc.expert.external.workflow.model.request.ApprovePathSettingByConditionGetApiReq;
import com.cnooc.expert.external.workflow.model.request.ApprovePathSettingSaveOrUpdateApiReq;
import com.cnooc.expert.external.workflow.model.request.InstCalculateApiReq;
import com.cnooc.expert.external.workflow.model.request.InstRevokeApiReq;
import com.cnooc.expert.external.workflow.model.request.InstStartApiReq;
import com.cnooc.expert.external.workflow.model.response.ApprovePathSettingByConditionGetApiResp;
import com.cnooc.expert.external.workflow.model.response.InstCalculateApiResp;
import com.cnooc.expert.external.workflow.model.response.InstStartApiResp;
import com.cnooc.expert.external.workflow.model.response.ProcDefPageApiResp;
import com.cnooc.expert.external.workflow.model.response.ReceiveSettingByConditionFindApiResp;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.HeaderMap;
import retrofit2.http.POST;
import retrofit2.http.Query;
import java.util.List;
import java.util.Map;
public interface WorkflowServiceApi {
......@@ -25,4 +34,24 @@ public interface WorkflowServiceApi {
@POST("/api/workflow2/expertManage/inst/revoke")
Call<ApiBaseResult<Void>> revokeInstApi(@HeaderMap Map<String, Object> headers, @Body InstRevokeApiReq req);
// 计算是否需要审批, 需要审批返回能使用的模板信息
@POST("/api/workflow2/expertManage/inst/calculate")
Call<ApiBaseResult<InstCalculateApiResp>> calculateInstApi(@HeaderMap Map<String, Object> headers, @Body InstCalculateApiReq req);
// 保存、编辑审批路径配置
@POST("/api/workflow2/expertManage/jingdongengine/saveOrUpdateApprovePathSetting")
Call<ApiBaseResult<Void>> saveOrUpdateApprovePathSettingApi(@HeaderMap Map<String, Object> headers, @Body ApprovePathSettingSaveOrUpdateApiReq req);
// 获取审批模版
@POST("/api/workflow2/expertManage/jingdongengine/getApprovePathSettingByCondition")
Call<ApiBaseResult<ApprovePathSettingByConditionGetApiResp>> getApprovePathSettingByConditionApi(@HeaderMap Map<String, Object> headers, @Body ApprovePathSettingByConditionGetApiReq req);
// 按照条件查询限上岗配置 - 没数据表示不需要配置限上岗
@GET("/api/workflow2/expertManage/jingdongengine/fingReceiveSettingByCondition")
Call<ApiBaseResult<List<ReceiveSettingByConditionFindApiResp>>> findReceiveSettingByConditionApi(
@Query("businessId") String businessId,
@Query("businessTypeCode") String businessTypeCode,
@Query("subjectId") String subjectId,
@Query("subjectName") String subjectName
);
}
package com.cnooc.expert.external.workflow.model.request;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class ApprovePathSettingByConditionGetApiReq {
// 业务类型编码
@NotNull
private String businessTypeCode;
// 业务id
@NotNull
private String businessId;
// 主体id
@NotNull
private Long subjectId;
}
package com.cnooc.expert.external.workflow.model.request;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class ApprovePathSettingSaveOrUpdateApiReq {
// 业务类型编码
@NotBlank(message = "事项类型 不能为空")
private String businessTypeCode;
// 业务id
@NotBlank(message = "业务id 不能为空")
private String businessId;
// 选择模板id
@NotBlank(message = "选择模板id 不能为空")
private String defId;
// 模板名称
private String defName;
// 模板路径信息
private String defPathInfo;
// 配置来源
@NotNull(message = "配置来源 不能为空")
private Integer engineType;
// 意见
private String opinion;
// 文件id
private Long pathId;
/**
* 需返回以下格式的json字符串
* [
* {
* "nodeId": "aaa",
* "users": [
* {
* "account": "zhangsan"
* },
* {
* "account": "lisi"
* }
* ]
* },
* {
* "nodeId": "bbb",
* "users": [
* {
* "account": "wangwu"
* }
* ]
* }
* ]
*/
// 审批模板中每个审批节点中审批人的对应关系的json字符串
private String controlApproveUser;
// 申请备注中的附件
private String fileId;
// 申请备注
private String suggestMsg;
// ----------限上岗配置-----------
// 限上岗配置标识
private String receiveSettingCode;
// 限上岗配置名称
private String receiveSettingName;
// 上级单位名称
private String upSubjectName;
// 上级单位id
private String upSubjectId;
// 是否向上级单位报批
private Boolean needUpApproval;
// 不报批理由code
private String noNeedUpApprovalCode;
// 不报批理由内容
private String noNeedUpApprovalInfo;
// 签署意见
private String signingComments;
// 限上岗审批人员,前端直接传账号,多个以|进行拼接
private String proUserArray;
// 主体id
private Long subjectId;
// 主体名称
private String subjectName;
}
package com.cnooc.expert.external.workflow.model.request;
import lombok.Builder;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
@Builder
public class InstCalculateApiReq {
// 业务id 不能为空
private String businessId;
// 事项类型 code 不能为空
private String busType;
// 企业id,按照当前的阶段传入对应的企业id,不传默认取当前登陆人企业id,平台审批的时候传入 0;
private Long subjectId;
// 区分发起人:1: 正常发起人; 2:限上岗 发起
private Short startType;
}
package com.cnooc.expert.external.workflow.model.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.List;
@Data
public class ApprovePathSettingByConditionGetApiResp {
// 模板id
private String defId;
// 模板名称
private String defName;
// 意见
private String opinion;
// 文件id
private Long pathId;
// 是否使用Ifream嵌入第三方模板
private Boolean useIfream;
// 配置来源
private Short engineType;
// ifream嵌入url
private String ifreamUrl;
// 步骤信息
private List<JingDongProcDefPathVO> templatePaths;
// 审批备注下的附件id
@JsonFormat(shape = JsonFormat.Shape.STRING)
private String fileId;
// 申请备注
private String suggestMsg;
// 限上岗配置标识
private String receiveSettingCode;
// 限上岗配置名称
private String receiveSettingName;
// 上级单位名称
private String upSubjectName;
// 上级单位id
private String upSubjectId;
// 是否向上级单位报批
private Boolean needUpApproval;
// 签署意见
private String signingComments;
// 不报批理由code
private String noNeedUpApprovalCode;
// 不报批理由内容
private String noNeedUpApprovalInfo;
// 大采购反显模板数据
private ProcDefInfoVO procDefInfoVO;
@Data
public static class JingDongProcDefPathVO {
// 节点id
private String nodeId;
// 审批步骤
private String nodeName;
// 审批人名称,该节点存在多个审批人时,以|拼接
private String approvePersonName;
// 账号,一个节点存在多个用户审批,一个用户对应一个account。多个以|来进行拼接
private List<AccountSubjectNameEmailVO> accountList;
// 所属单位,该节点存在多个审批人时,以|拼接
private String subjectName;
// 邮箱,该节点存在多个审批人时,以|拼接
private String email;
}
@Data
public static class AccountSubjectNameEmailVO {
// 账号
private String account;
// 候选人名称
private String name;
// 候选人所属主体名称
private String subjectName;
// 邮箱
private String email;
}
@Data
public static class ProcDefInfoVO {
// 业务类型名称
private String businessTypeName;
// 是否最新的版本
private Boolean newestVersion;
// 定义方式
private Short definitionWay;
// 版本
private Integer version;
// 发布的定义id
private String deployDefId;
// bpmn方式的流程定义
private BpmnDeployInfoVO bpmnDeployInfoVO;
// 树型流程定义
private TreeDeployInfoVO treeDeployInfoVO;
// 简单方式的流程定义
private SimpleDeployInfoVO simpleDeployInfoVO;
/**
* 节点的配置
* 暂时只有任务节点的配置
*/
// 任务节点配置 暂时只有任务节点的配置
private List<NodeConfigDTO> nodeConfigs;
// 启用状态
private Boolean off;
// 主体id
private String subjectId;
// 租户id
private String tenantId;
// 创建人id
private String creatorId;
// 创建人名称
private String creatorName;
// 发布时间
private String deployTime;
// 创建时间
private String createAt;
}
@Data
public static class SimpleDeployInfoVO {
// 简单方式条件的配置信息
private List<SimpleNodeDTO> nodes;
}
@Data
public static class SimpleNodeDTO {
// id信息
private String id;
// 名称
private String name;
}
@Data
public static class NodeConfigDTO {
// 任务节点唯一标识
private String key;
// 任务名称
private String name;
// 节点类型 1: 普通 2:会签
private Integer nodeType;
/**
* 或签:单任务
* 会签:多任务 (并行(任务组并行))
* 依次审批:多任务(串行(任务组串行))
*/
// 通过方式 1: 或签 2:会签 3:依次审批
private Integer byWay;
// 通过标准 1:百分比,2:绝对票数
private Integer passedStandardPrefix;
// 通过标准输入项:整数
private Long passedStandardVal;
// 提醒配置 1:系统消息 2:短信
private List<Integer> reminderConfiguration;
// 是否允许加签
private Boolean allowAddSign;
// 是否允许转审
private Boolean allowTransfer;
// 是否开启催办
private Boolean startUrging;
// 表单配置
private String formVariableCode;
// 是否允许发起人修改审批人
private Boolean allowStartChangeParty;
// 是否允许发起人修改抄送人
private Boolean alloInitiatorToModify;
// 是否拆分审批人组
private Boolean allowSplitParty;
// 节点抄送人
private List<ParticipantDTO> ccParticipant;
// 审批人配置信息
private List<ParticipantGroupDTO> participantGroups;
}
@Data
public static class ParticipantDTO {
// id
private String id;
// 名称
private String name;
}
@Data
public static class ParticipantGroupDTO {
// 参与者类型:person-人员、orgHead-部门负责人、role-角色、trendsOrgHead-动态部门负责人、personVariable-人员变量
private String type;
/**
* 是否需要 协助(秘书协助等)
*/
// 是否需要 协助(秘书协助等)
private Boolean needAssist;
// 分组名称
private String groupName;
// 审批人
private List<ParticipantApproveDTO> participants;
}
@Data
public static class ParticipantApproveDTO {
/**
* 审批人分 用户 , 角色 , 部门等。。id 和 name 存对应的id和名称
*/
// id
private String id;
// 名称
private String name;
}
@Data
public static class TreeDeployInfoVO {
// 树节点
private List<TreeNodeDTO> treeNodes;
}
@Data
public static class TreeNodeDTO {
// 任务节点唯一标识
private String key;
// 任务名称
private String name;
// 节点类型 1:条件节点 2:审批人节点
private Short type;
// 条件节点信息
// 流程条件
private TreeConditionDTO conditionNode;
// 审批人节点信息
private TreeNodeParticipantDTO nodeConfigDTO;
// 子节点
private List<TreeNodeDTO> subTreeNode;
}
@Data
public static class TreeNodeParticipantDTO {
/**
* 或签:单任务
* 会签:多任务 (并行(任务组并行))
* 依次审批:多任务(串行(任务组串行))
*/
// 通过方式 1: 或签 2:会签 3:依次审批
private Integer byWay;
// 节点类型 1: 普通 2:会签
private Integer nodeType;
// 通过标准 1:百分比,2:绝对票数
private Integer passedStandardPrefix;
// 通过标准输入项:整数
private Long passedStandardVal;
// 提醒配置 1:系统消息 2:短信
private List<Integer> reminderConfiguration;
// 是否允许加签
private Boolean allowAddSign;
// 是否允许转审
private Boolean allowTransfer;
// 是否开启催办
private Boolean startUrging;
// 表单配置
private String formVariableCode;
// 是否允许发起人修改审批人
private Boolean allowStartChangeParty;
// 是否允许发起人修改抄送人
private Boolean alloInitiatorToModify;
// 是否拆分审批人组
private Boolean allowSplitParty;
// 节点抄送人
private List<ParticipantDTO> ccParticipant;
// 审批人配置信息
private List<ParticipantGroupDTO> participantGroups;
}
@Data
public static class TreeConditionDTO {
// 是否默认路径
private Boolean defaultSeq;
// 审批条件
private FlowConditionGroupDTO matchCondition;
}
@Data
public static class FlowConditionGroupDTO {
// 条件连接类型
private String conditionConnectType;
// 条件连接类型名称
private String conditionConnectName;
// 流程条件
private List<FlowConditionDTO> flowConditions;
}
@Data
public static class BpmnDeployInfoVO {
// 前端绘制的bpmn的xml信息
private String bpmnXml;
// 条件的配置信息
private List<ConditionDTO> bpmnConditions;
}
@Data
public static class ConditionDTO {
// 连线的id
private String flowSequenceId;
// 连线的名称
private String flowSequenceName;
// 是否默认路径
private Boolean defaultSeq;
// 审批条件
private FlowConditionGroupDTO matchCondition;
}
@Data
public static class FlowConditionDTO {
// 变量key值
private String varKey;
// 变量名称
private String varName;
// 变量 扩展倍数; 如: 概算价
private Double variableExpansionMultiple;
// 操作key值
private String opKey;
// 操作名称
private String opType;
// 值key
private String key;
// 值名称
private String value;
}
}
package com.cnooc.expert.external.workflow.model.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.List;
@Data
public class InstCalculateApiResp {
// 是否需要审批
private Boolean needApprove;
// 符合条件的流程定义列表
private List<ApproveSettingVO> approveSettingVOList;
// 是否跳过大采购原有提交流程
private Boolean ifJumpProcess;
// 当前业务是否已经配置了审批流程
private Boolean ifApprovePathSetting;
@Data
public static class ApproveSettingVO {
// id
private String id;
// 租户id
private String tenantId;
// 主体id
private String subjectId;
// 业务类型编码
private String businessTypeCode;
// 审批定义id
private String procDefId;
// 审批定义名称
private String procDefName;
// 是否需要审批
private Boolean needApprove;
// 匹配优先级
private Integer priority;
// 是否向上审批
private Boolean needUpApproval;
// 发起人是否可选无需向上审批
private Boolean sponsorCanChooseUpApproval;
// 配置来源
private Integer engineType;
}
}
package com.cnooc.expert.external.workflow.model.response;
import lombok.Data;
import java.util.List;
@Data
public class ReceiveSettingByConditionFindApiResp {
// 限上岗配置标识
private String receiveSettingCode;
// 限上岗配置名称
private String receiveSettingName;
// 上级单位名称
private String upSubjectName;
// 上级单位id
private String upSubjectId;
// upward:是否向上报批:1-向上报批,2-不向上报批
private Short upward;
// 限上岗配置不报批理由列表
private List<JingDongReceiveReasonVO> jingDongReceiveReasons;
// 限上岗审批人员列表
private List<JingDongReceivePersonnelVO> jingDongReceivePeronnelList;
@Data
public static class JingDongReceiveReasonVO {
// 不报批理由code
private String noNeedUpApprovalCode;
// 不报批理由内容
private String noNeedUpApprovalInfo;
}
@Data
public static class JingDongReceivePersonnelVO {
// 也搞不清什么鬼
private String did;
// 账号
private String account;
// 名称
private String name;
// 手机号码
private String mobile;
// 邮箱
private String email;
}
}
package com.cnooc.expert.external.workflow.service;
import com.cnooc.expert.controller.workflow.model.request.ApprovePathSettingByConditionGetReq;
import com.cnooc.expert.external.common.AbstractRetrofitManager;
import com.cnooc.expert.external.common.model.request.ProcDefPageApiReq;
import com.cnooc.expert.external.common.model.response.ApiBaseResult;
import com.cnooc.expert.external.common.model.response.ApiPagination;
import com.cnooc.expert.external.workflow.api.WorkflowServiceApi;
import com.cnooc.expert.external.workflow.model.request.ApprovePathSettingByConditionGetApiReq;
import com.cnooc.expert.external.workflow.model.request.ApprovePathSettingSaveOrUpdateApiReq;
import com.cnooc.expert.external.workflow.model.request.InstCalculateApiReq;
import com.cnooc.expert.external.workflow.model.request.InstRevokeApiReq;
import com.cnooc.expert.external.workflow.model.request.InstStartApiReq;
import com.cnooc.expert.external.workflow.model.response.ApprovePathSettingByConditionGetApiResp;
import com.cnooc.expert.external.workflow.model.response.InstCalculateApiResp;
import com.cnooc.expert.external.workflow.model.response.InstStartApiResp;
import com.cnooc.expert.external.workflow.model.response.ProcDefPageApiResp;
import com.cnooc.expert.external.workflow.model.response.ReceiveSettingByConditionFindApiResp;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import retrofit2.Call;
import retrofit2.Retrofit;
import java.util.List;
import java.util.Map;
@Service
......@@ -46,5 +54,33 @@ public class WorkflowServiceClient extends AbstractRetrofitManager {
return this.getResponseBody(call, "pageProcDef");
}
// 审批路径分页
public ApiBaseResult<InstCalculateApiResp> calculateInst(InstCalculateApiReq apiReq) {
Map<String, Object> headers = super.getHeaders();
Call<ApiBaseResult<InstCalculateApiResp>> call = workflowServiceApi.calculateInstApi(headers, apiReq);
return this.getResponseBody(call, "calculateInst");
}
// 保存、编辑审批路径配置
public ApiBaseResult<Void> saveOrUpdateApprovePathSetting(ApprovePathSettingSaveOrUpdateApiReq apiReq) {
Map<String, Object> headers = super.getHeaders();
Call<ApiBaseResult<Void>> call = workflowServiceApi.saveOrUpdateApprovePathSettingApi(headers, apiReq);
return this.getResponseBody(call, "saveOrUpdateApprovePathSetting");
}
// 获取审批模版
public ApiBaseResult<ApprovePathSettingByConditionGetApiResp> getApprovePathSettingByCondition(ApprovePathSettingByConditionGetApiReq apiReq) {
Map<String, Object> headers = super.getHeaders();
Call<ApiBaseResult<ApprovePathSettingByConditionGetApiResp>> call = workflowServiceApi.getApprovePathSettingByConditionApi(headers, apiReq);
return this.getResponseBody(call, "getApprovePathSettingByCondition");
}
// 获取审批模版
public ApiBaseResult<List<ReceiveSettingByConditionFindApiResp>> findReceiveSettingByCondition(ApprovePathSettingByConditionGetReq req) {
Call<ApiBaseResult<List<ReceiveSettingByConditionFindApiResp>>> call =
workflowServiceApi.findReceiveSettingByConditionApi(req.getBusinessId(), req.getBusinessTypeCode(), req.getSubjectId(), req.getSubjectName());
return this.getResponseBody(call, "findReceiveSettingByCondition");
}
}
......@@ -41,6 +41,7 @@ import com.cnooc.expert.controller.expert.model.response.ExpertInfoGetResp;
import com.cnooc.expert.controller.expert.model.response.FirstCategoryExpertApplyResp;
import com.cnooc.expert.controller.expert.model.response.GeRenXiuJiaApplyResp;
import com.cnooc.expert.controller.expert.model.response.GeRenXiuJiaPageResp;
import com.cnooc.expert.controller.expert.model.response.GeRenXiuJiaZhuXiaoTimeUpdateResp;
import com.cnooc.expert.controller.expert.model.response.KaoShiPageResp;
import com.cnooc.expert.controller.expert.model.response.NofilterListItemResp;
import com.cnooc.expert.controller.expert.model.response.PeiXunKeChengKeJieFuJianGetResp;
......@@ -72,6 +73,7 @@ import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
......@@ -2195,6 +2197,35 @@ public class ExpertMockService {
.build();
}
public GeRenXiuJiaZhuXiaoTimeUpdateResp updateGeRenXiuJiaZhuXiaoTime(String guid) {
return GeRenXiuJiaZhuXiaoTimeUpdateResp.builder()
.createTime(1763438442098L)
.creatorName("物装中心十七")
.endTime(1764086400000L)
.isHaveChanged(false)
.isXiTongQj(false)
.leiXing(1)
.modifierName("物装中心十七")
.modifyTime(1763979045830L)
.qingJiaDays(1.0F)
.qingJiaEndTime(null)
.qingJiaGuid("b3df6fc4-ed76-4f9d-abb0-22831bce705b")
.qingJiaStartTime(null)
.qingJiaYuanYin("临时休假")
.remark("")
.shenFenZheng("")
.shenPiTime(null)
.shenPiYiJian("")
.shenPiZhuangTai(null)
.startTime(1764000000000L)
.tiJiaoTime(null)
.xiaoJiaTime(1763979045830L)
.zhuanJiaCode("")
.zhuanJiaGuid("3b5def9d-2e98-4f90-9aaa-10aefd28c61b")
.zhuanJiaName("")
.build();
}
public BasePageResp<Object> pagePingBiaoXiangmuByOwner(PingBiaoXiangMuByOwnerPageReq req) {
PingBiaoXiangMuByOwnerPageResp.ZjcqChouQuQingKuang cqqk = PingBiaoXiangMuByOwnerPageResp.ZjcqChouQuQingKuang.builder()
......
......@@ -11,6 +11,7 @@ import com.cnooc.expert.controller.expert.model.request.ExpertInfoUpdateApiReq;
import com.cnooc.expert.controller.expert.model.request.FirstCategoryExpertApplyReq;
import com.cnooc.expert.controller.expert.model.request.GeRenXiuJiaApplyReq;
import com.cnooc.expert.controller.expert.model.request.GeRenXiuJiaPageReq;
import com.cnooc.expert.controller.expert.model.request.GeRenXiuJiaZhuXiaoTimeUpdateReq;
import com.cnooc.expert.controller.expert.model.request.PingBiaoXiangMuByOwnerPageReq;
import com.cnooc.expert.controller.expert.model.request.PingBiaoXiangMuInfoGetByChouQuMaReq;
import com.cnooc.expert.controller.expert.model.request.QingJiaJinJiApplyReq;
......@@ -72,6 +73,7 @@ import com.cnooc.expert.external.expert.model.response.ExpertInfoGetApiResp;
import com.cnooc.expert.external.expert.model.response.FirstCategoryExpertApplyApiResp;
import com.cnooc.expert.external.expert.model.response.GeRenXiuJiaApplyApiResp;
import com.cnooc.expert.external.expert.model.response.GeRenXiuJiaPageApiResp;
import com.cnooc.expert.external.expert.model.response.GeRenXiuJiaZhuXiaoTimeUpdateApiResp;
import com.cnooc.expert.external.expert.model.response.JinJiQingJiaApplyApiResp;
import com.cnooc.expert.external.expert.model.response.JinJiQingJiaPageApiResp;
import com.cnooc.expert.external.expert.model.response.TainLessonProgressUpdateApiResp;
......@@ -303,6 +305,13 @@ public class ExpertService {
return apiResp.getData();
}
// 个人休假撤销
public GeRenXiuJiaZhuXiaoTimeUpdateApiResp updateGeRenXiuJiaZhuXiaoTime(String guid) {
ApiBaseResult<GeRenXiuJiaZhuXiaoTimeUpdateApiResp> apiResp = expertServiceClient.updateGeRenXiuJiaZhuXiaoTime(guid);
return apiResp.getData();
}
public List<PingBiaoZhuanYeTreeNodeResp> treePingBiaoZhuanYe() {
List<PingBiaoZhuanYeTreeNodeResp> children3 = Lists.newArrayList(
......
package com.cnooc.expert.service;
import com.cnooc.expert.external.file.model.response.DownLoadInfoDTO;
import com.cnooc.expert.external.file.model.response.DownLoadInfoApiResp;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
......@@ -11,9 +12,9 @@ import java.util.List;
@Service
public class FileMockService {
public List<DownLoadInfoDTO> downloadInfo(String pathId) {
List<DownLoadInfoDTO> result = Lists.newArrayList(
DownLoadInfoDTO.builder()
public List<DownLoadInfoApiResp> putObject(MultipartFile file, Integer fileType) {
return Lists.newArrayList(
DownLoadInfoApiResp.builder()
.fileName("新建 PPT 演示文稿.pdf")
.downLoadUrl("https://purb.m-bid.cnooc.com.cn/bid-mimic-cggl/892422091105296385/2/2025/9/22/1419732467212898305/%E6%96%B0%E5%BB%BA%20PPT%20%E6%BC%94%E7%A4%BA%E6%96%87%E7%A8%BF.pdf?response-content-disposition=attachment%3Bfilename%3D%25E6%2596%25B0%25E5%25BB%25BA%2BPPT%2B%25E6%25BC%2594%25E7%25A4%25BA%25E6%2596%2587%25E7%25A8%25BF.pdf&AWSAccessKeyId=5T0WWU7JAUDUXJ2EG1FB&Expires=1763091567&Signature=JAo0KSspEbWreyxgc306%2FjmcI8E%3D")
.directDownLoadUrl("https://purb.m-bid.cnooc.com.cn/bid-mimic-cggl/892422091105296385/2/2025/9/22/1419732467212898305/%E6%96%B0%E5%BB%BA%20PPT%20%E6%BC%94%E7%A4%BA%E6%96%87%E7%A8%BF.pdf?response-content-disposition=attachment%3Bfilename%3D%25E6%2596%25B0%25E5%25BB%25BA%2BPPT%2B%25E6%25BC%2594%25E7%25A4%25BA%25E6%2596%2587%25E7%25A8%25BF.pdf&AWSAccessKeyId=5T0WWU7JAUDUXJ2EG1FB&Expires=1763091567&Signature=JAo0KSspEbWreyxgc306%2FjmcI8E%3D")
......@@ -21,8 +22,18 @@ public class FileMockService {
.fileSize(1128L)
.build()
);
}
return result;
public List<DownLoadInfoApiResp> downloadInfo(String pathId) {
return Lists.newArrayList(
DownLoadInfoApiResp.builder()
.fileName("新建 PPT 演示文稿.pdf")
.downLoadUrl("https://purb.m-bid.cnooc.com.cn/bid-mimic-cggl/892422091105296385/2/2025/9/22/1419732467212898305/%E6%96%B0%E5%BB%BA%20PPT%20%E6%BC%94%E7%A4%BA%E6%96%87%E7%A8%BF.pdf?response-content-disposition=attachment%3Bfilename%3D%25E6%2596%25B0%25E5%25BB%25BA%2BPPT%2B%25E6%25BC%2594%25E7%25A4%25BA%25E6%2596%2587%25E7%25A8%25BF.pdf&AWSAccessKeyId=5T0WWU7JAUDUXJ2EG1FB&Expires=1763091567&Signature=JAo0KSspEbWreyxgc306%2FjmcI8E%3D")
.directDownLoadUrl("https://purb.m-bid.cnooc.com.cn/bid-mimic-cggl/892422091105296385/2/2025/9/22/1419732467212898305/%E6%96%B0%E5%BB%BA%20PPT%20%E6%BC%94%E7%A4%BA%E6%96%87%E7%A8%BF.pdf?response-content-disposition=attachment%3Bfilename%3D%25E6%2596%25B0%25E5%25BB%25BA%2BPPT%2B%25E6%25BC%2594%25E7%25A4%25BA%25E6%2596%2587%25E7%25A8%25BF.pdf&AWSAccessKeyId=5T0WWU7JAUDUXJ2EG1FB&Expires=1763091567&Signature=JAo0KSspEbWreyxgc306%2FjmcI8E%3D")
.createTime(1758532197592L)
.fileSize(1128L)
.build()
);
}
}
package com.cnooc.expert.service;
import com.cnooc.expert.external.common.model.response.ApiBaseResult;
import com.cnooc.expert.external.file.model.response.DownLoadInfoDTO;
import com.cnooc.expert.external.file.model.response.DownLoadInfoApiResp;
import com.cnooc.expert.external.file.sevice.FileServiceClient;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
@AllArgsConstructor
@Service
public class FileService {
private final FileServiceClient FileServiceClient;
private final FileServiceClient fileServiceClient;
public List<DownLoadInfoDTO> downloadInfo(String pathId) {
ApiBaseResult<List<DownLoadInfoDTO>> apiResp = FileServiceClient.generatorDownloadInfo(pathId);
public List<DownLoadInfoApiResp> downloadInfo(String pathId) {
ApiBaseResult<List<DownLoadInfoApiResp>> apiResp = fileServiceClient.generatorDownloadInfo(pathId);
return apiResp.getData();
}
public List<DownLoadInfoApiResp> putObject(MultipartFile multFile, int fileType) throws IOException {
List<DownLoadInfoApiResp> apiResp = fileServiceClient.putObject(multFile, fileType);
return apiResp;
}
}
package com.cnooc.expert.service;
import com.cnooc.expert.common.response.BasePageResp;
import com.cnooc.expert.controller.workflow.model.request.ApprovePathSettingByConditionGetReq;
import com.cnooc.expert.controller.workflow.model.request.ApprovePathSettingPageReq;
import com.cnooc.expert.controller.workflow.model.response.ApprovePathSettingByConditionGetResp;
import com.cnooc.expert.controller.workflow.model.response.ApprovePathSettingPageResp;
import com.cnooc.expert.controller.workflow.model.response.InstCalculateResp;
import com.cnooc.expert.controller.workflow.model.response.InstStartResp;
import com.cnooc.expert.controller.workflow.model.response.ReceiveSettingByConditionFindResp;
import com.cnooc.expert.external.workflow.model.request.ApprovePathSettingByConditionGetApiReq;
import com.cnooc.expert.external.workflow.model.request.ApprovePathSettingSaveOrUpdateApiReq;
import com.cnooc.expert.external.workflow.model.request.InstCalculateApiReq;
import com.cnooc.expert.external.workflow.model.request.InstRevokeApiReq;
import com.cnooc.expert.external.workflow.model.request.InstStartApiReq;
import com.cnooc.expert.external.workflow.model.response.InstStartApiResp;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
@AllArgsConstructor
......@@ -81,4 +88,87 @@ public class WorkflowMockService {
.build();
}
public InstCalculateResp calculateInst(InstCalculateApiReq req) {
List<InstCalculateResp.ApproveSettingVO> approveSettingVOList = Lists.newArrayList(
InstCalculateResp.ApproveSettingVO.builder()
.id("1441098359454003215")
.tenantId("892422091105296385")
.subjectId("1171522650397351936")
.businessTypeCode("FirstCategoryExpertApply-innerApprove")
.procDefId("9ee2dc6e983f438391df1b1dc747089b")
.procDefName("审批-ZY")
.needApprove(true)
.priority(1)
.needUpApproval(false)
.sponsorCanChooseUpApproval(false)
.engineType(1)
.build()
);
return InstCalculateResp.builder()
.needApprove(true)
.ifJumpProcess(true)
.ifApprovePathSetting(true)
.approveSettingVOList(approveSettingVOList)
.build();
}
public void saveOrUpdateApprovePathSetting(ApprovePathSettingSaveOrUpdateApiReq req) {
// do nothing
}
public ApprovePathSettingByConditionGetResp getApprovePathSettingByCondition(ApprovePathSettingByConditionGetApiReq req) {
List<ApprovePathSettingByConditionGetResp.AccountSubjectNameEmailVO> accountList = Lists.newArrayList(
ApprovePathSettingByConditionGetResp.AccountSubjectNameEmailVO.builder()
.account("ex_wangzhd3")
.name("王振东")
.subjectName("中国海洋石油集团有限公司")
.email("ex_wangzhd3@cnooc.com.cn")
.build()
);
List<ApprovePathSettingByConditionGetResp.JingDongProcDefPathVO> templatePaths = Lists.newArrayList(
ApprovePathSettingByConditionGetResp.JingDongProcDefPathVO.builder()
.nodeId("node6932532bee54c574d8697eddef71659f")
.nodeName("1")
.approvePersonName("王振东")
.subjectName("中国海洋石油集团有限公司")
.email("ex_wangzhd3@cnooc.com.cn")
.accountList(accountList)
.build()
);
ApprovePathSettingByConditionGetResp result = ApprovePathSettingByConditionGetResp.builder()
.defId("9ee2dc6e983f438391df1b1dc747089b")
.defName("审批-ZY")
.opinion(null)
.pathId(null)
.useIfream(true)
.engineType(1)
.ifreamUrl("https:flow.t-bid.cnooc.com.cn/deta/scene-talk/approvalFlowChart.html?templateId=9ee2dc6e983f438391df1b1dc747089b&approveId=")
.fileId(null)
.fileId(null)
.suggestMsg(null)
.receiveSettingCode(null)
.receiveSettingName(null)
.upSubjectName(null)
.upSubjectId(null)
.needUpApproval(null)
.signingComments(null)
.noNeedUpApprovalCode(null)
.noNeedUpApprovalInfo(null)
.procDefInfoVO(null)
.templatePaths(null)
.templatePaths(templatePaths)
.build();
return result;
}
public List<ReceiveSettingByConditionFindResp> findReceiveSettingByCondition(ApprovePathSettingByConditionGetReq req) {
return Collections.emptyList();
}
}
package com.cnooc.expert.service;
import com.cnooc.expert.common.response.BasePageResp;
import com.cnooc.expert.controller.workflow.model.request.ApprovePathSettingByConditionGetReq;
import com.cnooc.expert.controller.workflow.model.request.ApprovePathSettingPageReq;
import com.cnooc.expert.controller.workflow.model.response.ApprovePathSettingPageResp;
import com.cnooc.expert.external.common.model.request.ProcDefPageApiReq;
import com.cnooc.expert.external.common.model.response.ApiBaseResult;
import com.cnooc.expert.external.common.model.response.ApiPagination;
import com.cnooc.expert.external.workflow.model.request.ApprovePathSettingByConditionGetApiReq;
import com.cnooc.expert.external.workflow.model.request.ApprovePathSettingSaveOrUpdateApiReq;
import com.cnooc.expert.external.workflow.model.request.InstCalculateApiReq;
import com.cnooc.expert.external.workflow.model.request.InstRevokeApiReq;
import com.cnooc.expert.external.workflow.model.request.InstStartApiReq;
import com.cnooc.expert.external.workflow.model.response.ApprovePathSettingByConditionGetApiResp;
import com.cnooc.expert.external.workflow.model.response.InstCalculateApiResp;
import com.cnooc.expert.external.workflow.model.response.InstStartApiResp;
import com.cnooc.expert.external.workflow.model.response.ProcDefPageApiResp;
import com.cnooc.expert.external.workflow.model.response.ReceiveSettingByConditionFindApiResp;
import com.cnooc.expert.external.workflow.service.WorkflowServiceClient;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
......@@ -33,7 +40,6 @@ public class WorkflowService {
return Boolean.TRUE;
}
public BasePageResp<ProcDefPageApiResp> pageApprovePathSetting(ApprovePathSettingPageReq req) {
ProcDefPageApiReq apiReq = ProcDefPageApiReq.builder()
.pageNum(req.getPageNo())
......@@ -53,4 +59,24 @@ public class WorkflowService {
.data(pageResp.getList())
.build();
}
public InstCalculateApiResp calculateInst(InstCalculateApiReq req) {
ApiBaseResult<InstCalculateApiResp> apiResp = workflowServiceClient.calculateInst(req);
return apiResp.getData();
}
public Void saveOrUpdateApprovePathSetting(ApprovePathSettingSaveOrUpdateApiReq req) {
ApiBaseResult<Void> apiResp = workflowServiceClient.saveOrUpdateApprovePathSetting(req);
return apiResp.getData();
}
public ApprovePathSettingByConditionGetApiResp getApprovePathSettingByCondition(ApprovePathSettingByConditionGetApiReq req) {
ApiBaseResult<ApprovePathSettingByConditionGetApiResp> apiResp = workflowServiceClient.getApprovePathSettingByCondition(req);
return apiResp.getData();
}
public List<ReceiveSettingByConditionFindApiResp> findReceiveSettingByCondition(ApprovePathSettingByConditionGetReq req) {
ApiBaseResult<List<ReceiveSettingByConditionFindApiResp>> apiResp = workflowServiceClient.findReceiveSettingByCondition(req);
return apiResp.getData();
}
}
spring:
redis:
host: 39.105.210.213
port: 6379
database: 6
password: 'WSzs*aA^U2nH$u!K'
lettuce:
cluster:
refresh:
adaptive: true
period: 30000
pool:
max-wait: 10000
max-idle: 10
min-idle: 10
max-active: 20
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
serialization:
indent-output: true
deserialization:
fail-on-unknown-properties: false
# default-property-inclusion: non_null
kafka:
# Kafka服务器地址
bootstrap-servers: localhost:9092
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
properties:
acks: all
retries: 3
batch-size: 16384
linger-ms: 1
buffer-memory: 33554432
sms:
config:
# 短信发送配置
api_url: https://gly.api.mcmptest.cnooc/msg/mcmp-msg-api/message
app_code: 3F2504E04F8911D39A0C0305E82C3301
loginTemplate: 登录验证码模版名称
changePwdTemplate: 修改密码验证码模版名称
app:
info:
appId: 10000
appName: 海油小程序
server:
port: 9090
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