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 {
+
+
+}