From bb1d7eeda426e66393cf4403cb3ef082db696bd9 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 07 八月 2026 15:42:19 +0800
Subject: [PATCH] feat(report): 新增会计报表功能并完善设备维护和首页统计
---
src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java | 122 +++++++++++++++++++++++++++++++++++-----
1 files changed, 107 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 883caf1..e426bfe 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
@@ -1,43 +1,50 @@
package com.ruoyi.device.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.SecurityUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.device.dto.DeviceMaintenanceBatchCompleteDto;
import com.ruoyi.device.dto.DeviceMaintenanceDto;
import com.ruoyi.device.execl.DeviceMaintenanceExeclDto;
import com.ruoyi.device.mapper.DeviceMaintenanceMapper;
import com.ruoyi.device.pojo.DeviceMaintenance;
import com.ruoyi.device.service.IDeviceMaintenanceService;
+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 lombok.RequiredArgsConstructor;
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 jakarta.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List;
@Service
+@RequiredArgsConstructor
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 FileUtil fileUtil;
@Override
public IPage<DeviceMaintenanceDto> queryPage(Page page, DeviceMaintenanceDto deviceMaintenanceDto) {
@@ -46,9 +53,12 @@
}
@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());
return AjaxResult.success();
}
return AjaxResult.error();
@@ -56,7 +66,7 @@
@Override
@Transactional(rollbackFor = Exception.class)
- public AjaxResult updateDeviceDeviceMaintenance(DeviceMaintenance deviceMaintenance) {
+ public AjaxResult updateDeviceDeviceMaintenance(DeviceMaintenanceDto deviceMaintenance) {
DeviceMaintenance oldDeviceMaintenance = this.getById(deviceMaintenance.getId());
// 澶勭悊澶囦欢浣跨敤鎯呭喌
if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(deviceMaintenance.getSparePartsUseList())) {
@@ -91,10 +101,91 @@
}
}
+ // 鑻ヨ缃簡瀹為檯淇濆吇鏃ユ湡锛屽垯鑷姩鏍囪涓哄畬缁�
+ if (deviceMaintenance.getMaintenanceActuallyTime() != null && deviceMaintenance.getStatus() == null) {
+ deviceMaintenance.setStatus(1);
+ }
+
if (this.updateById(deviceMaintenance)) {
+ // 澶勭悊鍥剧墖涓婁紶
+ fileUtil.saveStorageAttachmentByRecordTypeAndRecordId("file", RecordTypeEnum.DEVICE_MAINTENANCE, deviceMaintenance.getId(), deviceMaintenance.getStorageBlobDTOs());
return AjaxResult.success();
}
return AjaxResult.error();
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult complete(Long id) {
+ DeviceMaintenance record = this.getById(id);
+ if (record == null) {
+ return AjaxResult.error("淇濆吇璁板綍涓嶅瓨鍦�");
+ }
+ if (record.getStatus() != null && record.getStatus() == 1) {
+ return AjaxResult.error("璇ヤ繚鍏昏褰曞凡瀹屾垚");
+ }
+ record.setStatus(1);
+ record.setMaintenanceActuallyName(SecurityUtils.getLoginUser().getNickName());
+ record.setMaintenanceActuallyTime(LocalDateTime.now());
+ this.updateById(record);
+ return AjaxResult.success();
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult batchComplete(String dateStr) {
+ if (StringUtils.isBlank(dateStr)) {
+ return AjaxResult.error("鏃ユ湡鍙傛暟涓嶈兘涓虹┖");
+ }
+ LocalDate date = LocalDate.parse(dateStr);
+ LocalDateTime startOfDay = date.atStartOfDay();
+ LocalDateTime endOfDay = date.atTime(LocalTime.MAX);
+ List<DeviceMaintenance> records = this.lambdaQuery()
+ .eq(DeviceMaintenance::getStatus, 0)
+ .ge(DeviceMaintenance::getCreateTime, startOfDay)
+ .le(DeviceMaintenance::getCreateTime, endOfDay)
+ .list();
+ if (records.isEmpty()) {
+ return AjaxResult.error("璇ユ棩鏈熶笅娌℃湁寰呭畬鎴愮殑淇濆吇璁板綍");
+ }
+ String nickName = SecurityUtils.getLoginUser().getNickName();
+ LocalDateTime now = LocalDateTime.now();
+ for (DeviceMaintenance record : records) {
+ record.setStatus(1);
+ record.setMaintenanceActuallyName(nickName);
+ record.setMaintenanceActuallyTime(now);
+ }
+ this.updateBatchById(records);
+ return AjaxResult.success("宸插畬鎴� " + records.size() + " 鏉′繚鍏昏褰�");
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult batchComplete(DeviceMaintenanceBatchCompleteDto dto) {
+ if (dto.getMaintenancePlanDate() == null) {
+ return AjaxResult.error("璁″垝淇濆吇鏃ユ湡涓嶈兘涓虹┖");
+ }
+ LambdaQueryWrapper<DeviceMaintenance> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(DeviceMaintenance::getStatus, 0)
+ .apply("DATE(maintenance_plan_time) = {0}", dto.getMaintenancePlanDate().toString());
+ List<DeviceMaintenance> list = this.list(wrapper);
+ if (list.isEmpty()) {
+ return AjaxResult.success("璇ユ棩鏈熶笅娌℃湁寰呬繚鍏荤殑璁板綍");
+ }
+ list.forEach(task -> {
+ task.setStatus(1);
+ if (StringUtils.isNotBlank(dto.getMaintenanceActuallyName())) {
+ task.setMaintenanceActuallyName(dto.getMaintenanceActuallyName());
+ }
+ if (dto.getMaintenanceActuallyTime() != null) {
+ task.setMaintenanceActuallyTime(dto.getMaintenanceActuallyTime());
+ }
+ if (StringUtils.isNotBlank(dto.getMaintenanceResult())) {
+ task.setMaintenanceResult(dto.getMaintenanceResult());
+ }
+ });
+ this.updateBatchById(list);
+ return AjaxResult.success("鍏卞畬鎴� " + list.size() + " 鏉′繚鍏昏褰�");
}
@Override
@@ -113,8 +204,9 @@
}
@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));
+ return vo;
}
}
--
Gitblit v1.9.3