diff --git a/pqs-common/common-web/src/main/java/com/njcn/web/filter/XssRequestWrapper.java b/pqs-common/common-web/src/main/java/com/njcn/web/filter/XssRequestWrapper.java
index 85eb8d4b6..ca92150f5 100644
--- a/pqs-common/common-web/src/main/java/com/njcn/web/filter/XssRequestWrapper.java
+++ b/pqs-common/common-web/src/main/java/com/njcn/web/filter/XssRequestWrapper.java
@@ -34,7 +34,7 @@ import java.util.stream.Stream;
@Slf4j
public class XssRequestWrapper extends HttpServletRequestWrapper {
- private final static String[] WHITE_PARAMETER_NAME = {"password", "mxContent", "docContent", "bgImage","fileContent"};
+ private final static String[] WHITE_PARAMETER_NAME = {"password", "mxContent", "docContent", "bgImage","fileContent","flowableXml"};
public XssRequestWrapper(HttpServletRequest request) {
diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/enums/AuditProcessEnum.java b/pqs-process/process-api/src/main/java/com/njcn/process/enums/AuditProcessEnum.java
new file mode 100644
index 000000000..4717e0356
--- /dev/null
+++ b/pqs-process/process-api/src/main/java/com/njcn/process/enums/AuditProcessEnum.java
@@ -0,0 +1,38 @@
+package com.njcn.process.enums;
+
+import lombok.Getter;
+
+/**
+ * pqs
+ *
+ * @author cdf
+ * @date 2024/4/2
+ */
+@Getter
+public enum AuditProcessEnum {
+
+
+ New(0,"新建"),
+
+ WaitAudit(1,"待审核"),
+ AuditPass(2,"审核通过"),
+ AuditRefuse(3,"审核未通过"),
+ Release(4,"已发布"),
+ Finish(5,"已完成")
+
+
+ ;
+
+
+
+
+ private final Integer status;
+
+ private final String statusDes;
+
+
+ AuditProcessEnum(Integer status,String statusDes){
+ this.status = status;
+ this.statusDes = statusDes;
+ }
+}
diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/enums/FlowComment.java b/pqs-process/process-api/src/main/java/com/njcn/process/enums/FlowComment.java
new file mode 100644
index 000000000..8aed274a8
--- /dev/null
+++ b/pqs-process/process-api/src/main/java/com/njcn/process/enums/FlowComment.java
@@ -0,0 +1,43 @@
+package com.njcn.process.enums;
+
+/**
+ * 流程意见类型
+ *
+ * @author Tony
+ * @date 2021/4/19
+ */
+public enum FlowComment {
+
+ /**
+ * 说明
+ */
+ NORMAL("1", "正常意见"),
+ REBACK("2", "退回意见"),
+ REJECT("3", "驳回意见"),
+ DELEGATE("4", "委派意见"),
+ ASSIGN("5", "转办意见"),
+ STOP("6", "终止流程");
+
+ /**
+ * 类型
+ */
+ private final String type;
+
+ /**
+ * 说明
+ */
+ private final String remark;
+
+ FlowComment(String type, String remark) {
+ this.type = type;
+ this.remark = remark;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+}
diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/dto/flowable/FlowCommentDto.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/dto/flowable/FlowCommentDto.java
new file mode 100644
index 000000000..3fe179d12
--- /dev/null
+++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/dto/flowable/FlowCommentDto.java
@@ -0,0 +1,25 @@
+package com.njcn.process.pojo.dto.flowable;
+
+import lombok.Builder;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author Tony
+ * @date 2021/3/28 15:50
+ */
+@Data
+@Builder
+public class FlowCommentDto implements Serializable {
+
+ /**
+ * 意见类别 0 正常意见 1 退回意见 2 驳回意见
+ */
+ private String type;
+
+ /**
+ * 意见内容
+ */
+ private String comment;
+}
diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/dto/flowable/FlowProcDefDto.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/dto/flowable/FlowProcDefDto.java
new file mode 100644
index 000000000..016ec3507
--- /dev/null
+++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/dto/flowable/FlowProcDefDto.java
@@ -0,0 +1,56 @@
+package com.njcn.process.pojo.dto.flowable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
流程定义
+ *
+ * @author Tony
+ * @date 2021-04-03
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("流程定义")
+public class FlowProcDefDto implements Serializable {
+
+ @ApiModelProperty("流程id")
+ private String id;
+
+ @ApiModelProperty("流程名称")
+ private String name;
+
+ @ApiModelProperty("流程key")
+ private String flowKey;
+
+ @ApiModelProperty("流程分类")
+ private String category;
+
+ @ApiModelProperty("配置表单名称")
+ private String formName;
+
+ @ApiModelProperty("配置表单id")
+ private Long formId;
+
+ @ApiModelProperty("版本")
+ private int version;
+
+ @ApiModelProperty("部署ID")
+ private String deploymentId;
+
+ @ApiModelProperty("流程定义状态: 1:激活 , 2:中止")
+ private int suspensionState;
+
+ @ApiModelProperty("部署时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date deploymentTime;
+
+
+}
diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/dto/flowable/FlowSaveXmlVo.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/dto/flowable/FlowSaveXmlVo.java
new file mode 100644
index 000000000..58f13839a
--- /dev/null
+++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/dto/flowable/FlowSaveXmlVo.java
@@ -0,0 +1,28 @@
+package com.njcn.process.pojo.dto.flowable;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author Tony
+ * @date 2021/3/28 19:48
+ */
+@Data
+public class FlowSaveXmlVo implements Serializable {
+
+ /**
+ * 流程名称
+ */
+ private String name;
+
+ /**
+ * 流程分类
+ */
+ private String category;
+
+ /**
+ * xml 文件
+ */
+ private String flowableXml;
+}
diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/dto/flowable/FlowTaskDto.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/dto/flowable/FlowTaskDto.java
new file mode 100644
index 000000000..3bc6e7437
--- /dev/null
+++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/dto/flowable/FlowTaskDto.java
@@ -0,0 +1,103 @@
+package com.njcn.process.pojo.dto.flowable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
工作流任务
+ *
+ * @author Tony
+ * @date 2021-04-03
+ */
+@Getter
+@Setter
+@ApiModel("工作流任务相关-返回参数")
+public class FlowTaskDto implements Serializable {
+
+ @ApiModelProperty("任务编号")
+ private String taskId;
+
+ @ApiModelProperty("任务执行编号")
+ private String executionId;
+
+ @ApiModelProperty("任务名称")
+ private String taskName;
+
+ @ApiModelProperty("任务Key")
+ private String taskDefKey;
+
+ @ApiModelProperty("任务执行人Id")
+ private String assigneeId;
+
+ @ApiModelProperty("部门名称")
+ private String deptName;
+
+ @ApiModelProperty("流程发起人部门名称")
+ private String startDeptName;
+
+ @ApiModelProperty("任务执行人名称")
+ private String assigneeName;
+
+ @ApiModelProperty("任务执行人部门")
+ private String assigneeDeptName;;
+
+ @ApiModelProperty("流程发起人Id")
+ private String startUserId;
+
+ @ApiModelProperty("流程发起人名称")
+ private String startUserName;
+
+ @ApiModelProperty("流程类型")
+ private String category;
+
+ @ApiModelProperty("流程变量信息")
+ private Object procVars;
+
+ @ApiModelProperty("局部变量信息")
+ private Object taskLocalVars;
+
+ @ApiModelProperty("流程部署编号")
+ private String deployId;
+
+ @ApiModelProperty("流程ID")
+ private String procDefId;
+
+ @ApiModelProperty("流程key")
+ private String procDefKey;
+
+ @ApiModelProperty("流程定义名称")
+ private String procDefName;
+
+ @ApiModelProperty("流程定义内置使用版本")
+ private int procDefVersion;
+
+ @ApiModelProperty("流程实例ID")
+ private String procInsId;
+
+ @ApiModelProperty("历史流程实例ID")
+ private String hisProcInsId;
+
+ @ApiModelProperty("任务耗时")
+ private String duration;
+
+ @ApiModelProperty("任务意见")
+ private FlowCommentDto comment;
+
+ @ApiModelProperty("候选执行人")
+ private String candidate;
+
+ @ApiModelProperty("任务创建时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ @ApiModelProperty("任务完成时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date finishTime;
+
+}
diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/RGeneralSurveyPlanAuditUserParam.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/RGeneralSurveyPlanAuditUserParam.java
new file mode 100644
index 000000000..e311213bf
--- /dev/null
+++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/param/RGeneralSurveyPlanAuditUserParam.java
@@ -0,0 +1,26 @@
+package com.njcn.process.pojo.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * pqs
+ *
+ * @author cdf
+ * @date 2024/3/29
+ */
+@Data
+public class RGeneralSurveyPlanAuditUserParam {
+
+ @ApiModelProperty(name = "planIds",value = "提交的计划编号id集合")
+ @NotEmpty(message = "计划编号不可为空")
+ private List planIds;
+
+ @ApiModelProperty(name = "auditUser",value = "审核人id")
+ @NotBlank(message = "请选择审核人")
+ private String auditUser;
+}
diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/FlowFormAss.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/FlowFormAss.java
new file mode 100644
index 000000000..155cf4933
--- /dev/null
+++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/po/FlowFormAss.java
@@ -0,0 +1,23 @@
+package com.njcn.process.pojo.po;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * pqs
+ *
+ * @author cdf
+ * @date 2024/4/2
+ */
+@Data
+@TableName(value = "flow_form_ass")
+public class FlowFormAss {
+
+ @TableId
+ private String id;
+
+ private String definitionId;
+
+ private String formId;
+}
diff --git a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RGeneralSurveyPlanVO.java b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RGeneralSurveyPlanVO.java
index 6052d7753..e4d6ea7de 100644
--- a/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RGeneralSurveyPlanVO.java
+++ b/pqs-process/process-api/src/main/java/com/njcn/process/pojo/vo/RGeneralSurveyPlanVO.java
@@ -10,7 +10,7 @@ import java.util.Date;
import java.util.List;
/**
- * Description:
+ * Description: 普测只针对电站层级
* 接口文档访问地址:http://serverIP:port/swagger-ui.html
* Date: 2022/11/11 15:20【需求编号】
*
@@ -66,12 +66,23 @@ public class RGeneralSurveyPlanVO {
@ApiModelProperty(value="审核人")
private String checkPerson;
+
+
+ @ApiModelProperty(value="审核人中文名称")
+ private String checkPersonName;
/**
* 审核意见
*/
@ApiModelProperty(value="审核意见")
private String checkComment;
+
+ @ApiModelProperty(value="创建人")
+ private String createPerson;
+
+ @ApiModelProperty(value="创建人名称")
+ private String createPersonName;
+
/**
* 上传时间
*/
diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/controller/RGeneralSurveyPlanController.java b/pqs-process/process-boot/src/main/java/com/njcn/process/controller/RGeneralSurveyPlanController.java
index 55b8416e8..7580c9e52 100644
--- a/pqs-process/process-boot/src/main/java/com/njcn/process/controller/RGeneralSurveyPlanController.java
+++ b/pqs-process/process-boot/src/main/java/com/njcn/process/controller/RGeneralSurveyPlanController.java
@@ -133,7 +133,7 @@ public class RGeneralSurveyPlanController extends BaseController {
@ApiImplicitParam(name = "rGeneralSurveyPlanQueryParm", value = "普测计划查询参数", required = true)
public HttpResult> queryPlan(@Validated @RequestBody RGeneralSurveyPlanQueryParm rGeneralSurveyPlanQueryParm) {
String methodDescribe = getMethodDescribe("queryPlan");
- IPage rGeneralSurveyPlanVOS = rGeneralSurveyPlanPOService.query(rGeneralSurveyPlanQueryParm, Stream.of("0", "1", "2", "3").collect(Collectors.toList()), "1");
+ IPage rGeneralSurveyPlanVOS = rGeneralSurveyPlanPOService.query(rGeneralSurveyPlanQueryParm, Stream.of("0", "1", "2", "3","4","5").collect(Collectors.toList()), "1");
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rGeneralSurveyPlanVOS, methodDescribe);
}
@@ -266,4 +266,19 @@ public class RGeneralSurveyPlanController extends BaseController {
}
+ /**
+ * 提交审核
+ * @author cdf
+ * @date 2024/3/29
+ */
+
+ @ApiOperation("提交审核")
+ @PostMapping(value = "submitAuditUser")
+ @ApiImplicitParam(name = "rGeneralSurveyPlanAuditUserParam", value = "实体参数", required = true)
+ public HttpResult submitAuditUser(@RequestBody @Validated RGeneralSurveyPlanAuditUserParam rGeneralSurveyPlanAuditUserParam) {
+ String methodDescribe = getMethodDescribe("submitAuditUser");
+ rGeneralSurveyPlanPOService.submitAuditUser(rGeneralSurveyPlanAuditUserParam);
+ return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
+ }
+
}
diff --git a/pqs-process/process-boot/src/main/java/com/njcn/process/controller/flowable/FlowDefinitionController.java b/pqs-process/process-boot/src/main/java/com/njcn/process/controller/flowable/FlowDefinitionController.java
index acbd4b434..9b06be938 100644
--- a/pqs-process/process-boot/src/main/java/com/njcn/process/controller/flowable/FlowDefinitionController.java
+++ b/pqs-process/process-boot/src/main/java/com/njcn/process/controller/flowable/FlowDefinitionController.java
@@ -1,8 +1,11 @@
package com.njcn.process.controller.flowable;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
+import com.njcn.process.pojo.dto.flowable.FlowProcDefDto;
+import com.njcn.process.pojo.dto.flowable.FlowSaveXmlVo;
import com.njcn.process.service.flowable.IFlowDefinitionService;
import com.njcn.process.service.flowable.IFlowTaskService;
import com.njcn.web.controller.BaseController;
@@ -11,6 +14,7 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.IOUtils;
import org.flowable.common.engine.api.FlowableObjectNotFoundException;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RepositoryService;
@@ -23,12 +27,20 @@ import org.flowable.engine.runtime.ProcessInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
import java.util.Map;
import java.util.Objects;
+import static cn.hutool.core.util.CharsetUtil.UTF_8;
+
/**
* pqs
* 工作流
+ *
* @author cdf
* @date 2023/4/10
*/
@@ -44,27 +56,17 @@ public class FlowDefinitionController extends BaseController {
private final RepositoryService repositoryService;
- private final RuntimeService runtimeService;
-
- private final TaskService taskService;
-
- private final HistoryService historyService;
-
-
- private final IFlowTaskService flowTaskService;
-
-
@GetMapping("deployment")
@ApiOperation(value = "工作流_部署流程")
public void createDeployment() {
Deployment deployment = repositoryService.createDeployment()
- .addClasspathResource("gaojing.bpmn20.xml")
- .name("技术监督告警流程").category("gaojing")
+ .addClasspathResource("puce.bpmn20.xml")
+ .name("谐波普测管理").category("xbpc")
.deploy();
ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).singleResult();
- repositoryService.setProcessDefinitionCategory(definition.getId(), "gaojing");
+ repositoryService.setProcessDefinitionCategory(definition.getId(), "xbpc");
System.out.println(deployment.getId());
}
@@ -73,10 +75,10 @@ public class FlowDefinitionController extends BaseController {
@PostMapping("/start")
public HttpResult start(@ApiParam(value = "流程定义id") @RequestParam(value = "procDefId") String procDefId,
@ApiParam(value = "监督单id") @RequestParam(value = "thsIndex") String thsIndex,
- @ApiParam(value = "变量集合,json对象") @RequestBody Map variables) {
+ @ApiParam(value = "变量集合,json对象") @RequestBody Map variables) {
String methodDescribe = getMethodDescribe("start");
- String res = flowDefinitionService.startProcessInstanceById(procDefId,thsIndex, variables);
- if(Objects.nonNull(res)){
+ String res = flowDefinitionService.startProcessInstanceById(procDefId, thsIndex, variables);
+ if (Objects.nonNull(res)) {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, res, methodDescribe);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
@@ -84,12 +86,79 @@ public class FlowDefinitionController extends BaseController {
@ApiOperation(value = "工作流_定义删除")
- @DeleteMapping(value = "delete/{deployIds}")
- public HttpResult