xiangpei
2024-03-18 5719d901b424f3b9b60f46731e7b1cd607dae733
工单下发
4个文件已修改
4个文件已添加
244 ■■■■■ 已修改文件
ycl-common/src/main/java/enumeration/general/FastDistributeTypeEnum.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/enumeration/general/WorkOrderStatusEnum.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DistributeWorkOrderVO.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/enumeration/general/FastDistributeTypeEnum.java
New file
@@ -0,0 +1,32 @@
package enumeration.general;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;
/**
 * 快速下发方式
 *
 * @author:xp
 * @date:2024/3/4 15:15
 */
@Getter
public enum FastDistributeTypeEnum {
    LAST_HALF_HOUR("LAST_HALF_HOUR", "最近半小时"),
    LAST_HOUR("LAST_HOUR", "最近一小时"),
    LAST_TWO_HOUR("LAST_TWO_HOUR", "最近两小时"),
    LAST_DAY("LAST_DAY", "最近一天"),
    CUSTOM("CUSTOM", "自定义")
    ;
    @JsonValue
    private final String value;
    private final String desc;
    FastDistributeTypeEnum(String value, String desc) {
        this.value = value;
        this.desc = desc;
    }
}
ycl-common/src/main/java/enumeration/general/WorkOrderStatusEnum.java
New file
@@ -0,0 +1,34 @@
package enumeration.general;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;
/**
 * 工单状态
 *
 * @author:xp
 * @date:2024/3/4 15:15
 */
@Getter
public enum WorkOrderStatusEnum {
    WAIT_DISTRIBUTE("WAIT_DISTRIBUTE", "等待下发"),
    DISTRIBUTED("DISTRIBUTED", "已下发"),
    AUDITING("AUDITING", "审核中"),
    FINISH("FINISH", "已完成"),
    ;
    @EnumValue // 标明该字段存入数据库
    @JsonValue // 标明在转JSON时使用该字段,即响应时
    private final String value;
    private final String desc;
    WorkOrderStatusEnum(String value, String desc) {
        this.value = value;
        this.desc = desc;
    }
}
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java
@@ -2,10 +2,11 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.ycl.platform.base.AbsEntity;
import enumeration.general.WorkOrderStatusEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -47,7 +48,7 @@
    @ApiModelProperty("状态")
    @TableField("status")
    private String status;
    private WorkOrderStatusEnum status;
    @ApiModelProperty("运维处理时间")
    @TableField("yw_handle_time")
ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java
New file
@@ -0,0 +1,32 @@
package com.ycl.platform.domain.query;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.platform.base.AbsQuery;
import enumeration.general.FastDistributeTypeEnum;
import io.swagger.annotations.ApiModel;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.Date;
/**
 * 下发工单查询
 *
 * @author xp
 * @since 2024-03-05
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "下发工单查询", description = "下发工单查询")
public class DistributeWorkOrderQuery extends AbsQuery {
    /**
     * 运维单位
     */
    private Integer unitId;
}
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DistributeWorkOrderVO.java
New file
@@ -0,0 +1,55 @@
package com.ycl.platform.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.platform.base.AbsQuery;
import enumeration.general.FastDistributeTypeEnum;
import io.swagger.annotations.ApiModel;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.Date;
/**
 * 下发工单查询
 *
 * @author xp
 * @since 2024-03-05
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "下发工单查询", description = "下发工单查询")
public class DistributeWorkOrderVO extends AbsQuery {
    /**
     * 运维单位
     */
    private Integer unitId;
    /**
     * 快速下发方式
     */
