From 5719d901b424f3b9b60f46731e7b1cd607dae733 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期一, 18 三月 2024 17:31:30 +0800 Subject: [PATCH] 工单下发 --- ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java | 5 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DistributeWorkOrderVO.java | 55 +++++++++++ ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java | 32 ++++++ ycl-common/src/main/java/enumeration/general/FastDistributeTypeEnum.java | 32 ++++++ ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java | 14 ++ ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 56 ++++++++++- ycl-common/src/main/java/enumeration/general/WorkOrderStatusEnum.java | 34 ++++++ ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java | 16 +++ 8 files changed, 237 insertions(+), 7 deletions(-) diff --git a/ycl-common/src/main/java/enumeration/general/FastDistributeTypeEnum.java b/ycl-common/src/main/java/enumeration/general/FastDistributeTypeEnum.java new file mode 100644 index 0000000..c73c7c2 --- /dev/null +++ b/ycl-common/src/main/java/enumeration/general/FastDistributeTypeEnum.java @@ -0,0 +1,32 @@ +package enumeration.general; + +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Getter; + +/** + * 蹇�熶笅鍙戞柟寮� + * + * @author锛歺p + * @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; + } + +} diff --git a/ycl-common/src/main/java/enumeration/general/WorkOrderStatusEnum.java b/ycl-common/src/main/java/enumeration/general/WorkOrderStatusEnum.java new file mode 100644 index 0000000..ba1e31f --- /dev/null +++ b/ycl-common/src/main/java/enumeration/general/WorkOrderStatusEnum.java @@ -0,0 +1,34 @@ +package enumeration.general; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Getter; + +/** + * 宸ュ崟鐘舵�� + * + * @author锛歺p + * @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; + } + +} diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java index 0fd9dd9..7fc775b 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java +++ b/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") diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java new file mode 100644 index 0000000..aa4660b --- /dev/null +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java @@ -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; + + +} + diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DistributeWorkOrderVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DistributeWorkOrderVO.java new file mode 100644 index 0000000..5aaf9f7 --- /dev/null +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DistributeWorkOrderVO.java @@ -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; + +} + diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java b/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java index 55eca29..cfb6d38 100644 --- a/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java +++ b/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) { diff --git a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java index def92e3..deb6924 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java +++ b/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); } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java index 607e09a..c64d795 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java +++ b/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 -- Gitblit v1.8.0