Commit a9e4c980 by 赵剑炜

工作流对接

parent ce07b63a
......@@ -9,12 +9,12 @@
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
<option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
......
......@@ -36,9 +36,5 @@ public class InventorySumReq {
* 号型ID
*/
private String sizeId;
/**
* 根据类型分组
*/
private String groupBy;
}
package com.junmp.jyzb.api.bean.req;
import com.junmp.v2.common.bean.request.BaseRequest;
import com.junmp.v2.common.bean.request.ValidationApi;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import java.util.List;
@Data
@EqualsAndHashCode(callSuper = false)
public class OrgUpdateReq extends BaseRequest {
/**
* 状态
*/
@NotBlank(message = "状态不能为空", groups = {ValidationApi.edit.class})
private String statusFlag;
/**
* 组织机构列表
*/
private List<orgIdList> orgIdList;
private class orgIdList {
/**
* 状态
*/
@NotBlank(message = "组织机构id不能为空", groups = {ValidationApi.edit.class})
private int id;
}
}
package com.junmp.jyzb.api.bean.req.ProcessReq;
import com.junmp.v2.common.bean.request.ValidationApi;
import com.junmp.v2.validator.api.validators.unique.TableUniqueValue;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
//@EqualsAndHashCode(callSuper = true)
public class FormReq {
/**
* 表单名称
*/
@NotNull(message = "表单名字不能为空", groups = {ValidationApi.edit.class, ValidationApi.delete.class, ValidationApi.detail.class})
private String formName;
/**
* 备注信息
*/
private String remark;
}
package com.junmp.jyzb.api.bean.req.ProcessReq;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class ProcessBaseReq {
/**********************任务相关的参数**********************/
/**
* 任务id 必填
*/
private String taskId;
/**
* 审批意见 必填
*/
private String message;
/**
* 流程实例的id 必填
*/
// @NotNull(“流程实”)
private String processInstanceId;
private String type;
}
package com.junmp.jyzb.api.bean.req.ProcessReq;
import com.junmp.v2.common.bean.request.ValidationApi;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class SuspendOrActivateDefinitionReq {
/**
* 流程定义ID
*/
@NotNull(message = "流程定义不能为空", groups = {ValidationApi.edit.class, ValidationApi.delete.class, ValidationApi.detail.class})
private String processDefinitionId;
/**
* 表单
*/
private String TemplateId;
/**
* 备注信息
*/
private Boolean isStop;
}
package com.junmp.jyzb.controller;
import com.junmp.jyzb.api.bean.req.OrgUpdateReq;
import com.junmp.jyzb.service.PubOrgService;
import com.junmp.jyzb.utils.ResponseResult;
import io.swagger.annotations.Api;
......@@ -30,13 +31,13 @@ public class PubOrgController {
return returnMsg;
}
@PostMapping("/ChangeOrgState")
@ApiOperation("改变组织机构状态信息")
public ResponseResult changeOrgState(@RequestBody Map<String, Object> msg) {
//传入当前的组织机构id,展示所有本级及下级的
ResponseResult returnMsg = pubOrgService.changeOrgState(msg);
return returnMsg;
}
// @PostMapping("/ChangeOrgState")
// @ApiOperation("改变组织机构状态信息")
// public ResponseResult changeOrgState(@RequestBody OrgUpdateReq req) {
// //传入当前的组织机构id,展示所有本级及下级的
// ResponseResult returnMsg = pubOrgService.changeOrgState(msg);
// return returnMsg;
// }
// @PostMapping("/ShowAllPubOrgList")
// @ApiOperation("查询组织机构列表(含禁用)")
......
......@@ -15,7 +15,6 @@ import lombok.NoArgsConstructor;
/**
* 组织机构信息
*/
@ApiModel(value="com-junmp-jyzb-domain-PubOrg")
@Data
@AllArgsConstructor
@NoArgsConstructor
......
package com.junmp.jyzb.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.junmp.jyzb.api.bean.req.OrgUpdateReq;
import com.junmp.jyzb.entity.Inventory;
import com.junmp.jyzb.utils.ResponseResult;
......@@ -22,5 +23,5 @@ public interface PubOrgService extends IService<PubOrg> {
ResponseResult getOrgDetail(Map<String, Object> orgId);
ResponseResult changeOrgState(Map<String, Object> msg);
ResponseResult changeOrgState(OrgUpdateReq req);
}
......@@ -89,6 +89,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
private Product queryProduct(ProductReq req) {
Product app = this.getById(req.getProductId());
if (ObjectUtil.isNull(app)) {
throw new ServiceException(ProductExceptionEnum.PRODUCT_NOT_EXIST);
}
......
package com.junmp.jyzb.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.junmp.jyzb.api.bean.req.OrgUpdateReq;
import com.junmp.jyzb.api.bean.req.ProductTagReq;
import com.junmp.jyzb.entity.ProductSku;
import com.junmp.jyzb.entity.ProductTag;
import com.junmp.jyzb.entity.PubOrg;
import com.junmp.jyzb.utils.HttpStatus;
import com.junmp.jyzb.utils.RedisUtils;
import com.junmp.jyzb.utils.ResponseResult;
import com.junmp.jyzb.utils.ReturnMsg;
import com.junmp.v2.common.util.BeanPlusUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
......@@ -431,19 +438,40 @@ public class PubOrgServiceImpl extends ServiceImpl<PubOrgMapper, PubOrg> implem
return new ResponseResult(HttpStatus.SUCCESS, "操作成功", resultList);
}
@Override
public ResponseResult changeOrgState(Map<String, Object> msg) {
try {
checkNotBlank(msg.get("statusFlag"), "statusFlag不能为空");
checkNotBlank(msg.get("orgIdList"), "orgIdList不能为空");
} catch (IllegalArgumentException e) {
return new ResponseResult(HttpStatus.ERROR, ReturnMsg.ERROR,e.getMessage());
}
List<String> orgIdList = (List<String>) msg.get("orgIdList");
Integer statusFlag = (Integer) msg.get("statusFlag");
pubOrgMapper.changeOrgState(statusFlag,orgIdList);
public ResponseResult changeOrgState(OrgUpdateReq req) {
LambdaQueryWrapper<PubOrg> wrapper = new LambdaQueryWrapper<>();
// wrapper.in(ObjectUtil.isNotEmpty(req.getOrgIdList()), PubOrg::getOrgId, req.getOrgIdList());
// PubOrg entity = this.list(req);
// BeanPlusUtil.copyProperties(req, entity);
// return this.updateById(entity);
// List<String> orgIdList = (List<String>) msg.get("orgIdList");
// Integer statusFlag = (Integer) msg.get("statusFlag");
// pubOrgMapper.changeOrgState(statusFlag,orgIdList);
return new ResponseResult(HttpStatus.SUCCESS,ReturnMsg.PASS);
}
private LambdaQueryWrapper<PubOrg> createWrapper(ProductTagReq req) {
LambdaQueryWrapper<PubOrg> wrapper = new LambdaQueryWrapper<>();
if (ObjectUtil.isEmpty(req)) {
return wrapper;
}
// //根据业务编码查询
// wrapper.eq(ObjectUtil.isNotEmpty(req.getProductCode()), ProductTag::getProductCode, req.getProductCode());
// wrapper.eq(ObjectUtil.isNotEmpty(req.getTagUid()), ProductTag::getTagUid, req.getTagUid());
// wrapper.eq(ObjectUtil.isNotEmpty(req.getBatchId()), ProductTag::getBatchId, req.getBatchId());
// wrapper.eq(ObjectUtil.isNotEmpty(req.getTagId()), ProductTag::getTagId, req.getTagId());
//
//
// wrapper.eq(ProductTag::getHasInit, true);
// wrapper.orderByDesc(ProductTag::getCheckTime);
return wrapper;
}
}
......
......@@ -48,6 +48,12 @@ public class HttpStatus
*没有运行时的任务实例,请确认!
*/
public static final int NO_SUCH_PROCESS = 100006;
/**
*流程已挂起,请确认!
*/
public static final int PROCESS_ISSUSPEND = 100007;
/**
* 请求数据超时
*/
......
......@@ -16,7 +16,10 @@ public class ReturnMsg {
*/
public static final String NO_SUCH_PROCESS = "没有运行时的任务实例";
/**
* 流程已挂起
*/
public static final String PROCESS_ISSUSPEND = "流程已挂起";
/**
* 操作失败
*/
......
server:
port: 8090
spring:
#配置rabbitMq 服务器
rabbitmq:
host: 192.168.3.188
port: 5672
username: root
password: 123456
#虚拟host 可以不设置,使用server默认host
virtual-host: /
artifactId=jyzb-mq-consumer
groupId=com.junmp.jyzb
version=1.0.0
com\junmp\jyzb\controller\SendMsgController.class
com\junmp\jyzb\config\DirectRabbitConfig.class
com\junmp\jyzb\MqConsumerApplication.class
com\junmp\jyzb\config\DirectReceiver.class
server:
port: 9001
spring:
#配置rabbitMq 服务器
rabbitmq:
host: 192.168.3.188
port: 5672
username: root
password: 123456
#虚拟host 可以不设置,使用server默认host
virtual-host: /
artifactId=jyzb-mq-producer
groupId=com.junmp.jyzb
version=1.0.0
com\junmp\jyzb\controller\SendMsgController.class
com\junmp\jyzb\MqProducerApplication.class
com\junmp\jyzb\config\DirectRabbitConfig.class
......@@ -19,6 +19,8 @@ import com.junmp.junmpProcess.service.Repository.ProcessTemplateService;
import com.junmp.junmpProcess.utils.BpmnConvert;
import com.junmp.junmpProcess.utils.FormAndOrder;
import com.junmp.junmpProcess.vo.*;
import com.junmp.jyzb.api.bean.req.ProcessReq.FormReq;
import com.junmp.jyzb.api.bean.req.ProcessReq.SuspendOrActivateDefinitionReq;
import com.junmp.jyzb.api.bean.req.ProductSkuReq;
import com.junmp.jyzb.api.bean.vo.TagInfoVo;
import com.junmp.jyzb.entity.ProductSku;
......@@ -114,21 +116,35 @@ public class BpmnController {
}
}
@ApiOperation("创建新表单")
@PostMapping("createForm")
public ApiRes<Boolean> createForm(@RequestBody FormReq formReq) {
return ApiRes.success(WorkProcessService.createNewForm(formReq));
}
// @ApiOperation("终止流程")
// @PostMapping("StopProcessInstanceById")
// public ApiRes<Boolean> stopProcessInstanceById(@RequestBody HandleDataDTO handleDataDTO) {
// return ApiRes.success(WorkProcessService.suspendOrActivateProcessDefinitionById(req));
// }
@ApiOperation("挂起流程实例")
@PostMapping("SuspendOrActivateDefinition")
public ApiRes<Boolean> SuspendOrActivateDefinition(@RequestBody SuspendOrActivateDefinitionReq req) {
return ApiRes.success(WorkProcessService.suspendOrActivateProcessDefinitionById(req));
}
@ApiOperation("通过流程定义id启动流程")
@PostMapping("start")
public ResponseResult start(@RequestBody StartProcessInstanceDTO startProcessInstanceDTO) {
public ApiRes<Boolean> start(@RequestBody StartProcessInstanceDTO startProcessInstanceDTO) {
return WorkProcessService.start(startProcessInstanceDTO);
}
@ApiOperation("查看我发起的流程")
@PostMapping("applyList")
public PageResult<HistoryProcessInstanceVO> applyList(@RequestBody ApplyDTO ApplyDTO) {
return WorkProcessService.applyList(ApplyDTO);
public ApiRes<PageResult<HistoryProcessInstanceVO>> applyList(@RequestBody ApplyDTO ApplyDTO) {
return ApiRes.success(WorkProcessService.applyList(ApplyDTO));
}
@ApiOperation("查看我的待办")
@PostMapping("toDoList")
public PageResult<TaskVO> toDoList(@RequestBody TaskDTO taskDTO){
return WorkProcessService.toDoList(taskDTO);
public ApiRes<PageResult<TaskVO>> toDoList(@RequestBody TaskDTO taskDTO){
return ApiRes.success(WorkProcessService.toDoList(taskDTO));
}
@ApiOperation("同意按钮")
@PostMapping("agree")
......
......@@ -7,9 +7,12 @@ import com.junmp.junmpProcess.common.Result;
import com.junmp.junmpProcess.dto.*;
import com.junmp.junmpProcess.entity.ProcessTemplates;
import com.junmp.junmpProcess.vo.*;
import com.junmp.jyzb.api.bean.req.ProcessReq.FormReq;
import com.junmp.jyzb.api.bean.req.ProcessReq.SuspendOrActivateDefinitionReq;
import com.junmp.jyzb.entity.ProductSku;
import com.junmp.jyzb.utils.ResponseResult;
import com.junmp.v2.common.bean.request.BaseRequest;
import com.junmp.v2.common.bean.response.ApiRes;
import com.junmp.v2.db.api.page.PageResult;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -18,6 +21,27 @@ import java.util.Map;
public interface WorkProcessService {
/**
* 创建表单
*
* @return
*/
Boolean createNewForm(FormReq processVO) ;
// /**
// * 挂起流程定义
// *
// * @return
// */
// Boolean stopProcessInstanceById(SuspendOrActivateDefinitionReq req) ;
/**
* 挂起流程定义
*
* @return
*/
Boolean suspendOrActivateProcessDefinitionById(SuspendOrActivateDefinitionReq req) ;
/**
* 创建表单
*
......@@ -75,7 +99,7 @@ public interface WorkProcessService {
*
* @return
*/
ResponseResult start(StartProcessInstanceDTO startProcessInstanceDTO);
ApiRes<Boolean> start(StartProcessInstanceDTO startProcessInstanceDTO);
/**
* 查看我发起的流程
......
......@@ -8,6 +8,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.PageUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.core.JsonProcessingException;
......@@ -26,12 +27,17 @@ import com.junmp.junmpProcess.service.Repository.ProcessTemplateService;
import com.junmp.junmpProcess.utils.IdWorker;
import com.junmp.junmpProcess.utils.SpringContextHolder;
import com.junmp.junmpProcess.vo.*;
import com.junmp.jyzb.api.bean.req.ProcessReq.FormReq;
import com.junmp.jyzb.api.bean.req.ProcessReq.SuspendOrActivateDefinitionReq;
import com.junmp.jyzb.entity.Inventory;
import com.junmp.jyzb.utils.HttpStatus;
import com.junmp.jyzb.utils.ResponseResult;
import com.junmp.jyzb.utils.ReturnMsg;
import com.junmp.v2.auth.api.LoginUserApi;
import com.junmp.v2.auth.api.bean.login.LoginUser;
import com.junmp.v2.auth.api.context.LoginContext;
import com.junmp.v2.common.bean.request.BaseRequest;
import com.junmp.v2.common.bean.response.ApiRes;
import com.junmp.v2.db.api.factory.PageFactory;
import com.junmp.v2.db.api.factory.PageResultFactory;
import com.junmp.v2.db.api.page.PageResult;
......@@ -155,9 +161,11 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
}
public PageResult<TemplateGroupVo> getFormList(BaseRequest br)
{
LambdaQueryWrapper<ProcessTemplates> wrapper = new LambdaQueryWrapper<ProcessTemplates>();
wrapper.orderByDesc(ProcessTemplates::getUpdated);
TemplateGroupMapper templateGroupMapper = SpringContextHolder.getBean(TemplateGroupMapper.class);
Page<ProcessTemplates> allformAndGroups =this.page(PageFactory.getDefaultPage());
templateGroupMapper.getAllFormAndGroups();
Page<ProcessTemplates> allformAndGroups =this.page(PageFactory.getDefaultPage(),wrapper);
// templateGroupMapper.getAllFormAndGroups();
Map<Integer, List<ProcessTemplates>> coverMap = new LinkedHashMap<>();
allformAndGroups.getRecords().forEach(fg -> {
List<ProcessTemplates> bos = coverMap.get(fg.getGroupId());
......@@ -203,6 +211,47 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
pageResult.setTotalPage(PageUtil.totalPage(Convert.toInt(pageResult.getTotalRows()), Convert.toInt(pageResult.getPageSize())));
return pageResult;
}
/**
* @Author: Zhaojw
* @Description: 创建新表单
* @DateTime: 2023/7/24 11:50
* @Params:
* @Return
*/
public Boolean createNewForm(FormReq req) {
ProcessTemplates processTemplates = ProcessTemplates.builder().build();
String templateId = idWorker.nextId()+"";
processTemplates.setTemplateId(templateId);
processTemplates.setFormName(req.getFormName());
processTemplates.setRemark(req.getRemark());
processTemplates.setIsStop(true);
Date date= new Date();
processTemplates.setUpdated(date);
processTemplateService.save(processTemplates);
return true;
}
@Override
public Boolean suspendOrActivateProcessDefinitionById(SuspendOrActivateDefinitionReq req) {
ProcessTemplates processTemplates = processTemplateService.getById(req.getTemplateId());
if (req.getIsStop() == true){
repositoryService.suspendProcessDefinitionById(req.getProcessDefinitionId(), true, null);
processTemplates.setIsStop(true);
}else {
processTemplates.setIsStop(false);
repositoryService.activateProcessDefinitionById(req.getProcessDefinitionId(), true, null);
}
processTemplates.setUpdated(new Date());
return processTemplateService.updateById(processTemplates);//更新表单明细表信息
}
public Boolean createBpmn(ProcessVO processVO) throws JsonProcessingException {
//流程定义
ObjectMapper objectMapper = new ObjectMapper();
......@@ -577,8 +626,9 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
* @return
*/
@Override
public ResponseResult start(StartProcessInstanceDTO processInstanceDto) {
public ApiRes<Boolean> start(StartProcessInstanceDTO processInstanceDto) {
try {
LoginUserApi user= LoginContext.getContext();
LoginUser StartUser= LoginContext.getContext().getLoginUser();
JSONObject formData = processInstanceDto.getFormData();
......@@ -599,13 +649,23 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
ProcessInstanceBuilder processInstanceBuilder = runtimeService.createProcessInstanceBuilder();
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(processInstanceDto.getProcessDefinitionId())
.latestVersion().singleResult();
// if (processDefinition == null )
// {
// return ApiRes.failure("流程不存在或已挂起");
//
// }
// if (processDefinition != null && processDefinition.isSuspended())
// {
// return ApiRes.failure("流程不存在或已挂起");
// }
ProcessInstance processInstance = processInstanceBuilder
.processDefinitionId(processInstanceDto.getProcessDefinitionId())
.variable("initiator",StartUser.getUserId())
.variables(processVariables)
.businessStatus(BUSINESS_STATUS_1)
.start();
.start();
//手动完成第一个任务
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
Object ts=new Object();
......@@ -613,19 +673,18 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
taskService.complete(task.getId());
}
return new ResponseResult(HttpStatus.SUCCESS,ReturnMsg.PASS,processInstance.getId());
return ApiRes.success(true);
}
catch (Exception e){
Throwable cause = e.getCause();
if(cause instanceof WorkFlowException){
WorkFlowException workFlowException=(WorkFlowException)cause;
return new ResponseResult(HttpStatus.PROCESS_START_ERROR,ReturnMsg.PROCESS_START_ERROR,workFlowException.getMessage());
return ApiRes.failure(workFlowException.getMessage());
}
e.printStackTrace();
return new ResponseResult(HttpStatus.PROCESS_START_ERROR,ReturnMsg.PROCESS_START_ERROR,"");
return ApiRes.failure("流程不存在或已挂起");
}
}
......@@ -698,9 +757,6 @@ public class WorkProcessServiceImpl extends ServiceImpl<ProcessTemplatesMapper,
List<TaskVO> taskVOS= new ArrayList<>();
Page<TaskVO> page =new Page<>();
for (Task task : tasks) {
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
String startUserId = processInstance.getStartUserId();
BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId());
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论