fuliqi
2024-08-08 01a30369e55a754c28dec4939a99e59aefecdc60
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -8,11 +8,13 @@
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.query.WorkOrderQuery;
import com.ycl.platform.domain.query.*;
import com.ycl.platform.domain.vo.DistributeWorkOrderVO;
import com.ycl.platform.domain.vo.WorkOrderVO;
import com.ycl.platform.domain.vo.WorkOrderYwConditionRecordVO;
import com.ycl.platform.domain.vo.screen.ScreenWorkOrderVO;
import com.ycl.platform.domain.vo.screen.WorkOrderRegionVO;
import com.ycl.platform.domain.vo.screen.WorkOrderTotalVO;
import com.ycl.platform.mapper.*;
import com.ycl.platform.service.NotifyService;
import com.ycl.platform.service.WorkOrderAuditingRecordService;
@@ -30,6 +32,8 @@
import enumeration.general.WorkOrderDistributeWayEnum;
import enumeration.general.WorkOrderStatusEnum;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -48,6 +52,7 @@
 * @author xp
 * @since 2024-03-05
 */
@Slf4j
@Service
@RequiredArgsConstructor
public class WorkOrderServiceImpl extends ServiceImpl<WorkOrderMapper, WorkOrder> implements WorkOrderService {
@@ -59,12 +64,26 @@
    private final WorkOrderYwConditionRecordMapper workOrderYwConditionRecordMapper;
    private final NotifyService notifyService;
    private final WorkOrderDistributeRecordMapper workOrderDistributeRecordMapper;
    private final TMonitorMapper monitorMapper;
    private final String DISTRIBUTE_LOCK_KEY = "distributeLock";
    private final static String IMPORTANT = "important";
    @Autowired
    private RedisCache redisCache;
    @Override
    public Boolean innerAdd(List<WorkOrder> workOrderList) {
        int total = workOrderList.size();
        workOrderList.stream().filter(item -> {
            return StringUtils.hasText(item.getSerialNumber()) && Objects.nonNull(item.getStatus()) && StringUtils.hasText(item.getErrorType());
        });
        // TODO 自动下发工单
        int real = workOrderList.size();
        boolean result = this.saveBatch(workOrderList);
        log.info("传入工单总数: {},实际添加工单数:{}", total, real);
        return result;
    }
    /**
     * 添加
@@ -125,7 +144,7 @@
        notifyService.save(notify);
        // 同步点位状态
        if (form.getAuditingResult() == WorkOrderStatusEnum.AUDITING_SUCCESS) {
            ywPointService.updateRecovery(Collections.singletonList(workOrder.getPointId()), 0);
            ywPointService.updateRecovery(Arrays.asList(workOrder.getSerialNumber()), 0);
        }
        return Result.ok("操作成功");
    }
@@ -292,7 +311,7 @@
        // 查询符合条件的工单
        List<WorkOrder> list = new LambdaQueryChainWrapper<>(baseMapper)
                .select(WorkOrder::getId, WorkOrder::getPointId)
                .select(WorkOrder::getSerialNumber, WorkOrder::getSerialNumber)
                .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE)
                .eq(Objects.nonNull(data.getUnitId()), WorkOrder::getUnitId, data.getUnitId())
                .eq(WorkOrder::getErrorType, data.getErrorType())
@@ -301,7 +320,7 @@
                .last("limit " + data.getFastNumLimit())
                .list();
        List<Integer> ids = list.stream().map(WorkOrder::getId).toList();
        List<Integer> pointIds = list.stream().map(WorkOrder::getPointId).toList();
        List<String> serialNumberList = list.stream().map(WorkOrder::getSerialNumber).toList();
        if (ids.isEmpty()) { return Result.error("没有符合条件的工单"); }
        if (!getDistributeLock()) { return Result.error("此刻有人下发中,为避免冲突,请稍后重试"); }
@@ -312,7 +331,7 @@
                    .update();
            addDistributeRecord(ids, WorkOrderDistributeWayEnum.FAST_DISTRIBUTE);
            // 同步点位状态
            ywPointService.updateRecovery(pointIds, 1);
            ywPointService.updateRecovery(serialNumberList, 1);
            return Result.ok("成功下发" + ids.size() + "条工单");
        } catch (Exception e) {
            return Result.error("操作失败");
@@ -345,8 +364,8 @@
                    .update();
            addDistributeRecord(query.getIds(), distributeWayEnum);
            // 同步点位状态
            List<Integer> pointIds = new LambdaQueryChainWrapper<>(baseMapper).select(WorkOrder::getPointId).in(WorkOrder::getId, query.getIds()).list().stream().map(WorkOrder::getPointId).toList();
            ywPointService.updateRecovery(pointIds, 1);
            List<String> serialNumberList = new LambdaQueryChainWrapper<>(baseMapper).select(WorkOrder::getSerialNumber).in(WorkOrder::getId, query.getIds()).list().stream().map(WorkOrder::getSerialNumber).toList();
            ywPointService.updateRecovery(serialNumberList, 1);
            return Result.ok("成功下发" + query.getIds().size() + "条工单");
        } catch (Exception e) {
            return Result.error("操作失败");
@@ -416,4 +435,43 @@
                .collect(Collectors.toList());
        return Result.ok().data(vos);
    }
    @Override
    public Result screenWorkOrder(ScreenQuery query) {
        ScreenWorkOrderVO screen = baseMapper.screenWorkOrder(query);
        return Result.ok().data(screen);
    }
    @Override
    public Map<String, Object> home(HomeQuery monitorQuery) {
        Map<String, Object> dataMap = new HashMap<>();
        Map<String, Object> data1 = new HashMap<>();
        Map<String, Object> data2 = new HashMap<>();
        Map<String, Object> data3 = new HashMap<>();
        List<Map<String, Object>> home = baseMapper.home(monitorQuery);
        if (ObjectUtils.isNotEmpty(home)) {
            for (Map<String, Object> map : home) {
                if (Objects.nonNull(map.get("dateType")) && StringUtils.hasText(map.get("dateType").toString())) {
                    data1.put(map.get("dateType").toString(), map.get("num1"));
                    data2.put(map.get("dateType").toString(), map.get("num2"));
                    data3.put(map.get("dateType").toString(), map.get("num3"));
                }
            }
            dataMap.put("name", home.get(0).get("name"));
        }
        dataMap.put("complete", data1);
        dataMap.put("waiting", data2);
        dataMap.put("pending", data3);
        return dataMap;
    }
    @Override
    public WorkOrderTotalVO workOrderTotal(DashboardQuery dashboardQuery) {
        return baseMapper.workOrderTotal(dashboardQuery);
    }
    @Override
    public List<WorkOrderRegionVO> workOrderRegion(DashboardQuery dashboardQuery) {
        return baseMapper.workOrderRegion(dashboardQuery);
    }
}