//    @NotNull(message = "请选择快捷下发方式")
    private FastDistributeTypeEnum fastWay;
    /**
     * 快速下发工单数量
     */
    @Min(value = 0, message = "下发最大数量应该大于1")
    private Integer fastNumLimit;
    /**
     * 时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date start;
    /**
     * 时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date end;
}
ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
@@ -1,6 +1,8 @@
package com.ycl.platform.controller;
import com.ycl.platform.domain.form.*;
import com.ycl.platform.domain.query.DistributeWorkOrderQuery;
import com.ycl.platform.domain.vo.DistributeWorkOrderVO;
import com.ycl.system.domain.group.Update;
import com.ycl.system.domain.group.Add;
import org.springframework.validation.annotation.Validated;
@@ -85,6 +87,18 @@
        return workOrderService.page(query);
    }
    @PostMapping("/distribute/page")
    @ApiOperation(value = "下发分页", notes = "下发分页")
    public Result distributePage(@RequestBody DistributeWorkOrderQuery query) {
        return workOrderService.distributePage(query);
    }
    @PostMapping("/distribute/fast")
    @ApiOperation(value = "快速下发", notes = "快速下发")
    public Result distributeFast(@RequestBody @Validated DistributeWorkOrderVO data) {
        return workOrderService.distributeFast(data);
    }
    @GetMapping("/{id}")
    @ApiOperation(value = "详情", notes = "详情")
    public Result detail(@PathVariable("id") String id) {
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
@@ -3,6 +3,8 @@
import com.ycl.platform.domain.entity.WorkOrder;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.platform.domain.form.*;
import com.ycl.platform.domain.query.DistributeWorkOrderQuery;
import com.ycl.platform.domain.vo.DistributeWorkOrderVO;
import com.ycl.system.Result;
import com.ycl.platform.domain.query.WorkOrderQuery;
import java.util.List;
@@ -90,4 +92,18 @@
     * @return
     */
    Result checkResult(WorkOrderCheckResultForm form);
    /**
     * 下发分页
     * @param query
     * @return
     */
    Result distributePage(DistributeWorkOrderQuery query);
    /**
     * 快速下发
     * @param data
     * @return
     */
    Result distributeFast(DistributeWorkOrderVO data);
}
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -1,8 +1,11 @@
package com.ycl.platform.service.impl;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.ycl.exception.ServiceException;
import com.ycl.platform.domain.entity.*;
import com.ycl.platform.domain.form.*;
import com.ycl.platform.domain.query.DistributeWorkOrderQuery;
import com.ycl.platform.domain.vo.DistributeWorkOrderVO;
import com.ycl.platform.mapper.*;
import com.ycl.platform.service.WorkOrderService;
import com.ycl.system.Result;
@@ -14,15 +17,16 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ycl.system.page.PageUtil;
import com.ycl.utils.DateUtils;
import enumeration.general.FastDistributeTypeEnum;
import enumeration.general.WorkOrderStatusEnum;
import org.springframework.stereotype.Service;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.beans.BeanUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.ArrayList;
import java.util.Objects;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import lombok.RequiredArgsConstructor;
import org.springframework.util.StringUtils;
@@ -86,9 +90,9 @@
        }
        // 工单状态
        if ("pass".equals(form.getAuditingResult())) {
            workOrder.setStatus("finish");
            workOrder.setStatus(WorkOrderStatusEnum.FINISH);
        } else {
            workOrder.setStatus("auditing");
            workOrder.setStatus(WorkOrderStatusEnum.AUDITING);
        }
        baseMapper.updateById(workOrder);
        // 添加一条审核记录
@@ -109,7 +113,7 @@
            throw new ServiceException("工单不存在");
        }
        // 工单状态
        workOrder.setStatus("commit-condition");
//        workOrder.setStatus("commit-condition");
        baseMapper.updateById(workOrder);
        // 添加一条运维情况记录
        WorkOrderYwConditionRecord workOrderYwConditionRecord = new WorkOrderYwConditionRecord();
@@ -165,6 +169,7 @@
    public Result page(WorkOrderQuery query) {
        IPage<WorkOrder> page = new LambdaQueryChainWrapper<>(baseMapper)
                .eq(StringUtils.hasText(query.getWorkOrderNo()), WorkOrder::getWorkOrderNo, query.getWorkOrderNo())
                .ne(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE)
                .between(Objects.nonNull(query.getStart()) && Objects.nonNull(query.getEnd()),
                        WorkOrder::getYwHandleTime,
                        DateUtils.getDayStart(query.getStart()),
@@ -191,6 +196,47 @@
        return Result.ok().data(vos).total(page.getTotal());
    }
    @Override
    public Result distributePage(DistributeWorkOrderQuery query) {
        IPage<WorkOrder> page = new LambdaQueryChainWrapper<>(baseMapper)
                .eq(Objects.nonNull(query.getUnitId()), WorkOrder::getUnitId, query.getUnitId())
                .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE)
                .orderByDesc(WorkOrder::getCreateTime)
                .page(PageUtil.getPage(query, WorkOrder.class));
        List<WorkOrderVO> vos = page.getRecords().stream()
                .map(
                        entity -> {
                            WorkOrderVO vo = WorkOrderVO.getVoByEntity(entity, null);
                            YwUnit unit = ywUnitMapper.selectById(vo.getUnitId());
                            if (Objects.nonNull(unit)) {
                                vo.setUnitName(unit.getUnitName());
                            }
                            YwPeople ywPeople = ywPeopleMapper.selectById(vo.getYwPeopleId());
                            if (Objects.nonNull(ywPeople)) {
                                vo.setYwPeopleName(ywPeople.getYwPersonName());
                            }
                            return vo;
                        }
                )
                .collect(Collectors.toList());
        return Result.ok().data(vos).total(page.getTotal());
    }
    @Override
    public Result distributeFast(DistributeWorkOrderVO data) {
        List<WorkOrder> willDistributeList = new ArrayList<>(32);
        // 如果是自定义时间范围
        if (FastDistributeTypeEnum.CUSTOM == data.getFastWay()) {
        }
        new LambdaUpdateChainWrapper<>(baseMapper)
                .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED)
                .update();
        return Result.ok("操作成功");
    }
    /**
     * 根据id查找
     * @param id