Commit 83faf830 by shenweidong

解决冲突

parents 2c21ca29 e79c4c38
......@@ -61,4 +61,3 @@ Thumbs.db
/jyzb-boot/pom.xml
/.idea/encodings.xml
/jyzb-api/jyzb-api.iml
/jyzb-api/jyzb-api.iml
......@@ -47,5 +47,12 @@ public class CabinetBoxReq extends BaseRequest {
@ApiModelProperty(value = "使用日志存储位置信息")
private String logMap;
/**
* 警员id
*/
@ApiModelProperty(value = "警员id")
private String policeId;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
......@@ -76,6 +76,12 @@ public class CabinetReq extends BaseRequest {
@ApiModelProperty(value = "更新人员")
private String updateUser;
/**
* 是否包含本级及下级,true为包含,false为不包含,只显示本级
*/
@ApiModelProperty(value = "本机及下级")
private String includeLowerLevel;
// /**
// * 单警柜与箱门一对多关系
// */
......
package com.junmp.jyzb.Dto;
import com.junmp.jyzb.entity.CabinetBox;
import com.junmp.v2.common.bean.request.BaseRequest;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
@Data
@EqualsAndHashCode(callSuper = true)
public class CabinetDto extends BaseRequest {
/**
* 单警柜ID
*/
@NotNull(message = "单警柜ID主键不能为空", groups = {edit.class, delete.class, detail.class})
@ApiModelProperty(value = "单警柜ID")
private String id;
/**
* 单警柜编号
*/
@NotNull(message = "单警柜编号不能为空", groups = {edit.class, delete.class, detail.class})
@ApiModelProperty(value = "单警柜编号")
private String cabinetNum;
/**
* 箱数
*/
@ApiModelProperty(value = "箱数")
private Integer num;
/**
* 单警柜名称
*/
@NotNull(message = "单警柜名称不能为空", groups = {edit.class, delete.class, detail.class})
@ApiModelProperty(value = "单警柜名称")
private String name;
/**
* 组织机构号
*/
@NotNull(message = "组织机构号不能为空", groups = {edit.class, delete.class, detail.class})
@ApiModelProperty(value = "组织机构号")
private String orgId;
/**
* 位置信息
*/
@ApiModelProperty(value = "位置信息")
private String location;
/**
* 单警柜当前状态,0正常,1异常
*/
@ApiModelProperty(value = "单警柜当前状态,0正常,1异常")
private Integer state;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
/**
* 更新人员
*/
@ApiModelProperty(value = "更新人员")
private String updateUser;
/**
* 是否包含本级及下级,true为包含,false为不包含,只显示本级
*/
@ApiModelProperty(value = "本机及下级")
private String includeLowerLevel;
/**
* 单警柜与箱门一对多关系
*/
private List<CabinetBox> list ;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.junmp.jyzb.controller;
import com.junmp.jyzb.Dto.CabinetDto;
import com.junmp.jyzb.api.bean.req.CabinetBoxReq;
import com.junmp.jyzb.api.bean.req.CabinetReq;
import com.junmp.jyzb.entity.Cabinet;
......@@ -46,14 +47,14 @@ public class CabinetController {
}
@PostMapping("/DeleteCabinet")
@ApiOperation("删除单警柜信息")
@ApiOperation("删除单警柜")
public ResponseResult deleteCabinet(@RequestBody Map<String,Object> msg) {
ResponseResult returnMsg = cabinetService.deleteCabinet(msg);
return returnMsg;
}
@PostMapping("/ShowCabinet")
@ApiOperation("查询单警柜列表")
@ApiOperation("查询单警柜")
public ResponseResult showCabinet(@RequestBody Map<String, Object> msg){
ResponseResult returnMsg = cabinetService.getAllCabinet(msg);
return returnMsg;
......@@ -88,7 +89,7 @@ public class CabinetController {
}
@PostMapping("/AddCabinetInfo")
@ApiOperation("添加单警柜")
@ApiOperation("添加单警柜信息(新)")
public ApiRes<Boolean> addCabinetInfo(@RequestBody CabinetReq req){
boolean result = cabinetService.addCabinetInfo(req);
if (!result){
......@@ -98,37 +99,39 @@ public class CabinetController {
}
@PostMapping("/DeleteCabinetInfo")
@ApiOperation("删除单警柜信息")
@ApiOperation("删除单警柜信息(新)")
public ApiRes<Boolean> deleteCabinetInfo(@RequestBody CabinetReq req) {
return ApiRes.success(cabinetService.deleteCabinetInfo(req));
}
@PostMapping("/ShowCabinetList")
@ApiOperation("查询单警柜列表")
public ApiRes<List<Cabinet>> showCabinetList(@RequestBody CabinetReq req,@RequestBody String includeLowerLevel){
List<Cabinet> allCabinetList = cabinetService.getAllCabinetList(req, includeLowerLevel);
@ApiOperation("查询单警柜列表(新)")
public ApiRes<List<Cabinet>> showCabinetList(@RequestBody CabinetReq req){
List<Cabinet> allCabinetList = cabinetService.getAllCabinetList(req);
if (allCabinetList.size()<=0){
return ApiRes.failure("查询失败,列表为null");
}
return ApiRes.success(cabinetService.getAllCabinetList(req,includeLowerLevel));
return ApiRes.success(allCabinetList);
}
//通过单警柜id查询单个箱门及其箱门信息
@PostMapping("/ShowOneCabinet")
@ApiOperation("查询单个单警柜及其箱门信息")
public ApiRes<Cabinet> showOneCabinet(@RequestBody CabinetReq req){
@ApiOperation("查询单个单警柜及其箱门信息(新)")
public ApiRes<CabinetDto> showOneCabinet(@RequestBody CabinetReq req){
return ApiRes.success(cabinetService.showOneCabinet(req));
}
@PostMapping("/getCabinetBoxList")
@ApiOperation("通过单警柜id获取箱门列表")
@ApiOperation("通过单警柜id获取箱门列表(新)")
public ApiRes<List<CabinetBox>> getCabinetBoxList(@RequestBody CabinetReq req){
return ApiRes.success(cabinetBoxService.getCabinetBoxList(req));
}
@PostMapping("/UpdateCabinetInfo")
@ApiOperation("修改单警柜信息")
@ApiOperation("修改单警柜信息(新)")
public ApiRes<Boolean> updateCabinetInfo(@RequestBody CabinetReq req) {
boolean result = cabinetService.updateCabinetInfo(req);
if (!result){
......@@ -138,9 +141,9 @@ public class CabinetController {
}
@PostMapping("/boxBindPolice")
@ApiOperation("箱门绑定人员")
public ApiRes<Boolean> boxBindPolice(@RequestBody CabinetBoxReq req,@RequestBody String policeId) {
boolean result = cabinetService.boxBindPolice(req,policeId);
@ApiOperation("箱门绑定人员(新)")
public ApiRes<Boolean> boxBindPolice(@RequestBody CabinetBoxReq req) {
boolean result = cabinetService.boxBindPolice(req);
if (!result){
return ApiRes.failure("操作失败");
}
......
......@@ -124,7 +124,6 @@ public class Cabinet implements Serializable {
@ApiModelProperty(value = "箱数")
private Integer num;
private List<CabinetBox> list;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
......@@ -28,7 +28,7 @@ public class Policeman implements Serializable {
@TableField(value = "name")
private String name;
@TableField(value = "cabinet_box_id")
@TableField(value = "cabinet_box_id",updateStrategy = FieldStrategy.IGNORED)
private String cabinetBoxId;
@TableField(value = "org_id_int")
......
package com.junmp.jyzb.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.junmp.jyzb.Dto.CabinetDto;
import com.junmp.jyzb.entity.Cabinet;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -14,6 +15,7 @@ public interface CabinetMapper extends BaseMapper<Cabinet> {
public int addCabinet(Cabinet cabinet);
public List<Cabinet> getAllCabinet();
public List<Cabinet> getAllCabinetList();
Map<String, Object> getOneCabinet(String id);
......@@ -35,6 +37,7 @@ public interface CabinetMapper extends BaseMapper<Cabinet> {
String getCabinetNumById(String id);
List<Cabinet> getAllCabinetByOrgList(List<String> allOrgId);
List<CabinetDto> getAllCabinetByOrgList111(List<String> allOrgId);
void setCabinetSumInventory(@Param("updateId") String id);
......
package com.junmp.jyzb.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.junmp.jyzb.Dto.CabinetDto;
import com.junmp.jyzb.api.bean.req.CabinetBoxReq;
import com.junmp.jyzb.api.bean.req.CabinetReq;
import com.junmp.jyzb.entity.Cabinet;
......@@ -50,7 +51,8 @@ public interface CabinetService extends IService<Cabinet> {
* @param req
* @return
*/
List<Cabinet> getAllCabinetList(CabinetReq req, String includeLowerLevel);
List<Cabinet> getAllCabinetList(CabinetReq req);
/**
......@@ -58,7 +60,7 @@ public interface CabinetService extends IService<Cabinet> {
* @param req
* @return
*/
Cabinet showOneCabinet(CabinetReq req);
CabinetDto showOneCabinet(CabinetReq req);
/**
* 修改单警柜信息
......@@ -72,7 +74,7 @@ public interface CabinetService extends IService<Cabinet> {
* @param req
* @return
*/
boolean boxBindPolice(CabinetBoxReq req,String policeId);
boolean boxBindPolice(CabinetBoxReq req);
/**
* 根据组织机构获取单警柜及箱号信息
......
......@@ -3,6 +3,7 @@ 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.Dto.CabinetDto;
import com.junmp.jyzb.api.bean.req.CabinetBoxReq;
import com.junmp.jyzb.api.bean.req.CabinetReq;
import com.junmp.jyzb.entity.Cabinet;
......@@ -17,10 +18,8 @@ import com.junmp.jyzb.service.CabinetService;
import com.junmp.jyzb.service.PolicemanService;
import com.junmp.jyzb.service.PubOrgService;
import com.junmp.jyzb.utils.*;
import com.junmp.v2.common.constant.CommonConstant;
import com.junmp.v2.common.exception.base.ServiceException;
import com.junmp.v2.common.util.BeanPlusUtil;
import org.checkerframework.checker.units.qual.A;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -342,6 +341,11 @@ public class CabinetServiceImpl extends ServiceImpl<CabinetMapper, Cabinet> impl
allCabinet = cabinetMapper.getAllCabinetByOrgList(allOrgId);
return allCabinet;
}
private List<CabinetDto> getAllCabinetByOrg111( List<String> allOrgId) {
List<CabinetDto> allCabinet = new ArrayList<>();
allCabinet = cabinetMapper.getAllCabinetByOrgList111(allOrgId);
return allCabinet;
}
@Override
public List<String> getAllCabinetId(Map<String, Object> msg) {
......@@ -489,6 +493,13 @@ public class CabinetServiceImpl extends ServiceImpl<CabinetMapper, Cabinet> impl
.eq(ObjectUtil.isNotEmpty(req.getId()), CabinetBox::getCabinetId, req.getId());
List<CabinetBox> list = cabinetBoxService.list(eq);
for (CabinetBox cabinetBox: list) {
//删除箱门信息的同时需要去判断箱门是否绑定警员,如果有,则解除绑定
Policeman one = policemanService.getOne(new LambdaQueryWrapper<Policeman>()
.eq(ObjectUtil.isNotEmpty(cabinetBox.getId()),Policeman::getCabinetBoxId,cabinetBox.getId()));
if (!ObjectUtil.isNull(one)){
one.setCabinetBoxId(null);
policemanService.updateById(one);
}
cabinetBoxService.removeById(cabinetBox.getId());
}
//删除单警柜id
......@@ -499,20 +510,20 @@ public class CabinetServiceImpl extends ServiceImpl<CabinetMapper, Cabinet> impl
* 获取单警柜列表
*通过机构id进行查询
* @param req 单警柜信息
* @param includeLowerLevel true:查询本级及下级 false:查询本级
* @param req getIncludeLowerLevel true:查询本级及下级 false:查询本级
* @return
*/
@Override
public List<Cabinet> getAllCabinetList(CabinetReq req, String includeLowerLevel) {
public List<Cabinet> getAllCabinetList(CabinetReq req) {
List<Cabinet> cabinets = new ArrayList<>();
//如果组织机构时浙江省公安厅
if (req.getOrgId().equals("1369509498032808905") && includeLowerLevel.equals("true")) {
if (req.getOrgId().equals("1369509498032808905") && req.getIncludeLowerLevel().equals("true")) {
cabinets = cabinetMapper.getAllCabinet();
return cabinets;
}
//分两种情况,如果说是本级及下级(全部)所有的单警柜信息,则incluLowerLevel为true,如果是查询本级的单警柜信息则为false
if (includeLowerLevel.equals("true") || includeLowerLevel.equals("false")) {
List<String> allOrgId = getAllOrgId(req, includeLowerLevel);
if (req.getIncludeLowerLevel().equals("true") || req.getIncludeLowerLevel().equals("false")) {
List<String> allOrgId = getAllOrgId(req, req.getIncludeLowerLevel());
if (allOrgId.isEmpty()) {
//抛出组织机构不存在异常
throw new ServiceException(CabinetExceptionEnum.PUBORG_NOT_EXIST);
......@@ -525,24 +536,30 @@ public class CabinetServiceImpl extends ServiceImpl<CabinetMapper, Cabinet> impl
}
}
/**
* 通过单警柜id查询单个单警柜及其箱门信息
* @param req
* @return
*/
@Override
public Cabinet showOneCabinet(CabinetReq req) {
public CabinetDto showOneCabinet(CabinetReq req) {
//查询单警柜信息
LambdaQueryWrapper<Cabinet> eq = CabinetWrapper(req)
.eq(ObjectUtil.isNotEmpty(req.getId()), Cabinet::getId, req.getId());
Cabinet one = getOne(eq);
if (ObjectUtil.isNull(one)){
throw new ServiceException(CabinetExceptionEnum.CABINET_ISNOT_EXISTS);
}
//查询单警柜的箱门信息
LambdaQueryWrapper<CabinetBox> eq1 = CabinetboxWrapper(req)
.eq(ObjectUtil.isNotEmpty(req.getOrgId()), CabinetBox::getCabinetId, req.getOrgId());
.eq(ObjectUtil.isNotEmpty(req.getId()), CabinetBox::getCabinetId, req.getId());
List<CabinetBox> list = cabinetBoxService.list(eq1);
one.setList(list);
return one;
//将单警柜的信息和它的箱门信息返回
CabinetDto cabinetDto = new CabinetDto();
BeanPlusUtil.copyProperties(one,cabinetDto);
cabinetDto.setList(list);
return cabinetDto;
}
/**
......@@ -601,7 +618,7 @@ public class CabinetServiceImpl extends ServiceImpl<CabinetMapper, Cabinet> impl
* @return
*/
@Override
public boolean boxBindPolice(CabinetBoxReq req,String policeId) {
public boolean boxBindPolice(CabinetBoxReq req) {
//通过箱门id查询出箱门信息
CabinetBox one = cabinetBoxService.getOne(new LambdaQueryWrapper<CabinetBox>()
.eq(ObjectUtil.isNotEmpty(req.getId()), CabinetBox::getId, req.getId()));
......@@ -621,18 +638,18 @@ public class CabinetServiceImpl extends ServiceImpl<CabinetMapper, Cabinet> impl
long orgId = one1.getOrgId();
//通过警员id获取警员所在的机构id
Policeman one2 = policemanService.getOne(new LambdaQueryWrapper<Policeman>()
.eq(ObjectUtil.isNotEmpty(policeId), Policeman::getId, policeId));
.eq(ObjectUtil.isNotEmpty(req.getPoliceId()), Policeman::getId, req.getPoliceId()));
if (ObjectUtil.isEmpty(one2)){
//警员不存在异常
throw new ServiceException(PolicemanExceptionEnum.POLICEMAN_NOT_EXIST);
}
Long orgId1 = one2.getOrgId();
//判断两个机构id是否相同,相同则可以绑定,不相同则绑定失败
if (!orgId1.equals(orgId)){
if (!(orgId1==orgId)){
return false;
}
one2.setCabinetBoxId(one.getId());
return policemanService.save(one2);
return policemanService.updateById(one2);
}
@Override
......
......@@ -19,10 +19,10 @@
<result property="createUser" column="create_user" />
<result property="updateUser" column="update_user" />
<collection property="list" ofType="com.junmp.jyzb.entity.CabinetBox" column="cabinet_id"
select="com.junmp.jyzb.mapper.CabinetBoxMapper.selectById">
<!-- <collection property="list" ofType="com.junmp.jyzb.entity.CabinetBox" column="cabinet_id"-->
<!-- select="com.junmp.jyzb.mapper.CabinetBoxMapper.selectById">-->
</collection>
<!-- </collection>-->
</resultMap>
......@@ -64,7 +64,7 @@
where p.id =#{id}
</update>
<select id="getAllCabinet" resultType="com.junmp.jyzb.entity.Cabinet">
<select id="getAllCabinet" resultMap="BaseCabinetResultMap" >
select
c.id,
c.cabinet_num as cabinetNum,
......@@ -155,6 +155,27 @@
#{item}
</foreach>
</select>
<select id="getAllCabinetByOrgList111" resultType="com.junmp.jyzb.Dto.CabinetDto">
select
c.id,
c.cabinet_num as cabinetNum,
c.name,
o.org_id as orgId,
o.org_name as orgName,
c.location,
c.state,
c.update_time as updateTime,
c.sum as sum,
c.in_sum as inSum,
c.out_sum as outSum
from base_cabinet c
left join pub_org o on c.org_id_int =o.org_id
where c.org_id_int in
<foreach item="item" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<update id="setCabinetSumInventory">
UPDATE base_cabinet AS c
......
......@@ -5,7 +5,7 @@ package com.junmp.junmpProcess.common;
* @create 2022-10-10 17:40
*/
public interface WorkFlowConstants {
String PROCESS_PREFIX = "Flowable";
String PROCESS_PREFIX = "Process_";
String START_EVENT_ID = "startEventNode";
String END_EVENT_ID = "endEventNode";
String EXPRESSION_CLASS = "exUtils.";
......
......@@ -121,11 +121,11 @@ public class BpmnController {
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("StopProcessInstanceById")
public ApiRes<Boolean> stopProcessInstanceById(@RequestBody HandleDataDTO handleDataDTO) {
return WorkProcessService.stopProcessInstanceById(handleDataDTO);
}
@ApiOperation("挂起流程实例")
@PostMapping("SuspendOrActivateDefinition")
public ApiRes<Boolean> SuspendOrActivateDefinition(@RequestBody SuspendOrActivateDefinitionReq req) {
......@@ -136,6 +136,11 @@ public class BpmnController {
public ApiRes<Boolean> start(@RequestBody StartProcessInstanceDTO startProcessInstanceDTO) {
return WorkProcessService.start(startProcessInstanceDTO);
}
@ApiOperation("通过流程定义查看详情")
@PostMapping("instanceInfo")
public ApiRes<HandleDataVO> instanceInfo(@RequestBody HandleDataDTO handleDataDTO) {
return WorkProcessService.instanceInfo(handleDataDTO);
}
@ApiOperation("查看我发起的流程")
@PostMapping("applyList")
public ApiRes<PageResult<HistoryProcessInstanceVO>> applyList(@RequestBody ApplyDTO ApplyDTO) {
......@@ -151,6 +156,11 @@ public class BpmnController {
public ResponseResult agree(@RequestBody HandleDataDTO handleDataDTO){
return WorkProcessService.agree(handleDataDTO);
}
@ApiOperation("查看我的已办")
@PostMapping("doneList")
public ApiRes<PageResult<TaskVO>> doneList(@RequestBody TaskDTO taskDTO){
return ApiRes.success(WorkProcessService.doneList(taskDTO));
}
@ApiOperation("撤销按钮")
@PostMapping("revoke")
public ResponseResult revoke(@RequestBody HandleDataDTO handleDataDTO){
......
......@@ -17,6 +17,7 @@ import com.junmp.v2.sys.api.bean.user.vo.QueryUserInfoVo;
import org.flowable.bpmn.model.Process;
import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.TaskService;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.ExecutionListener;
import com.junmp.junmpProcess.enums.AssigneeTypeEnums;
......@@ -38,12 +39,15 @@ import static com.junmp.junmpProcess.utils.BpmnModelUtils.getChildNode;
@Component
public class CounterSignListener implements ExecutionListener {
@Resource
private TaskService taskService;
@Resource
private RepositoryService repositoryService;
@Resource
private OrgUserMapper orgUserMapper;
@Override
public void notify(DelegateExecution execution) {
String currentActivityId = execution.getCurrentActivityId();
Process mainProcess = repositoryService.getBpmnModel(execution.getProcessDefinitionId()).getMainProcess();
UserTask userTask = (UserTask) mainProcess.getFlowElement(currentActivityId);
String flowJson = mainProcess.getAttributeValue("http://flowable.org/bpmn", "Junmp");
......@@ -65,6 +69,7 @@ public class CounterSignListener implements ExecutionListener {
String Type=group.getApproverType();
if (Type.equals("1"))//指定人员,不处理
{
List<String> assignedUser = group.getApproverIds();
for (String userInfo : assignedUser) {
assigneeList.add(userInfo);
......@@ -136,7 +141,7 @@ public class CounterSignListener implements ExecutionListener {
else if (Type.equals("5"))//上级审批
{
LoginUser StartUser= LoginContext.getContext().getLoginUser();
List<UserListDTO> userList= orgUserMapper.QueryUserParentOrg(StartUser.getUserId().toString());
List<UserListDTO> userList= orgUserMapper.QueryUserWithParentOrg(StartUser.getUserId().toString());
if (userList.size()<=0)//没有上级则本身已是上级
{
......@@ -147,14 +152,18 @@ public class CounterSignListener implements ExecutionListener {
{
for (UserListDTO userId :userList)
{
assigneeList.add(userId.getUserID());
assigneeList.add("1");
// assigneeList.add(userId.getUserID());
}
}
}
if (assigneeList.size()!=0)
{execution.setVariable(variable, assigneeList);}
{
execution.setVariable(variable, assigneeList);
}
} else {
}
......
......@@ -32,6 +32,7 @@ public class GlobalEndListener extends AbstractFlowableEngineEventListener {
//流程结束后工作在这里写
//得到流程定义id
String processDefinitionId = event.getProcessDefinitionId();
//得到流程实例id
String processInstanceId = event.getProcessInstanceId();
/**
......
......@@ -21,6 +21,7 @@ public class ProcessListener implements ExecutionListener {
@Override
public void notify(DelegateExecution execution) {
execution.setVariable(PROCESS_STATUS, BUSINESS_STATUS_4);
}
}
//package com.junmp.junmpProcess.listener;
//
//import org.flowable.engine.RepositoryService;
//import org.flowable.engine.RuntimeService;
//import org.flowable.engine.TaskService;
//import org.flowable.engine.delegate.TaskListener;
//import org.flowable.task.service.delegate.DelegateTask;
//import com.junmp.junmpProcess.utils.SpringContextHolder;
//import org.springframework.stereotype.Component;
//
//import javax.annotation.Resource;
//
///**
// * @author LoveMyOrange
// * @create 2022-10-15 14:51
// */
//@Component
//public class TaskCreatedListener implements TaskListener {
// @Resource
// private TaskService taskService;
// @Resource
// private RepositoryService repositoryService;
//
// @Override
// public void notify(DelegateTask delegateTask) {
// String taskDefinitionKey = delegateTask.getTaskDefinitionKey();
// if ("root".equalsIgnoreCase(taskDefinitionKey)) {
// taskService.complete(delegateTask.getId());
// } else {
// if ("100000".equals(delegateTask.getAssignee())) {
// Object autoRefuse = delegateTask.getVariable("autoRefuse");
// if (autoRefuse == null) {
// taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), "opinion", "审批人为空,自动通过");
// taskService.complete(delegateTask.getId());
// } else {
// taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), "opinion", "审批人为空,自动驳回");
// RuntimeService runtimeService = SpringContextHolder.getBean(RuntimeService.class);
// runtimeService.deleteProcessInstance(delegateTask.getProcessInstanceId(), "审批人为空,自动驳回");
// }
// }
// }
// }
//}
package com.junmp.junmpProcess.listener;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.delegate.DelegateTask;
import com.junmp.junmpProcess.utils.SpringContextHolder;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* @author LoveMyOrange
* @create 2022-10-15 14:51
*/
@Component
public class TaskCreatedListener implements TaskListener {
@Resource
private TaskService taskService;
@Resource
private RepositoryService repositoryService;
@Override
public void notify(DelegateTask delegateTask) {
String taskDefinitionKey = delegateTask.getTaskDefinitionKey();
if ("root".equalsIgnoreCase(taskDefinitionKey)) {
taskService.complete(delegateTask.getId());
} else {
if ("100000".equals(delegateTask.getAssignee())) {
Object autoRefuse = delegateTask.getVariable("autoRefuse");
if (autoRefuse == null) {
taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), "opinion", "审批人为空,自动通过");
taskService.complete(delegateTask.getId());
} else {
taskService.addComment(delegateTask.getId(), delegateTask.getProcessInstanceId(), "opinion", "审批人为空,自动驳回");
RuntimeService runtimeService = SpringContextHolder.getBean(RuntimeService.class);
runtimeService.deleteProcessInstance(delegateTask.getProcessInstanceId(), "审批人为空,自动驳回");
}
}
}
}
}
......@@ -23,5 +23,5 @@ public interface OrgUserMapper {
*/
public List<UserListDTO> QueryUserByRoleIdAndOrg(String roleId,String orgId);
public List<UserListDTO> QueryUserParentOrg(String userId);
public List<UserListDTO> QueryUserWithParentOrg(String userId);
}
......@@ -29,12 +29,12 @@ public interface WorkProcessService {
*/
Boolean createNewForm(FormReq processVO) ;
// /**
// * 挂起流程定义
// *
// * @return
// */
// Boolean stopProcessInstanceById(SuspendOrActivateDefinitionReq req) ;
/**
* 终止流程实例
*
* @return
*/
ApiRes<Boolean> stopProcessInstanceById(HandleDataDTO handleDataDTO) ;
/**
* 挂起流程定义
......@@ -101,6 +101,9 @@ public interface WorkProcessService {
*/
ApiRes<Boolean> start(StartProcessInstanceDTO startProcessInstanceDTO);
/**
* 查看我发起的流程
*
......@@ -120,7 +123,7 @@ public interface WorkProcessService {
*
* @return
*/
Result<Page<TaskVO>> doneList(@RequestBody TaskDTO taskDTO);
PageResult<TaskVO> doneList(@RequestBody TaskDTO taskDTO);
/**
* 同意
......@@ -205,7 +208,7 @@ public interface WorkProcessService {
*
* @return
*/
Result<HandleDataVO> instanceInfo(HandleDataDTO HandleDataDTO);
ApiRes<HandleDataVO> instanceInfo(HandleDataDTO HandleDataDTO);
// /**
// * 上传文件
// * @return
......
......@@ -11,6 +11,7 @@ import org.flowable.bpmn.model.*;
import org.flowable.bpmn.model.Process;
import org.flowable.engine.TaskService;
import org.flowable.engine.delegate.ExecutionListener;
import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.impl.persistence.entity.TaskEntity;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -62,7 +63,7 @@ public class BpmnConvert {
process.addFlowElement(endEvent);
// 三.递归绘制节点
drawNode("root",process, processNode,formNode, "_start", "_end", null);
drawNode("0",process, processNode,formNode, "_start", "_end", null);
// 四.自动布局
new BpmnAutoLayout(bpmnModel).execute();
// 五.转xml
......@@ -119,8 +120,9 @@ public class BpmnConvert {
* @return Inout
*/
private static Inout drawBzNode(Process process, JsonNode node,JsonNode formJson,String typeNode) {
// String id= "Node_"+UUID.randomUUID();
String id="Node_"+ node.get("id").asText();
// String id= "Node_"+UUID.randomUUID();
String id="root";
//创建发起人结点
UserTask task = new UserTask();
//设置结点ID
......@@ -129,11 +131,23 @@ public class BpmnConvert {
task.setName(node.get("name").asText());
//通过将 ${initiator} 作为指派人的值,可以将用户任务分配给流程的发起人。当流程实例启动时,${initiator} 会被替换为实际的发起人信息。
//需要注意的是,在使用表达式时,需要确保流程引擎的配置中启用了表达式语言(例如使用 Flowable 的默认配置,会启用表达式语言)。
task.setAssignee("${initiator}");
// task.setAssignee("${initiator}");
List<FormProperty> formProperties = formJsonToFormProperty(formJson);
task.setFormProperties(formProperties);
ArrayList<FlowableListener> taskListeners = new ArrayList<>();
FlowableListener taskListener = new FlowableListener();
// 事件类型,
taskListener.setEvent(TaskListener.EVENTNAME_CREATE);
// 监听器类型
taskListener.setImplementationType(IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
// 设置实现了,这里设置监听器的类型是delegateExpression,这样可以在实现类注入Spring bean.
taskListener.setImplementation("${taskCreatedListener}");
taskListeners.add(taskListener);
task.setTaskListeners(taskListeners);
//添加连线
process.addFlowElement(task);
return new Inout(id, id);
}
......@@ -175,11 +189,11 @@ public class BpmnConvert {
multiInstanceLoopCharacteristics.setInputDataItem(userTask.getId()+"assigneeList");
// 迭代集合
multiInstanceLoopCharacteristics.setElementVariable("assigneeName");
//
//
multiInstanceLoopCharacteristics.setSequential(false);
multiInstanceLoopCharacteristics.setCompletionCondition("${nrOfCompletedInstances/nrOfInstances > 0}");
userTask.setAssignee("${assigneeName}");
// 设置多实例属性
// 设置多实例属性
userTask.setLoopCharacteristics(multiInstanceLoopCharacteristics);
process.addFlowElement(userTask);
return new Inout(id, id);
......@@ -197,7 +211,12 @@ public class BpmnConvert {
listener.setEvent(ExecutionListener.EVENTNAME_START);//监听任务启动
listener.setImplementationType(IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
listener.setImplementation("${counterSignListener}");//启动角色分配监听事件
FlowableListener flowableListener = new FlowableListener();
flowableListener.setEvent(ExecutionListener.EVENTNAME_END);
flowableListener.setImplementationType(ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION);
flowableListener.setImplementation("${processListener}");
taskListeners.add(listener);
taskListeners.add(flowableListener);
return taskListeners;
}
......
......@@ -21,7 +21,7 @@
GROUP BY su.user_id,su.real_name
</select>
<select id="QueryUserParentOrg" resultMap="UserListDTO">
<select id="QueryUserWithParentOrg" resultMap="UserListDTO">
SELECT
CASE
WHEN userorg2.org_id = -1 THEN mainUser.user_id
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论