skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClient.java
@@ -54,6 +54,13 @@ String HISTORY_FLOW_LIST = "/history-flow-list"; String GET_MY_TODO_LIST = API_PREFIX + "/getMyToDoList"; String GET_MY_DONE_LIST = API_PREFIX + "/getMyDoneList"; String GET_MY_DONE_PAGE= API_PREFIX + "/getMyDonePage"; /** * 开启流程 * @@ -131,4 +138,13 @@ @GetMapping(HISTORY_FLOW_LIST) R<List<BladeFlow>> historyFlowList(@RequestParam("processInstanceId") String processInstanceId,@RequestParam("startActivityId") String startActivityId,@RequestParam("endActivityId") String endActivityId); @PostMapping(GET_MY_TODO_LIST) List<BladeFlow> getMyToDoList(@RequestBody BladeFlow bladeFlow,@RequestParam("currentUserId") String currentUserId); @PostMapping(GET_MY_DONE_LIST) List<BladeFlow> getMyDoneList(@RequestBody BladeFlow bladeFlow,@RequestParam("currentUserId") String currentUserId); @PostMapping(GET_MY_DONE_PAGE) List<BladeFlow> getMyDonePage(@RequestBody BladeFlow bladeFlow, @RequestParam("currentUserId")String currentUserId, @RequestParam("current")Integer current,@RequestParam("size") Integer size); } skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClientFallback.java
@@ -79,5 +79,20 @@ return R.fail("远程调用失败"); } @Override public List<BladeFlow> getMyToDoList(BladeFlow bladeFlow,String currentUserId) { return null; } @Override public List<BladeFlow> getMyDoneList(BladeFlow bladeFlow, String currentUserId) { return null; } @Override public List<BladeFlow> getMyDonePage(BladeFlow bladeFlow, String currentUserId, Integer current, Integer size) { return null; } } skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/feign/FlowClient.java
@@ -157,5 +157,26 @@ return R.data(bladeFlows); } @Override @PostMapping(GET_MY_TODO_LIST) public List<BladeFlow> getMyToDoList(BladeFlow bladeFlow,String currentUserId) { List<BladeFlow> myToDoList = flowBusinessService.getMyToDoList(bladeFlow,currentUserId); return myToDoList; } @Override @PostMapping(GET_MY_DONE_LIST) public List<BladeFlow> getMyDoneList(BladeFlow bladeFlow, String currentUserId) { List<BladeFlow> myToDoList = flowBusinessService.getMyDoneList(bladeFlow,currentUserId); return myToDoList; } @Override @PostMapping(GET_MY_DONE_PAGE) public List<BladeFlow> getMyDonePage(BladeFlow bladeFlow, String currentUserId, Integer current, Integer size) { List<BladeFlow> myToDoList = flowBusinessService.getMyDonePage(bladeFlow,currentUserId,current,size); return myToDoList; } } skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/service/FlowBusinessService.java
@@ -20,6 +20,8 @@ import cn.gistack.flow.core.vo.BladeFlowVO; import com.baomidou.mybatisplus.core.metadata.IPage; import java.util.List; /** * 流程业务类 * @@ -44,6 +46,8 @@ * @return */ IPage<BladeFlow> selectTodoPage(IPage<BladeFlow> page, BladeFlow bladeFlow); List<BladeFlow> getMyToDoList(BladeFlow bladeFlow,String currentUserId); /** * 流程待办列表 @@ -72,6 +76,10 @@ */ IPage<BladeFlow> selectDonePage(IPage<BladeFlow> page, BladeFlow bladeFlow); List<BladeFlow> getMyDoneList(BladeFlow bladeFlow, String currentUserId); /** * 流程办结列表 * @@ -90,4 +98,7 @@ boolean completeTask(BladeFlow leave); BladeFlow getBladeFlowByBusinessId(String businessId,String currentUserId); List<BladeFlow> getMyDonePage(BladeFlow bladeFlow, String currentUserId, Integer current, Integer size); } skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/service/impl/FlowBusinessServiceImpl.java
@@ -115,6 +115,21 @@ } @Override public List<BladeFlow> getMyToDoList(BladeFlow bladeFlow,String currentUserId) { String taskUser = StringUtil.format("{}{}", TASK_USR_PREFIX, currentUserId); List<BladeFlow> flowList = new LinkedList<>(); // 已签收的任务 TaskQuery todoQuery = taskService.createTaskQuery().taskAssignee(taskUser).active() .includeProcessVariables().orderByTaskCreateTime().desc(); // 构建列表数据 buildFlowTaskList(bladeFlow, flowList, todoQuery, FlowEngineConstant.STATUS_TODO); return flowList; } @Override public IPage<BladeFlow> selectTodoPage(IPage<BladeFlow> page, BladeFlow bladeFlow,String currentUserId) { String taskUser = StringUtil.format("{}{}", TASK_USR_PREFIX, currentUserId); List<BladeFlow> flowList = new LinkedList<>(); @@ -275,6 +290,137 @@ return page; } @Override public List<BladeFlow> getMyDoneList(BladeFlow bladeFlow, String currentUserId) { String taskUser = StringUtil.format("{}{}", TASK_USR_PREFIX, currentUserId); List<BladeFlow> 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.list(); doneList.forEach(historicTaskInstance -> { BladeFlow flow = new BladeFlow(); 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); }); return flowList; } @Override public List<BladeFlow> getMyDonePage(BladeFlow bladeFlow, String currentUserId, Integer current, Integer size) { String taskUser = StringUtil.format("{}{}", TASK_USR_PREFIX, currentUserId); List<BladeFlow> 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((current - 1) * size), Func.toInt(size)); doneList.forEach(historicTaskInstance -> { BladeFlow flow = new BladeFlow(); 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); }); return flowList; } @Override public IPage<BladeFlowVO> selectDonePage(IPage<BladeFlowVO> page, BladeFlow bladeFlow,String currentUserId) { String taskUser = StringUtil.format("{}{}", TASK_USR_PREFIX, currentUserId); @@ -382,6 +528,7 @@ return flow; } /** * 构建流程 * skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/engine/service/impl/FlowEngineServiceImpl.java
@@ -105,7 +105,7 @@ } // 定制流程 else if (!AuthUtil.isAdministrator()) { processDefinitionQuery.processDefinitionTenantId(AuthUtil.getTenantId()); processDefinitionQuery.processDefinitionTenantId("000000"); } if (StringUtils.isNotEmpty(category)) { processDefinitionQuery.processDefinitionCategory(category); skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskClient.java
@@ -13,7 +13,7 @@ */ @FeignClient( value = "blade-sm", fallback = IAttResManagePersonClientFallback.class fallback = PatrolTaskClientFallback.class ) public interface PatrolTaskClient { @@ -23,6 +23,9 @@ String CREATE_TASK_JOB_BY_CONDITION_HANDLER = API_PREFIX+"/createTaskJobByConditionHandler"; String CREATE_TASK = API_PREFIX+"/createTask"; String CREATE_NEW_TASK_JOB_HANDLER = API_PREFIX + "/createNewTaskJobHandler"; /** * 给巡查责任人定时创建任务执行器 @@ -38,6 +41,23 @@ @RequestParam("title") String title, @RequestParam("content") String content, @RequestParam("type") int type); /** * 给巡查责任人定时创建任务执行器 * @param taskType * @param title * @param content * @return */ @GetMapping(CREATE_NEW_TASK_JOB_HANDLER) List<Integer> createNewTaskJobHandler( @RequestParam("taskType") String taskType, @RequestParam("title") String title, @RequestParam("content") String content, @RequestParam("type") int type); /** * 给巡查责任人定时创建任务执行器 @@ -59,4 +79,6 @@ @RequestParam("title") String title, @RequestParam("content") String content, @RequestParam("resCd") String resCd); } skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskClientFallback.java
@@ -18,6 +18,11 @@ } @Override public List<Integer> createNewTaskJobHandler(String taskType, String title, String content, int type) { return null; } @Override public List<Integer> createTaskJobByConditionHandler(String processDefinitionId, String taskType, String title, String content) { return null; } skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/rabbitmq/MyRabbitReceiver.java
@@ -18,12 +18,12 @@ @AllArgsConstructor public class MyRabbitReceiver { private final IAlarmGetService alarmGetService; @RabbitListener(queues = "alarm") public void processMessage(Message message) { System.out.println("收到消息"+new String(message.getBody())); AlarmGet alarmGet = JSONObject.parseObject(new String(message.getBody()), AlarmGet.class); alarmGetService.save(alarmGet); } // // @RabbitListener(queues = "alarm") // public void processMessage(Message message) { // System.out.println("收到消息"+new String(message.getBody())); // AlarmGet alarmGet = JSONObject.parseObject(new String(message.getBody()), AlarmGet.class); // alarmGetService.save(alarmGet); // } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolRecordController.java
@@ -1,16 +1,15 @@ package cn.gistack.sm.patrol.controller; import cn.gistack.sm.patrol.entity.PatrolGroupItem; import cn.gistack.sm.patrol.entity.PatrolRecord; import cn.gistack.sm.patrol.entity.PatrolReport; import cn.gistack.sm.patrol.entity.PatrolType; 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.*; import cn.gistack.sm.patrol.service.IPatrolGroupItemService; import cn.gistack.sm.patrol.service.IPatrolRecordService; import cn.gistack.sm.patrol.vo.PatrolGroupItemVO; import cn.gistack.sm.patrol.vo.PatrolRecordVO; import cn.gistack.sm.patrol.vo.RecordBatchVO; import cn.gistack.sm.patrol.vo.RecordVO; import cn.gistack.sm.patrol.vo.*; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; @@ -21,6 +20,7 @@ import org.springblade.core.tool.api.R; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -34,6 +34,7 @@ @AllArgsConstructor public class PatrolRecordController extends BladeController { private IPatrolRecordService patrolRecordService; private IFlowClient flowClient; /** * 分页列表查询 @@ -112,6 +113,7 @@ /** * 通过taskId,itemsIds查询(用来判断是否完成任务) * * @return */ @ApiOperation(value="巡查记录-通过taskId,itemsIds查询", notes="巡查记录-通过taskId,itemsIds查询") @@ -123,6 +125,7 @@ /** * 通过taskId,itemsIds查询(用来查询巡查记录) * * @return */ @ApiOperation(value="巡查记录-通过itemId查询", notes="巡查记录-通过itemId查询") @@ -181,6 +184,7 @@ /** * 获取处理情况 * * @param patrolRecord * @return */ @@ -191,5 +195,88 @@ return R.data(res); } /** * 获取待办列表 * * @return */ @GetMapping("getToDoList") public R getToDoList(String currentUserId) { BladeFlow bladeFlow = new BladeFlow(); //获取我的待办列表 List<BladeFlow> toDoList = flowClient.getMyToDoList(bladeFlow,currentUserId); List<PatrolRecordVO> result = new ArrayList<>(); toDoList.forEach(flow -> { PatrolRecordVO byId = patrolRecordService.customizeGetById(flow.getBusinessId()); if (byId != null) { byId.setFlow(flow); result.add(byId); } }); return R.data(result); } /** * 获取已办列表 * * @return */ @GetMapping("getDoneList") public R getDoneList(String currentUserId) { BladeFlow bladeFlow = new BladeFlow(); //获取我的已办列表 List<BladeFlow> doneList = flowClient.getMyDoneList(bladeFlow,currentUserId); List<PatrolRecordVO> result = new ArrayList<>(); doneList.forEach(flow -> { PatrolRecordVO byId = patrolRecordService.customizeGetById(flow.getBusinessId()); if (byId != null) { byId.setFlow(flow); result.add(byId); } }); return R.data(result); } /** * 获取已办分页 * * @return */ @GetMapping("getDonePage") public R getDonePage(String currentUserId,Query query) { BladeFlow bladeFlow = new BladeFlow(); Integer current = query.getCurrent(); Integer size = query.getSize(); //获取我的已办列表 List<BladeFlow> doneList = flowClient.getMyDonePage(bladeFlow,currentUserId,current,size); List<PatrolRecordVO> result = new ArrayList<>(); doneList.forEach(flow -> { PatrolRecordVO byId = patrolRecordService.customizeGetById(flow.getBusinessId()); if (byId != null) { byId.setFlow(flow); result.add(byId); } }); IPage<PatrolRecordVO> page = Condition.getPage(query); page.setRecords(result); page.setSize(size); page.setCurrent(current); return R.data(page); } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolTaskController.java
@@ -1,34 +1,25 @@ package cn.gistack.sm.patrol.controller; 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.params.PersonHandleParams; import cn.gistack.sm.patrol.dto.PatrolTaskDTO; import cn.gistack.sm.patrol.entity.PatrolTask; import cn.gistack.sm.patrol.service.IPatrolTaskService; import cn.gistack.sm.patrol.vo.*; 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; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.annotations.Param; import org.redisson.executor.TasksService; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springframework.web.bind.annotation.*; import javax.sound.midi.Soundbank; import java.net.http.HttpRequest; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -227,34 +218,35 @@ @PostMapping("patrol-todo-list") @ApiOperation(value = "查询待办") public R patrolTodoList(PatrolTaskVO patrolTask, Query query) { BladeFlow bladeFlow2 = new BladeFlow(); //设置流程类型 bladeFlow2.setCategory("flow_3"); 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<Object> data = res.getData().getData(); data.forEach(obj -> { BladeFlow bladeFlow = JSON.parseObject(JSON.toJSONString(obj), BladeFlow.class); PatrolTaskVO byId = patrolTaskService.customizeGetById(bladeFlow.getBusinessId()); if (byId != null) { byId.setFlow(bladeFlow); patrolTaskList.add(byId); } }); } //设置数据集 patrolTaskIPage.setRecords(patrolTaskList); //设置当前页 patrolTaskIPage.setCurrent(res.getData().getCurrent()); //设置页数 patrolTaskIPage.setSize(res.getData().getSize()); //设置总数 patrolTaskIPage.setTotal(res.getData().getTotal()); return R.data(patrolTaskIPage); // BladeFlow bladeFlow2 = new BladeFlow(); // //设置流程类型 // bladeFlow2.setCategory("flow_3"); // 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<Object> data = res.getData().getData(); // data.forEach(obj -> { // BladeFlow bladeFlow = JSON.parseObject(JSON.toJSONString(obj), BladeFlow.class); // PatrolTaskVO byId = patrolTaskService.customizeGetById(bladeFlow.getBusinessId()); // if (byId != null) { // byId.setFlow(bladeFlow); // patrolTaskList.add(byId); // } // }); // } // //设置数据集 // patrolTaskIPage.setRecords(patrolTaskList); // //设置当前页 // patrolTaskIPage.setCurrent(res.getData().getCurrent()); // //设置页数 // patrolTaskIPage.setSize(res.getData().getSize()); // //设置总数 // patrolTaskIPage.setTotal(res.getData().getTotal()); // // return R.data(patrolTaskIPage); return null; } /** @@ -352,6 +344,58 @@ } /** * 下发任务 * @param patrolTask * @return */ @PostMapping("deliverTask") public R deliverTask(@RequestBody PatrolTask patrolTask){ List<PatrolTask> saveList = patrolTaskService.deliverTask(patrolTask); return R.data(saveList); } /** * 获取巡查项 * @param taskId * @return */ @GetMapping("getTaskDTO") public R getTaskDTO(String taskId){ PatrolTaskDTO result = patrolTaskService.getTaskDTO(taskId); return R.data(result); } /** * 获取我的巡查任务 * @param patrolTask * @return */ @GetMapping("getMyTask") public R getMyTask(PatrolTaskVO patrolTask,Query query){ Object result = patrolTaskService.getMyTask(patrolTask,Condition.getPage(query)); return R.data(result); } /** * 结束任务 * @param patrolTaskVO * @return */ @PostMapping("finishPatrolTask") public R finishPatrolTask(@RequestBody PatrolTaskVO patrolTaskVO){ Boolean result = patrolTaskService.finishPatrolTask(patrolTaskVO); return R.data(result); } /** * 处理 */ @PostMapping("personHandle") public R personHandle(@RequestBody PersonHandleParams personHandleParams){ Boolean res = patrolTaskService.personHandle(personHandleParams); return R.data(res); } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/dto/PatrolGroupDTOS.java
New file @@ -0,0 +1,13 @@ package cn.gistack.sm.patrol.dto; import cn.gistack.sm.patrol.entity.PatrolGroup; import cn.gistack.sm.patrol.entity.PatrolGroupItem; import lombok.Data; import java.util.List; @Data public class PatrolGroupDTOS extends PatrolGroup { private List<PatrolGroupItem> itemList; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/dto/PatrolTaskDTO.java
New file @@ -0,0 +1,13 @@ package cn.gistack.sm.patrol.dto; import cn.gistack.sm.patrol.entity.PatrolTask; import lombok.Data; import java.util.List; @Data public class PatrolTaskDTO extends PatrolTask { private List<PatrolGroupDTOS> groupList; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/entity/PatrolRecord.java
@@ -1,5 +1,6 @@ package cn.gistack.sm.patrol.entity; import cn.gistack.flow.core.entity.FlowEntity; import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; @@ -19,7 +20,7 @@ @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value="sm_patrol_type对象", description="巡查类型") public class PatrolRecord extends BaseEntity { public class PatrolRecord extends FlowEntity { /** * 任务id */ @@ -79,7 +80,7 @@ /** * 处理状态(1、已解决,2、未解决) */ @ApiModelProperty("处理状态(1、已解决,2、未解决)") @ApiModelProperty("处理状态(1、已解决,0、未解决或无问题)") private String state; /** @@ -93,4 +94,13 @@ */ @ApiModelProperty("记录类型") private String recordType; /** * 流程定义id */ private String processDefinitionId; /** * 流程实例id */ private String processInstanceId; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/entity/PatrolTask.java
@@ -21,7 +21,7 @@ @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value = "sm_patrol_task对象", description = "巡查任务") public class PatrolTask extends FlowEntity { public class PatrolTask extends BaseEntity { /** * 标题 */ @@ -146,32 +146,37 @@ private Integer reportProblemCount; /** * 流程定义id * 巡查角色 */ private String processDefinitionId; /** * 流程实例id */ private String processInstanceId; private String patrolRole; // /** // * 流程定义id // */ // private String processDefinitionId; // /** // * 流程实例id // */ // private String processInstanceId; //处理状态,1、巡查;2、处理中;3已处理 private String handleStatus; /** * 工作流标识 是否上报 */ @TableField(exist = false) private Boolean report; /** * 工作流标识 是否上报至部门 */ @TableField(exist = false) private Boolean toDept; /** * 工作流标识 是否转送至技术负责人 */ @TableField(exist = false) private Boolean toTech; // /** // * 工作流标识 是否上报 // */ // @TableField(exist = false) // private Boolean report; // // /** // * 工作流标识 是否上报至部门 // */ // @TableField(exist = false) // private Boolean toDept; // // /** // * 工作流标识 是否转送至技术负责人 // */ // @TableField(exist = false) // private Boolean toTech; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskImplClient.java
@@ -2,7 +2,9 @@ import cn.gistack.sm.intelligentCall.constant.ZtConstant; import cn.gistack.sm.intelligentCall.service.CallService; import cn.gistack.sm.patrol.entity.PatrolGroupItem; import cn.gistack.sm.patrol.entity.PatrolTask; import cn.gistack.sm.patrol.service.IPatrolGroupItemService; import cn.gistack.sm.patrol.service.IPatrolTaskService; import cn.gistack.sm.sjztmd.entity.AttResBase; import cn.gistack.sm.sjztmd.entity.PatrolResponsiblePerson; @@ -15,6 +17,7 @@ import lombok.extern.slf4j.Slf4j; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -34,6 +37,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** * @ClassName SM服务Feign实现类 @@ -55,6 +59,7 @@ private final IPatrolTaskService patrolTaskService; private final IAttResManagePersonService attResManagePersonService; private final IAttResBaseService attResBaseService; private final IPatrolGroupItemService patrolGroupItemService; @Autowired private RestTemplate restTemplate; @@ -87,6 +92,15 @@ List<Integer> taskJob = createTaskJob(processDefinitionId, taskType, title, content, type, patrolResponsiblePersonList); return taskJob; } @Override public List<Integer> createNewTaskJobHandler(String taskType, String title, String content, int type) { List<PatrolResponsiblePerson> patrolResponsiblePersonList = attResManagePersonService.getPatrolResponsiblePersonAll(); List<Integer> taskJob = createNewTaskJob(taskType, title, content, type, patrolResponsiblePersonList); return taskJob; } @Override @GetMapping(CREATE_TASK_JOB_BY_CONDITION_HANDLER) @@ -124,7 +138,7 @@ PatrolResponsiblePerson patrolResponsiblePerson = patrolResponsiblePersonByResCdList.get(0); //不确定是否有多个,循环下发 PatrolTask patrolTask = new PatrolTask(); patrolTask.setProcessDefinitionId(processDefinitionId); // patrolTask.setProcessDefinitionId(processDefinitionId); patrolTask.setToUserId(patrolResponsiblePerson.getUserId()); patrolTask.setProjectId(resCd); @@ -139,6 +153,8 @@ String taskId = patrolTask.getId().toString(); return taskId; } /** @@ -220,7 +236,7 @@ log.info("当前创建任务对象:" + JSON.toJSONString(item)); try { PatrolTask patrolTask = new PatrolTask(); patrolTask.setProcessDefinitionId(processDefinitionId); // patrolTask.setProcessDefinitionId(processDefinitionId); patrolTask.setToUserId(item.getUserId()); patrolTask.setProjectId(item.getResGuid()); patrolTask.setReservoirName(item.getName()); @@ -247,6 +263,80 @@ return list; } private List<Integer> createNewTaskJob(String taskType, String title, String content, int type, List<PatrolResponsiblePerson> patrolResponsiblePersonList) { AtomicInteger failureCount = new AtomicInteger(); //循环责任人给责任人下发任务 patrolResponsiblePersonList.forEach(item -> { log.info("当前创建任务对象:" + JSON.toJSONString(item)); try { PatrolTask patrolTask = new PatrolTask(); // patrolTask.setProcessDefinitionId(processDefinitionId); patrolTask.setToUserId(item.getUserId()); //水库id patrolTask.setProjectId(item.getResGuid()); //水库名称 patrolTask.setReservoirName(item.getName()); // 开始时间-结束时间 if (type == 1) { //周任务 LocalDate today = LocalDate.now(); LocalDate firstDayOfWeek = today.with(ChronoField.DAY_OF_WEEK, 1); LocalDate lastDayOfWeek = today.with(ChronoField.DAY_OF_WEEK, 7); String firstDayOfWeekString = firstDayOfWeek.format(DateTimeFormatter.ofPattern("yyyy-MM-dd 00:00:00")); String lastDayOfWeekString = lastDayOfWeek.format(DateTimeFormatter.ofPattern("yyyy-MM-dd 23:59:59")); //开始时间,结束时间 patrolTask.setStartTime(firstDayOfWeekString); patrolTask.setEndTime(lastDayOfWeekString); } else { // 默认天任务 patrolTask.setStartTime(DateUtil.format(new Date(),"yyyy-MM-dd 00:00:00")); patrolTask.setEndTime(DateUtil.format(new Date(),"yyyy-MM-dd 23:59:59")); } // 标题格式 月-日 水库名称 每日巡检任务 patrolTask.setTitle(DateUtil.format(new Date(),"MM-dd") + item.getName() + "-" + title); //内容 patrolTask.setContent(DateUtil.format(new Date(),"yyyyMMdd") +content); //任务类型 patrolTask.setTaskType(taskType); //设置角色为巡查责任人 patrolTask.setPatrolRole("5"); //获取巡查项,给任务赋值 List<PatrolGroupItem> list = patrolGroupItemService.list(); List<String> collect = list.stream().map(groupItem -> groupItem.getId().toString()).collect(Collectors.toList()); String itemIds = StringUtil.join(collect, ","); patrolTask.setPatrolGroupItemId(itemIds); // 创建任务 patrolTaskService.deliverTask(patrolTask); } catch (Exception e) { log.error("创建任务失败:" + e.getMessage()); log.error("创建任务失败对象:" + JSON.toJSONString(item)); failureCount.getAndIncrement(); } }); List<Integer> list = new ArrayList<>(); list.add(patrolResponsiblePersonList.size()); list.add(failureCount.get()); // 返回 return list; } public List<Integer> createTaskJob(String processDefinitionId, String taskType, String title, @@ -258,7 +348,7 @@ log.info("当前创建任务对象:" + JSON.toJSONString(item)); try { PatrolTask patrolTask = new PatrolTask(); patrolTask.setProcessDefinitionId(processDefinitionId); // patrolTask.setProcessDefinitionId(processDefinitionId); patrolTask.setToUserId(item.getUserId()); patrolTask.setProjectId(item.getResGuid()); patrolTask.setReservoirName(item.getName()); skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolRecordMapper.xml
@@ -4,8 +4,6 @@ <resultMap id="selectPatrolRecordList" type="cn.gistack.sm.patrol.vo.PatrolRecordVO"> <result column="id" property="id"/> <result column="patrol_type" property="patrolType"/> <result column="device_ids" property="deviceIds"/> <result column="images" property="images" typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/> <result column="videos" property="videos" @@ -15,8 +13,8 @@ <result column="state" property="state"/> <result column="item_id" property="itemId"/> <result column="task_id" property="taskId"/> <result column="patrol_route" property="patrolRoute"/> <result column="taskRoute" property="taskRoute"/> <result property="resGuid" column="resGuid"/> <result property="groupName" column="groupName"/> <result property="groupId" column="groupId"/> <result property="itemsName" column="itemsName"/> @@ -26,6 +24,11 @@ <result property="toUserId" column="create_user"/> <result property="toUserName" column="real_name"/> <result property="taskName" column="taskName"/> <result property="recordType" column="record_type"/> <result property="processDefinitionId" column="processDefinitionId"/> <result property="processInstanceId" column="processInstanceId"/> <result column="create_user" property="createUser"/> <result column="create_dept" property="createDept"/> @@ -37,6 +40,8 @@ <result column="town_name" property="townName"/> <result property="handleUser" column="handleUser"/> <result property="handleUserName" column="handleUserName"/> <result property="taskName" column="taskName"/> </resultMap> @@ -112,13 +117,34 @@ </select> <select id="getDetail" resultMap="selectPatrolRecordList"> SELECT record.id,record.patrol_type,record.images,record.videos,record.content,record.status,record.item_id,record.content,record.task_id,record.patrol_route,record.create_user,record.solution, task.title taskName, task.project_id as resGuid, record.id, record.images, record.videos, record.content, record.status, record.item_id, record.task_id, record.create_user, record.solution, record.state, record.record_type, record.process_definition_id as processDefinitionId, record.process_instance_id as processInstanceId, item.description, item.items_name as itemsName, g.name as groupName, u.phone FROM SM_PATROL_RECORD record LEFT JOIN sm_patrol_type type ON type.id = record.patrol_type LEFT JOIN sm_patrol_task task ON task.id = record.task_id LEFT JOIN sm_patrol_group_item item ON item.id = record.item_id LEFT JOIN sm_patrol_group g ON g.id = item.group_id LEFT JOIN BLADE_USER u ON u.id = record.create_user WHERE record.is_deleted = 0 AND record.id =#{id} @@ -245,6 +271,9 @@ <if test="vo.recordType !=null and vo.recordType !=''"> AND R.record_type = #{vo.recordType} </if> <if test="vo.toUserId !=null and vo.toUserId !=''"> AND R.create_user = #{vo.toUserId} </if> <if test="vo.status !=null and vo.status !=''"> AND R.status = #{vo.status} </if> skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.java
@@ -1,5 +1,6 @@ package cn.gistack.sm.patrol.mapper; import cn.gistack.sm.patrol.dto.PatrolTaskDTO; import cn.gistack.sm.patrol.entity.PatrolTask; import cn.gistack.sm.patrol.vo.*; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -106,4 +107,8 @@ List<PatrolTaskVO> selectPatrolTaskPage(@Param("current") long current, @Param("size") long size, @Param("patrolTask") PatrolTaskVO patrolTask); long getPatrolTaskTotal(@Param("patrolTask") PatrolTaskVO patrolTask); PatrolTaskDTO getTaskDTO(@Param("taskId") String taskId); List<PatrolTask> getMyTask(@Param("patrolTask") PatrolTask patrolTask,IPage<PatrolTask> page); } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.xml
@@ -27,10 +27,10 @@ AND spt.title LIKE CONCAT('%',#{patrolTask.title},'%') </if> <if test="patrolTask.startTime !=null and patrolTask.startTime !=''"> AND spt.start_time >= #{patrolTask.startTime} AND spt.create_time >= #{patrolTask.startTime} </if> <if test="patrolTask.endTime !=null and patrolTask.endTime !=''"> AND spt.end_time <= #{patrolTask.endTime} AND spt.create_time <= #{patrolTask.endTime} </if> <if test="patrolTask.projectId !=null and patrolTask.projectId !='' "> AND spt.project_id = #{patrolTask.projectId} @@ -61,12 +61,6 @@ <if test="patrolTask.title !=null and patrolTask.title!=''"> AND spt.title LIKE CONCAT('%',#{patrolTask.title},'%') </if> <!-- <if test="patrolTask.startTime !=null and patrolTask.startTime !=''">--> <!-- AND spt.start_time >= #{patrolTask.startTime}--> <!-- </if>--> <!-- <if test="patrolTask.endTime !=null and patrolTask.endTime !=''">--> <!-- AND spt.end_time <= #{patrolTask.endTime}--> <!-- </if>--> <if test="patrolTask.startTime !=null and patrolTask.startTime !=''"> AND spt.create_time >= #{patrolTask.startTime} </if> @@ -119,10 +113,10 @@ AND spt.title LIKE CONCAT('%',#{patrolTask.title},'%') </if> <if test="patrolTask.startTime !=null and patrolTask.startTime !=''"> AND spt.start_time >= #{patrolTask.startTime} AND spt.create_time >= #{patrolTask.startTime} </if> <if test="patrolTask.endTime !=null and patrolTask.endTime !=''"> AND spt.end_time <= #{patrolTask.endTime} AND spt.create_time <= #{patrolTask.endTime} </if> <if test="patrolTask.projectId !=null and patrolTask.projectId !='' "> AND spt.project_id = #{patrolTask.projectId} @@ -740,10 +734,10 @@ and concat(aab."ad_code",aa."ad_code",ab."ad_code",ac."ad_code") like CONCAT('%',#{vo.adCode},'%') </if> <if test="vo.startTime !=null and vo.startTime !=''"> AND T.start_time >= #{vo.startTime} AND T.create_time >= #{vo.startTime} </if> <if test="vo.endTime !=null and vo.endTime !=''"> AND T.end_time <= #{vo.endTime} AND T.create_time <= #{vo.endTime} </if> <if test="vo.reservoirName !=null and vo.reservoirName !='' "> AND T.reservoir_name LIKE CONCAT('%',#{vo.reservoirName},'%') @@ -772,15 +766,72 @@ and concat(aab."ad_code",aa."ad_code",ab."ad_code",ac."ad_code") like CONCAT('%',#{vo.adCode},'%') </if> <if test="vo.startTime !=null and vo.startTime !=''"> AND T.start_time >= #{vo.startTime} AND T.create_time >= #{vo.startTime} </if> <if test="vo.endTime !=null and vo.endTime !=''"> AND T.end_time <= #{vo.endTime} AND T.create_time <= #{vo.endTime} </if> <if test="vo.reservoirName !=null and vo.reservoirName !='' "> AND T.reservoir_name LIKE CONCAT('%',#{vo.reservoirName},'%') </if> </select> <resultMap id="item" type="cn.gistack.sm.patrol.entity.PatrolGroupItem"> <result property="id" column="itemId"/> <result property="itemsName" column="itemsName"/> <result property="groupId" column="groupId"/> <result property="description" column="description"/> </resultMap> <resultMap id="groupDTO" type="cn.gistack.sm.patrol.dto.PatrolGroupDTOS"> <id property="id" column="groupId"/> <result property="name" column="groupName"/> <collection property="itemList" resultMap="item"/> </resultMap> <resultMap id="taskDTO" type="cn.gistack.sm.patrol.dto.PatrolTaskDTO"> <id property="id" column="taskId"/> <result property="projectId" column="projectId"/> <result property="state" column="state"/> <result property="title" column="title"/> <result property="content" column="content"/> <collection property="groupList" resultMap="groupDTO"/> </resultMap> <select id="getTaskDTO" resultMap="taskDTO"> SELECT task.id as taskId, task.project_id as projectId, task.state as state, task.title as title, task.content as content, spg.id as groupId, spg.name as groupName, spgi.id as itemId, spgi.items_name as itemsName, spgi.description as description FROM YWXT.SM_PATROL_TASK TASK LEFT JOIN SM_PATROL_GROUP_ITEM SPGI ON task.patrol_group_item_id like CONCAT('%',spgi.id,'%') LEFT JOIN SM_PATROL_GROUP SPG ON SPG.ID = SPGI.GROUP_ID WHERE task.is_deleted = 0 and TASK.ID = #{taskId} </select> <select id="getMyTask" resultType="cn.gistack.sm.patrol.entity.PatrolTask"> SELECT id,title,project_id,content,state,to_user_id,real_end_time from sm_patrol_task spt where spt.is_deleted = 0 <if test="patrolTask.toUserId != null and patrolTask.toUserId != ''"> AND spt.to_user_id LIKE CONCAT('%',#{patrolTask.toUserId},'%') </if> <if test="patrolTask.state != null and patrolTask.state != ''"> AND spt.state = #{patrolTask.state} </if> order by spt.create_time desc </select> </mapper> skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/params/PersonHandleParams.java
New file @@ -0,0 +1,17 @@ package cn.gistack.sm.patrol.params; import cn.gistack.sm.patrol.entity.PatrolRecord; import lombok.Data; @Data public class PersonHandleParams { private PatrolRecord patrolRecord; private String recordId; private String taskId; private String flowTaskId; private String taskUser; private String comment; private String processInstanceId; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolRecordService.java
@@ -63,4 +63,8 @@ RecordVO getRecordVO(RecordVO recordVO); PatrolRecordVO getHandleRecord(PatrolRecord patrolRecord); void startProcess(PatrolRecordVO deliverList,String resId); PatrolRecordVO customizeGetById(String id); } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolTaskService.java
@@ -1,13 +1,12 @@ package cn.gistack.sm.patrol.service; import cn.gistack.flow.core.entity.BladeFlow; import cn.gistack.sm.patrol.entity.PatrolReport; import cn.gistack.sm.patrol.params.PersonHandleParams; import cn.gistack.sm.patrol.dto.PatrolTaskDTO; import cn.gistack.sm.patrol.entity.PatrolTask; import cn.gistack.sm.patrol.vo.*; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; import java.net.http.HttpRequest; import java.util.List; public interface IPatrolTaskService extends BaseService<PatrolTask> { @@ -91,4 +90,16 @@ * @return */ boolean personCompleteTask(PatrolTaskVO patrolTaskVO, String currentUserId, String taskUser); List<PatrolTask> deliverTask(PatrolTask patrolTask); PatrolTask saveTask(PatrolTask patrolTask); PatrolTaskDTO getTaskDTO(String taskId); Object getMyTask(PatrolTaskVO patrolTask,IPage<PatrolTask> page); Boolean finishPatrolTask(PatrolTaskVO patrolTaskVO); Boolean personHandle(PersonHandleParams personHandleParams); } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolRecordServiceImpl.java
@@ -1,9 +1,13 @@ package cn.gistack.sm.patrol.service.impl; import cn.gistack.flow.core.constant.ProcessConstant; import cn.gistack.flow.core.entity.BladeFlow; import cn.gistack.flow.core.feign.IFlowClient; import cn.gistack.flow.core.utils.FlowUtil; import cn.gistack.flow.core.utils.TaskUtil; import cn.gistack.sm.patrol.dto.PatrolGroupDTO; import cn.gistack.sm.patrol.entity.PatrolGroupItem; import cn.gistack.sm.patrol.entity.PatrolRecord; import cn.gistack.sm.patrol.entity.PatrolType; import cn.gistack.sm.patrol.mapper.PatrolRecordMapper; import cn.gistack.sm.patrol.service.IPatrolGroupItemService; import cn.gistack.sm.patrol.service.IPatrolRecordService; @@ -11,18 +15,19 @@ import cn.gistack.sm.patrol.vo.PatrolRecordVO; import cn.gistack.sm.patrol.vo.RecordBatchVO; import cn.gistack.sm.patrol.vo.RecordVO; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import cn.gistack.sm.sjztmd.service.IAttResManagePersonService; import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.AllArgsConstructor; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.support.Condition; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.support.Kv; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.ObjectUtil; import org.springblade.core.tool.utils.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springblade.core.log.exception.ServiceException; import java.util.ArrayList; import java.util.List; @@ -31,6 +36,9 @@ @AllArgsConstructor public class PatrolRecordServiceImpl extends BaseServiceImpl<PatrolRecordMapper, PatrolRecord> implements IPatrolRecordService { IPatrolGroupItemService patrolGroupItemService; private final IAttResManagePersonService attResManagePersonService; private final IFlowClient flowClient; @Override public IPage<PatrolRecord> selectPatrolRecord(IPage<PatrolRecord> page, PatrolRecordVO patrolRecord) { @@ -115,4 +123,46 @@ public PatrolRecordVO getHandleRecord(PatrolRecord patrolRecord) { return baseMapper.getHandleRecord(patrolRecord); } @Override public void startProcess(PatrolRecordVO record,String resId) { String businessTable = FlowUtil.getBusinessTable(ProcessConstant.PATROL_KEY); //异常,未解决需要开启流程 if (record.getStatus() == 2 && record.getSolution().equals("2")) { // List<PersonVO> managePersonList = attResManagePersonService.getManagePersonList(resId, "4"); //没主键 if (Func.isEmpty(record.getId())) { save(record); Kv variables = Kv.create() //设置创建人 .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, AuthUtil.getUserId()) //指定责任人,因为不一定是巡查责任完成的任务,需要前端传递taskUser .set("taskUser", TaskUtil.getTaskUser(record.getTaskUser())); R<BladeFlow> result = flowClient.startProcessInstanceById(record.getProcessDefinitionId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(record.getId())), variables); if (result.isSuccess()) { log.debug("流程已启动,流程ID:" + result.getData().getProcessInstanceId()); // 返回流程id写入 record.setProcessInstanceId(result.getData().getProcessInstanceId()); updateById(record); } else { throw new ServiceException("开启流程失败"); } } else { updateById(record); } } else { save(record); } } @Override public PatrolRecordVO customizeGetById(String id) { return baseMapper.getDetail(id); } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolTaskServiceImpl.java
@@ -3,9 +3,10 @@ import cn.gistack.flow.core.constant.ProcessConstant; import cn.gistack.flow.core.entity.BladeFlow; import cn.gistack.flow.core.feign.IFlowClient; import cn.gistack.flow.core.utils.FlowUtil; import cn.gistack.flow.core.utils.TaskUtil; import cn.gistack.nky.fegin.INkyClient; import cn.gistack.sm.patrol.params.PersonHandleParams; import cn.gistack.sm.patrol.dto.PatrolTaskDTO; import cn.gistack.sm.patrol.entity.PatrolRecord; import cn.gistack.sm.patrol.entity.PatrolReport; import cn.gistack.sm.patrol.entity.PatrolTask; @@ -16,23 +17,22 @@ import cn.gistack.sm.patrol.util.EnhancementServicesTool; import cn.gistack.sm.patrol.util.IdWorker; import cn.gistack.sm.patrol.vo.*; import cn.gistack.sm.sjztmd.service.IAttResManagePersonService; import cn.gistack.sm.sjztmd.service.IYwTermitesTaskService; import cn.gistack.sm.sjztmd.vo.ChargePersonVO; import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.AllArgsConstructor; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.support.Condition; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.support.Kv; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; import static org.springblade.core.launch.constant.FlowConstant.TASK_USR_PREFIX; import java.util.stream.Collectors; @Service @AllArgsConstructor @@ -43,6 +43,7 @@ private final IPatrolReportService patrolReportService; private final INkyClient nkyClient; private final IYwTermitesTaskService waterDataTermitesService; private final IAttResManagePersonService attResManagePersonService; private final String PATROL_USER = "patrolUser"; private final String TECH_USER = "techUser"; @@ -59,14 +60,14 @@ */ @Override public IPage<PatrolTaskVO> selectPatrolTask(IPage<PatrolTaskVO> page, PatrolTaskVO patrolTask) { // List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTask(page, patrolTask); List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTask(page, patrolTask); List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTaskPage(page.getCurrent() - 1, page.getSize(), patrolTask); long total = baseMapper.getPatrolTaskTotal(patrolTask); page.setRecords(patrolTaskList); page.setTotal(total); // List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTaskPage(page.getCurrent() - 1, page.getSize(), patrolTask); // long total = baseMapper.getPatrolTaskTotal(patrolTask); // page.setRecords(patrolTaskList); // page.setTotal(total); return page; return page.setRecords(patrolTaskList); } /** @@ -128,53 +129,231 @@ @Override @Transactional(rollbackFor = Exception.class) public PatrolTask startProcess(PatrolTask patrolTask) { String businessTable = FlowUtil.getBusinessTable(ProcessConstant.PATROL_KEY); if (Func.isEmpty(patrolTask.getId())) { save(patrolTask); // 启动流程 // String businessTable = FlowUtil.getBusinessTable(ProcessConstant.PATROL_KEY); // if (Func.isEmpty(patrolTask.getId())) { // save(patrolTask); // // // // 启动流程 //// Kv variables = Kv.create() //// //设置创建人 //// .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, AuthUtil.getUserId()) //// //指定任务处理人 //// .set("taskUser", TaskUtil.getTaskUser(patrolTask.getToUserId())); //// R<BladeFlow> result = flowClient.startProcessInstanceById(patrolTask.getProcessDefinitionId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(patrolTask.getId())), variables); // // Kv variables = Kv.create() // //设置创建人 // .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, AuthUtil.getUserId()) // //指定任务处理人 // //指定巡查责任人 // .set(PATROL_USER, TaskUtil.getTaskUser(patrolTask.getToUserId())) // .set("taskUser", TaskUtil.getTaskUser(patrolTask.getToUserId())); // R<BladeFlow> result = flowClient.startProcessInstanceById(patrolTask.getProcessDefinitionId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(patrolTask.getId())), variables); Kv variables = Kv.create() //设置创建人 .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, AuthUtil.getUserId()) //指定巡查责任人 .set(PATROL_USER, TaskUtil.getTaskUser(patrolTask.getToUserId())) .set("taskUser", TaskUtil.getTaskUser(patrolTask.getToUserId())); R<BladeFlow> result = flowClient.startProcessInstanceById(patrolTask.getProcessDefinitionId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(patrolTask.getId())), variables); if (result.isSuccess()) { log.debug("流程已启动,流程ID:" + result.getData().getProcessInstanceId()); // 返回流程id写入leave patrolTask.setProcessInstanceId(result.getData().getProcessInstanceId()); updateById(patrolTask); } else { throw new ServiceException("开启流程失败"); } } else { updateById(patrolTask); } return patrolTask; // // if (result.isSuccess()) { // log.debug("流程已启动,流程ID:" + result.getData().getProcessInstanceId()); // // 返回流程id写入leave // patrolTask.setProcessInstanceId(result.getData().getProcessInstanceId()); // updateById(patrolTask); // } else { // throw new ServiceException("开启流程失败"); // } // } else { // updateById(patrolTask); // } // return patrolTask; return null; } @Override public boolean personCompleteTask(PatrolTaskVO patrolTaskVO, String currentUserId, String taskUser) { String taskId = patrolTaskVO.getFlowTaskId(); String processInstanceId = patrolTaskVO.getProcessInstanceId(); String comment = patrolTaskVO.getComment(); //保存巡查记录 if (patrolTaskVO.getPatrolRecordList() != null && patrolTaskVO.getPatrolRecordList().size()>0){ patrolRecordService.saveBatch(patrolTaskVO.getPatrolRecordList()); // String taskId = patrolTaskVO.getFlowTaskId(); // String processInstanceId = patrolTaskVO.getProcessInstanceId(); // String comment = patrolTaskVO.getComment(); // // //保存巡查记录 // if (patrolTaskVO.getPatrolRecordList() != null && patrolTaskVO.getPatrolRecordList().size()>0){ // patrolRecordService.saveBatch(patrolTaskVO.getPatrolRecordList()); // } // // // 创建变量 // Map<String, Object> variables = new HashMap<>(); // if (variables == null) { // variables = Kv.create(); // } // // //指定了人就是上报,没指定就表示已经处理了 // if (StringUtil.isNotBlank(taskUser)){ // variables.put("taskUser",TaskUtil.getTaskUser(taskUser)); // variables.put(ProcessConstant.REPORT_KEY,true); // }else{ // variables.put(ProcessConstant.REPORT_KEY,false); // // //查监测预警表,看是否有这个任务,有的话修改任务状态 // Boolean finishDamTask = nkyClient.finishTask(patrolTaskVO.getId().toString()); // if (!finishDamTask){ // //查白蚁表,看是否有这个任务,有的话修改任务状态 // Boolean finishTermitesTask = waterDataTermitesService.finishTask(patrolTaskVO.getId().toString()); // } // } // // // // // flowClient.completeTask(taskId, processInstanceId, comment, variables); // return updateById(patrolTaskVO); return false; } @Override public List<PatrolTask> deliverTask(PatrolTask patrolTask) { String projectIds = patrolTask.getProjectId(); String patrolRole = patrolTask.getPatrolRole(); String reservoirName = patrolTask.getReservoirName(); List<String> resList = Arrays.asList(projectIds.split(",")); List<String> roleList = Arrays.asList(patrolRole.split(",")); List<String> reservoirNameList = Arrays.asList(reservoirName.split(",")); List<PatrolTask> saveList = new ArrayList<>(); //循环水库 for (int i = 0; i < resList.size(); i++) { String resId = resList.get(i); for (int j = 0; j < roleList.size(); j++) { String role = roleList.get(j); //获取该类型责任人 List<ChargePersonVO> managePersonList = attResManagePersonService.getManagePersonList(resId, role); PatrolTask saveTask = new PatrolTask(); saveTask.setTitle(patrolTask.getTitle()); saveTask.setStartTime(patrolTask.getStartTime()); saveTask.setEndTime(patrolTask.getEndTime()); saveTask.setContent(patrolTask.getContent()); List<String> collect = managePersonList.stream().map(p -> p.getUserId()).collect(Collectors.toList()); if (StringUtil.isBlank(patrolTask.getToUserId())) { //没传就自己找 //有几个就有几个 saveTask.setToUserId(StringUtil.join(collect, ",")); } else { saveTask.setToUserId(patrolTask.getToUserId()); } saveTask.setProjectId(resId); saveTask.setReservoirName(reservoirNameList.get(i)); saveTask.setTaskType(patrolTask.getTaskType()); saveTask.setPatrolGroupItemId(patrolTask.getPatrolGroupItemId()); saveTask.setPatrolRole(role); saveList.add(saveTask); } } boolean saveBatch = saveBatch(saveList); return saveList; } @Override public PatrolTask saveTask(PatrolTask patrolTask) { save(patrolTask); return patrolTask; } @Override public PatrolTaskDTO getTaskDTO(String taskId) { return baseMapper.getTaskDTO(taskId); } @Override public Object getMyTask(PatrolTaskVO patrolTask, IPage<PatrolTask> page) { if (patrolTask.getIsPage()) { return page.setRecords(baseMapper.getMyTask(patrolTask, page)); } return baseMapper.getMyTask(patrolTask, null); } @Override public Boolean finishPatrolTask(PatrolTaskVO patrolTaskVO) { //更新任务信息 boolean updateTask = updateById(patrolTaskVO); // 查监测预警表,看是否有这个任务,有的话修改任务状态 Boolean finishDamTask = nkyClient.finishTask(patrolTaskVO.getId().toString()); if (!finishDamTask) { //查白蚁表,看是否有这个任务,有的话修改任务状态 Boolean finishTermitesTask = waterDataTermitesService.finishTask(patrolTaskVO.getId().toString()); } List<PatrolRecordVO> patrolRecordList = patrolTaskVO.getPatrolRecordList(); if (patrolRecordList != null && patrolRecordList.size() > 0) { patrolRecordList.forEach(record -> { patrolRecordService.startProcess(record, patrolTaskVO.getProjectId()); }); } return updateTask; } @Override public Boolean personHandle(PersonHandleParams personHandleParams) { PatrolRecord patrolRecord = personHandleParams.getPatrolRecord(); String recordId = personHandleParams.getRecordId(); String taskId = personHandleParams.getTaskId(); String flowTaskId = personHandleParams.getFlowTaskId(); String taskUser = personHandleParams.getTaskUser(); String comment = personHandleParams.getComment(); String processInstanceId = personHandleParams.getProcessInstanceId(); if (StringUtil.isBlank(recordId)) { throw new ServiceException("recordId为空"); } if (StringUtil.isBlank(taskId)) { throw new ServiceException("taskId为空"); } if (StringUtil.isBlank(flowTaskId)) { throw new ServiceException("flowTaskId为空"); } if (StringUtil.isBlank(processInstanceId)) { throw new ServiceException("processInstanceId为空"); } //说明处理了问题 if (patrolRecord != null) { //保存处理记录 patrolRecordService.save(patrolRecord); //修改该任务的处理状态 PatrolRecord upRecord = new PatrolRecord(); upRecord.setId(Long.parseLong(recordId)); upRecord.setState("1"); patrolRecordService.updateById(upRecord); //修改任务的问题数量 PatrolTask byId = getById(taskId); Integer problemCount = byId.getProblemCount(); PatrolTask upTask = new PatrolTask(); upTask.setId(byId.getId()); upTask.setProblemCount(problemCount - 1); updateById(upTask); } // 创建变量 Map<String, Object> variables = new HashMap<>(); @@ -188,57 +367,53 @@ variables.put(ProcessConstant.REPORT_KEY,true); }else{ variables.put(ProcessConstant.REPORT_KEY,false); //查监测预警表,看是否有这个任务,有的话修改任务状态 Boolean finishDamTask = nkyClient.finishTask(patrolTaskVO.getId().toString()); if (!finishDamTask){ //查白蚁表,看是否有这个任务,有的话修改任务状态 Boolean finishTermitesTask = waterDataTermitesService.finishTask(patrolTaskVO.getId().toString()); // //查监测预警表,看是否有这个任务,有的话修改任务状态 // Boolean finishDamTask = nkyClient.finishTask(patrolTaskVO.getId().toString()); // if (!finishDamTask){ // //查白蚁表,看是否有这个任务,有的话修改任务状态 // Boolean finishTermitesTask = waterDataTermitesService.finishTask(patrolTaskVO.getId().toString()); // } } flowClient.completeTask(flowTaskId, processInstanceId, comment, variables); return true; } flowClient.completeTask(taskId, processInstanceId, comment, variables); return updateById(patrolTaskVO); } @Override @Transactional(rollbackFor = Exception.class) public boolean patrolCompleteTask(PatrolTaskVO patrolTask, String currentUserId, String taskUser) { R<BladeFlow> res = flowClient.getBladeFlow(patrolTask.getId().toString(), currentUserId); if (res.isSuccess()) { BladeFlow flow = res.getData(); String taskId = flow.getTaskId(); String processInstanceId = patrolTask.getProcessInstanceId(); // String comment = patrolTask.getReport() ? "巡查任务发现问题" : "巡查任务完成,未发现问题"; String comment = patrolTask.getComment(); // 创建变量 Map<String, Object> variables = flow.getVariables(); if (variables == null) { variables = Kv.create(); } //设置是否上报标识 variables.put(ProcessConstant.REPORT_KEY, patrolTask.getReport()); // variables.put("taskUser",StringUtil.format("{}{}", TASK_USR_PREFIX, taskUser)); variables.put(TECH_USER, TaskUtil.getTaskUser(taskUser)); // 完成任务 flowClient.completeTask(taskId, processInstanceId, comment, variables); //保存巡查记录 if (patrolTask.getPatrolRecordList() != null && patrolTask.getPatrolRecordList().size() > 0){ patrolRecordService.saveBatch(patrolTask.getPatrolRecordList()); } return baseMapper.updateById(patrolTask) > 0; } else { // R<BladeFlow> res = flowClient.getBladeFlow(patrolTask.getId().toString(), currentUserId); // if (res.isSuccess()) { // BladeFlow flow = res.getData(); // String taskId = flow.getTaskId(); // String processInstanceId = patrolTask.getProcessInstanceId(); //// String comment = patrolTask.getReport() ? "巡查任务发现问题" : "巡查任务完成,未发现问题"; // String comment = patrolTask.getComment(); // // 创建变量 // Map<String, Object> variables = flow.getVariables(); // if (variables == null) { // variables = Kv.create(); // } // //设置是否上报标识 // variables.put(ProcessConstant.REPORT_KEY, patrolTask.getReport()); //// variables.put("taskUser",StringUtil.format("{}{}", TASK_USR_PREFIX, taskUser)); // variables.put(TECH_USER, TaskUtil.getTaskUser(taskUser)); // // 完成任务 // flowClient.completeTask(taskId, processInstanceId, comment, variables); // //保存巡查记录 // if (patrolTask.getPatrolRecordList() != null && patrolTask.getPatrolRecordList().size() > 0){ // patrolRecordService.saveBatch(patrolTask.getPatrolRecordList()); // } // // // // return baseMapper.updateById(patrolTask) > 0; // } else { // return false; // } return false; } } @Override @@ -267,9 +442,6 @@ // //完成任务 // flowClient.completeTask(taskId, processInstanceId, comment, variables); // return true; String taskId = bladeFlowTask.getTaskId(); skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolRecordVO.java
@@ -82,4 +82,6 @@ private String handleUser; private String handleUserName; private String taskUser; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolTaskVO.java
@@ -54,7 +54,7 @@ */ private String finish; private List<PatrolRecord> patrolRecordList; private List<PatrolRecordVO> patrolRecordList; private String toUserIdName; @@ -75,4 +75,6 @@ //工作流taskId private String flowTaskId; private Boolean isPage; } skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/PatrolXxlJob.java
@@ -46,7 +46,11 @@ if (!StringUtil.isBlank(typeStr)) type = Integer.parseInt(typeStr); // 远程调用 List<Integer> taskJobHandler = patrolTasClient.createTaskJobHandler(processDefinitionId, taskType, title, content, type); // List<Integer> taskJobHandler = patrolTasClient.createTaskJobHandler(processDefinitionId, taskType, title, content, type); List<Integer> taskJobHandler = patrolTasClient.createNewTaskJobHandler(taskType,title,content,type); // 打印响应数据 XxlJobLogger.log("结束自动创建任务..."); XxlJobLogger.log("总数量:<span style='color:red'>" + taskJobHandler.get(0) + "</span> ... 失败数量:<span style='color:red'>" + taskJobHandler.get(1) + "</span> ");