浏览代码

Merge remote-tracking branch 'origin/master'

lipenghui 3 月之前
父节点
当前提交
c44f73afe3

+ 19 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotmainworkorder/IotMainWorkOrderController.java

@@ -98,6 +98,16 @@ public class IotMainWorkOrderController {
         return success(BeanUtils.toBean(iotMainWorkOrder, IotMainWorkOrderRespVO.class));
     }
 
+    @GetMapping("/deviceWorkOrder")
+    @Operation(summary = "从设备台账查询保养工单 只关联当前设备明细")
+    @Parameter(name = "workOrderId", description = "保养工单id", required = true, example = "1024")
+    @Parameter(name = "deviceId", description = "设备id", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('pms:iot-main-work-order:query')")
+    public CommonResult<IotMainWorkOrderRespVO> deviceWorkOrder(@RequestParam("workOrderId") Long workOrderId, @RequestParam("deviceId") Long deviceId) {
+        IotMainWorkOrderRespVO iotMainWorkOrder = iotMainWorkOrderService.getDeviceMainWorkOrder(workOrderId, deviceId);
+        return success(iotMainWorkOrder);
+    }
+
     @GetMapping("/page")
     @Operation(summary = "获得保养工单分页")
     @PreAuthorize("@ss.hasPermission('pms:iot-main-work-order:query')")
@@ -106,6 +116,15 @@ public class IotMainWorkOrderController {
         return success(new PageResult<>(buildMainWorkOrderList(pageResult.getList()), pageResult.getTotal()));
     }
 
+    @GetMapping("/deviceOrderPage")
+    @Operation(summary = "根据设备id获得保养工单分页")
+    @PreAuthorize("@ss.hasPermission('pms:iot-main-work-order:query')")
+    public CommonResult<PageResult<IotMainWorkOrderRespVO>> deviceOrderPage(@Valid IotMainWorkOrderPageReqVO pageReqVO) {
+        PageResult<IotMainWorkOrderRespVO> pageResult = iotMainWorkOrderService.deviceOrderPage(pageReqVO);
+        List<IotMainWorkOrderDO> orders = BeanUtils.toBean(pageResult.getList(), IotMainWorkOrderDO.class);
+        return success(new PageResult<>(buildMainWorkOrderList(orders), pageResult.getTotal()));
+    }
+
     @GetMapping("/allWorkOrderCountByResult")
     @Operation(summary = "根据保养结果查询工单数量")
     @PreAuthorize("@ss.hasPermission('pms:iot-main-work-order:query')")

+ 5 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotmainworkorder/vo/IotMainWorkOrderPageReqVO.java

@@ -81,4 +81,9 @@ public class IotMainWorkOrderPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
+    /**
+     * 扩展字段
+     */
+    @Schema(description = "设备id", example = "8684")
+    private Long deviceId;
 }

+ 5 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotmainworkorder/vo/IotMainWorkOrderRespVO.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorder.vo;
 
+import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorderbom.vo.IotMainWorkOrderBomRespVO;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -7,6 +8,7 @@ import lombok.Data;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Schema(description = "管理后台 - 保养工单 Response VO")
 @Data
@@ -102,4 +104,7 @@ public class IotMainWorkOrderRespVO {
      */
     @Schema(description = "距离保养时间")
     private BigDecimal remainingTime;
+
+    @Schema(description = "筛选了指定设备的保养工单bom")
+    private List<IotMainWorkOrderBomRespVO> workOrderBomS;
 }

+ 0 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotmainworkorderbom/IotMainWorkOrderBomController.java

@@ -99,7 +99,6 @@ public class IotMainWorkOrderBomController {
         // 组装bom关联的设备名称 编码
         // 组装bom关联的设备 累计运行时间、累计运行公里数
         return success(buildMainWorkOrderBomList(workOrderBOMs));
-        // return success(BeanUtils.toBean(workOrderBOMs, IotMainWorkOrderBomRespVO.class));
     }
 
     @GetMapping("/export-excel")

+ 5 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotmainworkorder/IotMainWorkOrderMapper.java

@@ -4,9 +4,12 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 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.dal.dataobject.iotmainworkorder.IotMainWorkOrderDO;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -60,4 +63,6 @@ public interface IotMainWorkOrderMapper extends BaseMapperX<IotMainWorkOrderDO>
 
     @MapKey("result")
     List<Map<String, Integer>> allWorkOrderCountByResult();
+
+    IPage<IotMainWorkOrderRespVO> deviceOrderPage(IPage<IotMainWorkOrderRespVO> page, @Param("deviceId") Long deviceId);
 }

+ 15 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotmainworkorder/IotMainWorkOrderService.java

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.pms.service.iotmainworkorder;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 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.dal.dataobject.iotmainworkorder.IotMainWorkOrderDO;
@@ -96,4 +97,18 @@ public interface IotMainWorkOrderService {
      * @return
      */
     List<Map<String, Integer>> allWorkOrderCountByResult();
+
+    /**
+     * 获得保养工单分页
+     *
+     * @return
+     */
+    PageResult<IotMainWorkOrderRespVO> deviceOrderPage(IotMainWorkOrderPageReqVO pageReqVO);
+
+    /**
+     * 从设备台账查询保养工单 只关联当前设备明细
+     *
+     * @return
+     */
+    IotMainWorkOrderRespVO getDeviceMainWorkOrder(Long workOrderId, Long deviceId);
 }

+ 56 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotmainworkorder/IotMainWorkOrderServiceImpl.java

@@ -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;
+    }
+
 }

+ 15 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotMainWorkOrderMapper.xml

@@ -9,4 +9,19 @@
         UNION ALL
         SELECT 'done' result, COUNT(1) num FROM rq_iot_main_work_order WHERE result=2;
     </select>
+
+    <select id="deviceOrderPage" resultType="cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorder.vo.IotMainWorkOrderRespVO">
+        SELECT *
+        FROM rq_iot_main_work_order rimwo
+        WHERE rimwo.id IN (
+            SELECT rimwob.work_order_id
+            FROM rq_iot_main_work_order_bom rimwob
+            WHERE 1=1
+            <if test="deviceId != null  and deviceId != ''">
+                AND rimwob.device_id = #{deviceId}
+            </if>
+        )
+        ORDER BY rimwo.id DESC
+    </select>
+
 </mapper>