From bd897b186f4dd82beb5a9f9f7f41555dcd77bf7e Mon Sep 17 00:00:00 2001
From: yaowanxin <3588231647@qq.com>
Date: 星期三, 07 一月 2026 14:35:46 +0800
Subject: [PATCH] 设备报修增添审批人id,维修价格字段,重整状态对应值。优化添加设备报修接口,同步数据到协同办公-报销管理。协同办公-报销管理的审核接口同步设备管理-设备报修状态。设备报修删除接口根据报销管理审核状态判断是否删除。

---
 src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java    |   15 +++++
 src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java |    2 
 src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java                    |   10 +++
 src/main/java/com/ruoyi/device/controller/DeviceRepairController.java       |   62 ++++++++++++++++++++
 src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java                    |    9 +++
 src/main/resources/mapper/device/DeviceRepairMapper.xml                     |    2 
 src/main/java/com/ruoyi/device/pojo/DeviceRepair.java                       |   14 +++-
 src/main/java/com/ruoyi/device/dto/DeviceRepairDto.java                     |    7 +-
 8 files changed, 110 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
index c1114bd..8c05acc 100644
--- a/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
+++ b/src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
@@ -1,6 +1,7 @@
 package com.ruoyi.approve.pojo;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
@@ -139,7 +140,14 @@
      * 鍒涘缓鏃堕棿
      */
     private LocalDateTime createTime;
-
+    /**
+     * 璁惧鎶ヤ慨id
+     */
+    private Long deviceRepairId;
+    /**
+     * 鎶ヤ慨閲戦
+     */
+    private BigDecimal maintenancePrice;
     private static final long serialVersionUID = 1L;
 
 
diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
index 25dd607..f5919de 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -10,6 +10,8 @@
 import com.ruoyi.approve.service.IApproveNodeService;
 import com.ruoyi.common.enums.FileNameType;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.device.mapper.DeviceRepairMapper;
+import com.ruoyi.device.pojo.DeviceRepair;
 import com.ruoyi.other.service.impl.TempFileServiceImpl;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.mapper.SysUserMapper;
@@ -43,6 +45,9 @@
 
     @Autowired
     private CommonFileMapper fileMapper;
+    @Autowired
+    private DeviceRepairMapper deviceRepairMapper;
+
 
 
     public ApproveProcess getApproveById(String id) {
@@ -140,6 +145,16 @@
         }
         approveProcessMapper.updateById(approveProcess);
 
+        DeviceRepair deviceRepair = deviceRepairMapper.selectById(approveProcess.getDeviceRepairId());
+        if(deviceRepair == null) throw new RuntimeException("璁惧鎶ヤ慨涓嶅瓨鍦�");
+        if(approveProcess.getApproveStatus().equals(2)){
+            // 鍚屾剰
+            deviceRepair.setStatus(1);
+        }else if(approveProcess.getApproveStatus().equals(3)){
+            // 鎷掔粷
+            deviceRepair.setStatus(2);
+        }
+        deviceRepairMapper.updateById(deviceRepair);
         // 缁戝畾闄勪欢
         if(!CollectionUtils.isEmpty(approveNode.getTempFileIds()) && approveNode.getApproveNodeStatus() == 1){
             tempFileService.migrateTempFilesToFormal(approveNode.getId(), approveNode.getTempFileIds(), FileNameType.ApproveNode.getValue());
diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
index e866bbf..3a1206b 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveProcessServiceImpl.java
@@ -87,6 +87,8 @@
         approveProcess.setApproveUserNames(sysUsers.stream().map(SysUser::getNickName).collect(Collectors.joining(",")));
         approveProcess.setApproveTime(StringUtils.isEmpty(approveProcessVO.getApproveTime()) ? null : dateFormat.parse(approveProcessVO.getApproveTime()));
         approveProcess.setApproveReason(approveProcessVO.getApproveReason());
+        approveProcess.setDeviceRepairId(approveProcessVO.getDeviceRepairId());
+        approveProcess.setMaintenancePrice(approveProcessVO.getMaintenancePrice());
         approveProcess.setApproveOverTime(null);
         approveProcess.setApproveStatus(0);
         approveProcess.setApproveDelete(0);
diff --git a/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java b/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
index 5ad4419..ae3cf9e 100644
--- a/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
+++ b/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
@@ -6,6 +6,7 @@
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
+import java.math.BigDecimal;
 import java.util.List;
 
 @Data
@@ -47,4 +48,12 @@
      * 瀹℃壒绫诲瀷
      */
     private Integer approveType;
+     /**
+     * 璁惧鎶ヤ慨id
+     */
+    private Long deviceRepairId;
+     /**
+     * 鎶ヤ慨閲戦
+     */
+    private BigDecimal maintenancePrice;
 }
