From 0ac445694a8ffc0e26e54d788d889b3797edf7a0 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期五, 26 六月 2026 09:48:33 +0800
Subject: [PATCH] feat: 添加备件领用记录功能,包括数据库表
---
src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsService.java | 2
src/main/java/com/ruoyi/device/pojo/DeviceRepair.java | 11 +
src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsMapper.java | 8 +
src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsRequisitionRecordService.java | 17 ++
src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsController.java | 6 +
src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java | 78 +++++++++++++
src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsUseDto.java | 16 ++
src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsRequisitionRecordMapper.java | 14 ++
src/main/resources/mapper/measuringinstrumentledger/SparePartsRequisitionRecordMapper.xml | 19 +++
src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java | 12 ++
src/main/resources/mapper/measuringinstrumentledger/SparePartsMapper.xml | 8 +
doc/spare_parts_requisition_record.sql | 23 +++
src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SparePartsRequisitionRecord.java | 71 +++++++++++
src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java | 17 ++
src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsRequisitionRecordController.java | 35 +++++
src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsServiceImpl.java | 8 +
src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java | 10 +
17 files changed, 353 insertions(+), 2 deletions(-)
diff --git a/doc/spare_parts_requisition_record.sql b/doc/spare_parts_requisition_record.sql
new file mode 100644
index 0000000..701feeb
--- /dev/null
+++ b/doc/spare_parts_requisition_record.sql
@@ -0,0 +1,23 @@
+CREATE TABLE IF NOT EXISTS `spare_parts_requisition_record`
+(
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+ `spare_parts_id` bigint DEFAULT NULL COMMENT '澶囦欢ID',
+ `spare_parts_name` varchar(255) DEFAULT NULL COMMENT '澶囦欢鍚嶇О',
+ `quantity` decimal(18, 2) DEFAULT NULL COMMENT '棰嗙敤鏁伴噺',
+ `device_ledger_id` bigint DEFAULT NULL COMMENT '璁惧鍙拌处ID',
+ `device_name` varchar(255) DEFAULT NULL COMMENT '璁惧鍚嶇О',
+ `source_type` int DEFAULT NULL COMMENT '鏉ユ簮绫诲瀷 0缁翠慨 1淇濆吇',
+ `source_text` varchar(32) DEFAULT NULL COMMENT '鏉ユ簮鏂囨湰',
+ `source_id` bigint DEFAULT NULL COMMENT '鏉ユ簮鍗曟嵁ID',
+ `operator` varchar(64) DEFAULT NULL COMMENT '鎿嶄綔浜�',
+ `dept_id` bigint DEFAULT NULL COMMENT '閮ㄩ棬ID',
+ `create_user` int DEFAULT NULL COMMENT '鍒涘缓浜�',
+ `create_time` datetime DEFAULT NULL COMMENT '鍒涘缓鏃堕棿',
+ `update_user` int DEFAULT NULL COMMENT '鏇存柊浜�',
+ `update_time` datetime DEFAULT NULL COMMENT '鏇存柊鏃堕棿',
+ `tenant_id` bigint DEFAULT NULL COMMENT '绉熸埛ID',
+ PRIMARY KEY (`id`),
+ KEY `idx_spare_parts_id` (`spare_parts_id`),
+ KEY `idx_source` (`source_type`, `source_id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4 COMMENT ='澶囦欢棰嗙敤璁板綍';
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java b/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
index 57148c7..00a1066 100644
--- a/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
+++ b/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
@@ -12,6 +12,8 @@
import java.time.LocalDateTime;
import java.util.List;
+import com.ruoyi.measuringinstrumentledger.dto.SparePartsUseDto;
+
@Data
@TableName("device_maintenance")
@ApiModel("璁惧淇濆吇璁板綍")
@@ -101,4 +103,12 @@
@ApiModelProperty("涓存椂鏂囦欢ID鍒楄〃")
@TableField(exist = false)
private List<String> tempFileIds;
+
+ @ApiModelProperty("澶囦欢ID闆嗗悎锛堥�楀彿鍒嗛殧锛�")
+ @TableField(exist = false)
+ private String sparePartsIds;
+
+ @ApiModelProperty("澶囦欢棰嗙敤鏄庣粏")
+ @TableField(exist = false)
+ private List<SparePartsUseDto> sparePartsUseList;
}
diff --git a/src/main/java/com/ruoyi/device/pojo/DeviceRepair.java b/src/main/java/com/ruoyi/device/pojo/DeviceRepair.java
index b125e31..67148e1 100644
--- a/src/main/java/com/ruoyi/device/pojo/DeviceRepair.java
+++ b/src/main/java/com/ruoyi/device/pojo/DeviceRepair.java
@@ -10,6 +10,9 @@
import java.time.LocalDateTime;
import java.util.Date;
+import java.util.List;
+
+import com.ruoyi.measuringinstrumentledger.dto.SparePartsUseDto;
@Data
@TableName("device_repair")
@@ -83,5 +86,13 @@
@TableField(fill = FieldFill.INSERT)
private Long tenantId;
+ @ApiModelProperty("澶囦欢ID闆嗗悎锛堥�楀彿鍒嗛殧锛�")
+ @TableField(exist = false)
+ private String sparePartsIds;
+
+ @ApiModelProperty("澶囦欢棰嗙敤鏄庣粏")
+ @TableField(exist = false)
+ private List<SparePartsUseDto> sparePartsUseList;
+
}
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 6eb0871..4f3963e 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
@@ -13,6 +13,7 @@
import com.ruoyi.device.service.DeviceMaintenanceFileService;
import com.ruoyi.device.service.IDeviceMaintenanceService;
import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.measuringinstrumentledger.service.SparePartsRequisitionRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -32,6 +33,9 @@
@Autowired
private DeviceMaintenanceFileService deviceMaintenanceFileService;
+
+ @Autowired
+ private SparePartsRequisitionRecordService sparePartsRequisitionRecordService;
@Override
public IPage<DeviceMaintenanceDto> queryPage(Page page, DeviceMaintenanceDto deviceMaintenanceDto) {
@@ -65,6 +69,10 @@
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult updateDeviceDeviceMaintenance(DeviceMaintenance deviceMaintenance) {
+ DeviceMaintenance existing = this.getById(deviceMaintenance.getId());
+ if (existing == null) {
+ return AjaxResult.error("淇濆吇璁板綍涓嶅瓨鍦�");
+ }
// 澶勭悊涓存椂鏂囦欢鍏宠仈
if (deviceMaintenance.getTempFileIds() != null && !deviceMaintenance.getTempFileIds().isEmpty()) {
for (String tempId : deviceMaintenance.getTempFileIds()) {
@@ -77,6 +85,15 @@
}
if (this.updateById(deviceMaintenance)) {
+ if (deviceMaintenance.getSparePartsUseList() != null && !deviceMaintenance.getSparePartsUseList().isEmpty()) {
+ sparePartsRequisitionRecordService.processSparePartsUse(
+ existing.getDeviceLedgerId(),
+ existing.getDeviceName(),
+ existing.getId(),
+ 1,
+ "淇濆吇",
+ deviceMaintenance.getSparePartsUseList());
+ }
return AjaxResult.success();
}
return AjaxResult.error();
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 23ec164..5c300a2 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
@@ -19,6 +19,7 @@
import com.ruoyi.device.service.DeviceDefectRecordService;
import com.ruoyi.device.service.IDeviceLedgerService;
import com.ruoyi.device.service.IDeviceRepairService;
+import com.ruoyi.measuringinstrumentledger.service.SparePartsRequisitionRecordService;
import com.ruoyi.other.service.TempFileService;
import com.ruoyi.sales.mapper.CommonFileMapper;
import com.ruoyi.sales.pojo.CommonFile;
@@ -58,6 +59,9 @@
@Autowired
private TempFileService tempFileService;
+ @Autowired
+ private SparePartsRequisitionRecordService sparePartsRequisitionRecordService;
+
@Override
public IPage<DeviceRepairDto> queryPage(Page page, DeviceRepairDto deviceRepairDto) {
@@ -94,6 +98,7 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public void submitDeviceMaintain(DeviceRepair deviceRepair) {
if (deviceRepair == null || deviceRepair.getId() == null) {
throw new ServiceException("鎶ヤ慨鍗旾D涓嶈兘涓虹┖");
@@ -127,6 +132,13 @@
if (!this.updateById(existing)) {
throw new ServiceException("鎻愪氦缁翠慨澶辫触");
}
+ sparePartsRequisitionRecordService.processSparePartsUse(
+ existing.getDeviceLedgerId(),
+ existing.getDeviceName(),
+ existing.getId(),
+ 0,
+ "缁翠慨",
+ deviceRepair.getSparePartsUseList());
clearDefectRecordsIfNeeded(existing.getId());
}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsController.java b/src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsController.java
index 599c116..72be4b8 100644
--- a/src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsController.java
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsController.java
@@ -58,4 +58,10 @@
return AjaxResult.success(sparePartsService.removeById(id));
}
+ @GetMapping("/listByDevice/{deviceLedgerId}")
+ @ApiOperation("澶囦欢鍒嗙被-鎸夎澶囨煡璇�")
+ public AjaxResult listByDevice(@PathVariable Long deviceLedgerId) {
+ return AjaxResult.success(sparePartsService.listByDeviceLedgerId(deviceLedgerId));
+ }
+
}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsRequisitionRecordController.java b/src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsRequisitionRecordController.java
new file mode 100644
index 0000000..a79789c
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsRequisitionRecordController.java
@@ -0,0 +1,35 @@
+package com.ruoyi.measuringinstrumentledger.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
+import com.ruoyi.measuringinstrumentledger.service.SparePartsRequisitionRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/sparePartsRequisitionRecord")
+@Api(tags = "澶囦欢棰嗙敤璁板綍")
+public class SparePartsRequisitionRecordController {
+
+ @Autowired
+ private SparePartsRequisitionRecordService sparePartsRequisitionRecordService;
+
+ @GetMapping("/listPage")
+ @ApiOperation("澶囦欢棰嗙敤璁板綍-鍒嗛〉鏌ヨ")
+ @Log(title = "澶囦欢棰嗙敤璁板綍-鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
+ public AjaxResult listPage(Page page, SparePartsRequisitionRecord query) {
+ if (query == null) {
+ query = new SparePartsRequisitionRecord();
+ }
+ IPage<SparePartsRequisitionRecord> result = sparePartsRequisitionRecordService.listPage(page, query);
+ return AjaxResult.success(result);
+ }
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsUseDto.java b/src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsUseDto.java
new file mode 100644
index 0000000..117f93d
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsUseDto.java
@@ -0,0 +1,16 @@
+package com.ruoyi.measuringinstrumentledger.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class SparePartsUseDto {
+
+ @ApiModelProperty("澶囦欢ID")
+ private Long id;
+
+ @ApiModelProperty("棰嗙敤鏁伴噺")
+ private BigDecimal quantity;
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsMapper.java b/src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsMapper.java
index fa52570..8e7de1f 100644
--- a/src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsMapper.java
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsMapper.java
@@ -5,10 +5,14 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.measuringinstrumentledger.dto.SparePartsDto;
import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
-import io.lettuce.core.dynamic.annotation.Param;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
@Mapper
public interface SparePartsMapper extends BaseMapper<SpareParts> {
- IPage<SparePartsDto> listPage(Page page,@Param("spareParts") SpareParts spareParts);
+ IPage<SparePartsDto> listPage(Page page, SpareParts spareParts);
+
+ List<SparePartsDto> listByDeviceLedgerId(@Param("deviceLedgerId") Long deviceLedgerId);
}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsRequisitionRecordMapper.java b/src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsRequisitionRecordMapper.java
new file mode 100644
index 0000000..82e5cf2
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsRequisitionRecordMapper.java
@@ -0,0 +1,14 @@
+package com.ruoyi.measuringinstrumentledger.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface SparePartsRequisitionRecordMapper extends BaseMapper<SparePartsRequisitionRecord> {
+
+ IPage<SparePartsRequisitionRecord> listPage(Page page, @Param("query") SparePartsRequisitionRecord query);
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SparePartsRequisitionRecord.java b/src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SparePartsRequisitionRecord.java
new file mode 100644
index 0000000..5c6ba9d
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SparePartsRequisitionRecord.java
@@ -0,0 +1,71 @@
+package com.ruoyi.measuringinstrumentledger.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("spare_parts_requisition_record")
+public class SparePartsRequisitionRecord {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("澶囦欢ID")
+ private Long sparePartsId;
+
+ @ApiModelProperty("澶囦欢鍚嶇О")
+ private String sparePartsName;
+
+ @ApiModelProperty("棰嗙敤鏁伴噺")
+ private BigDecimal quantity;
+
+ @ApiModelProperty("璁惧鍙拌处ID")
+ private Long deviceLedgerId;
+
+ @ApiModelProperty("璁惧鍚嶇О")
+ private String deviceName;
+
+ @ApiModelProperty("鏉ユ簮绫诲瀷 0缁翠慨 1淇濆吇")
+ private Integer sourceType;
+
+ @ApiModelProperty("鏉ユ簮鏂囨湰")
+ private String sourceText;
+
+ @ApiModelProperty("鏉ユ簮鍗曟嵁ID")
+ private Long sourceId;
+
+ @ApiModelProperty("鎿嶄綔浜�")
+ private String operator;
+
+ @ApiModelProperty("閮ㄩ棬ID")
+ private Long deptId;
+
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsRequisitionRecordService.java b/src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsRequisitionRecordService.java
new file mode 100644
index 0000000..2c83ad9
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsRequisitionRecordService.java
@@ -0,0 +1,17 @@
+package com.ruoyi.measuringinstrumentledger.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.measuringinstrumentledger.dto.SparePartsUseDto;
+import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
+
+import java.util.List;
+
+public interface SparePartsRequisitionRecordService extends IService<SparePartsRequisitionRecord> {
+
+ IPage<SparePartsRequisitionRecord> listPage(Page page, SparePartsRequisitionRecord query);
+
+ void processSparePartsUse(Long deviceLedgerId, String deviceName, Long sourceId,
+ Integer sourceType, String sourceText, List<SparePartsUseDto> useList);
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsService.java b/src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsService.java
index 6185db4..df361ad 100644
--- a/src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsService.java
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsService.java
@@ -13,4 +13,6 @@
IPage<SparePartsDto> listPage(Page page, SpareParts spareParts);
List<SparePartsDto> getTree();
+
+ List<SparePartsDto> listByDeviceLedgerId(Long deviceLedgerId);
}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java
new file mode 100644
index 0000000..6b4792c
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java
@@ -0,0 +1,78 @@
+package com.ruoyi.measuringinstrumentledger.service.impl;
+
+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.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.measuringinstrumentledger.dto.SparePartsUseDto;
+import com.ruoyi.measuringinstrumentledger.mapper.SparePartsMapper;
+import com.ruoyi.measuringinstrumentledger.mapper.SparePartsRequisitionRecordMapper;
+import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
+import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
+import com.ruoyi.measuringinstrumentledger.service.SparePartsRequisitionRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Service
+public class SparePartsRequisitionRecordServiceImpl
+ extends ServiceImpl<SparePartsRequisitionRecordMapper, SparePartsRequisitionRecord>
+ implements SparePartsRequisitionRecordService {
+
+ @Autowired
+ private SparePartsRequisitionRecordMapper sparePartsRequisitionRecordMapper;
+
+ @Autowired
+ private SparePartsMapper sparePartsMapper;
+
+ @Override
+ public IPage<SparePartsRequisitionRecord> listPage(Page page, SparePartsRequisitionRecord query) {
+ return sparePartsRequisitionRecordMapper.listPage(page, query);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void processSparePartsUse(Long deviceLedgerId, String deviceName, Long sourceId,
+ Integer sourceType, String sourceText,
+ List<SparePartsUseDto> useList) {
+ if (useList == null || useList.isEmpty()) {
+ return;
+ }
+ String operator = SecurityUtils.getLoginUser().getNickName();
+ for (SparePartsUseDto useItem : useList) {
+ if (useItem == null || useItem.getId() == null) {
+ continue;
+ }
+ BigDecimal quantity = useItem.getQuantity();
+ if (quantity == null || quantity.compareTo(BigDecimal.ZERO) <= 0) {
+ throw new ServiceException("棰嗙敤鏁伴噺蹇呴』澶т簬0");
+ }
+ SpareParts sparePart = sparePartsMapper.selectById(useItem.getId());
+ if (sparePart == null) {
+ throw new ServiceException("澶囦欢涓嶅瓨鍦�");
+ }
+ if (sparePart.getQuantity() == null || sparePart.getQuantity().compareTo(quantity) < 0) {
+ throw new ServiceException("澶囦欢[" + sparePart.getName() + "]搴撳瓨涓嶈冻");
+ }
+ sparePart.setQuantity(sparePart.getQuantity().subtract(quantity));
+ sparePartsMapper.updateById(sparePart);
+
+ SparePartsRequisitionRecord record = new SparePartsRequisitionRecord();
+ record.setSparePartsId(sparePart.getId());
+ record.setSparePartsName(sparePart.getName());
+ record.setQuantity(quantity);
+ record.setDeviceLedgerId(deviceLedgerId);
+ record.setDeviceName(deviceName);
+ record.setSourceId(sourceId);
+ record.setSourceType(sourceType);
+ record.setSourceText(StringUtils.isNotEmpty(sourceText) ? sourceText : (sourceType == 0 ? "缁翠慨" : "淇濆吇"));
+ record.setOperator(operator);
+ sparePartsRequisitionRecordMapper.insert(record);
+ }
+ }
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsServiceImpl.java b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsServiceImpl.java
index 5f329e8..9d84ab7 100644
--- a/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsServiceImpl.java
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsServiceImpl.java
@@ -52,6 +52,14 @@
return buildTree(records);
}
+ @Override
+ public List<SparePartsDto> listByDeviceLedgerId(Long deviceLedgerId) {
+ if (deviceLedgerId == null) {
+ return new ArrayList<>();
+ }
+ return sparePartsMapper.listByDeviceLedgerId(deviceLedgerId);
+ }
+
/**
* 灏嗘墎骞崇粨鏋勬暟鎹浆鎹负鏍戝舰缁撴瀯
diff --git a/src/main/resources/mapper/measuringinstrumentledger/SparePartsMapper.xml b/src/main/resources/mapper/measuringinstrumentledger/SparePartsMapper.xml
index 611d51e..475cd9c 100644
--- a/src/main/resources/mapper/measuringinstrumentledger/SparePartsMapper.xml
+++ b/src/main/resources/mapper/measuringinstrumentledger/SparePartsMapper.xml
@@ -11,4 +11,12 @@
</if>
</where>
</select>
+
+ <select id="listByDeviceLedgerId" resultType="com.ruoyi.measuringinstrumentledger.dto.SparePartsDto">
+ select sp.*
+ from spare_parts sp
+ where sp.status = '姝e父'
+ and FIND_IN_SET(#{deviceLedgerId}, sp.device_ids) > 0
+ order by sp.id desc
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/measuringinstrumentledger/SparePartsRequisitionRecordMapper.xml b/src/main/resources/mapper/measuringinstrumentledger/SparePartsRequisitionRecordMapper.xml
new file mode 100644
index 0000000..e6d8189
--- /dev/null
+++ b/src/main/resources/mapper/measuringinstrumentledger/SparePartsRequisitionRecordMapper.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.measuringinstrumentledger.mapper.SparePartsRequisitionRecordMapper">
+
+ <select id="listPage" resultType="com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord">
+ SELECT *
+ FROM spare_parts_requisition_record
+ <where>
+ <if test="query.sparePartsName != null and query.sparePartsName != ''">
+ AND spare_parts_name LIKE CONCAT('%', #{query.sparePartsName}, '%')
+ </if>
+ <if test="query.sourceType != null">
+ AND source_type = #{query.sourceType}
+ </if>
+ </where>
+ ORDER BY create_time DESC
+ </select>
+</mapper>
--
Gitblit v1.9.3