龚焕茏
2024-04-18 b43ede1ee201c0d6aaede56e0fa3c4894c892e3c
工单下发:下发记录增加下发状态
5个文件已修改
1个文件已添加
79 ■■■■ 已修改文件
ycl-common/src/main/java/enumeration/general/WorkOrderDistributeWayEnum.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrderDistributeRecord.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/WorkOrderDistributeRecordMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>