From fea8b1e0a7e67365ac5f9d3dbc25948855c1b1f8 Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Tue, 16 Sep 2025 14:25:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(dms):=20=E6=B7=BB=E5=8A=A0=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E7=BB=B4=E4=BF=9D=E5=92=8C=E5=B7=A1=E6=A3=80=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 DmsBillsMaintDetailController 和 DmsInspectInstanceDetailController 中添加了新的 API 接口 - 在 DmsBillsMaintDetailServiceImpl 和 DmsInspectInstanceDetailServiceImpl 中实现了新的服务方法 - 更新了 IDmsBillsMaintDetailService 和 IDmsInspectInstanceDetailService 接口,添加了新的方法定义 --- .../DmsBillsMaintDetailController.java | 21 +++++ .../DmsInspectInstanceDetailController.java | 21 +++++ .../service/IDmsBillsMaintDetailService.java | 13 ++- .../IDmsInspectInstanceDetailService.java | 24 +++++- .../impl/DmsBillsMaintDetailServiceImpl.java | 77 +++++++++++++++++- .../DmsInspectInstanceDetailServiceImpl.java | 81 ++++++++++++++++--- 6 files changed, 214 insertions(+), 23 deletions(-) diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsMaintDetailController.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsMaintDetailController.java index 5cb028b2..ebfb883f 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsMaintDetailController.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsBillsMaintDetailController.java @@ -21,6 +21,7 @@ import org.dromara.dms.domain.vo.DmsBillsMaintDetailVo; import org.dromara.dms.domain.bo.DmsBillsMaintDetailBo; import org.dromara.dms.service.IDmsBillsMaintDetailService; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.dms.domain.vo.DmsBillsMaintInstanceVo; /** * 保养工单明细 @@ -114,4 +115,24 @@ public class DmsBillsMaintDetailController extends BaseController { List list = dmsBillsMaintDetailService.queryList(bo); return R.ok(list); } + + /** + * 根据设备ID查询维保工单列表(关联主表信息) + * @param machineId 设备ID + */ + @GetMapping("/getMaintInstancesByMachineId/{machineId}") + public R> getMaintInstancesByMachineId(@PathVariable Long machineId) { + List list = dmsBillsMaintDetailService.getMaintInstancesByMachineId(machineId); + return R.ok(list); + } + + /** + * 根据设备ID统计维保工单数量 + * @param machineId 设备ID + */ + @GetMapping("/countMaintInstancesByMachineId/{machineId}") + public R countMaintInstancesByMachineId(@PathVariable Long machineId) { + Long count = dmsBillsMaintDetailService.countMaintInstancesByMachineId(machineId); + return R.ok(count); + } } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsInspectInstanceDetailController.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsInspectInstanceDetailController.java index cac60442..4f034c57 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsInspectInstanceDetailController.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/controller/DmsInspectInstanceDetailController.java @@ -21,6 +21,7 @@ import org.dromara.dms.domain.vo.DmsInspectInstanceDetailVo; import org.dromara.dms.domain.bo.DmsInspectInstanceDetailBo; import org.dromara.dms.service.IDmsInspectInstanceDetailService; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.dms.domain.vo.DmsBillsInspectInstanceVo; /** * 点巡检工单明细 @@ -114,4 +115,24 @@ public class DmsInspectInstanceDetailController extends BaseController { List list = dmsInspectInstanceDetailService.queryList(bo); return R.ok(list); } + + /** + * 根据设备ID查询巡检工单列表(关联主表信息) + * @param machineId 设备ID + */ + @GetMapping("/getInspectInstancesByMachineId/{machineId}") + public R> getInspectInstancesByMachineId(@PathVariable Long machineId) { + List list = dmsInspectInstanceDetailService.getInspectInstancesByMachineId(machineId); + return R.ok(list); + } + + /** + * 根据设备ID统计巡检工单数量 + * @param machineId 设备ID + */ + @GetMapping("/countInspectInstancesByMachineId/{machineId}") + public R countInspectInstancesByMachineId(@PathVariable Long machineId) { + Long count = dmsInspectInstanceDetailService.countInspectInstancesByMachineId(machineId); + return R.ok(count); + } } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsMaintDetailService.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsMaintDetailService.java index 47c23eee..78635309 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsMaintDetailService.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsBillsMaintDetailService.java @@ -1,10 +1,10 @@ package org.dromara.dms.service; -import org.dromara.dms.domain.DmsBillsMaintDetail; -import org.dromara.dms.domain.vo.DmsBillsMaintDetailVo; -import org.dromara.dms.domain.bo.DmsBillsMaintDetailBo; -import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.dms.domain.bo.DmsBillsMaintDetailBo; +import org.dromara.dms.domain.vo.DmsBillsMaintDetailVo; +import org.dromara.dms.domain.vo.DmsBillsMaintInstanceVo; import java.util.Collection; import java.util.List; @@ -66,4 +66,9 @@ public interface IDmsBillsMaintDetailService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + public Long countMaintInstancesByMachineId(Long machineId); + + public List getMaintInstancesByMachineId(Long machineId); + } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsInspectInstanceDetailService.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsInspectInstanceDetailService.java index 9628c2d4..7e70fda0 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsInspectInstanceDetailService.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/IDmsInspectInstanceDetailService.java @@ -1,10 +1,10 @@ package org.dromara.dms.service; -import org.dromara.dms.domain.DmsInspectInstanceDetail; -import org.dromara.dms.domain.vo.DmsInspectInstanceDetailVo; -import org.dromara.dms.domain.bo.DmsInspectInstanceDetailBo; -import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.dms.domain.bo.DmsInspectInstanceDetailBo; +import org.dromara.dms.domain.vo.DmsBillsInspectInstanceVo; +import org.dromara.dms.domain.vo.DmsInspectInstanceDetailVo; import java.util.Collection; import java.util.List; @@ -66,4 +66,20 @@ public interface IDmsInspectInstanceDetailService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 根据设备ID查询巡检工单列表(关联主表信息) + * + * @param machineId 设备ID + * @return 巡检工单列表 + */ + List getInspectInstancesByMachineId(Long machineId); + + /** + * 根据设备ID统计巡检工单数量 + * + * @param machineId 设备ID + * @return 巡检工单数量 + */ + Long countInspectInstancesByMachineId(Long machineId); } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintDetailServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintDetailServiceImpl.java index 817750d1..46190cde 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintDetailServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBillsMaintDetailServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.dms.service.impl; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; @@ -11,13 +12,14 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.dms.domain.*; import org.dromara.dms.domain.bo.DmsBillsMaintDetailBo; import org.dromara.dms.domain.vo.DmsBillsMaintDetailVo; +import org.dromara.dms.domain.vo.DmsBillsMaintInstanceVo; import org.dromara.dms.mapper.DmsBillsMaintDetailMapper; +import org.dromara.dms.mapper.DmsBillsMaintInstanceMapper; import org.dromara.dms.service.IDmsBillsMaintDetailService; import org.springframework.stereotype.Service; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * 保养工单明细Service业务层处理 @@ -31,6 +33,8 @@ public class DmsBillsMaintDetailServiceImpl implements IDmsBillsMaintDetailServi private final DmsBillsMaintDetailMapper baseMapper; + private final DmsBillsMaintInstanceMapper maintInstanceMapper; + /** * 查询保养工单明细 * @@ -98,6 +102,13 @@ public class DmsBillsMaintDetailServiceImpl implements IDmsBillsMaintDetailServi .eq(bo.getMaintStatus() != null, DmsBillsMaintDetail::getMaintStatus, bo.getMaintStatus()) .eq(bo.getBeginTime() != null, DmsBillsMaintDetail::getBeginTime, bo.getBeginTime()) .eq(bo.getEndTime() != null, DmsBillsMaintDetail::getEndTime, bo.getEndTime()) +// +// .eq(bo.getMaintInstanceId() != null, DmsBillsMaintDetail::getMaintInstanceId, bo.getMaintInstanceId()) +// .eq(bo.getMachineId() != null, DmsBillsMaintDetail::getMachineId, bo.getMachineId()) +// .eq(StringUtils.isNotBlank(bo.getBillsMaintCode()), DmsBillsMaintDetail::getBillsMaintCode, bo.getBillsMaintCode()) +// .between(params.get("beginTime") != null && params.get("endTime") != null, +// DmsBillsMaintDetail::getCreateTime ,params.get("beginTime"), params.get("endTime")); + .orderByDesc(DmsBillsMaintDetail::getCreateTime); return lqw; } @@ -134,6 +145,8 @@ public class DmsBillsMaintDetailServiceImpl implements IDmsBillsMaintDetailServi /** * 保存前的数据校验 + * + * @param entity 实体类数据 */ private void validEntityBeforeSave(DmsBillsMaintDetail entity){ //TODO 做一些数据校验,如唯一约束 @@ -151,6 +164,62 @@ public class DmsBillsMaintDetailServiceImpl implements IDmsBillsMaintDetailServi if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } - return baseMapper.deleteByIds(ids) > 0; + return baseMapper.deleteBatchIds(ids) > 0; + } + + /** + * 根据设备ID查询维保工单列表(关联主表信息) + * + * @param machineId 设备ID + * @return 维保工单列表 + */ + @Override + public List getMaintInstancesByMachineId(Long machineId) { + // 查询该设备相关的所有维保明细 + List details = baseMapper.selectList( + Wrappers.lambdaQuery() + .eq(DmsBillsMaintDetail::getMachineId, machineId) + ); + + if (details.isEmpty()) { + return new ArrayList<>(); + } + + // 提取唯一的工单ID + Set maintInstanceIds = details.stream() + .map(DmsBillsMaintDetail::getMaintInstanceId) + .collect(Collectors.toSet()); + + // 查询工单主表信息 + List instances = maintInstanceMapper.selectBatchIds(maintInstanceIds) + .stream() + .sorted((a, b) -> b.getCreateTime().compareTo(a.getCreateTime())) + .collect(Collectors.toList()); + + return instances.stream() + .map(instance -> MapstructUtils.convert(instance, DmsBillsMaintInstanceVo.class)) + .collect(Collectors.toList()); + } + + /** + * 根据设备ID统计维保工单数量 + * + * @param machineId 设备ID + * @return 维保工单数量 + */ + @Override + public Long countMaintInstancesByMachineId(Long machineId) { + // 查询该设备相关的所有维保明细 + List details = baseMapper.selectList( + Wrappers.lambdaQuery() + .select(DmsBillsMaintDetail::getMaintInstanceId) + .eq(DmsBillsMaintDetail::getMachineId, machineId) + ); + + // 统计唯一的工单数量 + return (long) details.stream() + .map(DmsBillsMaintDetail::getMaintInstanceId) + .collect(Collectors.toSet()) + .size(); } } diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsInspectInstanceDetailServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsInspectInstanceDetailServiceImpl.java index ee7bc49b..8567a4c6 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsInspectInstanceDetailServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsInspectInstanceDetailServiceImpl.java @@ -1,24 +1,26 @@ package org.dromara.dms.service.impl; -import org.dromara.common.core.utils.MapstructUtils; -import org.dromara.common.core.utils.StringUtils; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.dromara.dms.domain.bo.DmsInspectInstanceDetailBo; -import org.dromara.dms.domain.vo.DmsInspectInstanceDetailVo; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.dms.domain.DmsBillsInspectInstance; import org.dromara.dms.domain.DmsInspectInstanceDetail; +import org.dromara.dms.domain.bo.DmsInspectInstanceDetailBo; +import org.dromara.dms.domain.vo.DmsBillsInspectInstanceVo; +import org.dromara.dms.domain.vo.DmsInspectInstanceDetailVo; +import org.dromara.dms.mapper.DmsBillsInspectInstanceMapper; import org.dromara.dms.mapper.DmsInspectInstanceDetailMapper; import org.dromara.dms.service.IDmsInspectInstanceDetailService; +import org.springframework.stereotype.Service; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; +import java.util.stream.Collectors; /** * 点巡检工单明细Service业务层处理 @@ -31,6 +33,7 @@ import java.util.Collection; public class DmsInspectInstanceDetailServiceImpl implements IDmsInspectInstanceDetailService { private final DmsInspectInstanceDetailMapper baseMapper; + private final DmsBillsInspectInstanceMapper inspectInstanceMapper; /** * 查询点巡检工单明细 @@ -139,4 +142,60 @@ public class DmsInspectInstanceDetailServiceImpl implements IDmsInspectInstanceD } return baseMapper.deleteByIds(ids) > 0; } + + /** + * 根据设备ID查询巡检工单列表(关联主表信息) + * + * @param machineId 设备ID + * @return 巡检工单列表 + */ + @Override + public List getInspectInstancesByMachineId(Long machineId) { + // 查询该设备相关的所有巡检明细 + List details = baseMapper.selectList( + Wrappers.lambdaQuery() + .eq(DmsInspectInstanceDetail::getMachineId, machineId) + ); + + if (details.isEmpty()) { + return new ArrayList<>(); + } + + // 提取唯一的工单ID + Set inspectInstanceIds = details.stream() + .map(DmsInspectInstanceDetail::getInspectInstanceId) + .collect(Collectors.toSet()); + + // 修复:使用正确的mapper查询工单主表信息 + List instances = inspectInstanceMapper.selectBatchIds(inspectInstanceIds) + .stream() + .sorted((a, b) -> b.getCreateTime().compareTo(a.getCreateTime())) + .collect(Collectors.toList()); + + return instances.stream() + .map(instance -> MapstructUtils.convert(instance, DmsBillsInspectInstanceVo.class)) + .collect(Collectors.toList()); + } + + /** + * 根据设备ID统计巡检工单数量 + * + * @param machineId 设备ID + * @return 巡检工单数量 + */ + @Override + public Long countInspectInstancesByMachineId(Long machineId) { + // 查询该设备相关的所有巡检明细 + List details = baseMapper.selectList( + Wrappers.lambdaQuery() + .select(DmsInspectInstanceDetail::getInspectInstanceId) + .eq(DmsInspectInstanceDetail::getMachineId, machineId) + ); + + // 统计唯一的工单数量 + return (long) details.stream() + .map(DmsInspectInstanceDetail::getInspectInstanceId) + .collect(Collectors.toSet()) + .size(); + } }