陈昶聿
昨天 91f8f35123a27c923e5006e0324829fbe3d9da65
【丽水】smartor/servicetask/list 接口优化
已修改3个文件
45 ■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java
@@ -26,6 +26,7 @@
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDate;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -45,7 +46,7 @@
    private IServiceTaskService serviceTaskService;
    @Autowired
    private IServiceSubtaskService iServiceTaskCallService;
    private IServiceSubtaskService iServiceSubtaskService;
    @Value("${pub_key}")
    private String pub_key;
@@ -69,20 +70,33 @@
        List<ServiceTask> list = serviceTaskService.selectServiceTaskAndtaskDeptList(serviceTask);
        List<ServiceTaskVO> serviceTaskVOS = DtoConversionUtils.sourceToTarget(list, ServiceTaskVO.class);
        if (CollectionUtils.isNotEmpty(serviceTaskVOS)) {
            for (ServiceTaskVO ServiceTaskVO : serviceTaskVOS) {
        List<Long> taskIds = list.stream().map(ServiceTask::getTaskid).collect(Collectors.toList());
                ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
                serviceSubtaskVO.setTaskid(ServiceTaskVO.getTaskid());
        serviceSubtaskVO.setTaskIds(taskIds);
                serviceSubtaskVO.setStartOutHospTime(serviceTask.getStartOutHospTime());
                serviceSubtaskVO.setEndOutHospTime(serviceTask.getEndOutHospTime());
                List<ServiceSubtask> ServiceTaskcalls = iServiceTaskCallService.selectServiceSubtaskList(serviceSubtaskVO);
                if (CollectionUtils.isNotEmpty(ServiceTaskcalls)) {
        // 批量查询所有子任务
        Map<Long, List<ServiceSubtask>> subtaskMap = iServiceSubtaskService
                .selectServiceSubtaskList(serviceSubtaskVO)
                .stream()
                .collect(Collectors.groupingBy(ServiceSubtask::getTaskid));
        if (CollectionUtils.isNotEmpty(serviceTaskVOS)) {
            for (ServiceTaskVO taskVO : serviceTaskVOS) {
                List<ServiceSubtask> subtasks = subtaskMap.getOrDefault(taskVO.getTaskid(), Collections.emptyList());
                if (CollectionUtils.isNotEmpty(subtasks)) {
                    //已发送(子任务中的 sendstate=1为被领取)
                    long yfs = ServiceTaskcalls.stream().filter(serviceTaskcall1 -> (serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() >= 3L) || (serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() == 1L)).collect(Collectors.toList()).stream().count();
                    long yfs = subtasks.stream().filter(s -> s.getSendstate() != null &&
                            (s.getSendstate() >= 3L || s.getSendstate() == 1L)).count();
                    //未发送
                    long wfs = ServiceTaskcalls.stream().filter(serviceTaskcall1 -> serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() == 2L).collect(Collectors.toList()).stream().count();
                    ServiceTaskVO.setYfs(yfs);
                    ServiceTaskVO.setWfs(wfs);
                    long wfs = subtasks.stream().filter(s -> s.getSendstate() != null &&
                            s.getSendstate() == 2L).count();
                    taskVO.setYfs(yfs);
                    taskVO.setWfs(wfs);
                }
            }
smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java
@@ -151,6 +151,9 @@
    @ApiModelProperty(value = "任务ID")
    private Long taskid;
    @ApiModelProperty(value = "任务Id集合")
    private List<Long> taskIds;
    /**
     * 模板ID
     */
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -278,6 +278,14 @@
            <if test="senderdetail != null  and senderdetail != ''">and senderdetail = #{senderdetail}</if>
            <if test="type != null  and type != ''">and type = #{type}</if>
            <if test="taskid != null ">and taskid = #{taskid}</if>
            <!-- taskIds筛选 -->
            <if test="taskIds != null and taskIds.size() > 0">
                AND taskid IN
                <foreach collection="taskIds" item="itemTaskId" open="(" separator=","
                         close=")">
                    #{itemTaskId}
                </foreach>
            </if>
            <if test="templateid != null  and templateid != ''">and templateid = #{templateid}</if>
            <if test="templatename != null  and templatename != ''">and templatename like concat('%', #{templatename},
                '%')