package com.ruoyi.device.controller; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.Result; import com.ruoyi.common.numgen.NumberGenerator; import com.ruoyi.common.utils.FileSaveUtil; import com.ruoyi.device.dto.DeviceMetricRecordDto; import com.ruoyi.device.mapper.DeviceMapper; import com.ruoyi.device.pojo.Device; import com.ruoyi.device.pojo.DeviceMetricRecord; import com.ruoyi.device.pojo.DeviceMetricsCopy; import com.ruoyi.device.service.DeviceMetricRecordService; import com.ruoyi.device.service.DeviceMetricsCopyService; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.Date; import java.util.Locale; /** *

* 设备校准 - 校准记录 前端控制器 *

* * @author * @since 2024-09-27 10:20:01 */ @Tag(name = "设备 - 设备校准") @RestController @RequestMapping("/deviceMetricRecord") public class DeviceMetricRecordController { @Autowired private DeviceMetricRecordService deviceMetricRecordService; @Autowired private DeviceMetricsCopyService deviceMetricsCopyService; @Autowired private NumberGenerator numberGenerator; @Autowired private DeviceMapper deviceMapper; @Operation(summary = "设备校准分页查询") @GetMapping("/deviceMetricRecordPage") public Result deviceMetricRecordPage(@RequestParam("deviceId") Integer deviceId, Page page, @RequestParam("type") String type) { return Result.success(deviceMetricRecordService.page(page, Wrappers.lambdaQuery() .eq(DeviceMetricRecord::getDeviceId, deviceId) .eq(DeviceMetricRecord::getType, type))); } @Operation(summary = "设备校准 新增 更新") @PostMapping("/addOrUpdateDeviceMetricRecord") public Result addOrUpdateDeviceMetricRecord(@RequestBody DeviceMetricRecordDto deviceMetricRecordDto) { if (ObjectUtils.isEmpty(deviceMetricRecordDto.getProcessNumber())) { String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date()); String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date()); String processNumber = numberGenerator.generateNumberWithPrefix(5, "SBJZ" + year + month, DeviceMetricRecord::getProcessNumber); deviceMetricRecordDto.setProcessNumber(processNumber); } deviceMetricRecordService.saveOrUpdate(deviceMetricRecordDto); if (CollectionUtils.isNotEmpty(deviceMetricRecordDto.getDeviceMetricsCopyList())) { // 校准条目来自校准项目维护表,主键不能带进记录明细表,否则会覆盖历史记录的条目 deviceMetricRecordDto.getDeviceMetricsCopyList().forEach(i -> { i.setId(null); i.setDeviceMetricsId(deviceMetricRecordDto.getId()); }); deviceMetricsCopyService.saveOrUpdateBatch(deviceMetricRecordDto.getDeviceMetricsCopyList()); } // 校准完成后,把设备档案的最近/下次校准日期滚动到新周期 if ("calibrate".equals(deviceMetricRecordDto.getType()) && deviceMetricRecordDto.getDeviceId() != null && deviceMetricRecordDto.getCalibrationDate() != null) { updateDeviceCalibrationDate(deviceMetricRecordDto); } return Result.success(); } /** * 滚动设备档案的最近/下次校准日期:仅当本次校准日期比档案中的最近校准日期更新时生效 */ private void updateDeviceCalibrationDate(DeviceMetricRecordDto dto) { Device device = deviceMapper.selectById(dto.getDeviceId()); if (device == null) { return; } LocalDateTime calibrationDate = LocalDateTime.ofInstant(dto.getCalibrationDate().toInstant(), ZoneId.systemDefault()); if (device.getLastCalibrationDate() != null && !calibrationDate.isAfter(device.getLastCalibrationDate())) { return; } device.setLastCalibrationDate(calibrationDate); LocalDateTime next = null; if (StringUtils.isNotBlank(device.getCalibrationDate())) { try { next = calibrationDate.plusMonths(Long.parseLong(device.getCalibrationDate().trim())); } catch (NumberFormatException ignored) { } } if (next == null && dto.getNextCalibrationDate() != null) { next = LocalDateTime.ofInstant(dto.getNextCalibrationDate().toInstant(), ZoneId.systemDefault()); } if (next != null) { device.setNextCalibrationDate(next); device.setActivationDate(next); } deviceMapper.updateById(device); } @Operation(summary = "设备校准 删除") @DeleteMapping("/deleteDeviceMetricRecord") public Result deleteDeviceMetricRecord(@RequestParam("id") Integer id) { DeviceMetricRecord deviceMetricRecord = deviceMetricRecordService.getById(id); deviceMetricsCopyService.remove(Wrappers.lambdaQuery() .eq(DeviceMetricsCopy::getDeviceMetricsId, id)); // 删除文件 FileSaveUtil.DeleteFile(deviceMetricRecord.getSystemFileName()); return Result.success(deviceMetricRecordService.removeById(id)); } @Operation(summary = "设备校准 校准条目查询") @GetMapping("/showDeviceMetricsCopy") public Result showDeviceMetricsCopy(@RequestParam("id") Integer id, @RequestParam("type") String type) { return Result.success(deviceMetricsCopyService.list(Wrappers.lambdaQuery() .eq(DeviceMetricsCopy::getDeviceMetricsId, id) .eq(DeviceMetricsCopy::getType, type))); } }