From a8e4132c3e2e9c3b3fcb0360901b35571b6464ea Mon Sep 17 00:00:00 2001
From: hsy <1029150275@qq.com>
Date: 星期五, 28 八月 2026 10:13:01 +0800
Subject: [PATCH] feat: 综合业务模块功能补充与实体拓展
---
src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java | 110 +++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 87 insertions(+), 23 deletions(-)
diff --git a/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
index 98f0d27..76d1a3a 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
@@ -6,6 +6,7 @@
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.ruoyi.basic.enums.RecordTypeEnum;
import com.ruoyi.basic.utils.FileUtil;
+import com.ruoyi.common.utils.DictUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.device.dto.DeviceDefectRecordDto;
@@ -18,9 +19,14 @@
import com.ruoyi.device.service.IDeviceLedgerService;
import com.ruoyi.device.service.IDeviceRepairService;
import com.ruoyi.device.vo.DeviceRepairVo;
-import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.measuringinstrumentledger.mapper.SparePartsMapper;
import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
+import com.ruoyi.approve.pojo.KnowledgeBase;
+import com.ruoyi.approve.service.KnowledgeBaseService;
+import com.ruoyi.device.pojo.DeviceRepairSparePart;
+import com.ruoyi.device.service.IDeviceRepairSparePartService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
import com.ruoyi.measuringinstrumentledger.service.SparePartsRequisitionRecordService;
import jakarta.servlet.http.HttpServletResponse;
@@ -45,6 +51,8 @@
private final IDeviceLedgerService deviceLedgerService;
private final SparePartsMapper sparePartsMapper;
private final SparePartsRequisitionRecordService sparePartsRequisitionRecordService;
+ private final IDeviceRepairSparePartService deviceRepairSparePartService;
+ private final KnowledgeBaseService knowledgeBaseService;
private final FileUtil fileUtil;
private static final int STATUS_PENDING_REPAIR = 0;
@@ -63,7 +71,7 @@
@Override
@Transactional(rollbackFor = Exception.class)
- public R<?> saveDeviceRepair(DeviceRepairDto deviceRepairDto) {
+ public AjaxResult saveDeviceRepair(DeviceRepairDto deviceRepairDto) {
DeviceLedger byId = deviceLedgerService.getById(deviceRepairDto.getDeviceLedgerId());
deviceRepairDto.setDeviceName(byId.getDeviceName());
deviceRepairDto.setDeviceModel(byId.getDeviceModel());
@@ -74,24 +82,29 @@
if (save) {
// 澶勭悊鍥剧墖涓婁紶
fileUtil.saveStorageAttachmentByRecordTypeAndRecordId("file", RecordTypeEnum.DEVICE_REPAIR, deviceRepairDto.getId(), deviceRepairDto.getStorageBlobDTOs());
- return R.ok();
+ return AjaxResult.success();
}
- return R.fail("淇濆瓨澶辫触");
+ return AjaxResult.error("淇濆瓨澶辫触");
}
@Override
@Transactional(rollbackFor = Exception.class)
- public R<?> updateDeviceRepair(DeviceRepairDto deviceRepairDto) {
+ public AjaxResult updateDeviceRepair(DeviceRepairDto deviceRepairDto) {
DeviceRepair oldDeviceRepair = this.getById(deviceRepairDto.getId());
if (oldDeviceRepair == null) {
- return R.fail("鎶ヤ慨璁板綍涓嶅瓨鍦�");
+ return AjaxResult.error("鎶ヤ慨璁板綍涓嶅瓨鍦�");
}
if (deviceRepairDto.getStatus() != null
&& deviceRepairDto.getStatus() == STATUS_COMPLETED
&& (oldDeviceRepair.getStatus() == null
|| oldDeviceRepair.getStatus() != STATUS_COMPLETED)) {
- return R.fail("璇峰厛鎻愪氦楠屾敹瀹℃壒锛岄獙鏀堕�氳繃鍚庢墠鍙畬缁�");
+ return AjaxResult.error("璇峰厛鎻愪氦楠屾敹瀹℃壒锛岄獙鏀堕�氳繃鍚庢墠鍙畬缁�");
}
+ // 娓呯悊鏃х殑澶囦欢浣跨敤璁板綍锛岄槻姝㈤噸澶嶇疮璁�
+ deviceRepairSparePartService.remove(new QueryWrapper<DeviceRepairSparePart>()
+ .eq("source_id", deviceRepairDto.getId())
+ .eq("source_type", 1));
+
// 澶勭悊澶囦欢浣跨敤鎯呭喌
if (CollectionUtils.isNotEmpty(deviceRepairDto.getSparePartsUseList())) {
List<Long> sparePartIds = new ArrayList<>();
@@ -114,8 +127,16 @@
record.setSparePartsId(sparePartUse.getId());
record.setQuantity(sparePartUse.getQuantity());
sparePartsRequisitionRecordService.save(record);
+
+ // 鎻掑叆璁板綍鍒� device_repair_spare_part
+ DeviceRepairSparePart partRecord = new DeviceRepairSparePart();
+ partRecord.setSourceId(deviceRepairDto.getId());
+ partRecord.setSourceType(1); // 1 鎶ヤ慨
+ partRecord.setSparePartId(sparePartUse.getId());
+ partRecord.setQuantity(sparePartUse.getQuantity());
+ deviceRepairSparePartService.save(partRecord);
} else {
- return R.fail("澶囦欢 " + spareParts.getName() + " 鏁伴噺涓嶈冻");
+ return AjaxResult.error("澶囦欢 " + spareParts.getName() + " 鏁伴噺涓嶈冻");
}
}
}
@@ -142,23 +163,23 @@
if (deviceRepairDto.getStorageBlobDTOs() != null) {
fileUtil.saveStorageAttachmentByRecordTypeAndRecordId("file", RecordTypeEnum.DEVICE_REPAIR, id, deviceRepairDto.getStorageBlobDTOs());
}
- return R.ok();
+ return AjaxResult.success();
}
- return R.fail();
+ return AjaxResult.error();
}
@Override
@Transactional(rollbackFor = Exception.class)
- public R<?> confirmRepair(DeviceRepairDto deviceRepairDto) {
+ public AjaxResult confirmRepair(DeviceRepairDto deviceRepairDto) {
DeviceRepair oldDeviceRepair = this.getById(deviceRepairDto.getId());
if (oldDeviceRepair == null) {
- return R.fail("鎶ヤ慨璁板綍涓嶅瓨鍦�");
+ return AjaxResult.error("鎶ヤ慨璁板綍涓嶅瓨鍦�");
}
if (oldDeviceRepair.getStatus() != null && oldDeviceRepair.getStatus() == STATUS_COMPLETED) {
- return R.fail("璇ユ姤淇凡瀹岀粨锛屼笉鑳介噸澶嶇‘璁ょ淮淇�");
+ return AjaxResult.error("璇ユ姤淇凡瀹岀粨锛屼笉鑳介噸澶嶇‘璁ょ淮淇�");
}
if (oldDeviceRepair.getStatus() != null && oldDeviceRepair.getStatus() == STATUS_PENDING_ACCEPTANCE) {
- return R.fail("璇ユ姤淇凡鎻愪氦楠屾敹瀹℃壒");
+ return AjaxResult.error("璇ユ姤淇凡鎻愪氦楠屾敹瀹℃壒");
}
deviceRepairDto.setStatus(STATUS_PENDING_ACCEPTANCE);
return updateDeviceRepair(deviceRepairDto);
@@ -166,25 +187,25 @@
@Override
@Transactional(rollbackFor = Exception.class)
- public R<?> approveRepairAcceptance(DeviceRepairDto deviceRepairDto) {
+ public AjaxResult approveRepairAcceptance(DeviceRepairDto deviceRepairDto) {
if (deviceRepairDto.getId() == null) {
- return R.fail("鎶ヤ慨璁板綍id涓嶈兘涓虹┖");
+ return AjaxResult.error("鎶ヤ慨璁板綍id涓嶈兘涓虹┖");
}
DeviceRepair oldDeviceRepair = this.getById(deviceRepairDto.getId());
if (oldDeviceRepair == null) {
- return R.fail("鎶ヤ慨璁板綍涓嶅瓨鍦�");
+ return AjaxResult.error("鎶ヤ慨璁板綍涓嶅瓨鍦�");
}
if (oldDeviceRepair.getStatus() == null || oldDeviceRepair.getStatus() != STATUS_PENDING_ACCEPTANCE) {
- return R.fail("璇ユ姤淇湭杩涘叆寰呴獙鏀剁姸鎬侊紝涓嶈兘瀹℃壒");
+ return AjaxResult.error("璇ユ姤淇湭杩涘叆寰呴獙鏀剁姸鎬侊紝涓嶈兘瀹℃壒");
}
if (StringUtils.isBlank(deviceRepairDto.getAcceptanceName())) {
- return R.fail("楠屾敹浜轰笉鑳戒负绌�");
+ return AjaxResult.error("楠屾敹浜轰笉鑳戒负绌�");
}
if (deviceRepairDto.getAcceptanceTime() == null) {
- return R.fail("楠屾敹鏃堕棿涓嶈兘涓虹┖");
+ return AjaxResult.error("楠屾敹鏃堕棿涓嶈兘涓虹┖");
}
if (StringUtils.isBlank(deviceRepairDto.getAcceptanceRemark())) {
- return R.fail("楠屾敹澶囨敞涓嶈兘涓虹┖");
+ return AjaxResult.error("楠屾敹澶囨敞涓嶈兘涓虹┖");
}
DeviceRepair update = new DeviceRepair();
@@ -194,9 +215,50 @@
update.setAcceptanceRemark(deviceRepairDto.getAcceptanceRemark());
update.setStatus(STATUS_COMPLETED);
if (this.updateById(update)) {
- return R.ok();
+ try {
+ DeviceLedger deviceLedger = deviceLedgerService.getById(oldDeviceRepair.getDeviceLedgerId());
+ List<DeviceRepairSparePart> parts = deviceRepairSparePartService.getListWithPartName(deviceRepairDto.getId(), 1);
+
+ String sparePartsInfo = "";
+ if (CollectionUtils.isNotEmpty(parts)) {
+ StringBuilder sb = new StringBuilder();
+ for (DeviceRepairSparePart p : parts) {
+ sb.append(p.getSparePartName()).append("(").append(p.getQuantity()).append("涓�) ");
+ }
+ sparePartsInfo = " 閰嶄欢浣跨敤鎯呭喌: " + sb.toString();
+ }
+
+ KnowledgeBase kb = new KnowledgeBase();
+ String typeName = deviceLedger.getType();
+ String deviceModel = deviceLedger.getDeviceModel();
+ String repairTypeStr = oldDeviceRepair.getRepairType();
+ String repairTypeLabel = DictUtils.getDictLabel("device_repair_type", repairTypeStr);
+ if (StringUtils.isBlank(repairTypeLabel)) {
+ repairTypeLabel = "缁翠慨";
+ }
+
+ kb.setTitle((typeName != null ? typeName : "璁惧") + "_" + (deviceModel != null ? deviceModel : "") + " 鐨� " + repairTypeLabel + "璁板綍");
+ kb.setScenario("璁惧缁翠慨");
+ kb.setType("瑙e喅鏂规");
+
+ String remarkStr = oldDeviceRepair.getRemark() == null ? "" : oldDeviceRepair.getRemark();
+ kb.setProblem(String.format("璁惧鍙�: %s, 璁惧鍚嶇О: %s, 鏁呴殰鎻忚堪: %s",
+ deviceLedger.getUniqueCode(), deviceLedger.getDeviceName(),
+ remarkStr));
+
+ String reasonStr = oldDeviceRepair.getReasonAnalysis() == null ? "" : oldDeviceRepair.getReasonAnalysis();
+ String handlingStr = oldDeviceRepair.getHandlingMeasures() == null ? "" : oldDeviceRepair.getHandlingMeasures();
+ kb.setSolution(String.format("鍘熷洜鍒嗘瀽: %s. 澶勭悊鎺柦: %s.%s",
+ reasonStr, handlingStr, sparePartsInfo));
+ kb.setCreator(oldDeviceRepair.getMaintenanceName());
+
+ knowledgeBaseService.save(kb);
+ } catch(Exception e) {
+ log.error("淇濆瓨鐭ヨ瘑搴撳け璐�", e);
+ }
+ return AjaxResult.success();
}
- return R.fail("楠屾敹瀹℃壒澶辫触");
+ return AjaxResult.error("楠屾敹瀹℃壒澶辫触");
}
@Override
@@ -251,6 +313,8 @@
public DeviceRepairVo detailById(Long id) {
DeviceRepairVo vo = deviceRepairMapper.detailById(id);
vo.setStorageBlobVOs(fileUtil.getStorageBlobVOsByRecordTypeAndRecordId(RecordTypeEnum.DEVICE_REPAIR, id));
+ List<DeviceRepairSparePart> parts = deviceRepairSparePartService.getListWithPartName(id, 1);
+ vo.setSparePartsUseListDetails(parts);
return vo;
}
--
Gitblit v1.9.3