diff --git a/src/main/java/com/ruoyi/device/controller/DeviceRepairController.java b/src/main/java/com/ruoyi/device/controller/DeviceRepairController.java
index d33b340..130e5df 100644
--- a/src/main/java/com/ruoyi/device/controller/DeviceRepairController.java
+++ b/src/main/java/com/ruoyi/device/controller/DeviceRepairController.java
@@ -1,19 +1,33 @@
 package com.ruoyi.device.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.pojo.ApproveProcess;
+import com.ruoyi.approve.service.IApproveProcessService;
+import com.ruoyi.approve.vo.ApproveProcessVO;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.device.dto.DeviceRepairDto;
+import com.ruoyi.device.pojo.DeviceLedger;
 import com.ruoyi.device.pojo.DeviceRepair;
 import com.ruoyi.device.service.IDeviceLedgerService;
 import com.ruoyi.device.service.IDeviceRepairService;
+import com.ruoyi.framework.security.LoginUser;
 import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.project.system.domain.SysDept;
+import com.ruoyi.project.system.domain.SysUser;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.Arrays;
+import java.util.List;
 
 @Api(tags = "璁惧鎶ヤ慨绠$悊")
 @RequestMapping("/device/repair")
@@ -25,6 +39,8 @@
 
     @Autowired
     private IDeviceLedgerService deviceLedgerService;
+    @Autowired
+    private IApproveProcessService approveProcessService;
 
     @ApiModelProperty("璁惧鎶ヤ慨鍒楄〃")
     @GetMapping("/page")
@@ -33,9 +49,40 @@
     }
 
     @PostMapping()
+    @Transactional(rollbackFor = Exception.class)
     @ApiModelProperty("娣诲姞璁惧鎶ヤ慨")
