xuhy
2025-09-29 d87896f06a8478af76fa85a4709f4daf1dfcc466
任务管理列表,指派规则
14个文件已修改
4个文件已添加
565 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TMissionAssignRuleController.java 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TMissionController.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/TMissionAssignRuleDTO.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TMissionAssignRuleMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TMissionMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TAppUser.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TMission.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/TMissionAssignRuleQuery.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/TMissionQuery.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TMissionAssignRuleService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TMissionService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TMissionAssignRuleServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TMissionServiceImpl.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TMissionAssignRuleVO.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TMissionReassignVO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TMissionVO.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TMissionAssignRuleMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TMissionMapper.xml 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TMissionAssignRuleController.java
@@ -1,8 +1,28 @@
package com.ruoyi.web.controller.api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.TMissionAssignRuleDTO;
import com.ruoyi.system.model.TMissionAssignRule;
import com.ruoyi.system.model.TMissionAssignRuleIndicator;
import com.ruoyi.system.query.TMissionAssignRuleQuery;
import com.ruoyi.system.service.TMissionAssignRuleIndicatorService;
import com.ruoyi.system.service.TMissionAssignRuleService;
import com.ruoyi.system.vo.TMissionAssignRuleVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * <p>
@@ -12,9 +32,122 @@
 * @author xiaochen
 * @since 2025-09-28
 */
