From c4eddf6f793986516c919add6493ad2be2c63b82 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期二, 08 四月 2025 13:57:47 +0800 Subject: [PATCH] 修改flow基础代码,添加设备岗位查询用户 --- lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/impl/FlowMyBusinessServiceImpl.java | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 105 insertions(+), 0 deletions(-) diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/impl/FlowMyBusinessServiceImpl.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/impl/FlowMyBusinessServiceImpl.java index 54b3646..28f101e 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/impl/FlowMyBusinessServiceImpl.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/impl/FlowMyBusinessServiceImpl.java @@ -1,11 +1,24 @@ package org.jeecg.modules.flowable.apithird.business.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.flowable.engine.HistoryService; +import org.flowable.engine.history.HistoricActivityInstance; +import org.jeecg.modules.flowable.apithird.business.dto.FlowMyBusinessDto; import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; import org.jeecg.modules.flowable.apithird.business.mapper.FlowMyBusinessMapper; import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; +import org.jeecg.modules.flowable.domain.dto.FlowTaskDto; +import org.jeecg.modules.flowable.util.TimeUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; /** * @Description: 娴佺▼涓氬姟鎵╁睍琛� @@ -15,7 +28,37 @@ */ @Service public class FlowMyBusinessServiceImpl extends ServiceImpl<FlowMyBusinessMapper, FlowMyBusiness> implements IFlowMyBusinessService { + @Autowired + private FlowMyBusinessMapper flowMyBusinessMapper; + @Autowired + private HistoryService historyService; + + public HistoricActivityInstance getPreviousNode(String taskId) { + // 鑾峰彇褰撳墠浠诲姟鐨勬墽琛屽疄渚� ID + String executionId = historyService.createHistoricTaskInstanceQuery() + .taskId(taskId) + .singleResult() + .getExecutionId(); + + // 鏌ヨ鍘嗗彶娲诲姩瀹炰緥 + List<HistoricActivityInstance> historicActivityInstances = historyService.createHistoricActivityInstanceQuery() + .executionId(executionId) + .activityType("userTask") + .finished() + .orderByHistoricActivityInstanceEndTime() + .desc() + .list(); + + // 鍙栫涓�涓粨鏋滐紝鍗充笂涓�绾ц妭鐐� + if (!historicActivityInstances.isEmpty()) { + return historicActivityInstances.get(0); + } + + return null; + } + + @Transactional(isolation = Isolation.READ_COMMITTED) // 闄嶄綆闅旂绾у埆 public FlowMyBusiness getByDataId(String dataId) { LambdaQueryWrapper<FlowMyBusiness> flowMyBusinessLambdaQueryWrapper = new LambdaQueryWrapper<>(); flowMyBusinessLambdaQueryWrapper.eq(FlowMyBusiness::getDataId,dataId) @@ -24,4 +67,66 @@ FlowMyBusiness business = this.getOne(flowMyBusinessLambdaQueryWrapper); return business; } + + + public FlowMyBusiness getByProcessInstanceId(String processInstanceId) { + LambdaQueryWrapper<FlowMyBusiness> flowMyBusinessLambdaQueryWrapper = new LambdaQueryWrapper<>(); + flowMyBusinessLambdaQueryWrapper.eq(FlowMyBusiness::getProcessInstanceId,processInstanceId) + ; + //濡傛灉淇濆瓨鏁版嵁鍓嶆湭璋冪敤蹇呰皟鐨凢lowCommonService.initActBusiness鏂规硶锛屽氨浼氭湁闂 + FlowMyBusiness business = this.getOne(flowMyBusinessLambdaQueryWrapper); + return business; + } + + /** + * 娴佺▼-鎴戠殑宸插姙 + * @param flowMyBusinessDto + * @param page + * @return + */ + public IPage<FlowTaskDto> getPageListMyBusiness(Page page, FlowMyBusinessDto flowMyBusinessDto){ + return flowMyBusinessMapper.PageListMyBusiness(page,flowMyBusinessDto); + } + + /** + * 娴佺▼鎬诲彴璐� + * @param flowMyBusinessDto + * @return + */ + public IPage<FlowMyBusinessDto> getPageList(Page page, FlowMyBusinessDto flowMyBusinessDto){ + IPage<FlowMyBusinessDto> flowMyBusinessDtoIPage =flowMyBusinessMapper.PageList(page,flowMyBusinessDto); + flowMyBusinessDtoIPage.getRecords().forEach(item -> { + if (!("").equals(item.getTaskId())&&item.getTaskId()!=null){ + HistoricActivityInstance historicActivityInstance = getPreviousNode(item.getTaskId()); + if (historicActivityInstance != null){ + item.setPreNode(historicActivityInstance.getActivityName()); + } + } + if (item.getTodoUsers() == null){ + item.setTodoUsers(""); + }else { + //鍘婚櫎[] + item.setTodoUsers(item.getTodoUsers().replaceAll("\\[", "").replaceAll("\\]", "")); + item.setTodoUsers(item.getTodoUsers().replaceAll("\"", "")); + } + + if (item.getDoneUsers() == null){ + item.setDoneUsers(""); + }else { + //鍘婚櫎[] + item.setDoneUsers(item.getDoneUsers().replaceAll("\\[", "").replaceAll("\\]", "")); + item.setDoneUsers(item.getDoneUsers().replaceAll("\"", "")); + } + //璁$畻澶勭悊鏃堕暱 + Date kssj=item.getStartTime(); + Date jssj; + if (item.getEndTime() != null){ + jssj=item.getEndTime(); + }else { + jssj=new Date(); + } + item.setDuration(TimeUtil.howLong(kssj, jssj,2)); + }); + return flowMyBusinessDtoIPage; + } } -- Gitblit v1.9.3