From 31e433fc64a8f55cb10bbaf5455729e4398e70e8 Mon Sep 17 00:00:00 2001 From: litao Date: Sat, 23 Nov 2024 13:52:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A1=E6=A3=80=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 + .../springblade/common/utils/CommonUtil.java | 28 +++- .../business/contraller/DeviceController.java | 150 ++++++++++++++++++ .../contraller/FeedbackController.java | 8 - .../InformationAttachController.java | 12 -- .../contraller/InvoiceController.java | 5 - .../supplies/InOrderController.java | 2 - .../mapper/DeviceMaintenanceMapper.java | 15 ++ .../mapper/MaintenancePlanDetailMapper.java | 15 ++ .../mapper/MaintenancePlanMapper.java | 15 ++ .../mapper/MaintenanceTaskDetailMapper.java | 15 ++ .../mapper/MaintenanceTaskMapper.java | 15 ++ .../modules/business/pojo/dto/DeviceDTO.java | 5 + .../modules/business/pojo/entity/Device.java | 5 + .../pojo/entity/DeviceMaintenance.java | 57 +++++++ .../maintenance/MaintenancePlanDetail.java | 11 ++ .../service/IDeviceMaintenanceService.java | 14 ++ .../business/service/IDeviceService.java | 6 + .../IMaintenancePlanDetailService.java | 14 ++ .../service/IMaintenancePlanService.java | 14 ++ .../IMaintenanceTaskDetailService.java | 14 ++ .../service/IMaintenanceTaskService.java | 14 ++ .../impl/DeviceMaintenanceServiceImpl.java | 20 +++ .../service/impl/DeviceServiceImpl.java | 114 +++++++++++-- .../MaintenancePlanDetailServiceImpl.java | 20 +++ .../impl/MaintenancePlanServiceImpl.java | 20 +++ .../MaintenanceTaskDetailServiceImpl.java | 20 +++ .../impl/MaintenanceTaskServiceImpl.java | 20 +++ 28 files changed, 613 insertions(+), 41 deletions(-) create mode 100644 src/main/java/org/springblade/modules/business/contraller/DeviceController.java create mode 100644 src/main/java/org/springblade/modules/business/mapper/DeviceMaintenanceMapper.java create mode 100644 src/main/java/org/springblade/modules/business/mapper/MaintenancePlanDetailMapper.java create mode 100644 src/main/java/org/springblade/modules/business/mapper/MaintenancePlanMapper.java create mode 100644 src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskDetailMapper.java create mode 100644 src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskMapper.java create mode 100644 src/main/java/org/springblade/modules/business/pojo/entity/DeviceMaintenance.java create mode 100644 src/main/java/org/springblade/modules/business/service/IDeviceMaintenanceService.java create mode 100644 src/main/java/org/springblade/modules/business/service/IMaintenancePlanDetailService.java create mode 100644 src/main/java/org/springblade/modules/business/service/IMaintenancePlanService.java create mode 100644 src/main/java/org/springblade/modules/business/service/IMaintenanceTaskDetailService.java create mode 100644 src/main/java/org/springblade/modules/business/service/IMaintenanceTaskService.java create mode 100644 src/main/java/org/springblade/modules/business/service/impl/DeviceMaintenanceServiceImpl.java create mode 100644 src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanDetailServiceImpl.java create mode 100644 src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java create mode 100644 src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskDetailServiceImpl.java create mode 100644 src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskServiceImpl.java diff --git a/pom.xml b/pom.xml index 9803ec3..fb8c16e 100644 --- a/pom.xml +++ b/pom.xml @@ -236,6 +236,12 @@ lombok provided + + + com.google.zxing + javase + 3.3.1 + diff --git a/src/main/java/org/springblade/common/utils/CommonUtil.java b/src/main/java/org/springblade/common/utils/CommonUtil.java index 636221e..c69e844 100644 --- a/src/main/java/org/springblade/common/utils/CommonUtil.java +++ b/src/main/java/org/springblade/common/utils/CommonUtil.java @@ -25,6 +25,16 @@ */ package org.springblade.common.utils; +import com.google.zxing.BarcodeFormat; +import com.google.zxing.WriterException; +import com.google.zxing.client.j2se.MatrixToImageWriter; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.qrcode.QRCodeWriter; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Base64; + /** * 通用工具类 * @@ -32,5 +42,21 @@ package org.springblade.common.utils; */ public class CommonUtil { - + /** + * 二维码生成(转base64) + * @param content + * @return + * @throws WriterException + * @throws IOException + */ + public static String generateQrCodeBase64(String content) throws WriterException, IOException { + QRCodeWriter qrCodeWriter = new QRCodeWriter(); + BitMatrix bitMatrix = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, 200, 200); + ByteArrayOutputStream pngOutputStream = new ByteArrayOutputStream(); + MatrixToImageWriter.writeToStream(bitMatrix, "PNG", pngOutputStream); + byte[] pngData = pngOutputStream.toByteArray(); + String base64String = Base64.getEncoder().encodeToString(pngData); + pngOutputStream.close(); + return base64String; + } } diff --git a/src/main/java/org/springblade/modules/business/contraller/DeviceController.java b/src/main/java/org/springblade/modules/business/contraller/DeviceController.java new file mode 100644 index 0000000..c67bc4c --- /dev/null +++ b/src/main/java/org/springblade/modules/business/contraller/DeviceController.java @@ -0,0 +1,150 @@ +package org.springblade.modules.business.contraller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import jakarta.validation.Valid; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.BeanUtil; +import org.springblade.core.tool.utils.Func; +import org.springblade.modules.business.pojo.dto.DeviceDTO; +import org.springblade.modules.business.pojo.entity.Device; +import org.springblade.modules.business.pojo.entity.DeviceAttach; +import org.springblade.modules.business.pojo.vo.DeviceVO; +import org.springblade.modules.business.service.IDeviceAttachService; +import org.springblade.modules.business.service.IDeviceService; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Objects; + +/** + * 设备表 控制器 + * + * @author BladeX + * @since 2024-10-14 + */ +@Slf4j +@RestController +@AllArgsConstructor +@RequestMapping("/device") +public class DeviceController extends BladeController { + + private final IDeviceService deviceService; + private final IDeviceAttachService deviceAttachService; + + /** + * 设备表 详情 + */ + @GetMapping("/detail") + @ApiOperationSupport(order = 1) + public R detail(Device device) { + Device detail = deviceService.getOne(Condition.getQueryWrapper(device)); + DeviceVO deviceVO = Objects.requireNonNull(BeanUtil.copy(detail, DeviceVO.class)); + List attaches = deviceAttachService.list(Wrappers.lambdaQuery(DeviceAttach.class).eq(DeviceAttach::getDeviceId, device.getId())); + deviceVO.setAttaches(attaches); + return R.data(deviceVO); + } + + /** + * 设备表 分页 + */ + @GetMapping("/list") + @ApiOperationSupport(order = 2) + public R> list(DeviceDTO device, Query query) { + if (device == null || query == null) { + throw new IllegalArgumentException("Device or Query cannot be null"); + } + + // 验证用户身份 + Long userId = AuthUtil.getUserId(); + if (userId == null) { + throw new IllegalArgumentException("User not authenticated"); + } + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(Device.class); + wrapper.like(StringUtils.isNotBlank(sanitizeInput(device.getName())), Device::getName, device.getName()); + wrapper.eq(StringUtils.isNotBlank(sanitizeInput(device.getPosition())), Device::getPosition, device.getPosition()); + wrapper.eq(StringUtils.isNotBlank(sanitizeInput(device.getType())), Device::getType, device.getType()); +// wrapper.eq(Device::getCreateUser, AuthUtil.getUserId()); + wrapper.orderByDesc(Device::getCreateTime); + try { + IPage pages = deviceService.page(Condition.getPage(query), wrapper); + return R.data(pages); + } catch (Exception e) { + // 记录异常日志 + log.error("Error occurred while fetching device list", e); + throw new RuntimeException("Failed to fetch device list", e); + } + } + + private String sanitizeInput(String input) { + // 对输入进行清理,防止 SQL 注入等安全问题 + if (input == null) { + return null; + } + return input.replaceAll("[^a-zA-Z0-9_\\-\\. ]", ""); + } + + /** + * 设备表 自定义分页 + */ + @GetMapping("/page") + @ApiOperationSupport(order = 3) + public R> page(DeviceVO device, Query query) { + IPage pages = deviceService.selectDevicePage(Condition.getPage(query), device); + return R.data(pages); + } + + /** + * 设备表 新增 + */ + @PostMapping("/save") + public R save(@Valid @RequestBody DeviceDTO device) { + return R.status(deviceService.add(device)); + } + + /** + * 设备表 修改 + */ + @PostMapping("/update") + @ApiOperationSupport(order = 5) + public R update(@Valid @RequestBody DeviceDTO device) { + return R.status(deviceService.edit(device)); + } + + /** + * 设备表 生成二维码 + */ + @PostMapping("/qrcode") + @ApiOperationSupport(order = 5) + public R qrcode(@Valid @RequestBody Device device) { + return R.status(deviceService.qrcode(device)); + } + + /** + * 设备表 新增或修改 + */ + @PostMapping("/submit") + @ApiOperationSupport(order = 6) + public R submit(@Valid @RequestBody Device device) { + return R.status(deviceService.saveOrUpdate(device)); + } + + /** + * 设备表 删除 + */ + @PostMapping("/remove") + @ApiOperationSupport(order = 7) + public R remove(@RequestParam String ids) { + return R.status(deviceService.deleteLogic(Func.toLongList(ids))); + } + +} diff --git a/src/main/java/org/springblade/modules/business/contraller/FeedbackController.java b/src/main/java/org/springblade/modules/business/contraller/FeedbackController.java index 51d679e..eb243b9 100644 --- a/src/main/java/org/springblade/modules/business/contraller/FeedbackController.java +++ b/src/main/java/org/springblade/modules/business/contraller/FeedbackController.java @@ -6,34 +6,26 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import org.springblade.common.cache.DictBizCache; import org.springblade.common.cache.UserCache; import org.springblade.core.boot.ctrl.BladeController; -import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; -import org.springblade.core.secure.BladeUser; import org.springblade.core.tool.api.R; -import org.springblade.core.tool.constant.BladeConstant; import org.springblade.core.tool.utils.CollectionUtil; -import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.modules.business.pojo.dto.FeedbackDTO; import org.springblade.modules.business.pojo.entity.Attachs; import org.springblade.modules.business.pojo.entity.Feedback; -import org.springblade.modules.business.excel.FeedbackExcel; import org.springblade.modules.business.service.IAttachaService; import org.springblade.modules.business.service.IFeedbackService; -import org.springblade.modules.business.pojo.vo.FeedbackVO; import org.springblade.modules.system.pojo.entity.User; import org.springframework.web.bind.annotation.*; import java.util.Date; import java.util.List; -import java.util.Map; import static org.springblade.common.enums.DictBizEnum.FEED_BACK_TYPE; diff --git a/src/main/java/org/springblade/modules/business/contraller/InformationAttachController.java b/src/main/java/org/springblade/modules/business/contraller/InformationAttachController.java index f8a2660..44c9390 100644 --- a/src/main/java/org/springblade/modules/business/contraller/InformationAttachController.java +++ b/src/main/java/org/springblade/modules/business/contraller/InformationAttachController.java @@ -1,28 +1,16 @@ package org.springblade.modules.business.contraller; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; -import org.springblade.core.excel.util.ExcelUtil; -import org.springblade.core.mp.support.Condition; -import org.springblade.core.mp.support.Query; -import org.springblade.core.secure.BladeUser; import org.springblade.core.tool.api.R; -import org.springblade.core.tool.constant.BladeConstant; -import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.modules.business.pojo.entity.InformationAttach; -import org.springblade.modules.business.excel.InformationAttachExcel; import org.springblade.modules.business.service.IInformationAttachService; -import org.springblade.modules.business.pojo.vo.InformationAttachVO; import org.springframework.web.bind.annotation.*; import java.util.List; -import java.util.Map; /** * 资料附件表 控制器 diff --git a/src/main/java/org/springblade/modules/business/contraller/InvoiceController.java b/src/main/java/org/springblade/modules/business/contraller/InvoiceController.java index 7a86574..5aaf9f5 100644 --- a/src/main/java/org/springblade/modules/business/contraller/InvoiceController.java +++ b/src/main/java/org/springblade/modules/business/contraller/InvoiceController.java @@ -1,16 +1,11 @@ package org.springblade.modules.business.contraller; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; -import org.springblade.core.mp.support.Condition; -import org.springblade.core.mp.support.Query; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; -import org.springblade.modules.business.pojo.entity.Information; import org.springblade.modules.business.pojo.entity.Invoice; import org.springblade.modules.business.service.IInvoiceService; import org.springframework.web.bind.annotation.*; diff --git a/src/main/java/org/springblade/modules/business/contraller/supplies/InOrderController.java b/src/main/java/org/springblade/modules/business/contraller/supplies/InOrderController.java index c03020b..a2b0fd2 100644 --- a/src/main/java/org/springblade/modules/business/contraller/supplies/InOrderController.java +++ b/src/main/java/org/springblade/modules/business/contraller/supplies/InOrderController.java @@ -14,11 +14,9 @@ import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.CollectionUtil; import org.springblade.core.tool.utils.Func; import org.springblade.modules.business.pojo.dto.supplies.InOrderDTO; -import org.springblade.modules.business.pojo.entity.supplies.Goods; import org.springblade.modules.business.pojo.entity.supplies.InOrder; import org.springblade.modules.business.pojo.entity.supplies.InOrderDetail; import org.springblade.modules.business.pojo.vo.supplies.InOrderVO; -import org.springblade.modules.business.service.supplies.IGoodsService; import org.springblade.modules.business.service.supplies.IInOrderDetailService; import org.springblade.modules.business.service.supplies.IInOrderService; import org.springframework.web.bind.annotation.*; diff --git a/src/main/java/org/springblade/modules/business/mapper/DeviceMaintenanceMapper.java b/src/main/java/org/springblade/modules/business/mapper/DeviceMaintenanceMapper.java new file mode 100644 index 0000000..a168aec --- /dev/null +++ b/src/main/java/org/springblade/modules/business/mapper/DeviceMaintenanceMapper.java @@ -0,0 +1,15 @@ + +package org.springblade.modules.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.modules.business.pojo.entity.DeviceMaintenance; + +/** + * 设备巡检表 Mapper 接口 + * + * @author BladeX + * @since 2024-10-14 + */ +public interface DeviceMaintenanceMapper extends BaseMapper { + +} diff --git a/src/main/java/org/springblade/modules/business/mapper/MaintenancePlanDetailMapper.java b/src/main/java/org/springblade/modules/business/mapper/MaintenancePlanDetailMapper.java new file mode 100644 index 0000000..2dd91ae --- /dev/null +++ b/src/main/java/org/springblade/modules/business/mapper/MaintenancePlanDetailMapper.java @@ -0,0 +1,15 @@ + +package org.springblade.modules.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlanDetail; + +/** + * 维保计划详情 Mapper 接口 + * + * @author BladeX + * @since 2024-10-14 + */ +public interface MaintenancePlanDetailMapper extends BaseMapper { + +} diff --git a/src/main/java/org/springblade/modules/business/mapper/MaintenancePlanMapper.java b/src/main/java/org/springblade/modules/business/mapper/MaintenancePlanMapper.java new file mode 100644 index 0000000..f9899f0 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/mapper/MaintenancePlanMapper.java @@ -0,0 +1,15 @@ + +package org.springblade.modules.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlan; + +/** + * 维保计划 Mapper 接口 + * + * @author BladeX + * @since 2024-10-14 + */ +public interface MaintenancePlanMapper extends BaseMapper { + +} diff --git a/src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskDetailMapper.java b/src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskDetailMapper.java new file mode 100644 index 0000000..f035596 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskDetailMapper.java @@ -0,0 +1,15 @@ + +package org.springblade.modules.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTaskDetail; + +/** + * 维保任务详情 Mapper 接口 + * + * @author BladeX + * @since 2024-10-14 + */ +public interface MaintenanceTaskDetailMapper extends BaseMapper { + +} diff --git a/src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskMapper.java b/src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskMapper.java new file mode 100644 index 0000000..f7ef92c --- /dev/null +++ b/src/main/java/org/springblade/modules/business/mapper/MaintenanceTaskMapper.java @@ -0,0 +1,15 @@ + +package org.springblade.modules.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTask; + +/** + * 维保任务 Mapper 接口 + * + * @author BladeX + * @since 2024-10-14 + */ +public interface MaintenanceTaskMapper extends BaseMapper { + +} diff --git a/src/main/java/org/springblade/modules/business/pojo/dto/DeviceDTO.java b/src/main/java/org/springblade/modules/business/pojo/dto/DeviceDTO.java index 8f87c34..0287a70 100644 --- a/src/main/java/org/springblade/modules/business/pojo/dto/DeviceDTO.java +++ b/src/main/java/org/springblade/modules/business/pojo/dto/DeviceDTO.java @@ -5,6 +5,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.modules.business.pojo.entity.Device; import org.springblade.modules.business.pojo.entity.DeviceAttach; +import org.springblade.modules.business.pojo.entity.DeviceMaintenance; import java.util.List; @@ -19,8 +20,12 @@ import java.util.List; public class DeviceDTO extends Device { private static final long serialVersionUID = 1L; + // 设备附件 private List attaches; + // 设备巡检 + private List maintenances; + // 设备名称 private String name; diff --git a/src/main/java/org/springblade/modules/business/pojo/entity/Device.java b/src/main/java/org/springblade/modules/business/pojo/entity/Device.java index b09668f..a2565f6 100644 --- a/src/main/java/org/springblade/modules/business/pojo/entity/Device.java +++ b/src/main/java/org/springblade/modules/business/pojo/entity/Device.java @@ -66,4 +66,9 @@ public class Device extends BaseEntity { * 运行状态( 0关机 1运行中 2报警中) */ private Integer runStatus; + + /** + * 二维码(base64) + */ + private String qrcode; } diff --git a/src/main/java/org/springblade/modules/business/pojo/entity/DeviceMaintenance.java b/src/main/java/org/springblade/modules/business/pojo/entity/DeviceMaintenance.java new file mode 100644 index 0000000..c76b660 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/pojo/entity/DeviceMaintenance.java @@ -0,0 +1,57 @@ +package org.springblade.modules.business.pojo.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 设备巡检表 + * + * @author liuqingkun + */ +@Data +@TableName("lab_device_maintenance") +@EqualsAndHashCode(callSuper = true) +@Schema(description = "设备巡检表") +public class DeviceMaintenance extends BaseEntity { + + private Long deviceId; + + /** + * 楼层 + */ + private String floorName; + + /** + * 巡检内容 + */ + private String checkContent; + + /** + * 工艺要求 + */ + private String craft; + + /** + * 巡检周期 1:月, 2:季, 3:半年 + */ + private Integer period; + + /** + * 计划开始时间 + */ + @DateTimeFormat( + pattern = "yyyy-MM-dd" + ) + @JsonFormat( + pattern = "yyyy-MM-dd" + ) + private Date startTime; + +} diff --git a/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenancePlanDetail.java b/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenancePlanDetail.java index 573df7f..2ca1440 100644 --- a/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenancePlanDetail.java +++ b/src/main/java/org/springblade/modules/business/pojo/entity/maintenance/MaintenancePlanDetail.java @@ -64,5 +64,16 @@ public class MaintenancePlanDetail extends BaseEntity { ) private Date startTime; + /** + * 下次开始时间 + */ + @DateTimeFormat( + pattern = "yyyy-MM-dd" + ) + @JsonFormat( + pattern = "yyyy-MM-dd" + ) + private Date nextStartTime; + } diff --git a/src/main/java/org/springblade/modules/business/service/IDeviceMaintenanceService.java b/src/main/java/org/springblade/modules/business/service/IDeviceMaintenanceService.java new file mode 100644 index 0000000..eb15129 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/service/IDeviceMaintenanceService.java @@ -0,0 +1,14 @@ +package org.springblade.modules.business.service; + +import org.springblade.core.mp.base.BaseService; +import org.springblade.modules.business.pojo.entity.DeviceMaintenance; + +/** + * 设备巡检表 服务类 + * + * @author BladeX + * @since 2024-10-14 + */ +public interface IDeviceMaintenanceService extends BaseService { + +} diff --git a/src/main/java/org/springblade/modules/business/service/IDeviceService.java b/src/main/java/org/springblade/modules/business/service/IDeviceService.java index dbefed4..31ab8b2 100644 --- a/src/main/java/org/springblade/modules/business/service/IDeviceService.java +++ b/src/main/java/org/springblade/modules/business/service/IDeviceService.java @@ -3,6 +3,7 @@ package org.springblade.modules.business.service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; +import org.springblade.modules.business.pojo.dto.DeviceDTO; import org.springblade.modules.business.pojo.entity.Device; import org.springblade.modules.business.excel.DeviceExcel; import org.springblade.modules.business.pojo.vo.DeviceVO; @@ -34,4 +35,9 @@ public interface IDeviceService extends BaseService { */ List exportDevice(Wrapper queryWrapper); + boolean add(DeviceDTO device); + + boolean edit(DeviceDTO device); + + boolean qrcode(Device device); } diff --git a/src/main/java/org/springblade/modules/business/service/IMaintenancePlanDetailService.java b/src/main/java/org/springblade/modules/business/service/IMaintenancePlanDetailService.java new file mode 100644 index 0000000..dda404d --- /dev/null +++ b/src/main/java/org/springblade/modules/business/service/IMaintenancePlanDetailService.java @@ -0,0 +1,14 @@ +package org.springblade.modules.business.service; + +import org.springblade.core.mp.base.BaseService; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlanDetail; + +/** + * 维保计划详情 服务类 + * + * @author BladeX + * @since 2024-10-14 + */ +public interface IMaintenancePlanDetailService extends BaseService { + +} diff --git a/src/main/java/org/springblade/modules/business/service/IMaintenancePlanService.java b/src/main/java/org/springblade/modules/business/service/IMaintenancePlanService.java new file mode 100644 index 0000000..dcbf6cd --- /dev/null +++ b/src/main/java/org/springblade/modules/business/service/IMaintenancePlanService.java @@ -0,0 +1,14 @@ +package org.springblade.modules.business.service; + +import org.springblade.core.mp.base.BaseService; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlan; + +/** + * 维保计划 服务类 + * + * @author BladeX + * @since 2024-10-14 + */ +public interface IMaintenancePlanService extends BaseService { + +} diff --git a/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskDetailService.java b/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskDetailService.java new file mode 100644 index 0000000..976082d --- /dev/null +++ b/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskDetailService.java @@ -0,0 +1,14 @@ +package org.springblade.modules.business.service; + +import org.springblade.core.mp.base.BaseService; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTaskDetail; + +/** + * 维保任务详情 服务类 + * + * @author BladeX + * @since 2024-10-14 + */ +public interface IMaintenanceTaskDetailService extends BaseService { + +} diff --git a/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskService.java b/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskService.java new file mode 100644 index 0000000..f527e6d --- /dev/null +++ b/src/main/java/org/springblade/modules/business/service/IMaintenanceTaskService.java @@ -0,0 +1,14 @@ +package org.springblade.modules.business.service; + +import org.springblade.core.mp.base.BaseService; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTask; + +/** + * 维保任务 服务类 + * + * @author BladeX + * @since 2024-10-14 + */ +public interface IMaintenanceTaskService extends BaseService { + +} diff --git a/src/main/java/org/springblade/modules/business/service/impl/DeviceMaintenanceServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/DeviceMaintenanceServiceImpl.java new file mode 100644 index 0000000..b0783cf --- /dev/null +++ b/src/main/java/org/springblade/modules/business/service/impl/DeviceMaintenanceServiceImpl.java @@ -0,0 +1,20 @@ + +package org.springblade.modules.business.service.impl; + +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.modules.business.mapper.DeviceMaintenanceMapper; +import org.springblade.modules.business.pojo.entity.DeviceMaintenance; +import org.springblade.modules.business.service.IDeviceMaintenanceService; +import org.springframework.stereotype.Service; + +/** + * 设备巡检表 服务实现类 + * + * @author BladeX + * @since 2024-10-14 + */ +@Service +public class DeviceMaintenanceServiceImpl extends BaseServiceImpl implements IDeviceMaintenanceService { + + +} diff --git a/src/main/java/org/springblade/modules/business/service/impl/DeviceServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/DeviceServiceImpl.java index 893ed6e..2a9f08d 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/DeviceServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/DeviceServiceImpl.java @@ -3,15 +3,30 @@ package org.springblade.modules.business.service.impl; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.google.zxing.WriterException; +import lombok.AllArgsConstructor; +import org.apache.commons.collections.CollectionUtils; +import org.springblade.common.utils.CommonUtil; import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.tool.utils.CollectionUtil; +import org.springblade.modules.business.service.IDeviceAttachService; +import org.springblade.modules.business.service.IDeviceMaintenanceService; +import org.springblade.modules.business.service.IDeviceService; +import org.springblade.modules.business.pojo.dto.DeviceDTO; import org.springblade.modules.business.pojo.entity.Device; import org.springblade.modules.business.excel.DeviceExcel; import org.springblade.modules.business.mapper.DeviceMapper; -import org.springblade.modules.business.service.IDeviceService; +import org.springblade.modules.business.pojo.entity.DeviceAttach; +import org.springblade.modules.business.pojo.entity.DeviceMaintenance; import org.springblade.modules.business.pojo.vo.DeviceVO; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; +import java.io.IOException; import java.util.List; +import java.util.stream.Collectors; /** * 设备表 服务实现类 @@ -20,21 +35,94 @@ import java.util.List; * @since 2024-10-14 */ @Service +@AllArgsConstructor public class DeviceServiceImpl extends BaseServiceImpl implements IDeviceService { - @Override - public IPage selectDevicePage(IPage page, DeviceVO device) { - return page.setRecords(baseMapper.selectDevicePage(page, device)); - } + private final IDeviceAttachService deviceAttachService; + private final IDeviceMaintenanceService maintenanceService; + + @Override + public IPage selectDevicePage(IPage page, DeviceVO device) { + return page.setRecords(baseMapper.selectDevicePage(page, device)); + } + + + @Override + public List exportDevice(Wrapper queryWrapper) { + List deviceList = baseMapper.exportDevice(queryWrapper); + //deviceList.forEach(device -> { + // device.setTypeName(DictCache.getValue(DictEnum.YES_NO, Device.getType())); + //}); + return deviceList; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean add(DeviceDTO device) { + device.setCode("编码格式待定"); + boolean save = this.save(device); + // 附件保存 + List attaches = device.getAttaches(); + if (CollectionUtil.isNotEmpty(attaches)) { + attaches.forEach(attach -> attach.setDeviceId(device.getId())); + save = deviceAttachService.saveBatch(attaches); + } + + // 巡检内容保存 + List maintenances = device.getMaintenances(); + if (CollectionUtil.isNotEmpty(maintenances)) { + maintenances.forEach(maintenance -> maintenance.setDeviceId(device.getId())); + save = maintenanceService.saveBatch(maintenances); + } + return save; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean edit(DeviceDTO device) { + // 删除的id与传入的id相同 + deviceAttachService.remove(Wrappers.lambdaQuery(DeviceAttach.class).eq(DeviceAttach::getDeviceId, device.getId())); + // 获取到重复的内容(之情提交过的附件) + List attaches = device.getAttaches(); + // 如果有重复的附件 + if (CollectionUtil.isNotEmpty(attaches)) { + // + attaches.forEach(attache -> attache.setDeviceId(device.getId())); + deviceAttachService.saveBatch(attaches); + } + List maintenances = device.getMaintenances(); + if (CollectionUtil.isNotEmpty(maintenances)) { + // 需要新增的巡检 + List newSave = maintenances.stream().filter(maintenance -> maintenance.getId() == null).collect(Collectors.toList()); + // 不删除的巡检ids + List ids = maintenances.stream().filter(maintenance -> maintenance.getId() != null).map(DeviceMaintenance::getId).collect(Collectors.toList()); + maintenanceService.remove(Wrappers.lambdaQuery(DeviceMaintenance.class) + .eq(DeviceMaintenance::getDeviceId, device.getId()) + .notIn(CollectionUtils.isNotEmpty(ids), DeviceMaintenance::getId, ids)); - @Override - public List exportDevice(Wrapper queryWrapper) { - List deviceList = baseMapper.exportDevice(queryWrapper); - //deviceList.forEach(device -> { - // device.setTypeName(DictCache.getValue(DictEnum.YES_NO, Device.getType())); - //}); - return deviceList; - } + if (CollectionUtil.isNotEmpty(newSave)) { + newSave.forEach(maintenance -> maintenance.setDeviceId(device.getId())); + maintenanceService.saveBatch(newSave); + } + } + return this.updateById(device); + } + @Override + public boolean qrcode(Device device) { + if (device.getId() == null) { + log.error("设备id为空"); + return false; + } + // 生成二维码base64 + try { + String qrcode = CommonUtil.generateQrCodeBase64(device.getId().toString()); + device.setQrcode("data:image/png;base64," + qrcode); + } catch (WriterException | IOException e) { + log.error("二维码生成失败..."); + return false; + } + return this.updateById(device); + } } diff --git a/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanDetailServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanDetailServiceImpl.java new file mode 100644 index 0000000..67c5f23 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanDetailServiceImpl.java @@ -0,0 +1,20 @@ + +package org.springblade.modules.business.service.impl; + +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.modules.business.service.IMaintenancePlanDetailService; +import org.springblade.modules.business.mapper.MaintenancePlanDetailMapper; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlanDetail; +import org.springframework.stereotype.Service; + +/** + * 巡检计划详情 服务实现类 + * + * @author BladeX + * @since 2024-10-14 + */ +@Service +public class MaintenancePlanDetailServiceImpl extends BaseServiceImpl implements IMaintenancePlanDetailService { + + +} diff --git a/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java new file mode 100644 index 0000000..50a1680 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java @@ -0,0 +1,20 @@ + +package org.springblade.modules.business.service.impl; + +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.modules.business.service.IMaintenancePlanService; +import org.springblade.modules.business.mapper.MaintenancePlanMapper; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenancePlan; +import org.springframework.stereotype.Service; + +/** + * 巡检计划 服务实现类 + * + * @author BladeX + * @since 2024-10-14 + */ +@Service +public class MaintenancePlanServiceImpl extends BaseServiceImpl implements IMaintenancePlanService { + + +} diff --git a/src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskDetailServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskDetailServiceImpl.java new file mode 100644 index 0000000..171dd01 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskDetailServiceImpl.java @@ -0,0 +1,20 @@ + +package org.springblade.modules.business.service.impl; + +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.modules.business.mapper.MaintenanceTaskDetailMapper; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTaskDetail; +import org.springblade.modules.business.service.IMaintenanceTaskDetailService; +import org.springframework.stereotype.Service; + +/** + * 巡检任务详情 服务实现类 + * + * @author BladeX + * @since 2024-10-14 + */ +@Service +public class MaintenanceTaskDetailServiceImpl extends BaseServiceImpl implements IMaintenanceTaskDetailService { + + +} diff --git a/src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskServiceImpl.java new file mode 100644 index 0000000..8186b25 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/service/impl/MaintenanceTaskServiceImpl.java @@ -0,0 +1,20 @@ + +package org.springblade.modules.business.service.impl; + +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.modules.business.service.IMaintenanceTaskService; +import org.springblade.modules.business.mapper.MaintenanceTaskMapper; +import org.springblade.modules.business.pojo.entity.maintenance.MaintenanceTask; +import org.springframework.stereotype.Service; + +/** + * 巡检任务 服务实现类 + * + * @author BladeX + * @since 2024-10-14 + */ +@Service +public class MaintenanceTaskServiceImpl extends BaseServiceImpl implements IMaintenanceTaskService { + + +}