-    public AjaxResult add( @RequestBody DeviceRepair deviceRepair) {
-        return deviceRepairService.saveDeviceRepair(deviceRepair);
+    public AjaxResult add( @RequestBody DeviceRepair deviceRepair) throws Exception {
+        deviceRepairService.saveDeviceRepair(deviceRepair);
+        ApproveProcessVO approveProcessVO = new ApproveProcessVO();
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        SysUser user = loginUser.getUser();
+        // 鑾峰彇褰撳墠鐧诲綍鍏徃
+        Long tenantId = loginUser.getTenantId();
+        if(null != tenantId){
+            LambdaQueryWrapper<DeviceRepair> QueryWrapper = new LambdaQueryWrapper<>();
+            QueryWrapper.eq(DeviceRepair::getDeviceLedgerId,deviceRepair.getDeviceLedgerId())
+                    .eq(DeviceRepair::getRemark,deviceRepair.getRemark())
+                    .eq(DeviceRepair::getDeviceName,deviceRepair.getDeviceName())
+                    .eq(DeviceRepair::getApproverId,deviceRepair.getApproverId())
+                    .eq(DeviceRepair::getRepairTime,deviceRepair.getRepairTime());
+            DeviceRepair one = deviceRepairService.getOne(QueryWrapper);
+            if(ObjectUtils.isEmpty(one)){
+                return AjaxResult.error("璁惧鎶ヤ慨涓嶅瓨鍦�");
+            }
+            //鑾峰彇褰撳墠鐧诲綍閮ㄩ棬id
+            approveProcessVO.setApproveDeptId(tenantId);
+            //鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛id
+            approveProcessVO.setApproveUser(loginUser.getUserId());
+            //鑾峰彇褰撳墠鏃堕棿
+            approveProcessVO.setApproveTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            approveProcessVO.setApproveType(4);
+            approveProcessVO.setApproveUserIds(deviceRepair.getApproverId().toString());
+            approveProcessVO.setApproveReason(deviceRepair.getRemark());
+            approveProcessVO.setDeviceRepairId(one.getId());
+            approveProcessVO.setMaintenancePrice(deviceRepair.getMaintenancePrice());
+            approveProcessService.addApprove(approveProcessVO);
+        }
+        return AjaxResult.success();
     }
 
     @ApiModelProperty("鏍规嵁id鏌ヨ璁惧鎶ヤ慨")
@@ -60,6 +107,17 @@
     @DeleteMapping("/{ids}")
     @ApiModelProperty("鍒犻櫎璁惧鎶ヤ慨")
     public AjaxResult delete(@PathVariable("ids") Long[] ids) {
+        LambdaQueryWrapper<ApproveProcess> QueryWrapper = new LambdaQueryWrapper<>();
+        QueryWrapper.in(ApproveProcess::getDeviceRepairId,ids);
+        List<ApproveProcess> approveProcessList = approveProcessService.list(QueryWrapper);
+        if(!approveProcessList.isEmpty()){
+            approveProcessList.forEach(approveProcess -> {
+                if (approveProcess.getApproveStatus() != 0){
+                    //鎶涘嚭寮傚父
+                    throw new RuntimeException("鏈夋鍦ㄥ鐞嗕腑鐨勫鎵规祦绋嬶紝涓嶈兘鍒犻櫎");
+                }
+            });
+        }
         boolean b = deviceRepairService.removeBatchByIds(Arrays.asList(ids));
         if (!b) {
             return AjaxResult.error("鍒犻櫎澶辫触");
diff --git a/src/main/java/com/ruoyi/device/dto/DeviceRepairDto.java b/src/main/java/com/ruoyi/device/dto/DeviceRepairDto.java
index 92cfe8c..ef745c2 100644
--- a/src/main/java/com/ruoyi/device/dto/DeviceRepairDto.java
+++ b/src/main/java/com/ruoyi/device/dto/DeviceRepairDto.java
@@ -3,6 +3,7 @@
 
 import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -46,7 +47,7 @@
     @ApiModelProperty("缁翠慨缁撴灉")
     private String maintenanceResult;
 
-    @ApiModelProperty("鐘舵��")
+    @ApiModelProperty("鐘舵��:0瀹℃牳涓�,1瀹℃牳閫氳繃,2瀹℃牳澶辫触,3缁翠慨涓�,4缁翠慨閫氳繃,5缁翠慨澶辫触")
     private Integer status;
 
     @ApiModelProperty("鍒涘缓鏃堕棿")
@@ -68,7 +69,7 @@
     @ApiModelProperty("绉熸埛id")
     @TableField(fill = FieldFill.INSERT)
     private Long tenantId;
-
-
+    @ApiModelProperty("缁翠慨浠锋牸")
+    private String maintenancePrice;
 }
 
diff --git a/src/main/java/com/ruoyi/device/pojo/DeviceRepair.java b/src/main/java/com/ruoyi/device/pojo/DeviceRepair.java
index a567366..83affb7 100644
--- a/src/main/java/com/ruoyi/device/pojo/DeviceRepair.java
+++ b/src/main/java/com/ruoyi/device/pojo/DeviceRepair.java
@@ -4,10 +4,12 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.Date;
 
@@ -20,9 +22,9 @@
 
     @ApiModelProperty("璁惧鍙拌处id")
     private Long deviceLedgerId;
-
+    @ApiModelProperty("璁惧鍚嶇О")
     private String deviceName;
-
+    @ApiModelProperty("璁惧鍨嬪彿")
     private String deviceModel;
 
     @ApiModelProperty("鎶ヤ慨鏃堕棿")
@@ -45,7 +47,7 @@
     @ApiModelProperty("缁翠慨缁撴灉")
     private String maintenanceResult;
 
-    @ApiModelProperty("鐘舵�� 0 寰呯淮淇� 1瀹岀粨 2 澶辫触")
+    @ApiModelProperty("鐘舵��:0瀹℃牳涓�,1瀹℃牳閫氳繃,2瀹℃牳澶辫触,3缁翠慨涓�,4缁翠慨閫氳繃,5缁翠慨澶辫触")
     private Integer status;
 
     @ApiModelProperty("鍒涘缓鏃堕棿")
@@ -71,6 +73,8 @@
     @ApiModelProperty("绉熸埛id")
     @TableField(fill = FieldFill.INSERT)
     private Long tenantId;
-
-
+    @ApiModelProperty("缁翠慨浠锋牸")
+    private BigDecimal maintenancePrice;
+    @ApiModelProperty("瀹℃壒浜篿d")
+    private Integer approverId;
 }
diff --git a/src/main/resources/mapper/device/DeviceRepairMapper.xml b/src/main/resources/mapper/device/DeviceRepairMapper.xml
index d093980..8969d0c 100644
--- a/src/main/resources/mapper/device/DeviceRepairMapper.xml
+++ b/src/main/resources/mapper/device/DeviceRepairMapper.xml
@@ -14,6 +14,7 @@
                 dr.maintenance_name,
                 dr.maintenance_time,
                 dr.maintenance_result,
+                dr.maintenance_price,
                 dr.status,
                 dr.create_time,
                 dr.update_time,
@@ -59,6 +60,7 @@
                dr.maintenance_name,
                dr.maintenance_time,
                dr.maintenance_result,
+               dr.maintenance_price,
                dr.status,
                dr.create_time,
                dr.update_time,

--
Gitblit v1.9.3