From 1f233c142a55ba0583cc6ea4e63aa1c3c89fc4aa Mon Sep 17 00:00:00 2001 From: dfdg <2710245601@qq.com> Date: Wed, 12 Nov 2025 20:09:10 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=A9=E8=B5=84=E9=87=87=E8=B4=AD=E8=81=94?= =?UTF-8?q?=E7=B3=BB=E5=8D=95=E6=96=B0=E5=A2=9E=E4=BC=98=E5=8C=96=E5=92=8C?= =?UTF-8?q?=E8=BD=A6=E8=BE=86=E7=AE=A1=E7=90=86=E5=A2=9E=E5=8A=A0GPS?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=E3=80=81=E5=A2=9E=E5=8A=A0=E8=BD=A8=E8=BF=B9?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BusMrpBaseController.java | 10 +++ .../domain/bo/BusMrpBaseReq.java | 37 +++++++++++ .../vo/BusMaterialbatchdemandplanVo.java | 5 ++ .../service/IBusMrpBaseService.java | 3 + ...BusMaterialbatchdemandplanServiceImpl.java | 27 ++++++-- .../service/impl/BusMrpBaseServiceImpl.java | 37 +++++++++++ .../controller/GpsEquipmentController.java | 5 ++ .../controller/GpsEquipmentSonController.java | 8 +++ .../dromara/gps/domain/GpsEquipmentSon.java | 5 ++ .../gps/domain/bo/GpsEquipmentSonBo.java | 5 ++ .../gps/domain/vo/GpsEquipmentSonVo.java | 5 ++ .../gps/service/IGpsEquipmentService.java | 2 + .../gps/service/IGpsEquipmentSonService.java | 2 + .../service/impl/GpsEquipmentServiceImpl.java | 30 ++++++++- .../impl/GpsEquipmentSonServiceImpl.java | 18 ++++++ .../TenderSupplierInputController.java | 10 +++ .../domain/bo/TenderSupplierInputReq.java | 36 +++++++++++ .../service/ITenderSupplierInputService.java | 3 + .../impl/BusBiddingPlanServiceImpl.java | 8 +-- .../impl/TenderSupplierInputServiceImpl.java | 62 +++++++++++++++++++ .../controller/VehVehicleInfoController.java | 17 +++++ .../vehicle/domain/VehVehicleInfo.java | 5 ++ .../vehicle/domain/bo/VehVehicleInfoBo.java | 4 ++ .../vehicle/domain/vo/VehVehicleInfoVo.java | 5 ++ .../vehicle/mapper/VehVehicleTripMapper.java | 1 + .../service/IVehVehicleInfoService.java | 14 +++++ .../service/IVehVehicleTripService.java | 7 +++ .../impl/VehVehicleInfoServiceImpl.java | 59 ++++++++++++++++++ .../impl/VehVehicleTripServiceImpl.java | 5 ++ .../mapper/vehicle/VehVehicleTripMapper.xml | 11 ++++ 30 files changed, 436 insertions(+), 10 deletions(-) create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusMrpBaseReq.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/domain/bo/TenderSupplierInputReq.java diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusMrpBaseController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusMrpBaseController.java index 3826bd72..9eae946f 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusMrpBaseController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/controller/BusMrpBaseController.java @@ -13,6 +13,7 @@ import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.cailiaoshebei.domain.bo.BusMrpBaseReq; import org.dromara.cailiaoshebei.domain.bo.RemainingReq; import org.dromara.cailiaoshebei.domain.dto.BusMrpDto; import org.dromara.cailiaoshebei.domain.dto.BusMrpExportDto; @@ -75,6 +76,15 @@ public class BusMrpBaseController extends BaseController { return busMrpBaseService.queryPageList(bo, pageQuery); } + /** + * 查询物资-批次需求计划基础信息列表 + */ +// @SaCheckPermission("cailiaoshebei:mrpBase:getListByName") + @GetMapping("/getListByName") + public R> getListByName(BusMrpBaseReq req) { + return R.ok(busMrpBaseService.getListByName(req)); + } + /** * 导出物资-批次需求计划基础信息列表 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusMrpBaseReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusMrpBaseReq.java new file mode 100644 index 00000000..d2341ce7 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/bo/BusMrpBaseReq.java @@ -0,0 +1,37 @@ +package org.dromara.cailiaoshebei.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.cailiaoshebei.domain.BusMrpBase; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +import java.io.Serializable; +import java.time.LocalDate; + +/** + * 物资-批次需求计划基础信息业务对象 bus_mrp_base + * + * @author Lion Li + * @date 2025-08-13 + */ +@Data +public class BusMrpBaseReq implements Serializable { + + + + /** + * 项目ID + */ + private Long projectId; + + /** + * 计划编号 + */ + private String name; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusMaterialbatchdemandplanVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusMaterialbatchdemandplanVo.java index 29cc5702..32443c22 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusMaterialbatchdemandplanVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusMaterialbatchdemandplanVo.java @@ -146,6 +146,11 @@ public class BusMaterialbatchdemandplanVo implements Serializable { */ private BigDecimal tenderQuantity; + /** + * 已使用数量 + */ + private BigDecimal useQuantity; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusMrpBaseService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusMrpBaseService.java index 1cde849e..f2bf59e0 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusMrpBaseService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusMrpBaseService.java @@ -1,5 +1,6 @@ package org.dromara.cailiaoshebei.service; +import org.dromara.cailiaoshebei.domain.bo.BusMrpBaseReq; import org.dromara.cailiaoshebei.domain.dto.BusMrpDto; import org.dromara.cailiaoshebei.domain.dto.BusMrpExportDto; import org.dromara.cailiaoshebei.domain.vo.BusMrpBaseVo; @@ -87,4 +88,6 @@ public interface IBusMrpBaseService extends IService{ * 获取物资已有数量 */ Map remaining(Long projectId,Long limitListId,Long mrpBaseId); + + List getListByName(BusMrpBaseReq req); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMaterialbatchdemandplanServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMaterialbatchdemandplanServiceImpl.java index 06ceb3cb..be8158fe 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMaterialbatchdemandplanServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMaterialbatchdemandplanServiceImpl.java @@ -7,9 +7,11 @@ import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.dromara.cailiaoshebei.controller.constant; import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici; +import org.dromara.cailiaoshebei.domain.BusPlanDocAssociation; import org.dromara.cailiaoshebei.domain.bo.BusMaterialbatchdemandplanAddReq; import org.dromara.cailiaoshebei.service.IBusCailiaoshebeiPiciService; import org.dromara.cailiaoshebei.service.IBusMaterialsorderService; +import org.dromara.cailiaoshebei.service.IBusPlanDocAssociationService; import org.dromara.common.core.domain.event.ProcessDeleteEvent; import org.dromara.common.core.domain.event.ProcessEvent; import org.dromara.common.core.domain.event.ProcessTaskEvent; @@ -79,6 +81,9 @@ public class BusMaterialbatchdemandplanServiceImpl extends ServiceImpl { return hashSet.contains(vo.getSuppliespriceId()); // 仅保留 Set 中存在的数据 }).forEach(item->{ - if (map.containsKey(item.getId())) { - item.setTenderQuantity(map.get(item.getId())); + + if (map.containsKey(item.getSuppliespriceId())) { + item.setTenderQuantity(map.get(item.getSuppliespriceId())); } }); } - result.getRecords().forEach(vo -> { - if (vo.getSuppliespricePid() != null){ + for (BusMaterialbatchdemandplanVo vo : result.getRecords()) { + List busPlanDocAssociations = busPlanDocAssociationService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(BusPlanDocAssociation::getPlanId, vo.getId())); + BigDecimal useQuantity = BigDecimal.ZERO; + if (busPlanDocAssociations != null && !busPlanDocAssociations.isEmpty()) { + useQuantity = busPlanDocAssociations.stream() + // 提取每个item的demandQuantity,若为null则用0替代 + .map(item -> Optional.ofNullable(item.getDemandQuantity()).orElse(BigDecimal.ZERO)) + // 累加:初始值0,累加器为两个BigDecimal相加 + .reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal subtract = vo.getDemandQuantity().subtract(useQuantity); + vo.setUseQuantity(subtract.compareTo(BigDecimal.ZERO) >0 ? subtract: BigDecimal.ZERO); + } + if (vo.getSuppliespricePid() != null) { BusBillofquantitiesLimitList billofquantities = busBillofquantitiesLimitListService.getById(vo.getSuppliespricePid()); vo.setSuppliespricePname(billofquantities.getName()); } - }); + } return TableDataInfo.build(result); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMrpBaseServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMrpBaseServiceImpl.java index a4341045..b2ae9a83 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMrpBaseServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusMrpBaseServiceImpl.java @@ -6,13 +6,16 @@ import cn.hutool.core.convert.Convert; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.dromara.cailiaoshebei.domain.BusMaterialbatchdemandplan; +import org.dromara.cailiaoshebei.domain.BusPlanDocAssociation; import org.dromara.cailiaoshebei.domain.bo.BusMaterialbatchdemandplanBo; +import org.dromara.cailiaoshebei.domain.bo.BusMrpBaseReq; import org.dromara.cailiaoshebei.domain.dto.BusMaterialbatchdemandplanExportDto; import org.dromara.cailiaoshebei.domain.dto.BusMrpDto; import org.dromara.cailiaoshebei.domain.dto.BusMrpExportDto; import org.dromara.cailiaoshebei.domain.vo.BusMaterialbatchdemandplanVo; import org.dromara.cailiaoshebei.domain.vo.BusMrpVo; import org.dromara.cailiaoshebei.service.IBusMaterialbatchdemandplanService; +import org.dromara.cailiaoshebei.service.IBusPlanDocAssociationService; import org.dromara.common.core.domain.event.ProcessDeleteEvent; import org.dromara.common.core.domain.event.ProcessEvent; import org.dromara.common.core.domain.event.ProcessTaskEvent; @@ -61,6 +64,8 @@ public class BusMrpBaseServiceImpl extends ServiceImpl getListByName(BusMrpBaseReq req) { + if (req.getName() == null || req.getName().isEmpty()) { + return null; + } + List busMaterialbatchdemandplans = planservice.getBaseMapper().selectList(new LambdaQueryWrapper() + .eq(BusMaterialbatchdemandplan::getProjectId, req.getProjectId()) + .like(BusMaterialbatchdemandplan::getName, req.getName())); + Iterator iterator = busMaterialbatchdemandplans.iterator(); + Set mrpIds = new HashSet<>(); + while (iterator.hasNext()){ + BusMaterialbatchdemandplan next = iterator.next(); + List busPlanDocAssociations = planDocAssociationService.getBaseMapper().selectList(new LambdaQueryWrapper() + .eq(BusPlanDocAssociation::getProjectId, req.getProjectId()) + .eq(BusPlanDocAssociation::getPlanId, next.getId())); + BigDecimal demandQuantity = BigDecimal.ZERO; + busPlanDocAssociations.forEach(busPlanDocAssociation -> { + demandQuantity.add(busPlanDocAssociation.getDemandQuantity()); + }); + if (demandQuantity.compareTo(next.getDemandQuantity()) >= 0) { + iterator.remove(); + }else { + mrpIds.add(next.getMrpBaseId()); + } + } + if (mrpIds.isEmpty()){ + return null; + } + return baseMapper.selectVoList(new LambdaQueryWrapper() + .eq(BusMrpBase::getStatus,BusinessStatusEnum.FINISH.getStatus()).in(BusMrpBase::getId,mrpIds)); + } + /** * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) * 正常使用只需#processEvent.flowCode=='leave1' diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentController.java index ee67b5e7..bc96bea6 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentController.java @@ -92,6 +92,11 @@ public class GpsEquipmentController extends BaseController { return gpsEquipmentService.queryPageList(bo, pageQuery); } + @GetMapping("/getListToVehicle") + public R> getListToVehicle(GpsEquipmentBo bo) { + return R.ok(gpsEquipmentService.getListToVehicle(bo)); + } + /** * 查询GPS设备用户列表 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentSonController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentSonController.java index 66c45085..d75476d4 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentSonController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentSonController.java @@ -48,6 +48,14 @@ public class GpsEquipmentSonController extends BaseController { return gpsEquipmentSonService.queryPageList(bo, pageQuery); } + /** + * 车辆获取gps设备轨迹列表数据 + */ + @GetMapping("/getVehicleList") + public R> getVehicleList(GpsEquipmentSonBo bo) { + return R.ok(gpsEquipmentSonService.getVehicleList(bo)); + } + /** * 查询GPS设备定位信息列表 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipmentSon.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipmentSon.java index 588c8ee5..5f00589e 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipmentSon.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipmentSon.java @@ -115,4 +115,9 @@ public class GpsEquipmentSon extends BaseEntity { private Long projectId; + + /** + * 车辆出行记录id + */ + private Long tripId; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentSonBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentSonBo.java index 10c18720..6f3cf5a8 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentSonBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentSonBo.java @@ -132,4 +132,9 @@ public class GpsEquipmentSonBo extends BaseEntity { */ private LocalDateTime endTime; + /** + * 车辆出行记录id + */ + private Long tripId; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentSonVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentSonVo.java index 293b1e30..f709a874 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentSonVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentSonVo.java @@ -154,5 +154,10 @@ public class GpsEquipmentSonVo implements Serializable { */ private String modelId; + /** + * 车辆出行记录id + */ + private Long tripId; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentService.java index c38283c7..9d832426 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentService.java @@ -106,4 +106,6 @@ public interface IGpsEquipmentService extends IService{ List getUeClientList(LocalDateTime startOfDay, LocalDateTime now); List getUeUserListByProjectId(LocalDateTime startOfDay, LocalDateTime now); + + List getListToVehicle(GpsEquipmentBo bo); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentSonService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentSonService.java index 7773c0f7..ce672613 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentSonService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/IGpsEquipmentSonService.java @@ -85,4 +85,6 @@ public interface IGpsEquipmentSonService extends IService{ List getUeClientList(LocalDateTime startOfDay, LocalDateTime now); List getUeUserListByProjectId(LocalDateTime startOfDay, LocalDateTime now); + + List getVehicleList(GpsEquipmentSonBo bo); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentServiceImpl.java index e4422649..3db89308 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentServiceImpl.java @@ -6,8 +6,10 @@ import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.dromara.vehicle.domain.VehVehicleInfo; import org.dromara.vehicle.domain.vo.VehVehicleInfoVo; import org.dromara.vehicle.service.IVehVehicleInfoService; +import org.dromara.vehicle.service.IVehVehicleTripService; import org.dromara.websocket.websocket.service.InitOnStartWebSocketServer; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; @@ -74,6 +76,8 @@ public class GpsEquipmentServiceImpl extends ServiceImpl().set(VehVehicleInfo::getClientId,bo.getClientId()).eq(VehVehicleInfo::getId,bo.getUserId())); + } return gpsManmachineMapper.insert(gpsManmachine) > 0; } @@ -434,6 +447,10 @@ public class GpsEquipmentServiceImpl extends ServiceImpl().set(VehVehicleInfo::getClientId,null).eq(VehVehicleInfo::getId,gpsEquipmentVo.getUserId())); + } baseMapper.update(new LambdaUpdateWrapper() .set(GpsEquipment::getUserId,null) .set(GpsEquipment::getClientType,null) @@ -556,5 +573,16 @@ public class GpsEquipmentServiceImpl extends ServiceImpl getListToVehicle(GpsEquipmentBo bo) { + return baseMapper.selectVoList(new LambdaQueryWrapper() + .nested(q -> + q.eq(GpsEquipment::getProjectId, bo.getProjectId()) + .or() + .isNull(GpsEquipment::getProjectId) + ) + .isNull(GpsEquipment::getUserId).isNotNull(GpsEquipment::getClientId)); + } + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentSonServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentSonServiceImpl.java index a0143aab..964bbeef 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentSonServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentSonServiceImpl.java @@ -221,4 +221,22 @@ public class GpsEquipmentSonServiceImpl extends ServiceImpl getUeUserListByProjectId(LocalDateTime startOfDay, LocalDateTime now) { return baseMapper.getUeUserListByProjectId(startOfDay,now); } + + @Override + public List getVehicleList(GpsEquipmentSonBo bo) { + if (bo.getProjectId() == null) { + throw new ServiceException("项目id不能为空!"); + } + if (bo.getUserId() == null) { + throw new ServiceException("车辆id不能为空!"); + } + if (bo.getStartTime() == null || bo.getEndTime() == null) { + throw new ServiceException("开始时间和结算时间不能为空!!!"); + } + return baseMapper.selectVoList(new LambdaQueryWrapper() + .eq(GpsEquipmentSon::getProjectId,bo.getProjectId()) + .eq(GpsEquipmentSon::getUserId,bo.getUserId()) + .eq(bo.getTripId() != null,GpsEquipmentSon::getTripId,bo.getTripId()) + .between(GpsEquipmentSon::getCreateTime,bo.getStartTime(),bo.getEndTime())); + } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/controller/TenderSupplierInputController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/controller/TenderSupplierInputController.java index 51d49719..015b9fad 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/controller/TenderSupplierInputController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/controller/TenderSupplierInputController.java @@ -15,6 +15,7 @@ import org.dromara.cailiaoshebei.domain.BusCailiaoshebeiPici; import org.dromara.common.core.domain.event.ProcessEvent; import org.dromara.system.service.ISysOssService; import org.dromara.tender.domain.TenderSupplierInput; +import org.dromara.tender.domain.bo.TenderSupplierInputReq; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; @@ -60,6 +61,15 @@ public class TenderSupplierInputController extends BaseController { return tenderSupplierInputService.queryPageList(bo, pageQuery); } + /** + * 根据材料名获取供应商列表 + */ +// @SaCheckPermission("supplierInput:supplierInput:getListByName") + @GetMapping("/getListByName") + public R> getListByName(TenderSupplierInputReq req) { + return R.ok(tenderSupplierInputService.getListByName(req)); + } + /** * 查询供应商入库列表 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/domain/bo/TenderSupplierInputReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/domain/bo/TenderSupplierInputReq.java new file mode 100644 index 00000000..f6120a25 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/domain/bo/TenderSupplierInputReq.java @@ -0,0 +1,36 @@ +package org.dromara.tender.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.tender.domain.TenderSupplierInput; + +import java.io.Serializable; + +/** + * 供应商入库业务对象 tender_supplier_input + * + * @author Lion Li + * @date 2025-08-20 + */ +@Data +public class TenderSupplierInputReq implements Serializable { + + + + /** + * 项目Id + */ + private Long projectId; + + /** + * 材料名称 + */ + private String name; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/ITenderSupplierInputService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/ITenderSupplierInputService.java index b4fb4cfc..c1ede4a9 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/ITenderSupplierInputService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/ITenderSupplierInputService.java @@ -1,5 +1,6 @@ package org.dromara.tender.service; +import org.dromara.tender.domain.bo.TenderSupplierInputReq; import org.dromara.tender.domain.vo.TenderSupplierInputVo; import org.dromara.tender.domain.bo.TenderSupplierInputBo; import org.dromara.tender.domain.TenderSupplierInput; @@ -74,4 +75,6 @@ ITenderSupplierInputService extends IService{ List getList(TenderSupplierInputBo bo); boolean importData(List tenderSupplierInputVos, Long projectId); + + List getListByName(TenderSupplierInputReq req); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusBiddingPlanServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusBiddingPlanServiceImpl.java index 90468208..dc46b76c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusBiddingPlanServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/BusBiddingPlanServiceImpl.java @@ -389,12 +389,12 @@ public class BusBiddingPlanServiceImpl extends ServiceImpl busTenderPlanningLimitLists = busTenderPlanningLimitListMapper.selectList(new LambdaQueryWrapper().in(BusTenderPlanningLimitList::getBiddingPlanId, bplanIdds)); + List busTenderPlanningLimitLists = busTenderPlanningLimitListMapper.selectList(new LambdaQueryWrapper().isNotNull(BusTenderPlanningLimitList::getNum).in(BusTenderPlanningLimitList::getBiddingPlanId, bplanIdds)); for (BusTenderPlanningLimitList v : busTenderPlanningLimitLists) { - if (!map.containsKey(v.getId())) { - map.put(v.getId(), v.getNum()); + if (!map.containsKey(v.getLimitListId())) { + map.put(v.getLimitListId(), v.getNum()); }else { - map.put(v.getId(), map.get(v.getId()).add(v.getNum())); + map.put(v.getLimitListId(), map.get(v.getLimitListId()).add(v.getNum())); } } return map; diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/TenderSupplierInputServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/TenderSupplierInputServiceImpl.java index 6ae176ab..43b88b9c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/TenderSupplierInputServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/tender/service/impl/TenderSupplierInputServiceImpl.java @@ -17,8 +17,17 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.service.ISysOssService; +import org.dromara.tender.domain.BusBiddingPlan; +import org.dromara.tender.domain.BusBillofquantitiesLimitList; +import org.dromara.tender.domain.BusTenderPlanningLimitList; +import org.dromara.tender.domain.bo.TenderSupplierInputReq; +import org.dromara.tender.mapper.BusTenderPlanningLimitListMapper; +import org.dromara.tender.service.IBusBiddingPlanService; +import org.dromara.tender.service.IBusBillofquantitiesLimitListService; +import org.dromara.tender.service.IBusTenderPlanningLimitListService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.dromara.tender.domain.bo.TenderSupplierInputBo; import org.dromara.tender.domain.vo.TenderSupplierInputVo; @@ -45,6 +54,16 @@ public class TenderSupplierInputServiceImpl extends ServiceImpl getListByName(TenderSupplierInputReq req) { + if (req.getName() == null || req.getName().isEmpty()) { + return null; + } + //查询限价一览表中物资限价一览中物资名包含req.getName()的物资 + List busBillofquantitiesLimitLists = billofquantitiesLimitListService.getBaseMapper() + .selectList(new LambdaQueryWrapper() + .eq(BusBillofquantitiesLimitList::getProjectId, req.getProjectId()) + .eq(BusBillofquantitiesLimitList::getType, 3) + .like(BusBillofquantitiesLimitList::getName, req.getName())); + if (busBillofquantitiesLimitLists.isEmpty()) { + return null; + } + Set b = new HashSet<>(); + busBillofquantitiesLimitLists.forEach(billofquantitiesLimitList -> {b.add(billofquantitiesLimitList.getId());}); + if (b.isEmpty()){ + return null; + } + //通过物资限价一览id获取到对应的招标计划id + List busTenderPlanningLimitLists = busTenderPlanningLimitListService.getBaseMapper().selectList(new LambdaQueryWrapper().isNotNull(BusTenderPlanningLimitList::getNum).in(BusTenderPlanningLimitList::getLimitListId, b)); + if (busTenderPlanningLimitLists.isEmpty()) { + return null; + } + //通过招标计划id找到对应招标计划并获取到对应供应商id + Set planIds = new HashSet<>(); + busTenderPlanningLimitLists.forEach(tenderPlanningLimitList -> {planIds.add(tenderPlanningLimitList.getBiddingPlanId());}); + if (planIds.isEmpty()) { + return null; + } + List busBiddingPlans = busBiddingPlanService.getBaseMapper().selectList(new LambdaQueryWrapper().in(BusBiddingPlan::getId, planIds)); + if (busBiddingPlans.isEmpty()) { + return null; + } + //通过供应商id获取供应商列表 + Set tenderSupplierIds = new HashSet<>(); + busBiddingPlans.forEach(biddingPlan -> {tenderSupplierIds.add(biddingPlan.getWinningBidderId());}); + if (tenderSupplierIds.isEmpty()) { + return null; + } + return baseMapper.selectVoByIds(tenderSupplierIds); + } + /** * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/controller/VehVehicleInfoController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/controller/VehVehicleInfoController.java index f023482b..8b2d1fb0 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/controller/VehVehicleInfoController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/controller/VehVehicleInfoController.java @@ -89,6 +89,23 @@ public class VehVehicleInfoController extends BaseController { return toAjax(vehVehicleInfoService.insertByBo(bo)); } + /** + * 车辆绑定gps设备 + */ +// @SaCheckPermission("vehicle:vehicleInfo:bindClient") + @PostMapping("/bindClient") + public R bindClient(@RequestBody VehVehicleInfoBo bo) { + return toAjax(vehVehicleInfoService.bindClient(bo)); + } + /** + * 车辆解绑gps设备 + */ +// @SaCheckPermission("vehicle:vehicleInfo:bindClient") + @PostMapping("/unBindClient") + public R unBindClient(@RequestBody VehVehicleInfoBo bo) { + return toAjax(vehVehicleInfoService.unBindClient(bo)); + } + /** * 修改车辆信息 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/domain/VehVehicleInfo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/domain/VehVehicleInfo.java index f8d034aa..a320b257 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/domain/VehVehicleInfo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/domain/VehVehicleInfo.java @@ -145,4 +145,9 @@ public class VehVehicleInfo extends BaseEntity { */ private String remark; + /** + * gps定位设备id + */ + private String clientId; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/domain/bo/VehVehicleInfoBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/domain/bo/VehVehicleInfoBo.java index 97af27be..3f8cf368 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/domain/bo/VehVehicleInfoBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/domain/bo/VehVehicleInfoBo.java @@ -154,5 +154,9 @@ public class VehVehicleInfoBo extends BaseEntity { */ private String remark; + /** + * gps定位设备id + */ + private String clientId; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/domain/vo/VehVehicleInfoVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/domain/vo/VehVehicleInfoVo.java index 908be104..a8d4a6d7 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/domain/vo/VehVehicleInfoVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/domain/vo/VehVehicleInfoVo.java @@ -181,5 +181,10 @@ public class VehVehicleInfoVo implements Serializable { @ExcelProperty(value = "备注") private String remark; + /** + * gps定位设备id + */ + private String clientId; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/mapper/VehVehicleTripMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/mapper/VehVehicleTripMapper.java index f27dc8a1..8a306fbe 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/mapper/VehVehicleTripMapper.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/mapper/VehVehicleTripMapper.java @@ -18,4 +18,5 @@ public interface VehVehicleTripMapper extends BaseMapperPlus selectVehicleTripPage(@Param("page") Page page, @Param("req") VehVehicleTripQueryReq req); + Long getTripId(@Param("id") Long id); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/service/IVehVehicleInfoService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/service/IVehVehicleInfoService.java index 0fe249ec..08045e43 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/service/IVehVehicleInfoService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/service/IVehVehicleInfoService.java @@ -67,4 +67,18 @@ public interface IVehVehicleInfoService extends IService{ * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 车辆绑定gps设备 + * @param bo + * @return + */ + int bindClient(VehVehicleInfoBo bo); + + /** + * 车辆解绑gps设备 + * @param bo + * @return + */ + int unBindClient(VehVehicleInfoBo bo); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/service/IVehVehicleTripService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/service/IVehVehicleTripService.java index 10cc25b5..53981d4b 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/service/IVehVehicleTripService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/service/IVehVehicleTripService.java @@ -100,4 +100,11 @@ public interface IVehVehicleTripService extends IService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 根据车辆id获取最新行程id + * @param id + * @return + */ + Long getTripId(Long id); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/service/impl/VehVehicleInfoServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/service/impl/VehVehicleInfoServiceImpl.java index e2ad0243..bd097ea0 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/service/impl/VehVehicleInfoServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/service/impl/VehVehicleInfoServiceImpl.java @@ -1,21 +1,30 @@ package org.dromara.vehicle.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.exception.ServiceException; 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.gps.domain.GpsEquipment; +import org.dromara.gps.domain.GpsManmachine; +import org.dromara.gps.service.IGpsEquipmentService; +import org.dromara.gps.service.IGpsManmachineService; import org.dromara.vehicle.domain.VehVehicleInfo; import org.dromara.vehicle.domain.bo.VehVehicleInfoBo; import org.dromara.vehicle.domain.vo.VehVehicleInfoVo; import org.dromara.vehicle.mapper.VehVehicleInfoMapper; import org.dromara.vehicle.service.IVehVehicleInfoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.Collection; import java.util.List; @@ -33,6 +42,14 @@ import java.util.Map; public class VehVehicleInfoServiceImpl extends ServiceImpl implements IVehVehicleInfoService { + @Autowired + @Lazy + private IGpsEquipmentService gpsEquipmentService; + + @Autowired + @Lazy + private IGpsManmachineService gpsManmachineService; + /** * 查询车辆信息 * @@ -150,4 +167,46 @@ public class VehVehicleInfoServiceImpl extends ServiceImpl 0; } + + @Override + @Transactional(rollbackFor = Exception.class) + public int bindClient(VehVehicleInfoBo bo) { + Long count = gpsEquipmentService.getBaseMapper().selectCount(new LambdaQueryWrapper() + .eq(GpsEquipment::getClientId, bo.getClientId()).isNotNull(GpsEquipment::getUserId)); + if (count > 0) { + throw new ServiceException("该设备已绑定!"); + } + GpsEquipment gpsEquipment = gpsEquipmentService.getBaseMapper().selectOne(new LambdaQueryWrapper() + .eq(GpsEquipment::getClientId, bo.getClientId())); + gpsEquipment.setClientType(1); + gpsEquipment.setUserId(bo.getId()); + gpsEquipment.setProjectId(bo.getProjectId()); + gpsEquipmentService.updateById(gpsEquipment); + GpsManmachine gpsManmachine = new GpsManmachine(); + gpsManmachine.setClientId(bo.getClientId()); + gpsManmachine.setUserId(bo.getId()); + gpsManmachineService.save(gpsManmachine); + return baseMapper.update(new LambdaUpdateWrapper().set(VehVehicleInfo::getClientId, bo.getClientId()).eq(VehVehicleInfo::getId,bo.getId())); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public int unBindClient(VehVehicleInfoBo bo) { + GpsEquipment gpsEquipment = gpsEquipmentService.getBaseMapper().selectOne(new LambdaQueryWrapper() + .eq(GpsEquipment::getClientId, bo.getClientId()) + .eq(GpsEquipment::getUserId, bo.getId()) + .eq(GpsEquipment::getProjectId, bo.getProjectId()) + .eq(GpsEquipment::getClientType, 1)); + if (gpsEquipment == null) { + throw new ServiceException("找不到该车辆绑定的设备!"); + } + gpsEquipmentService.update(new LambdaUpdateWrapper() + .set(GpsEquipment::getUserId,null) + .set(GpsEquipment::getProjectId,null) + .eq(GpsEquipment::getId,gpsEquipment.getId())); + gpsManmachineService.getBaseMapper().delete(new LambdaQueryWrapper() + .eq(GpsManmachine::getClientId, bo.getClientId()) + .eq(GpsManmachine::getUserId, bo.getId())); + return baseMapper.update(new LambdaUpdateWrapper().set(VehVehicleInfo::getClientId,null).eq(VehVehicleInfo::getId,bo.getId())); + } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/service/impl/VehVehicleTripServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/service/impl/VehVehicleTripServiceImpl.java index a1d81d2f..2bd88e11 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/service/impl/VehVehicleTripServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/vehicle/service/impl/VehVehicleTripServiceImpl.java @@ -471,6 +471,11 @@ public class VehVehicleTripServiceImpl extends ServiceImpl +