xiangpei
2024-03-18 5719d901b424f3b9b60f46731e7b1cd607dae733
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -1,30 +1,32 @@
package com.ycl.platform.service.impl;
import com.ycl.platform.domain.entity.WorkOrder;
import com.ycl.platform.domain.entity.YwPeople;
import com.ycl.platform.domain.entity.YwUnit;
import com.ycl.platform.mapper.WorkOrderMapper;
import com.ycl.platform.mapper.YwPeopleMapper;
import com.ycl.platform.mapper.YwUnitMapper;
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;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.platform.domain.form.WorkOrderForm;
import com.ycl.platform.domain.vo.WorkOrderVO;
import com.ycl.platform.domain.query.WorkOrderQuery;
import java.util.List;
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;
@@ -42,6 +44,8 @@
    private final WorkOrderMapper workOrderMapper;
    private final YwUnitMapper ywUnitMapper;
    private final YwPeopleMapper ywPeopleMapper;
    private final WorkOrderAuditingRecordMapper workOrderAuditingRecordMapper;
    private final WorkOrderYwConditionRecordMapper workOrderYwConditionRecordMapper;
    /**
@@ -77,6 +81,59 @@
        return Result.error("修改失败");
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result auditing(WorkOrderAuditingForm form) {
        WorkOrder workOrder = baseMapper.selectById(form.getId());
        if (Objects.isNull(workOrder)) {
            throw new ServiceException("工单不存在");
        }
        // 工单状态
        if ("pass".equals(form.getAuditingResult())) {
            workOrder.setStatus(WorkOrderStatusEnum.FINISH);
        } else {
            workOrder.setStatus(WorkOrderStatusEnum.AUDITING);
        }
        baseMapper.updateById(workOrder);
        // 添加一条审核记录
        WorkOrderAuditingRecord workOrderAuditingRecord = new WorkOrderAuditingRecord();
        workOrderAuditingRecord.setWorkOrderId(workOrder.getId());
        workOrderAuditingRecord.setAuditingUser(1);
        workOrderAuditingRecord.setResult(form.getAuditingResult());
        workOrderAuditingRecord.setRemark(form.getAuditingRemark());
        workOrderAuditingRecordMapper.insert(workOrderAuditingRecord);
        return Result.ok("操作成功");
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result ywCondition(WorkOrderYWConditionForm form) {
        WorkOrder workOrder = baseMapper.selectById(form.getId());
        if (Objects.isNull(workOrder)) {
            throw new ServiceException("工单不存在");
        }
        // 工单状态
//        workOrder.setStatus("commit-condition");
        baseMapper.updateById(workOrder);
        // 添加一条运维情况记录
        WorkOrderYwConditionRecord workOrderYwConditionRecord = new WorkOrderYwConditionRecord();
        workOrderYwConditionRecord.setWorkOrderId(workOrder.getId());
        workOrderYwConditionRecord.setCommitUser(1);
        workOrderYwConditionRecord.setYwCondition(form.getYwCondition());
        workOrderYwConditionRecordMapper.insert(workOrderYwConditionRecord);
        return Result.ok("操作成功");
    }
    @Override
    public Result ywResult(WorkOrderYWResultForm form) {
        return null;
    }
    @Override
    public Result checkResult(WorkOrderCheckResultForm form) {
        return null;
    }
    /**
     * 批量删除
     * @param ids
@@ -110,10 +167,13 @@
     */
    @Override
    public Result page(WorkOrderQuery query) {
        IPage<WorkOrder> page = new LambdaQueryChainWrapper<>(baseMapper)
                .eq(StringUtils.hasText(query.getWorkOrderNo()), WorkOrder::getWorkOrderNo, query.getWorkOrderNo())
                .between(Objects.nonNull(query.getStart()) && Objects.nonNull(query.getEnd()),WorkOrder::getYwHandleTime, query.getStart(), query.getEnd())
                .ne(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE)
                .between(Objects.nonNull(query.getStart()) && Objects.nonNull(query.getEnd()),
                        WorkOrder::getYwHandleTime,
                        DateUtils.getDayStart(query.getStart()),
                        DateUtils.getDayEnd(query.getEnd()))
                .orderByDesc(WorkOrder::getCreateTime)
                .page(PageUtil.getPage(query, WorkOrder.class));
@@ -136,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