ycl-common/src/main/java/enumeration/general/WorkOrderDistributeWayEnum.java
New file @@ -0,0 +1,33 @@ package enumeration.general; import com.baomidou.mybatisplus.annotation.EnumValue; import com.fasterxml.jackson.annotation.JsonValue; import lombok.Getter; /** * 工单下发方式 * * @author:gonghl * @date:2024/4/18 */ @Getter public enum WorkOrderDistributeWayEnum { SELECTED_DISTRIBUTE("SELECTED_DISTRIBUTE", "选择下发"), ALL_DISTRIBUTE("ALL_DISTRIBUTE", "全部下发"), FAST_DISTRIBUTE("FAST_DISTRIBUTE", "快捷下发"), ; @EnumValue // 标明该字段存入数据库 @JsonValue // 标明在转JSON时使用该字段,即响应时 private final String value; private final String desc; WorkOrderDistributeWayEnum(String value, String desc) { this.value = value; this.desc = desc; } } ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrderDistributeRecord.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.ycl.platform.base.AbsEntity; import enumeration.general.WorkOrderDistributeWayEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; @@ -34,5 +35,8 @@ @TableField("user_id") private Long userId; @ApiModelProperty("下发方式") @TableField("distribute_way") private WorkOrderDistributeWayEnum distributeWay; } ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
@@ -120,7 +120,7 @@ @PostMapping("/distribute/ids") @ApiOperation(value = "下发选择", notes = "下发选择") public Result selectedIdsDistribute(@RequestBody DistributeWorkOrderQuery query) { return workOrderService.selectedIdsDistribute(query.getIds(), query.getUnitId()); return workOrderService.selectedIdsDistribute(query); } @GetMapping("/{id}") ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
@@ -133,6 +133,6 @@ * @param ids id * @return 结果 */ Result selectedIdsDistribute(List<Integer> ids, Integer unitId); Result selectedIdsDistribute(DistributeWorkOrderQuery query); } ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -21,6 +21,7 @@ import com.ycl.utils.SecurityUtils; import com.ycl.utils.redis.RedisCache; import enumeration.general.NotifyTypeEnum; import enumeration.general.WorkOrderDistributeWayEnum; import enumeration.general.WorkOrderStatusEnum; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.ArrayUtils; @@ -316,41 +317,44 @@ .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED) .in(WorkOrder::getId, ids) .update(); addDistributeRecord(ids); addDistributeRecord(ids, WorkOrderDistributeWayEnum.FAST_DISTRIBUTE); return Result.ok("成功下发" + ids.size() + "条工单"); } catch (Exception e) { return Result.ok("操作失败"); return Result.error("操作失败"); } finally { distributeUnLock(); } } @Override public Result selectedIdsDistribute(List<Integer> ids, Integer unitId) { public Result selectedIdsDistribute(DistributeWorkOrderQuery query) { WorkOrderDistributeWayEnum distributeWayEnum = WorkOrderDistributeWayEnum.SELECTED_DISTRIBUTE; if (!getDistributeLock()) { return Result.error("工单下发中,请稍后重试"); return Result.error("此刻有人下发中,为避免冲突,请稍后重试"); } try { if (ids.isEmpty()) { ids = new LambdaQueryChainWrapper<>(baseMapper) if (query.getIds().isEmpty()) { query.setIds(new LambdaQueryChainWrapper<>(baseMapper) .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE) .eq(Objects.nonNull(unitId), WorkOrder::getUnitId, unitId) .eq(Objects.nonNull(query.getUnitId()), WorkOrder::getUnitId, query.getUnitId()) .select(WorkOrder::getId) .list() .stream() .map(WorkOrder::getId) .collect(Collectors.toList()); .collect(Collectors.toList())); distributeWayEnum = WorkOrderDistributeWayEnum.ALL_DISTRIBUTE; } if (query.getIds().isEmpty()) { return Result.error("没有工单待下发"); } new LambdaUpdateChainWrapper<>(baseMapper) .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED) .in(WorkOrder::getId, ids) .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE) .eq(Objects.nonNull(unitId), WorkOrder::getUnitId, unitId) .in(WorkOrder::getId, query.getIds()) .update(); addDistributeRecord(ids); addDistributeRecord(query.getIds(), distributeWayEnum); return Result.ok("操作成功"); } catch (Exception e) { return Result.ok("操作失败"); return Result.error("操作失败"); } finally { distributeUnLock(); } @@ -380,11 +384,11 @@ * 添加工单下发记录 * @param ids 工单id */ private void addDistributeRecord(List<Integer> ids) { private void addDistributeRecord(List<Integer> ids, WorkOrderDistributeWayEnum distributeWay) { LoginUser loginUser = SecurityUtils.getLoginUser(); workOrderDistributeRecordMapper.insertBatch( ids.stream() .map(id -> new WorkOrderDistributeRecord(id, loginUser.getUserId())) .map(id -> new WorkOrderDistributeRecord(id, loginUser.getUserId(), distributeWay)) .toList() ); } ycl-server/src/main/resources/mapper/zgyw/WorkOrderDistributeRecordMapper.xml
@@ -4,10 +4,10 @@ <insert id="insertBatch"> insert into t_work_order_distribute_record (work_order_id, user_id, create_time, deleted) insert into t_work_order_distribute_record (work_order_id, user_id, create_time, deleted, distribute_way) values <foreach collection="list" item="item" separator=","> (#{item.workOrderId}, #{item.userId}, now(), '0') (#{item.workOrderId}, #{item.userId}, now(), '0', #{item.distributeWay}) </foreach> </insert> </mapper>