prehomo、验证符合、设计符合性流程,流程历史代码。

This commit is contained in:
wangzhijiang
2022-05-18 13:39:46 +08:00
parent 1276160fa1
commit 8057433d9a
7 changed files with 569 additions and 0 deletions
@@ -141,6 +141,7 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/project/projectLawsInventoryEO/processCall", "anon"); // 项目库-法规清单 工作流处理数据接口排除
filterChainDefinitionMap.put("/project/projectTaskInventoryEO/processCall", "anon"); // 项目库-任务清单 工作流处理数据接口排除
filterChainDefinitionMap.put("/wkflow/processHistoryEO/processCall", "anon"); // 流程历史 工作流处理数据接口排除
filterChainDefinitionMap.put("/sys/user/querySysUserListByIdList", "anon"); // 工作流根据用户idList获取用户信息接口
// 添加自己的过滤器并且取名为jwt
@@ -0,0 +1,185 @@
package com.jero.modules.wkflow.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.wkflow.entity.ProcessHistoryEO;
import com.jero.modules.wkflow.service.IProcessHistoryEOService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.jero.common.aspect.annotation.AutoLog;
/**
* @Description: 流程历史表
* @Author: jero-boot
* @Date: 2022-05-18
* @Version: V1.0
*/
@Api(tags="流程历史表")
@RestController
@RequestMapping("/wkflow/processHistoryEO")
@Slf4j
public class ProcessHistoryEOController extends JeroController<ProcessHistoryEO, IProcessHistoryEOService> {
@Autowired
private IProcessHistoryEOService processHistoryEOService;
/**
* 分页列表查询
*
* @param processHistoryEO
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "流程历史表-分页列表查询")
@ApiOperation(value="流程历史表-分页列表查询", notes="流程历史表-分页列表查询")
@GetMapping(value = "/page")
public Result<?> queryPageList(ProcessHistoryEO processHistoryEO,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<ProcessHistoryEO> queryWrapper = QueryGenerator.initQueryWrapper(processHistoryEO, req.getParameterMap());
Page<ProcessHistoryEO> page = new Page<ProcessHistoryEO>(pageNo, pageSize);
IPage<ProcessHistoryEO> pageList = processHistoryEOService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 列表查询
*
* @return
*/
@AutoLog(value = "流程历史表-列表查询")
@ApiOperation(value="流程历史表-列表查询", notes="流程历史表-列表查询")
@GetMapping(value = "/list")
public Result<List<ProcessHistoryEO>> queryList(@RequestParam Map<String,Object> params) {
List<ProcessHistoryEO> list = processHistoryEOService.queryList(params);
return Result.OK(list);
}
/**
* 添加
*
* @param processHistoryEO
* @return
*/
@AutoLog(value = "流程历史表-添加")
@ApiOperation(value="流程历史表-添加", notes="流程历史表-添加")
@PostMapping(value = "/add")
public Result<?> add(@Validated @RequestBody ProcessHistoryEO processHistoryEO) {
processHistoryEOService.add(processHistoryEO);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param processHistoryEO
* @return
*/
@AutoLog(value = "流程历史表-编辑")
@ApiOperation(value="流程历史表-编辑", notes="流程历史表-编辑")
@PutMapping(value = "/edit")
public Result<?> edit(@Validated @RequestBody ProcessHistoryEO processHistoryEO) {
processHistoryEOService.editById(processHistoryEO);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "流程历史表-通过id删除")
@ApiOperation(value="流程历史表-通过id删除", notes="流程历史表-通过id删除")
@DeleteMapping(value = "/delete")
public Result<?> delete(@RequestParam(name="id",required=true) String id) {
processHistoryEOService.deleteById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "流程历史表-批量删除")
@ApiOperation(value="流程历史表-批量删除", notes="流程历史表-批量删除")
@DeleteMapping(value = "/deleteBatch")
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.processHistoryEOService.deleteByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
@AutoLog(value = "流程历史表-通过id查询")
@ApiOperation(value="流程历史表-通过id查询", notes="流程历史表-通过id查询")
@GetMapping(value = "/queryById")
public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
ProcessHistoryEO processHistoryEO = processHistoryEOService.queryById(id);
if(processHistoryEO==null) {
return Result.error("未找到对应数据");
}
return Result.OK(processHistoryEO);
}
/**
* 导出excel
*
* @param request
* @param processHistoryEO
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, ProcessHistoryEO processHistoryEO) {
return super.exportXls(request, processHistoryEO, ProcessHistoryEO.class, "流程历史表");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, ProcessHistoryEO.class);
}
/**
* 流程调用接口
* @param jsonObject
* @return
*/
@AutoLog(value = "项目库-任务清单表-流程调用")
@ApiOperation(value="项目库-任务清单表-流程调用", notes="项目库-任务清单表-流程调用")
@PostMapping(value = "/processCall")
public Result<?> processCall(@RequestBody JSONObject jsonObject){
return this.processHistoryEOService.processCall(jsonObject);
}
}
@@ -0,0 +1,97 @@
package com.jero.modules.wkflow.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
/**
* @Description: 流程历史表
* @Author: jero-boot
* @Date: 2022-05-18
* @Version: V1.0
*/
@Data
@TableName("process_history")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="process_history对象", description="流程历史表")
public class ProcessHistoryEO implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private String id;
/**创建人*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期")
private Date updateTime;
/**所属部门*/
@ApiModelProperty(value = "所属部门")
private String sysOrgCode;
/**流程实例id*/
@Excel(name = "流程实例id", width = 15)
@ApiModelProperty(value = "流程实例id")
private String actiProcInstId;
/**操作节点*/
@Excel(name = "操作节点", width = 15)
@ApiModelProperty(value = "操作节点")
private String taskDefinitionKey;
/**操作人*/
@Excel(name = "操作人", width = 15)
@ApiModelProperty(value = "操作人")
private String operatorPersonId;
/**操作结果*/
@Excel(name = "操作结果", width = 15)
@ApiModelProperty(value = "操作结果")
private String operatorResult;
/**意见*/
@Excel(name = "意见", width = 15)
@ApiModelProperty(value = "意见")
private String approvalOpinion;
/**操作结果,页面展示字段**/
@TableField(exist = false)
private String reviewResult;
/**用户账号,页面展示字段**/
@TableField(exist = false)
private String operatorPersonName;;
}
@@ -0,0 +1,17 @@
package com.jero.modules.wkflow.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.jero.modules.wkflow.entity.ProcessHistoryEO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 流程历史表
* @Author: jero-boot
* @Date: 2022-05-18
* @Version: V1.0
*/
public interface ProcessHistoryEOMapper extends BaseMapper<ProcessHistoryEO> {
}
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.wkflow.mapper.ProcessHistoryEOMapper">
<resultMap id="ProcessHistoryEOResultMap" type="com.jero.modules.wkflow.entity.ProcessHistoryEO">
<id column="id" property="id" />
<result column="create_by" property="createBy" />
<result column="create_time" property="createTime" />
<result column="update_by" property="updateBy" />
<result column="update_time" property="updateTime" />
<result column="sys_org_code" property="sysOrgCode" />
<result column="acti_proc_inst_id" property="actiProcInstId" />
<result column="task_definition_key" property="taskDefinitionKey" />
<result column="operator_person_id" property="operatorPersonId" />
<result column="operator_result" property="operatorResult" />
<result column="approval_opinion" property="approvalOpinion" />
</resultMap>
</mapper>
@@ -0,0 +1,71 @@
package com.jero.modules.wkflow.service;
import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result;
import com.jero.modules.wkflow.entity.ProcessHistoryEO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
import java.util.Map;
/**
* @Description: 流程历史表
* @Author: jero-boot
* @Date: 2022-05-18
* @Version: V1.0
*/
public interface IProcessHistoryEOService extends IService<ProcessHistoryEO> {
/**
* 保存
*
* @param processHistoryEO
* @return
*/
void add(ProcessHistoryEO processHistoryEO);
/**
* 更新
*
* @param processHistoryEO
* @return
*/
void editById(ProcessHistoryEO processHistoryEO);
/**
* 通过id删除
*
* @param id
* @return
*/
void deleteById(String id);
/**
* 批量删除
*
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
/**
* 通过id查询
*
* @param id
* @return
*/
ProcessHistoryEO queryById(String id);
/**
* 列表查询
*
* @return
*/
List<ProcessHistoryEO> queryList(Map<String,Object> params);
/**
* 流程调用
* @param jsonObject
* @return
*/
Result<?> processCall(JSONObject jsonObject);
}
@@ -0,0 +1,181 @@
package com.jero.modules.wkflow.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.project.enums.OperatorTypeEnum;
import com.jero.modules.project.enums.RequestSourceEnum;
import com.jero.modules.project.enums.ReviewResultEnum;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.wkflow.entity.ProcessHistoryEO;
import com.jero.modules.wkflow.mapper.ProcessHistoryEOMapper;
import com.jero.modules.wkflow.service.IProcessHistoryEOService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Date;
import java.util.Map;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 流程历史表
* @Author: jero-boot
* @Date: 2022-05-18
* @Version: V1.0
*/
@Service
public class ProcessHistoryEOServiceImpl extends ServiceImpl<ProcessHistoryEOMapper, ProcessHistoryEO> implements IProcessHistoryEOService {
@Autowired
private ISysUserService sysUserService;
/**
* 保存
*
* @param processHistoryEO
* @return
*/
@Override
public void add(ProcessHistoryEO processHistoryEO) {
Date now = new Date();
processHistoryEO.setCreateTime(now);
processHistoryEO.setUpdateTime(now);
save(processHistoryEO);
}
/**
* 更新
*
* @param processHistoryEO
* @return
*/
@Override
public void editById(ProcessHistoryEO processHistoryEO) {
Date now = new Date();
processHistoryEO.setUpdateTime(now);
saveOrUpdate(processHistoryEO);
}
/**
* 通过id删除
*
* @param id
* @return
*/
@Override
public void deleteById(String id) {
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public ProcessHistoryEO queryById(String id) {
return getById(id);
}
/**
* 列表查询
*
* @return
*/
@Override
public List<ProcessHistoryEO> queryList(Map<String,Object> params) {
String cut = (String) params.get("cut");
String actiProcInstId = (String) params.get("actiProcInstId");
if(StringUtils.isEmpty(actiProcInstId)){
throw new JeroBootException("流程实例id不能为空!");
}
QueryWrapper<ProcessHistoryEO> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ProcessHistoryEO::getActiProcInstId,actiProcInstId);
List<ProcessHistoryEO> processHistoryEOList = this.baseMapper.selectList(queryWrapper);
if(CollectionUtils.isNotEmpty(processHistoryEOList)){
disposeData(processHistoryEOList,cut);
}
return processHistoryEOList;
}
/**
* 处理数据
* @param datas
* @param cut
*/
public void disposeData(List<ProcessHistoryEO> datas,String cut){
if(CollectionUtils.isNotEmpty(datas)){
List<String> userIdList = new ArrayList<>();
for (ProcessHistoryEO data : datas) {
if(StringUtils.isNotEmpty(data.getOperatorPersonId())){
userIdList.add(data.getOperatorPersonId());
}
}
List<SysUser> sysUserList = new ArrayList<>();
if(CollectionUtils.isNotEmpty(userIdList)){
sysUserList = sysUserService.querySysUserListByIdList(userIdList);
}
for (ProcessHistoryEO data : datas) {
if(StringUtils.isNotEmpty(data.getOperatorResult())){
data.setReviewResult(ReviewResultEnum.getTextByValue(data.getOperatorResult(),cut));
}
if(StringUtils.isNotEmpty(data.getOperatorPersonId()) && CollectionUtils.isNotEmpty(sysUserList)){
SysUser userInfo = sysUserList.stream().filter(sysUser -> sysUser.getId().equals(data.getOperatorPersonId())).collect(Collectors.toList()).get(0);
data.setOperatorPersonId(userInfo.getUsername());
}
}
}
}
@Override
public Result<?> processCall(JSONObject jsonObject) {
String requestSource = jsonObject.getString("requestSource");
if(StringUtils.isEmpty(requestSource)){
throw new JeroBootException("请求来源不能为空!");
}
if(!StringUtils.equals(requestSource, RequestSourceEnum.WORK_FLOW.getValue())){
throw new JeroBootException("来源有误,没有权限调用该接口!");
}
String operatorType = jsonObject.getString("operatorType");
if(StringUtils.isEmpty(operatorType)){
throw new JeroBootException("操作类型不能为空!");
}
if(StringUtils.equals(operatorType, OperatorTypeEnum.ADD.getValue())){
JSONArray processHistoryEOArray = jsonObject.getJSONArray("processHistoryEOList");
List<ProcessHistoryEO> processHistoryEOList = new ArrayList<>();
ProcessHistoryEO processHistoryEO = null;
for (Object processHistory : processHistoryEOArray) {
processHistoryEO = JSONObject.parseObject(JSONObject.toJSONString(processHistory), ProcessHistoryEO.class);
processHistoryEOList.add(processHistoryEO);
}
this.saveBatch(processHistoryEOList);
}
return new Result<>().success("调用成功!");
}
}