skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/pom.xml
@@ -12,6 +12,14 @@ <artifactId>skjcmanager-flow-api</artifactId> <name>${project.artifactId}</name> <version>${bladex.project.version}</version> <dependencies> <dependency> <groupId>cn.gistack</groupId> <artifactId>skjcmanager-sm-api</artifactId> <version>3.0.1.RELEASE</version> <scope>compile</scope> </dependency> </dependencies> <packaging>jar</packaging> skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClient.java
@@ -16,6 +16,8 @@ */ package cn.gistack.flow.core.feign; import cn.gistack.flow.core.vo.BladeFlowVO; import cn.gistack.sm.patrol.vo.BladeFlowPage; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.launch.constant.AppConstant; import org.springblade.core.tool.api.R; @@ -47,6 +49,7 @@ String TASK_VARIABLE = API_PREFIX + "/task-variable"; String TASK_VARIABLES = API_PREFIX + "/task-variables"; String TODO_LIST = "/todo-list"; String DONE_LIST = "/done-list"; String GET_BLADEFLOW = "/getBladeFlow"; /** @@ -117,5 +120,8 @@ * @return R */ @PostMapping(TODO_LIST) R<List<BladeFlow>> getTodoBladeFlowList(@RequestParam("size") Integer size,@RequestParam("current") Integer current,@RequestParam("currentUserId") String currentUserId,@RequestBody BladeFlow bladeFlow); R<BladeFlowPage> getTodoBladeFlowList(@RequestParam("size") Integer size,@RequestParam("current") Integer current,@RequestParam("currentUserId") String currentUserId,@RequestBody BladeFlow bladeFlow); @PostMapping(DONE_LIST) R<BladeFlowPage> getDoneBladeFlowList(@RequestParam("size") Integer size, @RequestParam("current") Integer current, @RequestParam("currentUserId") String currentUserId, @RequestBody BladeFlowVO bladeFlow); } skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClientFallback.java
@@ -16,6 +16,8 @@ */ package cn.gistack.flow.core.feign; import cn.gistack.flow.core.vo.BladeFlowVO; import cn.gistack.sm.patrol.vo.BladeFlowPage; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.tool.api.R; import cn.gistack.flow.core.entity.BladeFlow; @@ -63,7 +65,12 @@ } @Override public R<List<BladeFlow>> getTodoBladeFlowList(Integer size, Integer current, String currentUserId, BladeFlow bladeFlow) { public R<BladeFlowPage> getTodoBladeFlowList(Integer size, Integer current, String currentUserId, BladeFlow bladeFlow) { return R.fail("远程调用失败"); } @Override public R<BladeFlowPage> getDoneBladeFlowList(Integer size, Integer current, String currentUserId, BladeFlowVO bladeFlow) { return R.fail("远程调用失败"); } skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/vo/BladeFlowVO.java
New file @@ -0,0 +1,10 @@ package cn.gistack.flow.core.vo; import cn.gistack.flow.core.entity.BladeFlow; import lombok.Data; @Data public class BladeFlowVO<T> extends BladeFlow { private T detail; } skjcmanager/skjcmanager-ops/skjcmanager-flow/pom.xml
@@ -68,6 +68,12 @@ <artifactId>blade-core-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>cn.gistack</groupId> <artifactId>skjcmanager-sm-api</artifactId> <version>3.0.1.RELEASE</version> <scope>compile</scope> </dependency> </dependencies> <build> skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/feign/FlowClient.java
@@ -20,6 +20,8 @@ import cn.gistack.flow.core.entity.BladeFlow; import cn.gistack.flow.core.feign.IFlowClient; import cn.gistack.flow.core.utils.TaskUtil; import cn.gistack.flow.core.vo.BladeFlowVO; import cn.gistack.sm.patrol.vo.BladeFlowPage; import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.AllArgsConstructor; import org.flowable.engine.IdentityService; @@ -115,12 +117,35 @@ @Override @PostMapping(TODO_LIST) public R<List<BladeFlow>> getTodoBladeFlowList(Integer size, Integer current, String currentUserId, BladeFlow bladeFlow) { public R<BladeFlowPage> getTodoBladeFlowList(Integer size, Integer current, String currentUserId, BladeFlow bladeFlow) { Query query = new Query(); query.setCurrent(current); query.setSize(size); IPage<BladeFlow> bladeFlowIPage = flowBusinessService.selectTodoPage(Condition.getPage(query), bladeFlow, currentUserId); return R.data(bladeFlowIPage.getRecords()); BladeFlowPage<BladeFlow> bladeFlowPage = new BladeFlowPage(); bladeFlowPage.setCurrent(bladeFlowIPage.getCurrent()); bladeFlowPage.setData(bladeFlowIPage.getRecords()); bladeFlowPage.setSize(bladeFlowIPage.getSize()); bladeFlowPage.setTotal(bladeFlowIPage.getTotal()); return R.data(bladeFlowPage); } @Override @PostMapping(DONE_LIST) public R<BladeFlowPage> getDoneBladeFlowList(Integer size, Integer current, String currentUserId, BladeFlowVO bladeFlow) { Query query = new Query(); query.setCurrent(current); query.setSize(size); IPage<BladeFlowVO> bladeFlowIPage = flowBusinessService.selectDonePage(Condition.getPage(query), bladeFlow, currentUserId); BladeFlowPage<BladeFlowVO> bladeFlowPage = new BladeFlowPage(); bladeFlowPage.setCurrent(bladeFlowIPage.getCurrent()); bladeFlowPage.setData(bladeFlowIPage.getRecords()); bladeFlowPage.setSize(bladeFlowIPage.getSize()); bladeFlowPage.setTotal(bladeFlowIPage.getTotal()); return R.data(bladeFlowPage); } skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/service/FlowBusinessService.java
@@ -17,6 +17,7 @@ package cn.gistack.flow.business.service; import cn.gistack.flow.core.entity.BladeFlow; import cn.gistack.flow.core.vo.BladeFlowVO; import com.baomidou.mybatisplus.core.metadata.IPage; /** @@ -72,6 +73,15 @@ IPage<BladeFlow> selectDonePage(IPage<BladeFlow> page, BladeFlow bladeFlow); /** * 流程办结列表 * * @param page 分页工具 * @param bladeFlow 流程类 * @return */ IPage<BladeFlowVO> selectDonePage(IPage<BladeFlowVO> page, BladeFlow bladeFlow, String currentUserId); /** * 完成任务 * * @param leave 请假信息 skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/service/impl/FlowBusinessServiceImpl.java
@@ -20,6 +20,7 @@ import cn.gistack.flow.core.constant.ProcessConstant; import cn.gistack.flow.core.entity.BladeFlow; import cn.gistack.flow.core.utils.TaskUtil; import cn.gistack.flow.core.vo.BladeFlowVO; import cn.gistack.flow.engine.constant.FlowEngineConstant; import cn.gistack.flow.engine.entity.FlowProcess; import cn.gistack.flow.engine.utils.FlowCache; @@ -275,6 +276,72 @@ } @Override public IPage<BladeFlowVO> selectDonePage(IPage<BladeFlowVO> page, BladeFlow bladeFlow,String currentUserId) { String taskUser = StringUtil.format("{}{}", TASK_USR_PREFIX, currentUserId); List<BladeFlowVO> flowList = new LinkedList<>(); HistoricTaskInstanceQuery doneQuery = historyService.createHistoricTaskInstanceQuery().taskAssignee(taskUser).finished() .includeProcessVariables().orderByHistoricTaskInstanceEndTime().desc(); if (bladeFlow.getCategory() != null) { doneQuery.processCategoryIn(Func.toStrList(bladeFlow.getCategory())); } if (bladeFlow.getProcessDefinitionName() != null) { doneQuery.processDefinitionName(bladeFlow.getProcessDefinitionName()); } if (bladeFlow.getBeginDate() != null) { doneQuery.taskCompletedAfter(bladeFlow.getBeginDate()); } if (bladeFlow.getEndDate() != null) { doneQuery.taskCompletedBefore(bladeFlow.getEndDate()); } // 查询列表 List<HistoricTaskInstance> doneList = doneQuery.listPage(Func.toInt((page.getCurrent() - 1) * page.getSize()), Func.toInt(page.getSize())); doneList.forEach(historicTaskInstance -> { BladeFlowVO flow = new BladeFlowVO(); flow.setTaskId(historicTaskInstance.getId()); flow.setTaskDefinitionKey(historicTaskInstance.getTaskDefinitionKey()); flow.setTaskName(historicTaskInstance.getName()); flow.setAssignee(historicTaskInstance.getAssignee()); flow.setCreateTime(historicTaskInstance.getCreateTime()); flow.setExecutionId(historicTaskInstance.getExecutionId()); flow.setHistoryTaskEndTime(historicTaskInstance.getEndTime()); flow.setVariables(historicTaskInstance.getProcessVariables()); FlowProcess processDefinition = FlowCache.getProcessDefinition(historicTaskInstance.getProcessDefinitionId()); flow.setProcessDefinitionId(processDefinition.getId()); flow.setProcessDefinitionName(processDefinition.getName()); flow.setProcessDefinitionKey(processDefinition.getKey()); flow.setProcessDefinitionVersion(processDefinition.getVersion()); flow.setCategory(processDefinition.getCategory()); flow.setCategoryName(FlowCache.getCategoryName(processDefinition.getCategory())); flow.setProcessInstanceId(historicTaskInstance.getProcessInstanceId()); flow.setHistoryProcessInstanceId(historicTaskInstance.getProcessInstanceId()); HistoricProcessInstance historicProcessInstance = getHistoricProcessInstance((historicTaskInstance.getProcessInstanceId())); if (Func.isNotEmpty(historicProcessInstance)) { String[] businessKey = Func.toStrArray(StringPool.COLON, historicProcessInstance.getBusinessKey()); flow.setBusinessTable(businessKey[0]); flow.setBusinessId(businessKey[1]); if (historicProcessInstance.getEndActivityId() != null) { flow.setProcessIsFinished(FlowEngineConstant.STATUS_FINISHED); } else { flow.setProcessIsFinished(FlowEngineConstant.STATUS_UNFINISHED); } } flow.setStatus(FlowEngineConstant.STATUS_FINISH); flowList.add(flow); }); // 计算总数 long count = doneQuery.count(); // 设置总数 page.setTotal(count); page.setRecords(flowList); return page; } @Override public boolean completeTask(BladeFlow flow) { String taskId = flow.getTaskId(); String processInstanceId = flow.getProcessInstanceId(); skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/patrol/vo/BladeFlowPage.java
New file @@ -0,0 +1,28 @@ package cn.gistack.sm.patrol.vo; import lombok.Data; import java.util.List; @Data public class BladeFlowPage<T> { /** * 数据 */ private List<T> data; /** * 总数 */ private Long total; /** * 页数 */ private Long size; /** * 当前页 */ private Long current; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolTaskController.java
@@ -2,12 +2,16 @@ import cn.gistack.flow.core.entity.BladeFlow; import cn.gistack.flow.core.feign.IFlowClient; import cn.gistack.flow.core.vo.BladeFlowVO; import cn.gistack.sm.patrol.entity.PatrolReport; import cn.gistack.sm.patrol.entity.PatrolTask; import cn.gistack.sm.patrol.entity.PatrolTask; import cn.gistack.sm.patrol.service.IPatrolTaskService; import cn.gistack.sm.patrol.vo.BladeFlowPage; import cn.gistack.sm.patrol.vo.BladeFlowTask; import cn.gistack.sm.patrol.vo.PatrolTaskVO; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -210,13 +214,14 @@ @ApiOperation(value = "查询待办") public R patrolTodoList(PatrolTaskVO patrolTask, Query query) { BladeFlow bladeFlow2 = new BladeFlow(); R<List<BladeFlow>> res = flowClient.getTodoBladeFlowList(query.getSize(),query.getCurrent(),patrolTask.getCurrentUserId(), bladeFlow2); R<BladeFlowPage> res = flowClient.getTodoBladeFlowList(query.getSize(),query.getCurrent(),patrolTask.getCurrentUserId(), bladeFlow2); IPage<PatrolTask> patrolTaskIPage = new Page<>(); List<PatrolTask> patrolTaskList = new ArrayList<>(); if (res.isSuccess()){ List<BladeFlow> data = res.getData(); data.forEach(bladeFlow -> { List<Object> data = res.getData().getData(); data.forEach(obj -> { BladeFlow bladeFlow = JSON.parseObject(JSON.toJSONString(obj),BladeFlow.class); PatrolTask byId = patrolTaskService.customizeGetById(bladeFlow.getBusinessId()); if (byId != null){ byId.setFlow(bladeFlow); @@ -227,11 +232,47 @@ //设置数据集 patrolTaskIPage.setRecords(patrolTaskList); //设置当前页 patrolTaskIPage.setCurrent(query.getCurrent()); //设置大小 patrolTaskIPage.setSize(query.getSize()); patrolTaskIPage.setCurrent(res.getData().getCurrent()); //设置页数 patrolTaskIPage.setSize(res.getData().getSize()); //设置总数 patrolTaskIPage.setTotal(res.getData().getTotal()); return R.data(patrolTaskIPage); } /** * 查询已办 * * @param patrolTask 任务 */ @PostMapping("patrol-done-list") @ApiOperation(value = "查询待办") public R patrolDoneList(PatrolTaskVO patrolTask, Query query){ BladeFlowVO bladeFlow2 = new BladeFlowVO(); R<BladeFlowPage> res = flowClient.getDoneBladeFlowList(query.getSize(),query.getCurrent(),patrolTask.getCurrentUserId(), bladeFlow2); IPage<BladeFlowVO> bladeFlowVOIPage = new Page<>(); List<BladeFlowVO> bladeFlowVOList = new ArrayList<>(); if (res.isSuccess()){ List<Object> data = res.getData().getData(); data.forEach(obj -> { BladeFlowVO<PatrolTask> bladeFlow = JSON.parseObject(JSON.toJSONString(obj),BladeFlowVO.class); PatrolTask byId = patrolTaskService.customizeGetById(bladeFlow.getBusinessId()); bladeFlow.setDetail(byId); bladeFlowVOList.add(bladeFlow); }); } //设置数据集 bladeFlowVOIPage.setRecords(bladeFlowVOList); //设置当前页 bladeFlowVOIPage.setCurrent(res.getData().getCurrent()); //设置页数 bladeFlowVOIPage.setSize(res.getData().getSize()); //设置总数 bladeFlowVOIPage.setTotal(res.getData().getTotal()); return R.data(bladeFlowVOIPage); } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/entity/PatrolRecord.java
@@ -48,14 +48,14 @@ * 巡查现场图片 */ @ApiModelProperty("巡查现场图片") @TableField(value = "images",typeHandler = FastjsonTypeHandler.class,updateStrategy = FieldStrategy.IGNORED) @TableField(value = "images",typeHandler = FastjsonTypeHandler.class) private Object[] images; /** * 巡查现场视频 */ @ApiModelProperty("巡查现场视频") @TableField(value = "videos",typeHandler = FastjsonTypeHandler.class,updateStrategy = FieldStrategy.IGNORED) @TableField(value = "videos",typeHandler = FastjsonTypeHandler.class) private Object[] videos; /** skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/entity/PatrolTask.java
@@ -106,6 +106,12 @@ private String routeCoordinates; /** * 巡检路线 */ @ApiModelProperty(value = "巡检路线") private String patrolRoute; /** * 实际巡查开始时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolRecordMapper.xml
@@ -104,7 +104,10 @@ SELECT B.ID,B.GROUP_ID,B.ITEMS_NAME,B.DESCRIPTION FROM SM_PATROL_GROUP A INNER JOIN SM_PATROL_GROUP_ITEM B ON A.ID = B.GROUP_ID WHERE B.GROUP_ID = #{groupId} WHERE 1=1 <if test="groupId != null and groupId !=''"> AND B.GROUP_ID = #{groupId} </if> ORDER BY B.GROUP_ID )C ON C.ID = r.ITEM_ID WHERE TASK_ID = #{taskId} skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.xml
@@ -144,7 +144,6 @@ SELECT COUNT(*) PROBLEM_COUNT,R.TASK_ID FROM SM_PATROL_REPORT R WHERE R.TASK_ID = #{id} AND R.STATUS = 2 GROUP BY R.TASK_ID )A ON A.TASK_ID = T.ID WHERE T.ID = #{id} AND T.STATE = 3 AND T.IS_DELETED = 0 </select> </mapper> skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolReportServiceImpl.java
@@ -30,8 +30,6 @@ public boolean updateById(PatrolReport patrolReport) { PatrolRecord patrolRecord = new PatrolRecord(); patrolRecord.setId(Long.parseLong(patrolReport.getRecordId())); //修改记录表中的异常状态为正常 patrolRecord.setStatus(1); //修改记录表中的是否解决为已解决 patrolRecord.setSolution("1");