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