package com.xiaopeng.maintenance.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.api.feignClient.account.SysUserClient; import com.xiaopeng.api.feignClient.operation.XpSystemSettingClient; import com.xiaopeng.api.model.account.SysUser; import com.xiaopeng.api.model.maintenance.XpWorkOrder; import com.xiaopeng.api.model.maintenance.XpWorkOrderLog; import com.xiaopeng.api.model.operation.XpFeedbackType; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.maintenance.mapper.XpWorkOrderLogMapper; import com.xiaopeng.maintenance.mapper.XpWorkOrderMapper; import com.xiaopeng.maintenance.model.query.WorkOrderPageListQuery; import com.xiaopeng.maintenance.model.vo.TaskManagementPageListVO; import com.xiaopeng.maintenance.service.IXpWorkOrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** *

* 工单管理 服务实现类 *

* * @author mitao * @since 2026-02-03 */ @Service public class XpWorkOrderServiceImpl extends ServiceImpl implements IXpWorkOrderService { @Autowired private SysUserClient sysUserClient; @Autowired private XpSystemSettingClient systemSettingClient; @Autowired private XpWorkOrderLogMapper workOrderLogMapper; @Override public PageInfo pageList(WorkOrderPageListQuery query) { PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List list = this.baseMapper.pageList(pageInfo, query); if (list.isEmpty()) { return new PageInfo<>(); } List handleUserIds = list.stream().map(XpWorkOrder::getHandleUserId).collect(Collectors.toList()); List sysUsers = sysUserClient.listByIds(handleUserIds).getData(); Map userMap = new HashMap<>(); if (sysUsers != null) { userMap = sysUsers.stream().collect(Collectors.toMap(SysUser::getId, SysUser::getNickName)); } for (XpWorkOrder xpWorkOrder : list) { if (xpWorkOrder.getHandleUserId() != null) { String handleUserName = userMap.get(xpWorkOrder.getHandleUserId()); xpWorkOrder.setHandleUserName(handleUserName); if (xpWorkOrder.getHandleUserId().equals(query.getUserId())){ xpWorkOrder.setIsHandle(1); }else{ xpWorkOrder.setIsHandle(0); } } XpFeedbackType feedbackType = systemSettingClient.getFeedbackTypeById(xpWorkOrder.getFeedbackTypeId()).getData(); if (feedbackType != null) { xpWorkOrder.setFeedbackTypeName(feedbackType.getFeedbackType()); } } pageInfo.setRecords(list); return pageInfo; } @Override public XpWorkOrder workOrderDetail(Long id) { XpWorkOrder workOrder = this.getById(id); List workOrderLogs = workOrderLogMapper.selectList(new LambdaQueryWrapper() .eq(XpWorkOrderLog::getWorkOrderId, id)); XpFeedbackType feedbackType = systemSettingClient.getFeedbackTypeById(workOrder.getFeedbackTypeId()).getData(); if (feedbackType != null) { workOrder.setFeedbackTypeName(feedbackType.getFeedbackType()); } if (workOrderLogs.isEmpty()) { return workOrder; } List handleUserIds = workOrderLogs.stream().map(XpWorkOrderLog::getHandleUserId).collect(Collectors.toList()); List sysUsers = sysUserClient.listByIds(handleUserIds).getData(); Map userMap = new HashMap<>(); if (sysUsers != null) { userMap = sysUsers.stream().collect(Collectors.toMap(SysUser::getId, SysUser::getNickName)); } for (XpWorkOrderLog workOrderLog : workOrderLogs) { if (workOrderLog.getHandleUserId() != null) { String handleUserName = userMap.get(workOrderLog.getHandleUserId()); workOrderLog.setHandleUserName(handleUserName); } } workOrder.setWorkOrderLogs(workOrderLogs); return workOrder; } @Override public void handleWorkOrder(XpWorkOrderLog workOrderLog) { XpWorkOrder workOrder = this.getById(workOrderLog.getWorkOrderId()); if (workOrderLog.getHandleType() == 2) { // 办结 工单状态流转为已完成 workOrder.setHandleStatus(3); workOrder.setHandleUserId(workOrderLog.getHandleUserId()); this.updateById(workOrder); }else{ // 移交 workOrder.setHandleStatus(2); workOrder.setHandleUserId(workOrderLog.getHandleUserId()); this.updateById(workOrder); } workOrderLogMapper.insert(workOrderLog); } }