guoshilong
2024-03-23 f04487fef5ac47380dfa9670156743c9d273966b
巡查修改
24 files modified
3 files added
1454 ■■■■ changed files
skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClient.java 16 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClientFallback.java 15 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/feign/FlowClient.java 21 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/service/FlowBusinessService.java 11 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/service/impl/FlowBusinessServiceImpl.java 147 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/engine/service/impl/FlowEngineServiceImpl.java 2 ●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskClient.java 24 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskClientFallback.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-nky/src/main/java/cn/gistack/nky/rabbitmq/MyRabbitReceiver.java 14 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolRecordController.java 283 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolTaskController.java 122 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/dto/PatrolGroupDTOS.java 13 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/dto/PatrolTaskDTO.java 13 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/entity/PatrolRecord.java 14 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/entity/PatrolTask.java 53 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskImplClient.java 96 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolRecordMapper.xml 41 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.xml 79 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/params/PersonHandleParams.java 17 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolRecordService.java 4 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolTaskService.java 17 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolRecordServiceImpl.java 58 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolTaskServiceImpl.java 372 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolRecordVO.java 2 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolTaskVO.java 4 ●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/PatrolXxlJob.java 6 ●●●● patch | view | raw | blame | history
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,114 +20,118 @@
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;
/**
* @Description: 巡查记录
*/
 * @Description: 巡查记录
 */
