From 1704e30de33833817a5fce4c4ab0b94ac8ce1cc6 Mon Sep 17 00:00:00 2001
From: hsy <1029150275@qq.com>
Date: 星期一, 31 八月 2026 17:32:31 +0800
Subject: [PATCH] fix: 修复多处表单验证与数据流转的缺陷,优化系统消息推送逻辑
---
src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java | 95 ++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 80 insertions(+), 15 deletions(-)
diff --git a/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
index a5005af..3f0db85 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
@@ -4,6 +4,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.enums.RecordTypeEnum;
+import com.ruoyi.basic.utils.FileUtil;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.device.dto.DeviceMaintenanceDto;
@@ -11,33 +13,46 @@
import com.ruoyi.device.mapper.DeviceMaintenanceMapper;
import com.ruoyi.device.pojo.DeviceMaintenance;
import com.ruoyi.device.service.IDeviceMaintenanceService;
+import com.ruoyi.project.system.service.ISysNoticeService;
+import com.ruoyi.project.system.service.impl.UnipushService;
+import com.ruoyi.project.system.domain.SysNotice;
+import java.util.Collections;
+import com.ruoyi.common.utils.SecurityUtils;
+import lombok.extern.slf4j.Slf4j;
+import com.ruoyi.device.vo.DeviceMaintenanceVo;
+import com.ruoyi.device.vo.DeviceRepairVo;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.measuringinstrumentledger.mapper.SparePartsMapper;
import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
import com.ruoyi.measuringinstrumentledger.service.SparePartsRequisitionRecordService;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.RequiredArgsConstructor;
+import com.ruoyi.device.service.IDeviceRepairSparePartService;
+import com.ruoyi.device.pojo.DeviceRepairSparePart;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@Service
+@RequiredArgsConstructor
+@Slf4j
public class DeviceMaintenanceServiceImpl extends ServiceImpl<DeviceMaintenanceMapper, DeviceMaintenance> implements IDeviceMaintenanceService {
-
-
- @Autowired
- private DeviceMaintenanceMapper deviceMaintenanceMapper;
- @Autowired
- private SparePartsMapper sparePartsMapper;
- @Autowired
- private SparePartsRequisitionRecordService sparePartsRequisitionRecordService;
+ private final DeviceMaintenanceMapper deviceMaintenanceMapper;
+ private final SparePartsMapper sparePartsMapper;
+ private final SparePartsRequisitionRecordService sparePartsRequisitionRecordService;
+ private final IDeviceRepairSparePartService deviceRepairSparePartService;
+ private final FileUtil fileUtil;
+ private final ISysNoticeService sysNoticeService;
+ private final UnipushService unipushService;
@Override
public IPage<DeviceMaintenanceDto> queryPage(Page page, DeviceMaintenanceDto deviceMaintenanceDto) {
@@ -46,9 +61,40 @@
}
@Override
- public AjaxResult saveDeviceRepair(DeviceMaintenance deviceMaintenance) {
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult saveDeviceRepair(DeviceMaintenanceDto deviceMaintenance) {
boolean save = this.save(deviceMaintenance);
if (save){
+ // 澶勭悊鍥剧墖涓婁紶
+ fileUtil.saveStorageAttachmentByRecordTypeAndRecordId("file", RecordTypeEnum.DEVICE_MAINTENANCE, deviceMaintenance.getId(), deviceMaintenance.getStorageBlobDTOs());
+
+ // 鎺ㄩ�佺郴缁熸秷鎭粰鎵ц浜�
+ if (deviceMaintenance.getExecutorId() != null) {
+ SysNotice notice = new SysNotice();
+ notice.setNoticeTitle("鏂颁繚鍏昏鍒掓彁閱�");
+ notice.setNoticeType("1"); // 1 閫氱煡
+ String dateStr = deviceMaintenance.getMaintenancePlanTime() != null ?
+ deviceMaintenance.getMaintenancePlanTime().toLocalDate().toString() :
+ java.time.LocalDate.now().toString();
+ notice.setNoticeContent("浣犳湁涓�涓柊鐨勮澶囦繚鍏昏鍒� 锛�" + dateStr + " " + deviceMaintenance.getDeviceName());
+ notice.setStatus("0"); // 姝e父
+ notice.setConsigneeId(deviceMaintenance.getExecutorId());
+ try {
+ Long currentUserId = SecurityUtils.getLoginUser().getUserId();
+ notice.setSenderId(currentUserId);
+ } catch (Exception e) {
+ notice.setSenderId(0L); // 鍏滃簳
+ }
+ notice.setTenantId(deviceMaintenance.getTenantId());
+ sysNoticeService.insertNotice(notice);
+
+ try {
+ unipushService.sendClientMessage(Collections.singletonList(notice));
+ } catch (Exception e) {
+ log.error("鎺ㄩ�佹柊淇濆吇璁″垝绯荤粺娑堟伅澶辫触", e);
+ }
+ }
+
return AjaxResult.success();
}
return AjaxResult.error();
@@ -56,8 +102,14 @@
@Override
@Transactional(rollbackFor = Exception.class)
- public AjaxResult updateDeviceDeviceMaintenance(DeviceMaintenance deviceMaintenance) {
+ public AjaxResult updateDeviceDeviceMaintenance(DeviceMaintenanceDto deviceMaintenance) {
DeviceMaintenance oldDeviceMaintenance = this.getById(deviceMaintenance.getId());
+
+ // 娓呯悊鏃х殑澶囦欢浣跨敤璁板綍锛岄槻姝㈤噸澶嶇疮璁�
+ deviceRepairSparePartService.remove(new QueryWrapper<DeviceRepairSparePart>()
+ .eq("source_id", deviceMaintenance.getId())
+ .eq("source_type", 2));
+
// 澶勭悊澶囦欢浣跨敤鎯呭喌
if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(deviceMaintenance.getSparePartsUseList())) {
List<Long> sparePartIds = new ArrayList<>();
@@ -80,6 +132,14 @@
record.setSparePartsId(sparePartUse.getId());
record.setQuantity(sparePartUse.getQuantity());
sparePartsRequisitionRecordService.save(record);
+
+ // 鎻掑叆璁板綍鍒� device_repair_spare_part
+ DeviceRepairSparePart partRecord = new DeviceRepairSparePart();
+ partRecord.setSourceId(deviceMaintenance.getId());
+ partRecord.setSourceType(2); // 2 淇濆吇
+ partRecord.setSparePartId(sparePartUse.getId());
+ partRecord.setQuantity(sparePartUse.getQuantity());
+ deviceRepairSparePartService.save(partRecord);
} else {
return AjaxResult.error("澶囦欢 " + spareParts.getName() + " 鏁伴噺涓嶈冻");
}
@@ -92,6 +152,8 @@
}
if (this.updateById(deviceMaintenance)) {
+ // 澶勭悊鍥剧墖涓婁紶
+ fileUtil.saveStorageAttachmentByRecordTypeAndRecordId("file", RecordTypeEnum.DEVICE_MAINTENANCE, deviceMaintenance.getId(), deviceMaintenance.getStorageBlobDTOs());
return AjaxResult.success();
}
return AjaxResult.error();
@@ -113,8 +175,11 @@
}
@Override
- public DeviceMaintenanceDto detailById(Long id) {
-
- return deviceMaintenanceMapper.detailById(id);
+ public DeviceMaintenanceVo detailById(Long id) {
+ DeviceMaintenanceVo vo = deviceMaintenanceMapper.detailById(id);
+ vo.setStorageBlobVOs(fileUtil.getStorageBlobVOsByRecordTypeAndRecordId(RecordTypeEnum.DEVICE_MAINTENANCE, id));
+ List<DeviceRepairSparePart> parts = deviceRepairSparePartService.getListWithPartName(id, 2);
+ vo.setSparePartsUseListDetails(parts);
+ return vo;
}
}
--
Gitblit v1.9.3