@Api(tags = "任务指派规则")
@RestController
@RequestMapping("/t-mission-assign-rule")
@RequestMapping("")
public class TMissionAssignRuleController {
    private final TMissionAssignRuleService missionAssignRuleService;
    private final TMissionAssignRuleIndicatorService missionAssignRuleIndicatorService;
    private final TokenService tokenService;
    @Autowired
    public TMissionAssignRuleController(TMissionAssignRuleService missionAssignRuleService, TMissionAssignRuleIndicatorService missionAssignRuleIndicatorService, TokenService tokenService) {
        this.missionAssignRuleService = missionAssignRuleService;
        this.missionAssignRuleIndicatorService = missionAssignRuleIndicatorService;
        this.tokenService = tokenService;
    }
    /**
     * 任务指派规则列表
     */
    //@PreAuthorize("@ss.hasPermi('system:missionAssignRule:list')")
    @ApiOperation(value = "任务指派规则分页列表", response = TMissionAssignRuleQuery.class)
    @PostMapping(value = "/api/t-mission-assign-rule/pageList")
    public R<PageInfo<TMissionAssignRuleVO>> pageList(@RequestBody String param) {
        TMissionAssignRuleQuery query = JSON.parseObject(param, TMissionAssignRuleQuery.class);
        return R.ok(missionAssignRuleService.pageList(query));
    }
    /**
     * 添加任务指派规则管理
     */
    //@PreAuthorize("@ss.hasPermi('system:missionAssignRule:add')")
    @Log(title = "任务指派规则信息-新增任务指派规则", businessType = BusinessType.INSERT)
    @ApiOperation(value = "添加任务指派规则",response = TMissionAssignRuleDTO.class)
    @PostMapping(value = "/api/t-mission-assign-rule/add")
    public R<Boolean> add(@RequestBody String param) {
        TMissionAssignRuleDTO dto = JSON.parseObject(param,TMissionAssignRuleDTO.class);
        if(missionAssignRuleService.isExit(dto)){
            return R.fail("该任务类型已存在");
        }
        List<TMissionAssignRuleIndicator> missionAssignRuleIndicators = dto.getMissionAssignRuleIndicators();
        if(CollectionUtils.isEmpty(missionAssignRuleIndicators)){
            return R.fail("指派指标不可为空");
        }
        missionAssignRuleService.save(dto);
        // 存储指派指标详情
        missionAssignRuleIndicators.forEach(missionAssignRuleIndicator -> {
            missionAssignRuleIndicator.setRuleId(dto.getId());
        });
        missionAssignRuleIndicatorService.saveBatch(missionAssignRuleIndicators);
        return R.ok();
    }
    /**
     * 修改任务指派规则
     */
    //@PreAuthorize("@ss.hasPermi('system:missionAssignRule:edit')")
    @Log(title = "任务指派规则信息-修改任务指派规则", businessType = BusinessType.UPDATE)
    @ApiOperation(value = "修改任务指派规则")
    @PostMapping(value = "/api/t-mission-assign-rule/update")
    public R<Boolean> update(@RequestBody String param) {
        TMissionAssignRuleDTO dto = JSON.parseObject(param,TMissionAssignRuleDTO.class);
        if(missionAssignRuleService.isExit(dto)){
            return R.fail("该任务类型已存在");
        }
        List<TMissionAssignRuleIndicator> missionAssignRuleIndicators = dto.getMissionAssignRuleIndicators();
        if(CollectionUtils.isEmpty(missionAssignRuleIndicators)){
            return R.fail("指派指标不可为空");
        }
        missionAssignRuleService.updateById(dto);
        // 删除指标
        missionAssignRuleIndicatorService.remove(Wrappers.lambdaQuery(TMissionAssignRuleIndicator.class).eq(TMissionAssignRuleIndicator::getRuleId,dto.getId()));
        // 存储指派指标详情
        missionAssignRuleIndicators.forEach(missionAssignRuleIndicator -> {
            missionAssignRuleIndicator.setRuleId(dto.getId());
        });
        missionAssignRuleIndicatorService.saveBatch(missionAssignRuleIndicators);
        return R.ok();
    }
    /**
     * 查看任务指派规则详情
     */
    //@PreAuthorize("@ss.hasPermi('system:missionAssignRule:detail')")
    @ApiOperation(value = "查看任务指派规则详情")
    @GetMapping(value = "/open/t-mission-assign-rule/getDetailById")
    public R<TMissionAssignRuleVO> getDetailById(@RequestParam String id) {
        TMissionAssignRule missionAssignRule = missionAssignRuleService.getById(id);
        TMissionAssignRuleVO missionAssignRuleVO = new TMissionAssignRuleVO();
        BeanUtils.copyProperties(missionAssignRule, missionAssignRuleVO);
        // 查询指派指标详情
        List<TMissionAssignRuleIndicator> missionAssignRuleIndicators = missionAssignRuleIndicatorService.list(Wrappers.lambdaQuery(TMissionAssignRuleIndicator.class)
                .eq(TMissionAssignRuleIndicator::getRuleId,id));
        missionAssignRuleVO.setMissionAssignRuleIndicators(missionAssignRuleIndicators);
        return R.ok(missionAssignRuleVO);
    }
    /**
     * 删除任务指派规则
     */
    //@PreAuthorize("@ss.hasPermi('system:missionAssignRule:delete')")
    @Log(title = "任务指派规则信息-删除任务指派规则", businessType = BusinessType.DELETE)
    @ApiOperation(value = "删除任务指派规则")
    @DeleteMapping(value = "/open/t-mission-assign-rule/deleteById")
    public R<Boolean> deleteById(@RequestParam String id) {
        return R.ok(missionAssignRuleService.removeById(id));
    }
    /**
     * 批量删除任务指派规则
     */
    //@PreAuthorize("@ss.hasPermi('system:missionAssignRule:delete')")
    @Log(title = "任务指派规则信息-删除任务指派规则", businessType = BusinessType.DELETE)
    @ApiOperation(value = "批量删除任务指派规则")
    @DeleteMapping(value = "/open/t-mission-assign-rule/deleteByIds")
    public R<Boolean> deleteByIds(@RequestBody List<String> ids) {
        return R.ok(missionAssignRuleService.removeByIds(ids));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TMissionController.java
@@ -11,6 +11,7 @@
import com.ruoyi.system.query.TMissionQuery;
import com.ruoyi.system.service.TMissionReassignService;
import com.ruoyi.system.service.TMissionService;
import com.ruoyi.system.vo.TMissionReassignVO;
import com.ruoyi.system.vo.TMissionVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -44,12 +45,34 @@
    /**
     * 任务管理列表
     */
    //@PreAuthorize("@ss.hasPermi('system:mission:list')")
    @ApiOperation(value = "任务管理分页列表", response = TMissionQuery.class)
    @PostMapping(value = "/api/t-mission/pageList")
    public R<PageInfo<TMissionVO>> pageList(@RequestBody String param) {
    //@PreAuthorize("@ss.hasPermi('system:mission:pageListAssigned')")
    @ApiOperation(value = "任务管理分页列表-待分配任务池", response = TMissionQuery.class)
    @PostMapping(value = "/api/t-mission/pageListAssigned")
    public R<PageInfo<TMissionVO>> pageListAssigned(@RequestBody String param) {
        TMissionQuery query = JSON.parseObject(param, TMissionQuery.class);
        return R.ok(missionService.pageList(query));
        return R.ok(missionService.pageListAssigned(query));
    }
    /**
     * 任务管理列表
     */
    //@PreAuthorize("@ss.hasPermi('system:mission:pageListReassignAudit')")
    @ApiOperation(value = "任务管理分页列表-改派支援审核", response = TMissionReassignVO.class)
    @PostMapping(value = "/api/t-mission/pageListReassignAudit")
    public R<PageInfo<TMissionReassignVO>> pageListReassignAudit(@RequestBody String param) {
        TMissionQuery query = JSON.parseObject(param, TMissionQuery.class);
        return R.ok(missionService.pageListReassignAudit(query));
    }
    /**
     * 任务管理列表
     */
    //@PreAuthorize("@ss.hasPermi('system:mission:pageListMissionPool')")
    @ApiOperation(value = "任务管理分页列表-抢单任务池", response = TMissionVO.class)
    @PostMapping(value = "/api/t-mission/pageListMissionPool")
    public R<PageInfo<TMissionVO>> pageListMissionPool(@RequestBody String param) {
        TMissionQuery query = JSON.parseObject(param, TMissionQuery.class);
        return R.ok(missionService.pageListMissionPool(query));
    }
    /**
ruoyi-system/src/main/java/com/ruoyi/system/dto/TMissionAssignRuleDTO.java
New file
@@ -0,0 +1,18 @@
package com.ruoyi.system.dto;
import com.ruoyi.system.model.TMissionAssignRule;
import com.ruoyi.system.model.TMissionAssignRuleIndicator;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel(value="TMissionAssignRuleDTO对象", description="任务指派规则DTO")
public class TMissionAssignRuleDTO extends TMissionAssignRule {
    @ApiModelProperty(value = "规则详情集合")
    private List<TMissionAssignRuleIndicator> missionAssignRuleIndicators;
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TMissionAssignRuleMapper.java
@@ -1,7 +1,13 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.TMissionAssignRule;
import com.ruoyi.system.query.TMissionAssignRuleQuery;
import com.ruoyi.system.vo.TMissionAssignRuleVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -13,4 +19,11 @@
 */
public interface TMissionAssignRuleMapper extends BaseMapper<TMissionAssignRule> {
    /**
     * 任务指派规则列表
     * @param pageInfo
     * @param query
     * @return
     */
    List<TMissionAssignRuleVO> pageList(@Param("query") TMissionAssignRuleQuery query, @Param("pageInfo")PageInfo<TMissionAssignRuleVO> pageInfo);
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TMissionMapper.java
@@ -1,7 +1,14 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.TMission;
import com.ruoyi.system.query.TMissionQuery;
import com.ruoyi.system.vo.TMissionReassignVO;
import com.ruoyi.system.vo.TMissionVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -13,4 +20,26 @@
 */
public interface TMissionMapper extends BaseMapper<TMission> {
    /**
     * 获取任务管理列表
     * @param pageInfo
     * @param query
     * @return
     */
    List<TMissionVO> pageListAssigned(@Param("query") TMissionQuery query, @Param("pageInfo") PageInfo<TMissionVO> pageInfo);
    /**
     * 待改派审核分页列表
     * @param query
     * @return
     */
    List<TMissionReassignVO> pageListReassignAudit(@Param("query")TMissionQuery query, @Param("pageInfo")PageInfo<TMissionReassignVO> pageInfo);
    /**
     * 获取任务池管理列表
     * @param query
     * @return
     */
    List<TMissionVO> pageListMissionPool(@Param("query")TMissionQuery query, @Param("pageInfo")PageInfo<TMissionVO> pageInfo);
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TAppUser.java
@@ -69,10 +69,6 @@
    @TableField("state")
    private Integer state;
    @ApiModelProperty(value = "状态 0待审核 1通过 2拒绝")
    private Integer state;
    @ApiModelProperty(value = "职业技能")
    private String level;
ruoyi-system/src/main/java/com/ruoyi/system/model/TMission.java
@@ -108,10 +108,24 @@
    @TableField("attempt_score")
    private Double attemptScore;
    @ApiModelProperty(value = "指派时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("assign_time")
    private LocalDateTime assignTime;
    @ApiModelProperty(value = "接收时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("receive_time")
    private LocalDateTime receiveTime;
    @ApiModelProperty(value = "完成时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("finish_time")
    private LocalDateTime finishTime;
    @ApiModelProperty(value = "是否在任务池 1=是 0=否")
    @TableField("is_mission_pool")
    private Integer isMissionPool;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/TMissionAssignRuleQuery.java
New file
@@ -0,0 +1,13 @@
package com.ruoyi.system.query;
import com.ruoyi.common.core.domain.BasePage;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@Data
@ApiModel(value = "任务指派规则查询参数TMissionAssignRuleQuery", description = "任务指派规则查询参数")
public class TMissionAssignRuleQuery extends BasePage {
}
ruoyi-system/src/main/java/com/ruoyi/system/query/TMissionQuery.java
@@ -2,9 +2,25 @@
import com.ruoyi.common.core.domain.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "任务管理查询参数query")
@ApiModel(value = "任务管理待分配列表查询参数query")
public class TMissionQuery extends BasePage {
    @ApiModelProperty(value = "紧急程度 1=一般 2=加急 3=特急")
    private Integer urgencyLevel;
    @ApiModelProperty(value = "任务内容")
    private String missionContent;
    @ApiModelProperty(value = "负责人")
    private String chargePerson;
    @ApiModelProperty(value = "状态 1=待指派 2=待完成 3=待评分 4=已完成 5=待改派")
    private Integer status;
    @ApiModelProperty(value = "类型 1=改派 2=支援 改派支援审核使用")
    private Integer reassignType;
}
ruoyi-system/src/main/java/com/ruoyi/system/service/TMissionAssignRuleService.java
@@ -1,7 +1,11 @@
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.dto.TMissionAssignRuleDTO;
import com.ruoyi.system.model.TMissionAssignRule;
import com.ruoyi.system.query.TMissionAssignRuleQuery;
import com.ruoyi.system.vo.TMissionAssignRuleVO;
/**
 * <p>
@@ -13,4 +17,18 @@
 */
public interface TMissionAssignRuleService extends IService<TMissionAssignRule> {
    /**
     * 判断任务指派规则是否存在
     * @param dto
     * @return
     */
    boolean isExit(TMissionAssignRuleDTO dto);
    /**
     *  任务指派规则列表
     * @param query
     * @return
     */
    PageInfo<TMissionAssignRuleVO> pageList(TMissionAssignRuleQuery query);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/TMissionService.java
@@ -4,6 +4,7 @@
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.TMission;
import com.ruoyi.system.query.TMissionQuery;
import com.ruoyi.system.vo.TMissionReassignVO;
import com.ruoyi.system.vo.TMissionVO;
/**
@@ -21,5 +22,20 @@
     * @param query
     * @return
     */
    PageInfo<TMissionVO> pageList(TMissionQuery query);
    PageInfo<TMissionVO> pageListAssigned(TMissionQuery query);
    /**
     * 待改派审核分页列表
     * @param query
     * @return
     */
    PageInfo<TMissionReassignVO> pageListReassignAudit(TMissionQuery query);
    /**
     * 抢单任务池分页列表
     * @param query
     * @return
     */
    PageInfo<TMissionVO> pageListMissionPool(TMissionQuery query);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TMissionAssignRuleServiceImpl.java
@@ -1,10 +1,18 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.dto.TMissionAssignRuleDTO;
import com.ruoyi.system.mapper.TMissionAssignRuleMapper;
import com.ruoyi.system.model.TMissionAssignRule;
import com.ruoyi.system.query.TMissionAssignRuleQuery;
import com.ruoyi.system.service.TMissionAssignRuleService;
import com.ruoyi.system.vo.TMissionAssignRuleVO;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * <p>
@@ -17,4 +25,22 @@
@Service
public class TMissionAssignRuleServiceImpl extends ServiceImpl<TMissionAssignRuleMapper, TMissionAssignRule> implements TMissionAssignRuleService {
    @Override
    public boolean isExit(TMissionAssignRuleDTO dto) {
        if(StringUtils.isNotEmpty(dto.getId())){
            // 修改
            return this.count(Wrappers.lambdaQuery(TMissionAssignRule.class).ne(TMissionAssignRule::getId, dto.getId()).eq(TMissionAssignRule::getTypeName, dto.getTypeName())) > 0;
        }else {
            // 新增
            return this.count(Wrappers.lambdaQuery(TMissionAssignRule.class).eq(TMissionAssignRule::getTypeName, dto.getTypeName())) > 0;
        }
    }
    @Override
    public PageInfo<TMissionAssignRuleVO> pageList(TMissionAssignRuleQuery query) {
        PageInfo<TMissionAssignRuleVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<TMissionAssignRuleVO> list = this.baseMapper.pageList(query,pageInfo);
        pageInfo.setRecords(list);
        return pageInfo;
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TMissionServiceImpl.java
@@ -6,8 +6,14 @@
import com.ruoyi.system.model.TMission;
import com.ruoyi.system.query.TMissionQuery;
import com.ruoyi.system.service.TMissionService;
import com.ruoyi.system.vo.TMissionReassignVO;
import com.ruoyi.system.vo.TMissionVO;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.time.Duration;
import java.util.List;
import java.util.Objects;
/**
 * <p>
@@ -21,7 +27,66 @@
public class TMissionServiceImpl extends ServiceImpl<TMissionMapper, TMission> implements TMissionService {
    @Override
    public PageInfo<TMissionVO> pageList(TMissionQuery query) {
        return null;
    public PageInfo<TMissionVO> pageListAssigned(TMissionQuery query) {
        PageInfo<TMissionVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<TMissionVO> list = this.baseMapper.pageListAssigned(query, pageInfo);
        if(CollectionUtils.isEmpty(list)){
            return pageInfo;
        }
        // 计算时间差
        for (TMissionVO tMissionVO : list) {
            if(Objects.nonNull(tMissionVO.getAssignTime())){
                if(Objects.nonNull(tMissionVO.getReceiveTime())){
                    // 计算LocalDateTime两个时间相差秒数
                    Duration duration = Duration.between(tMissionVO.getAssignTime(), tMissionVO.getReceiveTime());
                    tMissionVO.setResponseTimePoor(duration.getSeconds());
                }
                if(Objects.nonNull(tMissionVO.getFinishTime())){
                    // 计算LocalDateTime两个时间相差小时
                    Duration duration = Duration.between(tMissionVO.getReceiveTime(), tMissionVO.getFinishTime());
                    double minutes = (double) duration.toMinutes();
                    minutes = minutes / 60;
                    tMissionVO.setFinishTimePoor(minutes);
                }
            }
        }
        pageInfo.setRecords(list);
        return pageInfo;
    }
    @Override
    public PageInfo<TMissionReassignVO> pageListReassignAudit(TMissionQuery query) {
        PageInfo<TMissionReassignVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<TMissionReassignVO> list = this.baseMapper.pageListReassignAudit(query, pageInfo);
        pageInfo.setRecords(list);
        return pageInfo;
    }
    @Override
    public PageInfo<TMissionVO> pageListMissionPool(TMissionQuery query) {
        PageInfo<TMissionVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<TMissionVO> list = this.baseMapper.pageListMissionPool(query, pageInfo);
        if(CollectionUtils.isEmpty(list)){
            return pageInfo;
        }
        // 计算时间差
        for (TMissionVO tMissionVO : list) {
            if(Objects.nonNull(tMissionVO.getAssignTime())){
                if(Objects.nonNull(tMissionVO.getReceiveTime())){
                    // 计算LocalDateTime两个时间相差秒数
                    Duration duration = Duration.between(tMissionVO.getAssignTime(), tMissionVO.getReceiveTime());
                    tMissionVO.setResponseTimePoor(duration.getSeconds());
                }
                if(Objects.nonNull(tMissionVO.getFinishTime())){
                    // 计算LocalDateTime两个时间相差小时
                    Duration duration = Duration.between(tMissionVO.getReceiveTime(), tMissionVO.getFinishTime());
                    double minutes = (double) duration.toMinutes();
                    minutes = minutes / 60;
                    tMissionVO.setFinishTimePoor(minutes);
                }
            }
        }
        pageInfo.setRecords(list);
        return pageInfo;
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TMissionAssignRuleVO.java
New file
@@ -0,0 +1,18 @@
package com.ruoyi.system.vo;
import com.ruoyi.system.model.TMissionAssignRule;
import com.ruoyi.system.model.TMissionAssignRuleIndicator;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel(value = "TMissionAssignRuleVO对象", description = "任务指派规则视图对象")
public class TMissionAssignRuleVO extends TMissionAssignRule {
    @ApiModelProperty(value = "任务指派指标列表")
    private List<TMissionAssignRuleIndicator> missionAssignRuleIndicators;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TMissionReassignVO.java
New file
@@ -0,0 +1,29 @@
package com.ruoyi.system.vo;
import com.ruoyi.system.model.TMissionReassign;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "任务支援、改派TMissionReassignVO")
public class TMissionReassignVO extends TMissionReassign {
    @ApiModelProperty(value = "负责人")
    private String chargePerson;
    @ApiModelProperty(value = "紧急程度 1=一般 2=加急 3=特急")
    private Integer urgencyLevel;
    @ApiModelProperty(value = "任务内容")
    private String missionContent;
    @ApiModelProperty(value = "任务音频")
    private String missionAudio;
    @ApiModelProperty(value = "任务图片")
    private String missionPictures;
    @ApiModelProperty(value = "状态 1=待指派 2=待完成 3=待评分 4=已完成 5=待改派")
    private Integer status;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TMissionVO.java
@@ -3,10 +3,23 @@
import com.ruoyi.system.model.TMission;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "任务管理对象TMissionVO")
public class TMissionVO extends TMission {
    @ApiModelProperty(value = "负责人")
    private String chargePerson;
    @ApiModelProperty(value = "任务评分")
    private Double missionScore;
    @ApiModelProperty(value = "响应时间差")
    private Long responseTimePoor;
    @ApiModelProperty(value = "完成时间差")
    private Double finishTimePoor;
}
ruoyi-system/src/main/resources/mapper/system/TMissionAssignRuleMapper.xml
@@ -19,5 +19,12 @@
    <sql id="Base_Column_List">
        id, type_name, rule_type, rule_value, create_time, update_time, create_by, update_by, disabled
    </sql>
    <select id="pageList" resultType="com.ruoyi.system.vo.TMissionAssignRuleVO">
        SELECT
        <include refid="Base_Column_List"/>
            FROM t_mission_assign_rule
        where disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        order by create_time desc
    </select>
</mapper>
ruoyi-system/src/main/resources/mapper/system/TMissionMapper.xml
@@ -24,7 +24,10 @@
        <result column="person_count_score" property="personCountScore" />
        <result column="equipment_score" property="equipmentScore" />
        <result column="attempt_score" property="attemptScore" />
        <result column="assign_time" property="assignTime" />
        <result column="receive_time" property="receiveTime" />
        <result column="finish_time" property="finishTime" />
        <result column="is_mission_pool" property="isMissionPool" />
        <result column="create_time" property="createTime" />
        <result column="update_time" property="updateTime" />
        <result column="create_by" property="createBy" />
@@ -36,8 +39,87 @@
    <sql id="Base_Column_List">
        id, urgency_level, address, mission_lon, mission_lat, mission_content, mission_audio, mission_pictures,
          mission_electronic, status, mission_type_id, commit_user_name, commit_time, commit_user_id, commit_type,
          address_score, time_score, person_count_score, equipment_score, attempt_score,finish_time, create_time,
          update_time, create_by, update_by, disabled
          address_score, time_score, person_count_score, equipment_score, attempt_score,assign_time,receive_time,
          finish_time,is_mission_pool, create_time,update_time, create_by, update_by, disabled
    </sql>
    <select id="pageListAssigned" resultType="com.ruoyi.system.vo.TMissionVO">
        select tm.id, tm.urgency_level, tm.address, tm.mission_lon, tm.mission_lat, tm.mission_content, tm.mission_audio, tm.mission_pictures,
               tm.mission_electronic, tm.status, tm.mission_type_id, tm.assign_time,tm.receive_time,tm.finish_time,tmu.app_user_id,
               tau.nick_name as chargePerson,(tm.address_score, tm.time_score, tm.person_count_score, tm.equipment_score, tm.attempt_score) as missionScore
        from t_mission tm
        left join t_mission_user tmu on tm.id = tmu.mission_id and tmu.user_type = 1
        left join t_app_user tau on tau.id = tmu.app_user_id
        <where>
            <if test="query.urgencyLevel != null">
                and tm.urgency_level = #{query.urgencyLevel}
            </if>
            <if test="query.missionContent != null and query.missionContent != ''">
                and tm.mission_content like concat('%',#{query.missionContent},'%')
            </if>
            <if test="query.chargePerson != null and query.chargePerson != ''">
                and tau.nick_name like concat('%',#{query.chargePerson},'%')
            </if>
            <if test="query.status != null">
                and tm.status = #{query.status}
            </if>
            AND tm.is_mission_pool = 0
            AND tm.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        </where>
        order by tm.create_time desc
    </select>
    <select id="pageListReassignAudit" resultType="com.ruoyi.system.vo.TMissionReassignVO">
        select
        tmr.id, tmr.mission_id, tmr.support_person_count, tmr.remark,tmr.reassign_type, tm.urgency_level, tm.mission_content, tm.mission_audio,
        tm.mission_pictures,tm.status, tmu.app_user_id,tau.nick_name as chargePerson
        from t_mission_reassign tmr
        left join t_mission tm on tmr.mission_id = tm.id
        left join t_mission_user tmu on tm.id = tmu.mission_id and tmu.user_type = 1
        left join t_app_user tau on tau.id = tmu.app_user_id
        <where>
            <if test="query.urgencyLevel != null">
                and tm.urgency_level = #{query.urgencyLevel}
            </if>
            <if test="query.missionContent != null and query.missionContent != ''">
                and tm.mission_content like concat('%',#{query.missionContent},'%')
            </if>
            <if test="query.chargePerson != null and query.chargePerson != ''">
                and tau.nick_name like concat('%',#{query.chargePerson},'%')
            </if>
            <if test="query.status != null">
                and tm.status = #{query.status}
            </if>
            <if test="query.reassignType != null">
                and tmr.reassign_type = #{query.reassignType}
            </if>
            AND tm.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        </where>
        order by tmr.commit_time desc
    </select>
    <select id="pageListMissionPool" resultType="com.ruoyi.system.vo.TMissionVO">
        select tm.id, tm.urgency_level, tm.address, tm.mission_lon, tm.mission_lat, tm.mission_content, tm.mission_audio, tm.mission_pictures,
        tm.mission_electronic, tm.status, tm.mission_type_id, tm.assign_time,tm.receive_time,tm.finish_time,tmu.app_user_id,
        tau.nick_name as chargePerson,(tm.address_score, tm.time_score, tm.person_count_score, tm.equipment_score, tm.attempt_score) as missionScore
        from t_mission tm
        left join t_mission_user tmu on tm.id = tmu.mission_id and tmu.user_type = 1
        left join t_app_user tau on tau.id = tmu.app_user_id
        <where>
            <if test="query.urgencyLevel != null">
                and tm.urgency_level = #{query.urgencyLevel}
            </if>
            <if test="query.missionContent != null and query.missionContent != ''">
                and tm.mission_content like concat('%',#{query.missionContent},'%')
            </if>
            <if test="query.chargePerson != null and query.chargePerson != ''">
                and tau.nick_name like concat('%',#{query.chargePerson},'%')
            </if>
            <if test="query.status != null">
                and tm.status = #{query.status}
            </if>
            and tm.status in (1,2)
            AND tm.is_mission_pool = 1
            AND tm.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        </where>
        order by tm.create_time desc
    </select>
</mapper>