ycl-common/src/main/java/enumeration/general/FastDistributeTypeEnum.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-common/src/main/java/enumeration/general/WorkOrderStatusEnum.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DistributeWorkOrderVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | 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