@Slf4j
@Api(tags="巡查记录")
@Api(tags = "巡查记录")
@RestController
@RequestMapping("/patrol/patrolRecord")
@AllArgsConstructor
public class PatrolRecordController extends BladeController {
   private IPatrolRecordService patrolRecordService;
    private IPatrolRecordService patrolRecordService;
    private IFlowClient flowClient;
   /**
    * 分页列表查询
    */
   @ApiOperation(value="巡查记录-分页列表查询", notes="巡查记录-分页列表查询")
   @GetMapping(value = "/list")
   public R queryPageList(PatrolRecordVO patrolRecord, Query query) {
       IPage<PatrolRecord> pageList = patrolRecordService.selectPatrolRecord(Condition.getPage(query),patrolRecord);
       return R.data(pageList);
   }
    /**
     * 分页列表查询
     */
    @ApiOperation(value = "巡查记录-分页列表查询", notes = "巡查记录-分页列表查询")
    @GetMapping(value = "/list")
    public R queryPageList(PatrolRecordVO patrolRecord, Query query) {
        IPage<PatrolRecord> pageList = patrolRecordService.selectPatrolRecord(Condition.getPage(query), patrolRecord);
        return R.data(pageList);
    }
    /**
     * 获取所有巡查记录
     */
    @ApiOperation(value="获取所有巡查类型", notes="获取所有巡查类型")
    @GetMapping(value = "/all")
   public R getAll(PatrolRecord patrolRecord){
       List<PatrolRecord> list = patrolRecordService.list(Condition.getQueryWrapper(patrolRecord));
       return R.data(list);
   }
    /**
     * 获取所有巡查记录
     */
    @ApiOperation(value = "获取所有巡查类型", notes = "获取所有巡查类型")
    @GetMapping(value = "/all")
    public R getAll(PatrolRecord patrolRecord) {
        List<PatrolRecord> list = patrolRecordService.list(Condition.getQueryWrapper(patrolRecord));
        return R.data(list);
    }
   /**
    * 添加
    */
   @ApiOperation(value="巡查记录-添加", notes="巡查记录-添加")
   @PostMapping(value = "/add")
   public R add(@RequestBody PatrolRecord patrolRecord) {
       return R.data(patrolRecordService.save(patrolRecord));
   }
    /**
     * 添加
     */
    @ApiOperation(value = "巡查记录-添加", notes = "巡查记录-添加")
    @PostMapping(value = "/add")
    public R add(@RequestBody PatrolRecord patrolRecord) {
        return R.data(patrolRecordService.save(patrolRecord));
    }
   /**
    * 编辑
    */
   @ApiOperation(value="巡查记录-编辑", notes="巡查记录-编辑")
   @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
   public R edit(@RequestBody PatrolRecord patrolRecord) {
       return R.data(patrolRecordService.updateById(patrolRecord));
   }
    /**
     * 编辑
     */
    @ApiOperation(value = "巡查记录-编辑", notes = "巡查记录-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
    public R edit(@RequestBody PatrolRecord patrolRecord) {
        return R.data(patrolRecordService.updateById(patrolRecord));
    }
   /**
    * 通过id删除
    *
    * @param id
    * @return
    */
   @ApiOperation(value="巡查记录-通过id删除", notes="巡查记录-通过id删除")
   @PostMapping(value = "/delete")
   public R delete(@RequestParam(name="id",required=true) String id) {
       return R.data(patrolRecordService.removeById(id));
   }
    /**
     * 通过id删除
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "巡查记录-通过id删除", notes = "巡查记录-通过id删除")
    @PostMapping(value = "/delete")
    public R delete(@RequestParam(name = "id", required = true) String id) {
        return R.data(patrolRecordService.removeById(id));
    }
   /**
    * 批量删除
    *
    * @param ids
    * @return
    */
   @ApiOperation(value="巡查记录-批量删除", notes="巡查记录-批量删除")
   @PostMapping(value = "/deleteBatch")
   public R deleteBatch(@RequestParam(name="ids",required=true) String ids) {
       return R.data(patrolRecordService.removeByIds(Arrays.asList(ids.split(","))));
   }
    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
    @ApiOperation(value = "巡查记录-批量删除", notes = "巡查记录-批量删除")
    @PostMapping(value = "/deleteBatch")
    public R deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
        return R.data(patrolRecordService.removeByIds(Arrays.asList(ids.split(","))));
    }
   /**
    * 通过id查询
    *
    * @param id
    * @return
    */
   @ApiOperation(value="巡查记录-通过id查询", notes="巡查记录-通过id查询")
   @GetMapping(value = "/queryById")
   public R queryById(@RequestParam(name="id",required=true) String id) {
       PatrolRecordVO patrolRecordVO = patrolRecordService.getDetail(id);
       return R.data(patrolRecordVO);
   }
    /**
     * 通过id查询
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "巡查记录-通过id查询", notes = "巡查记录-通过id查询")
    @GetMapping(value = "/queryById")
    public R queryById(@RequestParam(name = "id", required = true) String id) {
        PatrolRecordVO patrolRecordVO = patrolRecordService.getDetail(id);
        return R.data(patrolRecordVO);
    }
    /**
     * 通过taskId,itemsIds查询(用来判断是否完成任务)
     *
     * @return
     */
    @ApiOperation(value="巡查记录-通过taskId,itemsIds查询", notes="巡查记录-通过taskId,itemsIds查询")
    @ApiOperation(value = "巡查记录-通过taskId,itemsIds查询", notes = "巡查记录-通过taskId,itemsIds查询")
    @GetMapping(value = "/getPatrolRecordByTaskId")
    public R getPatrolRecordByTaskId(String taskId,String itemIds) {
        List<PatrolGroupItemVO> list = patrolRecordService.getPatrolRecordByTaskId(taskId,itemIds);
    public R getPatrolRecordByTaskId(String taskId, String itemIds) {
        List<PatrolGroupItemVO> list = patrolRecordService.getPatrolRecordByTaskId(taskId, itemIds);
        return R.data(list);
    }
    /**
     * 通过taskId,itemsIds查询(用来查询巡查记录)
     *
     * @return
     */
    @ApiOperation(value="巡查记录-通过itemId查询", notes="巡查记录-通过itemId查询")
    @ApiOperation(value = "巡查记录-通过itemId查询", notes = "巡查记录-通过itemId查询")
    @GetMapping(value = "/getByTaskIdAndItemId")
    public R getByTaskIdAndItemId(String taskId,String itemIds){
        List<PatrolRecordVO> list = patrolRecordService.getByTaskIdAndItemId(taskId,itemIds);
    public R getByTaskIdAndItemId(String taskId, String itemIds) {
        List<PatrolRecordVO> list = patrolRecordService.getByTaskIdAndItemId(taskId, itemIds);
        return R.data(list);
    }
@@ -137,10 +140,10 @@
     *
     * @return
     */
    @ApiOperation(value="巡查指标项目-通过itemIds查询", notes="巡查指标项目-通过itemIds查询")
    @ApiOperation(value = "巡查指标项目-通过itemIds查询", notes = "巡查指标项目-通过itemIds查询")
    @GetMapping(value = "/getItemByItemIds")
    public R getItemByItemIds(String itemIds,String groupId,String taskId){
        List list = patrolRecordService.getItemByItemIds(itemIds,groupId,taskId);
    public R getItemByItemIds(String itemIds, String groupId, String taskId) {
        List list = patrolRecordService.getItemByItemIds(itemIds, groupId, taskId);
        return R.data(list);
    }
@@ -150,7 +153,7 @@
     * @return
     */
    @GetMapping(value = "/getByTaskIdAndGroupId")
    public R getByTaskIdAndGroupId(PatrolRecordVO patrolRecordVO){
    public R getByTaskIdAndGroupId(PatrolRecordVO patrolRecordVO) {
        List<PatrolRecord> list = patrolRecordService.getByTaskIdAndGroupId(patrolRecordVO);
        return R.data(list);
    }
@@ -158,38 +161,122 @@
    /**
     * 记录更新并且新增数据(适用于app处理)
     */
    @ApiOperation(value="巡查记录-记录更新并且新增数据", notes="巡查记录-记录更新并且新增数据")
    @RequestMapping(value = "/updateThenSaveBatch", method = {RequestMethod.PUT,RequestMethod.POST})
    public R updateThenSaveBatch(@RequestBody RecordBatchVO recordBatchVO){
    @ApiOperation(value = "巡查记录-记录更新并且新增数据", notes = "巡查记录-记录更新并且新增数据")
    @RequestMapping(value = "/updateThenSaveBatch", method = {RequestMethod.PUT, RequestMethod.POST})
    public R updateThenSaveBatch(@RequestBody RecordBatchVO recordBatchVO) {
        return R.data(patrolRecordService.updateThenSaveBatch(recordBatchVO));
    }
    /**
     * 获取历史记录
     */
    @ApiOperation(value="巡查记录-获取历史记录", notes="巡查记录-获取历史记录")
    @RequestMapping(value = "/getHistoryRecord", method = {RequestMethod.PUT,RequestMethod.POST})
    public R getHistoryRecord(PatrolRecordVO patrolRecordVO){
    @ApiOperation(value = "巡查记录-获取历史记录", notes = "巡查记录-获取历史记录")
    @RequestMapping(value = "/getHistoryRecord", method = {RequestMethod.PUT, RequestMethod.POST})
    public R getHistoryRecord(PatrolRecordVO patrolRecordVO) {
        return R.data(patrolRecordService.getHistoryRecord(patrolRecordVO));
    }
    @GetMapping("getRecordDetail")
    public R getRecordVO(RecordVO recordVO){
    public R getRecordVO(RecordVO recordVO) {
        RecordVO detail = patrolRecordService.getRecordVO(recordVO);
        return R.data(detail);
    }
    /**
     * 获取处理情况
     *
     * @param patrolRecord
     * @return
     */
    @GetMapping("getHandleRecord")
    public R getHandleRecord(PatrolRecord patrolRecord){
    public R getHandleRecord(PatrolRecord patrolRecord) {
        PatrolRecordVO res = patrolRecordService.getHandleRecord(patrolRecord);
        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 &gt;= #{patrolTask.startTime}
            AND spt.create_time &gt;= #{patrolTask.startTime}
        </if>
        <if test="patrolTask.endTime !=null and patrolTask.endTime !=''">
            AND spt.end_time &lt;= #{patrolTask.endTime}
            AND spt.create_time &lt;= #{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 &gt;= #{patrolTask.startTime}-->
<!--                        </if>-->
<!--                        <if test="patrolTask.endTime !=null and patrolTask.endTime !=''">-->
<!--                            AND spt.end_time &lt;= #{patrolTask.endTime}-->
<!--                        </if>-->
                        <if test="patrolTask.startTime !=null and patrolTask.startTime !=''">
                            AND spt.create_time &gt;= #{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 &gt;= #{patrolTask.startTime}
            AND spt.create_time &gt;= #{patrolTask.startTime}
        </if>
        <if test="patrolTask.endTime !=null and patrolTask.endTime !=''">
            AND spt.end_time &lt;= #{patrolTask.endTime}
            AND spt.create_time &lt;= #{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 &gt;= #{vo.startTime}
                AND T.create_time &gt;= #{vo.startTime}
            </if>
            <if test="vo.endTime !=null and vo.endTime !=''">
                AND T.end_time &lt;= #{vo.endTime}
                AND T.create_time &lt;= #{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 &gt;= #{vo.startTime}
            AND T.create_time &gt;= #{vo.startTime}
        </if>
        <if test="vo.endTime !=null and vo.endTime !=''">
            AND T.end_time &lt;= #{vo.endTime}
            AND T.create_time &lt;= #{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();
//        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;
    }
        //保存巡查记录
        if (patrolTaskVO.getPatrolRecordList() != null && patrolTaskVO.getPatrolRecordList().size()>0){
            patrolRecordService.saveBatch(patrolTaskVO.getPatrolRecordList());
    @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<>();
@@ -183,62 +362,58 @@
        }
        //指定了人就是上报,没指定就表示已经处理了
        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());
            }
        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(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 {
            return false;
        }
//        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
@@ -269,9 +444,6 @@
//        return true;
        String taskId = bladeFlowTask.getTaskId();
        String processInstanceId = bladeFlowTask.getProcessInstanceId();
        String comment = bladeFlowTask.getComment();
@@ -295,13 +467,13 @@
        switch (currentNode.getHistoryActivityId()) {
            case "techPerson":
                variables.put(bladeFlowTask.getToDept()?DEPT_USER:SUPERVISOR_USER,TaskUtil.getTaskUser(bladeFlowTask.getTaskUser()));
                variables.put(bladeFlowTask.getToDept() ? DEPT_USER : SUPERVISOR_USER, TaskUtil.getTaskUser(bladeFlowTask.getTaskUser()));
                break;
            case "supervisorPerson":
                variables.put(bladeFlowTask.getToDept()?DEPT_USER:ADMIN_USER,TaskUtil.getTaskUser(bladeFlowTask.getTaskUser()));
                variables.put(bladeFlowTask.getToDept() ? DEPT_USER : ADMIN_USER, TaskUtil.getTaskUser(bladeFlowTask.getTaskUser()));
                break;
            case "adminPerson":
                variables.put(DEPT_USER,TaskUtil.getTaskUser(bladeFlowTask.getTaskUser()));
                variables.put(DEPT_USER, TaskUtil.getTaskUser(bladeFlowTask.getTaskUser()));
                break;
            case "department":
                //当前节点为水行政部门,需要指定回复给谁
@@ -311,9 +483,9 @@
                if (beforeId.equals("techPerson")) {
                    //前一个节点是技术责任人
                    variables.put(ProcessConstant.TOTECH_KEY, true);
                }else if (beforeId.equals("supervisorPerson")){
                } else if (beforeId.equals("supervisorPerson")) {
                    variables.put(ProcessConstant.TOSUPERVISOR_KEY, true);
                }else if (beforeId.equals("adminPerson")){
                } else if (beforeId.equals("adminPerson")) {
                    variables.put(ProcessConstant.TOADMIN_KEY, true);
                }
                break;
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> ");