|
@@ -2,14 +2,20 @@ package cn.iocoder.yudao.module.pms.service.iotmainworkorder;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
|
|
+import cn.hutool.core.util.ObjUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
+import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorder.vo.IotMainWorkOrderPageReqVO;
|
|
|
+import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorder.vo.IotMainWorkOrderRespVO;
|
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorder.vo.IotMainWorkOrderSaveReqVO;
|
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorder.vo.IotMainWorkOrderSaveVO;
|
|
|
+import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorderbom.vo.IotMainWorkOrderBomPageReqVO;
|
|
|
+import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorderbom.vo.IotMainWorkOrderBomRespVO;
|
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorderbom.vo.IotMainWorkOrderBomSaveReqVO;
|
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorderbommaterial.vo.IotMainWorkOrderBomMaterialSaveReqVO;
|
|
|
+import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO;
|
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotmainworkorder.IotMainWorkOrderDO;
|
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotmainworkorderbom.IotMainWorkOrderBomDO;
|
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotmainworkorderbommaterial.IotMainWorkOrderBomMaterialDO;
|
|
@@ -17,6 +23,9 @@ import cn.iocoder.yudao.module.pms.dal.mysql.iotmainworkorder.IotMainWorkOrderMa
|
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.iotmainworkorderbom.IotMainWorkOrderBomMapper;
|
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.iotmainworkorderbommaterial.IotMainWorkOrderBomMaterialMapper;
|
|
|
import cn.iocoder.yudao.module.pms.dal.redis.BizNoRedisDAO;
|
|
|
+import cn.iocoder.yudao.module.pms.service.IotDeviceService;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
@@ -25,8 +34,10 @@ import javax.annotation.Resource;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertListByFlatMap;
|
|
|
import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_MAIN_WORK_ORDER_NOT_EXISTS;
|
|
|
|
|
|
/**
|
|
@@ -46,6 +57,8 @@ public class IotMainWorkOrderServiceImpl implements IotMainWorkOrderService {
|
|
|
private IotMainWorkOrderBomMapper iotMainWorkOrderBomMapper;
|
|
|
@Resource
|
|
|
private IotMainWorkOrderBomMaterialMapper iotMainWorkOrderBomMaterialMapper;
|
|
|
+ @Resource
|
|
|
+ private IotDeviceService iotDeviceService;
|
|
|
|
|
|
@Override
|
|
|
public Long createIotMainWorkOrder(IotMainWorkOrderSaveReqVO createReqVO) {
|
|
@@ -199,4 +212,47 @@ public class IotMainWorkOrderServiceImpl implements IotMainWorkOrderService {
|
|
|
return iotMainWorkOrderMapper.allWorkOrderCountByResult();
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public PageResult<IotMainWorkOrderRespVO> deviceOrderPage(IotMainWorkOrderPageReqVO pageReqVO) {
|
|
|
+ if (ObjUtil.isEmpty(pageReqVO.getDeviceId())) {
|
|
|
+ throw exception(IOT_MAIN_WORK_ORDER_NOT_EXISTS);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ // 根据设备id查询与此设备关联的保养工单列表
|
|
|
+ IPage<IotMainWorkOrderRespVO> page = iotMainWorkOrderMapper.deviceOrderPage(
|
|
|
+ new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO.getDeviceId());
|
|
|
+ return new PageResult<>(page.getRecords(), page.getTotal());
|
|
|
+ } catch (Exception exception) {
|
|
|
+ if (exception.getMessage().contains("Table does not exist")) {
|
|
|
+ return PageResult.empty();
|
|
|
+ }
|
|
|
+ throw exception;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IotMainWorkOrderRespVO getDeviceMainWorkOrder(Long workOrderId, Long deviceId) {
|
|
|
+ if (ObjUtil.isEmpty(workOrderId) || ObjUtil.isEmpty(deviceId)) {
|
|
|
+ throw exception(IOT_MAIN_WORK_ORDER_NOT_EXISTS);
|
|
|
+ }
|
|
|
+ // 查询指定 保养工单 下 根据 设备筛选的保养明细
|
|
|
+ IotMainWorkOrderDO workOrder = iotMainWorkOrderMapper.selectById(workOrderId);
|
|
|
+ IotMainWorkOrderRespVO workOrderResp = BeanUtils.toBean(workOrder, IotMainWorkOrderRespVO.class);
|
|
|
+ IotMainWorkOrderBomPageReqVO reqVO = new IotMainWorkOrderBomPageReqVO();
|
|
|
+ reqVO.setWorkOrderId(workOrderId);
|
|
|
+ reqVO.setDeviceId(deviceId);
|
|
|
+ List<IotMainWorkOrderBomDO> deviceWorkOrderBomS = iotMainWorkOrderBomMapper.selectList(reqVO);
|
|
|
+ Map<Long, IotDeviceRespVO> deviceMap = iotDeviceService.getDeviceMap(convertListByFlatMap(deviceWorkOrderBomS,
|
|
|
+ bom -> Stream.of(bom.getDeviceId())));
|
|
|
+ List<IotMainWorkOrderBomRespVO> deviceOrderBomS = BeanUtils.toBean(deviceWorkOrderBomS, IotMainWorkOrderBomRespVO.class, bomVO -> {
|
|
|
+ // 设置设备相关信息
|
|
|
+ MapUtils.findAndThen(deviceMap, bomVO.getDeviceId(),
|
|
|
+ device -> bomVO.setDeviceName(device.getDeviceName()));
|
|
|
+ MapUtils.findAndThen(deviceMap, bomVO.getDeviceId(),
|
|
|
+ device -> bomVO.setDeviceCode(device.getDeviceCode()));
|
|
|
+ });
|
|
|
+ workOrderResp.setWorkOrderBomS(deviceOrderBomS);
|
|
|
+ return workOrderResp;
|
|
|
+ }
|
|
|
+
|
|
|
}
|