| | |
| | | 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; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | @Service |
| | | public class XpWorkOrderServiceImpl extends ServiceImpl<XpWorkOrderMapper, XpWorkOrder> implements IXpWorkOrderService { |
| | | |
| | | @Autowired |
| | | private SysUserClient sysUserClient; |
| | | @Autowired |
| | | |
| | | private XpSystemSettingClient systemSettingClient; |
| | | |
| | | @Autowired |
| | | private XpWorkOrderLogMapper workOrderLogMapper; |
| | | |
| | | @Override |
| | | public PageInfo<XpWorkOrder> pageList(WorkOrderPageListQuery query) { |
| | | PageInfo<XpWorkOrder> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); |
| | | List<XpWorkOrder> list = this.baseMapper.pageList(pageInfo, query); |
| | | if (list.isEmpty()) { |
| | | return new PageInfo<>(); |
| | | } |
| | | List<Long> handleUserIds = list.stream().map(XpWorkOrder::getHandleUserId).collect(Collectors.toList()); |
| | | List<SysUser> sysUsers = sysUserClient.listByIds(handleUserIds).getData(); |
| | | Map<Long, String> 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<XpWorkOrderLog> workOrderLogs = workOrderLogMapper.selectList(new LambdaQueryWrapper<XpWorkOrderLog>() |
| | | .eq(XpWorkOrderLog::getWorkOrderId, id)); |
| | | XpFeedbackType feedbackType = systemSettingClient.getFeedbackTypeById(workOrder.getFeedbackTypeId()).getData(); |
| | | if (feedbackType != null) { |
| | | workOrder.setFeedbackTypeName(feedbackType.getFeedbackType()); |
| | | } |
| | | if (workOrderLogs.isEmpty()) { |
| | | return workOrder; |
| | | } |
| | | List<Long> handleUserIds = workOrderLogs.stream().map(XpWorkOrderLog::getHandleUserId).collect(Collectors.toList()); |
| | | List<SysUser> sysUsers = sysUserClient.listByIds(handleUserIds).getData(); |
| | | Map<Long, String> 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); |
| | | } |
| | | } |