From 236fb6ff1f6a955db5f78560204e042e977e2167 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期一, 22 九月 2025 20:47:52 +0800
Subject: [PATCH] 资产入库审批通过保存资产数据

---
 ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStorageVehicleDetailVO.java       |   25 +-
 ruoyi-system/src/main/java/com/ruoyi/system/service/AssetMainService.java                                   |   15 +
 ruoyi-system/src/main/java/com/ruoyi/system/vo/StorageDetailVO.java                                         |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationStorageServiceImpl.java       |  250 +++++++++-------------
 ruoyi-system/src/main/resources/mapper/system/OaApprovalApplicationStorageMapper.xml                        |    7 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetTypeServiceImpl.java                          |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStorageGeneralDetailVO.java       |   24 +-
 ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStoragePageVO.java                |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java                   |   85 +++++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationStorageController.java          |   10 
 ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationStorageAssetVehicleExtService.java |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetMainServiceImpl.java                          |  165 ++++++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStoragePropertyDetailVO.java      |   24 +-
 ruoyi-system/src/main/java/com/ruoyi/system/model/OaApprovalApplicationStorageAsset.java                    |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/model/AssetPropertyExt.java                                     |    4 
 15 files changed, 418 insertions(+), 205 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationStorageController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationStorageController.java
index c81a991..a390c76 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationStorageController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationStorageController.java
@@ -24,6 +24,7 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -43,6 +44,7 @@
  * @author CodeBuddy
  * @since 2025-09-17
  */
+@Slf4j
 @Api(tags = {"OA审批-资产入库申请相关接口"})
 @Validated
 @RestController
@@ -122,7 +124,13 @@
     @ApiOperation("获取资产入库申请分页列表")
     @PostMapping("/page-list")
     public R<IPage<OaApprovalApplicationStoragePageVO>> getPageList(@RequestBody OaApprovalApplicationStoragePageQuery pageQuery) {
-        IPage<OaApprovalApplicationStoragePageVO> page = oaApprovalApplicationStorageService.getPageList(pageQuery);
+        IPage<OaApprovalApplicationStoragePageVO> page = null;
+        try {
+            page = oaApprovalApplicationStorageService.getPageList(pageQuery);
+        } catch (Exception e) {
+            log.error("获取资产入库申请分页列表失败", e);
+            return R.fail("服务器开小差啦");
+        }
         return R.ok(page);
     }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java
index 098995e..215f41e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java
@@ -7,22 +7,89 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.entity.TDept;
-import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.framework.web.service.TokenService;
-import com.ruoyi.system.dto.AddLeaveDTO;
 import com.ruoyi.system.dto.AuditDTO;
 import com.ruoyi.system.emums.ApprovalTypeEnum;
-import com.ruoyi.system.model.*;
+import com.ruoyi.system.model.AssetMain;
+import com.ruoyi.system.model.AssetType;
+import com.ruoyi.system.model.OaApproval;
+import com.ruoyi.system.model.OaApprovalApplicationAdvertisement;
+import com.ruoyi.system.model.OaApprovalApplicationAsset;
+import com.ruoyi.system.model.OaApprovalApplicationAssetItem;
+import com.ruoyi.system.model.OaApprovalApplicationAttendance;
+import com.ruoyi.system.model.OaApprovalApplicationChange;
+import com.ruoyi.system.model.OaApprovalApplicationContract;
+import com.ruoyi.system.model.OaApprovalApplicationDispose;
+import com.ruoyi.system.model.OaApprovalApplicationMoney;
+import com.ruoyi.system.model.OaApprovalApplicationPayment;
+import com.ruoyi.system.model.OaApprovalApplicationPurchase;
+import com.ruoyi.system.model.OaApprovalApplicationReimbursement;
+import com.ruoyi.system.model.OaApprovalApplicationReimbursementItem;
+import com.ruoyi.system.model.OaApprovalApplicationStorage;
+import com.ruoyi.system.model.OaApprovalApplications;
+import com.ruoyi.system.model.OaApprovalFlowAudit;
+import com.ruoyi.system.model.OaApprovalFlowNode;
+import com.ruoyi.system.model.OaApprovalTodo;
 import com.ruoyi.system.query.ApprovalDetailQuery;
 import com.ruoyi.system.query.ApprovalTodoListQuery;
-import com.ruoyi.system.service.*;
-import com.ruoyi.system.vo.*;
+import com.ruoyi.system.service.AssetMainService;
+import com.ruoyi.system.service.AssetTypeService;
+import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.service.OaApprovalApplicationAdvertisementService;
+import com.ruoyi.system.service.OaApprovalApplicationAssetItemService;
+import com.ruoyi.system.service.OaApprovalApplicationAssetService;
+import com.ruoyi.system.service.OaApprovalApplicationAttendanceService;
+import com.ruoyi.system.service.OaApprovalApplicationChangeService;
+import com.ruoyi.system.service.OaApprovalApplicationContactService;
+import com.ruoyi.system.service.OaApprovalApplicationContractService;
+import com.ruoyi.system.service.OaApprovalApplicationDisposeService;
+import com.ruoyi.system.service.OaApprovalApplicationMoneyService;
+import com.ruoyi.system.service.OaApprovalApplicationPaymentService;
+import com.ruoyi.system.service.OaApprovalApplicationPurchaseItemService;
+import com.ruoyi.system.service.OaApprovalApplicationPurchaseService;
+import com.ruoyi.system.service.OaApprovalApplicationReimbursementItemService;
+import com.ruoyi.system.service.OaApprovalApplicationReimbursementService;
+import com.ruoyi.system.service.OaApprovalApplicationStorageAssetService;
+import com.ruoyi.system.service.OaApprovalApplicationStorageService;
+import com.ruoyi.system.service.OaApprovalApplicationsService;
+import com.ruoyi.system.service.OaApprovalFlowAuditService;
+import com.ruoyi.system.service.OaApprovalFlowNodeService;
+import com.ruoyi.system.service.OaApprovalFlowService;
+import com.ruoyi.system.service.OaApprovalService;
+import com.ruoyi.system.service.OaApprovalTodoService;
+import com.ruoyi.system.service.TDeptService;
+import com.ruoyi.system.vo.AdvertisementDetailVO;
+import com.ruoyi.system.vo.ApprovalFlowNodeListVO;
+import com.ruoyi.system.vo.ApprovalTodoVO;
+import com.ruoyi.system.vo.BackDetailVO;
+import com.ruoyi.system.vo.BorrowDetailVO;
+import com.ruoyi.system.vo.BusinessTripDetailVO;
+import com.ruoyi.system.vo.ChangeDetailVO;
+import com.ruoyi.system.vo.ContactDetailVO;
+import com.ruoyi.system.vo.ContractDetailVO;
+import com.ruoyi.system.vo.DisposeDetailVO;
+import com.ruoyi.system.vo.GrabDetailVO;
+import com.ruoyi.system.vo.GrabListVO;
+import com.ruoyi.system.vo.LeaveDestroyDetailVO;
+import com.ruoyi.system.vo.LeaveDetailVO;
+import com.ruoyi.system.vo.MoneyDetailVO;
+import com.ruoyi.system.vo.OutDetailVO;
+import com.ruoyi.system.vo.PaymentDetailVO;
+import com.ruoyi.system.vo.PurchaseDetailVO;
+import com.ruoyi.system.vo.PurchaseListVO;
+import com.ruoyi.system.vo.ReimbursementDetailVO;
+import com.ruoyi.system.vo.StorageDetailVO;
+import com.ruoyi.system.vo.StorageListVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
@@ -74,6 +141,8 @@
     private OaApprovalApplicationMoneyService approvalApplicationMoneyService;
     @Resource
     private AssetMainService assetMainService;
+    @Resource
+    private OaApprovalApplicationStorageAssetService oaApprovalApplicationStorageAssetService;
     @Resource
     private OaApprovalApplicationReimbursementService approvalApplicationReimbursementService;
     @Resource
@@ -1076,6 +1145,10 @@
                     }
                     assetMainService.updateBatchById(assetMains);
                 }
+                //如果为资产入库审批,处理审批通过逻辑,创建该审批的资产信息
+                if (approval.getApprovalCategory().equals(ApprovalTypeEnum.IN_STOCK.getCode())) {
+                    assetMainService.saveAssetByApprovalApplicationId(approvalApplications.getId());
+                }
             }else{
                 // 生成下一个节点的待办事项
                 for (int i = 0; i < approvalFlowNodes.size(); i++) {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetPropertyExt.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetPropertyExt.java
index 74c5526..5da51a5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetPropertyExt.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/AssetPropertyExt.java
@@ -82,9 +82,9 @@
     @TableField("resettlement_situation")
     private String resettlementSituation;
 
-    @ApiModelProperty(value = "是否抵押:0-否,1-是")
+    @ApiModelProperty(value = "是否抵押:否,是")
     @TableField("is_mortgaged")
-    private Integer mortgaged;
+    private String mortgaged;
 
     @ApiModelProperty(value = "承租方")
     @TableField("tenant_name")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/OaApprovalApplicationStorageAsset.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/OaApprovalApplicationStorageAsset.java
index eb9af8a..dac7d99 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/OaApprovalApplicationStorageAsset.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/OaApprovalApplicationStorageAsset.java
@@ -81,9 +81,6 @@
     @ApiModelProperty(value = "使用人")
     private String userName;
 
-    @ApiModelProperty(value = "使用类型")
-    private String useType;
-
     @ApiModelProperty(value = "位置类型 0-部门,1-仓库,2-录入地址")
     private Integer addressType;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetMainService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetMainService.java
index 143d07a..bf213e6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetMainService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/AssetMainService.java
@@ -6,6 +6,8 @@
 import com.ruoyi.system.query.AssetMainPageQuery;
 import com.ruoyi.system.vo.asset.AssetMainPageVO;
 
+import java.time.LocalDate;
+
 /**
  * 资产主表 服务类
  */
@@ -18,4 +20,17 @@
      */
     IPage<AssetMainPageVO> getApprovedPageList(AssetMainPageQuery pageQuery);
 
+    /**
+     * 生成资产编码
+     * @param assetTypeId
+     * @param storageDate
+     * @return
+     */
+    String generateAssetCode(Integer assetTypeId, LocalDate storageDate);
+
+    /**
+     * 根据审批单ID保存资产信息
+     * @param id
+     */
+    void saveAssetByApprovalApplicationId(Integer id);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationStorageAssetVehicleExtService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationStorageAssetVehicleExtService.java
index 78ca6ab..cc92cd9 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationStorageAssetVehicleExtService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationStorageAssetVehicleExtService.java
@@ -1,7 +1,7 @@
 package com.ruoyi.system.service;
 
-import com.ruoyi.system.model.OaApprovalApplicationStorageAssetVehicleExt;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.system.model.OaApprovalApplicationStorageAssetVehicleExt;
 
 /**
  * <p>
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetMainServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetMainServiceImpl.java
index cc1dd58..055b0e6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetMainServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetMainServiceImpl.java
@@ -1,24 +1,187 @@
 package com.ruoyi.system.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import org.springframework.util.CollectionUtils;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.utils.SecurityUtils;
 import com.ruoyi.system.mapper.AssetMainMapper;
+import com.ruoyi.system.mapper.AssetPropertyExtMapper;
+import com.ruoyi.system.mapper.AssetVehicleExtMapper;
+import com.ruoyi.system.mapper.OaApprovalApplicationStorageAssetMapper;
+import com.ruoyi.system.mapper.OaApprovalApplicationStorageAssetPropertyExtMapper;
+import com.ruoyi.system.mapper.OaApprovalApplicationStorageAssetVehicleExtMapper;
 import com.ruoyi.system.model.AssetMain;
+import com.ruoyi.system.model.AssetPropertyExt;
+import com.ruoyi.system.model.AssetVehicleExt;
+import com.ruoyi.system.model.OaApprovalApplicationStorageAsset;
+import com.ruoyi.system.model.OaApprovalApplicationStorageAssetPropertyExt;
+import com.ruoyi.system.model.OaApprovalApplicationStorageAssetVehicleExt;
 import com.ruoyi.system.query.AssetMainPageQuery;
 import com.ruoyi.system.service.AssetMainService;
+import com.ruoyi.system.service.AssetPropertyExtService;
+import com.ruoyi.system.service.AssetTypeService;
+import com.ruoyi.system.service.AssetVehicleExtService;
+import com.ruoyi.system.service.OaApprovalApplicationStorageAssetPropertyExtService;
+import com.ruoyi.system.service.OaApprovalApplicationStorageAssetService;
+import com.ruoyi.system.service.OaApprovalApplicationStorageAssetVehicleExtService;
 import com.ruoyi.system.vo.asset.AssetMainPageVO;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
 
 /**
  * 资产主表 服务实现类
  */
 @Service
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class AssetMainServiceImpl extends ServiceImpl<AssetMainMapper, AssetMain> implements AssetMainService {
-
+    private final AssetTypeService assetTypeService;
+    private final OaApprovalApplicationStorageAssetService oaApprovalApplicationStorageAssetService;
+    private final OaApprovalApplicationStorageAssetPropertyExtService oaApprovalApplicationStorageAssetPropertyExtService;
+    private final OaApprovalApplicationStorageAssetVehicleExtService oaApprovalApplicationStorageAssetVehicleExtService;
+    private final AssetVehicleExtService assetVehicleExtService;
+    private final AssetPropertyExtService assetPropertyExtService;
+    
+    private final AssetMainMapper assetMainMapper;
+    private final OaApprovalApplicationStorageAssetMapper oaApprovalApplicationStorageAssetMapper;
+    private final OaApprovalApplicationStorageAssetPropertyExtMapper oaApprovalApplicationStorageAssetPropertyExtMapper;
+    private final OaApprovalApplicationStorageAssetVehicleExtMapper oaApprovalApplicationStorageAssetVehicleExtMapper;
+    private final AssetPropertyExtMapper assetPropertyExtMapper;
+    private final AssetVehicleExtMapper assetVehicleExtMapper;
     @Override
     public IPage<AssetMainPageVO> getApprovedPageList(AssetMainPageQuery pageQuery) {
         Page<AssetMainPageVO> page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
         return this.baseMapper.selectApprovedAssetPage(page, pageQuery);
     }
+    /**
+     * 生成资产编码
+     * 格式:资产类型一级分类简写+资产类型子类简写+入库日期+【-】+数量顺序编号(4位)
+     * 例如:GDFC20250917-0001
+     */
+    @Override
+    public String generateAssetCode(Integer assetTypeId, LocalDate storageDate) {
+        // 根据资产类型ID获取资产编码前缀
+        String typeCodePrefix = assetTypeService.getAssetCodePrefix(assetTypeId);
+
+        String dateStr = storageDate.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
+        String prefix = typeCodePrefix + dateStr + "-";
+
+        // 查询当天该类型资产的数量
+        Long count = this.lambdaQuery()
+                .like(AssetMain::getAssetCode, prefix)
+                .ge(AssetMain::getCreateTime, storageDate.atStartOfDay())
+                .lt(AssetMain::getCreateTime, storageDate.plusDays(1).atStartOfDay())
+                .count();
+
+        int sequence = (count != null ? count.intValue() : 0) + 1;
+        String sequenceStr = String.format("%04d", sequence);
+
+        return prefix + sequenceStr;
+    }
+
+    @Override
+    public void saveAssetByApprovalApplicationId(Integer approvalApplicationId) {
+        // 1. 根据approvalApplicationId查询审批通过的资产列表
+        List<OaApprovalApplicationStorageAsset> storageAssets = oaApprovalApplicationStorageAssetMapper
+                .selectList(new QueryWrapper<OaApprovalApplicationStorageAsset>()
+                        .eq("approval_application_id", approvalApplicationId));
+        
+        if (CollectionUtils.isEmpty(storageAssets)) {
+            return;
+        }
+        
+        for (OaApprovalApplicationStorageAsset storageAsset : storageAssets) {
+            Integer assetMainType = storageAsset.getAssetMainType();
+            BigDecimal quantity = storageAsset.getQuantity();
+            
+            // 根据数量生成对应条数的资产记录
+            int assetCount = quantity != null ? quantity.intValue() : 1;
+            
+            for (int i = 0; i < assetCount; i++) {
+                // 创建资产主表记录
+                AssetMain assetMain = new AssetMain();
+                BeanUtil.copyProperties(storageAsset, assetMain);
+                
+                // 为每个资产生成编码
+                String assetCode = generateAssetCode(storageAsset.getAssetTypeId(), LocalDate.now());
+                assetMain.setAssetCode(assetCode);
+                
+                // 单个资产的数量设为1
+                assetMain.setQuantity(BigDecimal.ONE);
+                // 单个资产的总价值等于单价
+                assetMain.setTotalValue(storageAsset.getUnitPrice());
+                
+                // 设置创建信息
+                assetMain.setCreateTime(LocalDateTime.now());
+                assetMain.setCreateBy(SecurityUtils.getUsername());
+                assetMain.setDisabled(false);
+                
+                // 保存资产主表
+                assetMainMapper.insert(assetMain);
+                
+                // 2. 根据资产类型保存扩展信息
+                if (assetMainType != null) {
+                    if (assetMainType == 1) {
+                        // 房产资产 - 保存房产扩展信息
+                        savePropertyExtension(storageAsset.getId(), assetMain.getId());
+                    } else if (assetMainType == 2) {
+                        // 车辆资产 - 保存车辆扩展信息
+                        saveVehicleExtension(storageAsset.getId(), assetMain.getId());
+                    }
+                    // assetMainType == 0 为通用资产,无需保存扩展信息
+                }
+            }
+        }
+    }
+    
+    /**
+     * 保存房产资产扩展信息
+     */
+    private void savePropertyExtension(Integer storageAssetId, Integer assetMainId) {
+        // 查询房产扩展信息
+        OaApprovalApplicationStorageAssetPropertyExt propertyExt = oaApprovalApplicationStorageAssetPropertyExtMapper
+                .selectOne(new QueryWrapper<OaApprovalApplicationStorageAssetPropertyExt>()
+                        .eq("storage_asset_id", storageAssetId));
+        
+        if (propertyExt != null) {
+            AssetPropertyExt assetPropertyExt = new AssetPropertyExt();
+            BeanUtil.copyProperties(propertyExt, assetPropertyExt);
+            assetPropertyExt.setAssetMainId(assetMainId);
+            assetPropertyExt.setCreateTime(LocalDateTime.now());
+            assetPropertyExt.setCreateBy(SecurityUtils.getUsername());
+            assetPropertyExt.setDisabled(false);
+            
+            assetPropertyExtMapper.insert(assetPropertyExt);
+        }
+    }
+    
+    /**
+     * 保存车辆资产扩展信息
+     */
+    private void saveVehicleExtension(Integer storageAssetId, Integer assetMainId) {
+        // 查询车辆扩展信息
+        OaApprovalApplicationStorageAssetVehicleExt vehicleExt = oaApprovalApplicationStorageAssetVehicleExtMapper
+                .selectOne(new QueryWrapper<OaApprovalApplicationStorageAssetVehicleExt>()
+                        .eq("storage_asset_id", storageAssetId));
+        
+        if (vehicleExt != null) {
+            AssetVehicleExt assetVehicleExt = new AssetVehicleExt();
+            BeanUtil.copyProperties(vehicleExt, assetVehicleExt);
+            assetVehicleExt.setAssetMainId(assetMainId);
+            assetVehicleExt.setCreateTime(LocalDateTime.now());
+            assetVehicleExt.setCreateBy(SecurityUtils.getUsername());
+            assetVehicleExt.setDisabled(false);
+            
+            assetVehicleExtMapper.insert(assetVehicleExt);
+        }
+    }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetTypeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetTypeServiceImpl.java
index f69ae9b..786edc5 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetTypeServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetTypeServiceImpl.java
@@ -15,6 +15,7 @@
 import com.ruoyi.system.service.AssetTypeService;
 import com.ruoyi.system.vo.asset.AssetTypeTreeVO;
 import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -34,7 +35,7 @@
  * @since 2025-09-15
  */
 @Service
-@RequiredArgsConstructor
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class AssetTypeServiceImpl extends ServiceImpl<AssetTypeMapper, AssetType> implements AssetTypeService {
 
     private final AssetMainService assetMainService;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationStorageServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationStorageServiceImpl.java
index 5bfb9d1..5c9f687 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationStorageServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationStorageServiceImpl.java
@@ -1,5 +1,6 @@
 package com.ruoyi.system.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -13,7 +14,6 @@
 import com.ruoyi.system.emums.ApprovalTypeEnum;
 import com.ruoyi.system.emums.AssetTypeEnum;
 import com.ruoyi.system.mapper.OaApprovalApplicationStorageMapper;
-import com.ruoyi.system.model.AssetMain;
 import com.ruoyi.system.model.AssetWarehouse;
 import com.ruoyi.system.model.OaApprovalApplicationStorage;
 import com.ruoyi.system.model.OaApprovalApplicationStorageAsset;
@@ -23,10 +23,6 @@
 import com.ruoyi.system.model.OaApprovalFlowNode;
 import com.ruoyi.system.query.ApprovalDetailQuery;
 import com.ruoyi.system.query.OaApprovalApplicationStoragePageQuery;
-import com.ruoyi.system.service.AssetMainService;
-import com.ruoyi.system.service.AssetPropertyExtService;
-import com.ruoyi.system.service.AssetTypeService;
-import com.ruoyi.system.service.AssetVehicleExtService;
 import com.ruoyi.system.service.AssetWarehouseService;
 import com.ruoyi.system.service.OaApprovalApplicationStorageAssetPropertyExtService;
 import com.ruoyi.system.service.OaApprovalApplicationStorageAssetService;
@@ -36,7 +32,6 @@
 import com.ruoyi.system.service.OaApprovalFlowNodeService;
 import com.ruoyi.system.service.OaApprovalTodoService;
 import com.ruoyi.system.service.TDeptService;
-import com.ruoyi.system.vo.PurchaseListVO;
 import com.ruoyi.system.vo.StorageListVO;
 import com.ruoyi.system.vo.asset.OaApprovalApplicationStorageGeneralDetailVO;
 import com.ruoyi.system.vo.asset.OaApprovalApplicationStoragePageVO;
@@ -50,8 +45,10 @@
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -70,10 +67,6 @@
     private final OaApprovalApplicationStorageAssetService oaApprovalApplicationStorageAssetService;
     private final OaApprovalApplicationStorageAssetPropertyExtService oaApprovalApplicationStorageAssetPropertyExtService;
     private final OaApprovalApplicationStorageAssetVehicleExtService oaApprovalApplicationStorageAssetVehicleExtService;
-    private final AssetMainService assetMainService;
-    private final AssetPropertyExtService assetPropertyExtService;
-    private final AssetVehicleExtService assetVehicleExtService;
-    private final AssetTypeService assetTypeService;
     private final OaApprovalFlowNodeService oaApprovalFlowNodeService;
     private final OaApprovalTodoService oaApprovalTodoService;
     private final TDeptService tDeptService;
@@ -239,7 +232,8 @@
         }
         assetMain.setUserName(item.getUserName());
         // 根据整单 addressType 写入使用部门ID或仓库ID
-        applyUseDeptInfoToAssetMain(assetMain, baseDto.getUseDeptName());
+        applyAddressToAssetMain(assetMain, item.getAddressType(), item.getUseDeptName(), item.getWarehouseName(), item.getAddress());
+        assetMain.setAddressType(item.getAddressType());
         assetMain.setAssetMainType(AssetTypeEnum.GENERAL.getCode());
         assetMain.setAssetStatus(item.getAssetStatus());
         assetMain.setRemarks(item.getRemarks());
@@ -275,7 +269,8 @@
             }
         }
         assetMain.setUserName(item.getUserName());
-        applyUseDeptInfoToAssetMain(assetMain, baseDto.getUseDeptName());
+        applyAddressToAssetMain(assetMain, item.getAddressType(), item.getUseDeptName(), item.getWarehouseName(), item.getAddress());
+        assetMain.setAddressType(item.getAddressType());
         assetMain.setAssetMainType(AssetTypeEnum.HOUSE.getCode());
         assetMain.setAssetStatus(item.getAssetStatus());
         assetMain.setRemarks(item.getRemarks());
@@ -311,7 +306,8 @@
             }
         }
         assetMain.setUserName(item.getUserName());
-        applyUseDeptInfoToAssetMain(assetMain, baseDto.getUseDeptName());
+        applyAddressToAssetMain(assetMain, item.getAddressType(), item.getUseDeptName(), item.getWarehouseName(), item.getAddress());
+        assetMain.setAddressType(item.getAddressType());
         assetMain.setAssetMainType(AssetTypeEnum.VEHICLE.getCode());
         assetMain.setAssetStatus(item.getAssetStatus());
         assetMain.setRemarks(item.getRemarks());
@@ -327,17 +323,43 @@
     /**
      * 按整单地址类型设置资产主表位置信息(使用部门ID或仓库ID或地址)
      */
-    private void applyUseDeptInfoToAssetMain(OaApprovalApplicationStorageAsset assetMain, String useDeptName) {
-        // 使用部门
-        if (useDeptName != null && !useDeptName.isEmpty()) {
-            TDept dept = tDeptService.lambdaQuery()
-                    .eq(TDept::getDeptName, useDeptName)
-                    .one();
-            if (dept != null) {
-                assetMain.setUseDeptId(dept.getId());
-            }
+    private void applyAddressToAssetMain(OaApprovalApplicationStorageAsset assetMain, Integer addressType, String useDeptName, String warehouseName, String address) {
+        if (addressType == null) {
+            return;
+        }
+        switch (addressType) {
+            case 0:
+                // 使用部门
+                if (useDeptName != null && !useDeptName.isEmpty()) {
+                    TDept dept = tDeptService.lambdaQuery()
+                            .eq(TDept::getDeptName, useDeptName)
+                            .one();
+                    if (dept != null) {
+                        assetMain.setUseDeptId(dept.getId());
+                    }
+                }
+                break;
+            case 1:
+                if (warehouseName != null && !warehouseName.isEmpty()) {
+                    AssetWarehouse warehouse = assetWarehouseService.lambdaQuery()
+                            .eq(AssetWarehouse::getWarehouseName, warehouseName)
+                            .one();
+                    if (warehouse != null) {
+                        assetMain.setWarehouseId(warehouse.getId());
+                        assetMain.setWarehouseName(warehouse.getWarehouseName());
+                    }
+                }
+                break;
+            case 2:
+                if (address != null && !address.isEmpty()) {
+                    assetMain.setAddress(address);
+                }
+                break;
+            default:
+                // ignore
         }
     }
+
 
 
     /**
@@ -494,31 +516,6 @@
         return prefix + sequenceStr;
     }
 
-    /**
-     * 生成资产编码
-     * 格式:资产类型一级分类简写+资产类型子类简写+入库日期+【-】+数量顺序编号(4位)
-     * 例如:GDFC20250917-0001
-     */
-    private String generateAssetCode(Integer assetTypeId, LocalDate storageDate) {
-        // 根据资产类型ID获取资产编码前缀
-        String typeCodePrefix = assetTypeService.getAssetCodePrefix(assetTypeId);
-        
-        String dateStr = storageDate.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
-        String prefix = typeCodePrefix + dateStr + "-";
-        
-        // 查询当天该类型资产的数量
-        Long count = assetMainService.lambdaQuery()
-                .like(AssetMain::getAssetCode, prefix)
-                .ge(AssetMain::getCreateTime, storageDate.atStartOfDay())
-                .lt(AssetMain::getCreateTime, storageDate.plusDays(1).atStartOfDay())
-                .count();
-        
-        int sequence = (count != null ? count.intValue() : 0) + 1;
-        String sequenceStr = String.format("%04d", sequence);
-        
-        return prefix + sequenceStr;
-    }
-    
     @Override
     public IPage<OaApprovalApplicationStoragePageVO> getPageList(OaApprovalApplicationStoragePageQuery pageQuery) {
         Page<OaApprovalApplicationStoragePageVO> page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
@@ -543,36 +540,35 @@
                 .eq(OaApprovalApplicationStorageAsset::getApprovalApplicationId, app.getId())
                 .eq(OaApprovalApplicationStorageAsset::getAssetTypeId, storage.getAssetTypeId())
                 .list();
-        setAddressInfo(vo, mains);
-
         if (!CollectionUtils.isEmpty(mains)) {
-            // 批量查询权属部门,避免循环内查询
+            // 批量查询权属部门
             List<Integer> ownerIds = mains.stream().map(OaApprovalApplicationStorageAsset::getOwnershipDeptId)
-                    .filter(id -> id != null).distinct().collect(Collectors.toList());
-            Map<Integer, TDept> ownerDeptMap = ownerIds.isEmpty() ? java.util.Collections.emptyMap()
+                    .filter(Objects::nonNull).distinct().collect(Collectors.toList());
+            Map<Integer, TDept> ownerDeptMap = ownerIds.isEmpty() ? Collections.emptyMap()
                     : tDeptService.listByIds(ownerIds).stream().collect(Collectors.toMap(TDept::getId, d -> d));
-
+            // 批量查询使用部门
+            List<Integer> useDeptIds = mains.stream().map(OaApprovalApplicationStorageAsset::getUseDeptId)
+                    .filter(Objects::nonNull).distinct().collect(Collectors.toList());
+            Map<Integer, TDept> useDeptMap = ownerIds.isEmpty() ? Collections.emptyMap()
+                    : tDeptService.listByIds(useDeptIds).stream().collect(Collectors.toMap(TDept::getId, d -> d));
+            // 批量查询仓库
+            List<Integer> warehouseIds = mains.stream().map(OaApprovalApplicationStorageAsset::getWarehouseId)
+                    .filter(Objects::nonNull).distinct().collect(Collectors.toList());
+            Map<Integer, AssetWarehouse> warehouseMap = warehouseIds.isEmpty() ? Collections.emptyMap()
+                    : assetWarehouseService.listByIds(useDeptIds).stream().collect(Collectors.toMap(AssetWarehouse::getId, d -> d));
             List<OaApprovalApplicationStorageGeneralDetailVO.GeneralAssetItemVO> items = mains.stream().map(m -> {
-                OaApprovalApplicationStorageGeneralDetailVO.GeneralAssetItemVO item = new OaApprovalApplicationStorageGeneralDetailVO.GeneralAssetItemVO();
-                item.setAssetOriginalCode(m.getAssetOriginalCode());
-                item.setAssetName(m.getAssetName());
-                item.setSpecificationModel(m.getSpecificationModel());
-                item.setMeasurementUnit(m.getMeasurementUnit());
-                item.setQuantity(m.getQuantity());
-                item.setUnitPrice(m.getUnitPrice());
-                item.setUsefulLife(m.getUsefulLife());
+                OaApprovalApplicationStorageGeneralDetailVO.GeneralAssetItemVO item = BeanUtil.copyProperties(m, OaApprovalApplicationStorageGeneralDetailVO.GeneralAssetItemVO.class);
                 if (m.getOwnershipDeptId() != null) {
                     TDept dept = ownerDeptMap.get(m.getOwnershipDeptId());
                     item.setOwnerShipDeptName(dept != null ? dept.getDeptName() : null);
                 }
-                item.setUserName(m.getUserName());
-                item.setAssetStatus(m.getAssetStatus());
-                item.setRemarks(m.getRemarks());
-                item.setAccountingStatus(m.getAccountingStatus());
-                item.setAccountingDate(m.getAccountingDate());
-                item.setAccountingVoucherNo(m.getAccountingVoucherNo());
-                item.setAccountingSubject(m.getAccountingSubject());
-                item.setAccountingAmount(m.getAccountingAmount());
+                if (m.getAddressType().equals(0) && m.getUseDeptId() != null) {
+                    TDept dept = useDeptMap.get(m.getUseDeptId());
+                    item.setUseDeptName(dept != null ? dept.getDeptName() : null);
+                } else if (m.getAddressType().equals(1) && m.getWarehouseId() != null){
+                    AssetWarehouse assetWarehouse = warehouseMap.get(m.getWarehouseId());
+                    item.setWarehouseName(assetWarehouse != null ? assetWarehouse.getWarehouseName() : null);
+                }
                 return item;
             }).collect(Collectors.toList());
             vo.setAssetItems(items);
@@ -598,7 +594,6 @@
                 .eq(OaApprovalApplicationStorageAsset::getApprovalApplicationId, app.getId())
                 .eq(OaApprovalApplicationStorageAsset::getAssetTypeId, storage.getAssetTypeId())
                 .list();
-        setAddressInfo(vo, mains);
 
         if (!CollectionUtils.isEmpty(mains)) {
             List<Integer> mainIds = mains.stream().map(OaApprovalApplicationStorageAsset::getId).collect(Collectors.toList());
@@ -609,28 +604,30 @@
                     .filter(id -> id != null).distinct().collect(Collectors.toList());
             Map<Integer, TDept> ownerDeptMap = ownerIds.isEmpty() ? java.util.Collections.emptyMap()
                     : tDeptService.listByIds(ownerIds).stream().collect(Collectors.toMap(TDept::getId, d -> d));
+            // 批量查询使用部门
+            List<Integer> useDeptIds = mains.stream().map(OaApprovalApplicationStorageAsset::getUseDeptId)
+                    .filter(Objects::nonNull).distinct().collect(Collectors.toList());
+            Map<Integer, TDept> useDeptMap = ownerIds.isEmpty() ? Collections.emptyMap()
+                    : tDeptService.listByIds(useDeptIds).stream().collect(Collectors.toMap(TDept::getId, d -> d));
+            // 批量查询仓库
+            List<Integer> warehouseIds = mains.stream().map(OaApprovalApplicationStorageAsset::getWarehouseId)
+                    .filter(Objects::nonNull).distinct().collect(Collectors.toList());
+            Map<Integer, AssetWarehouse> warehouseMap = warehouseIds.isEmpty() ? Collections.emptyMap()
+                    : assetWarehouseService.listByIds(useDeptIds).stream().collect(Collectors.toMap(AssetWarehouse::getId, d -> d));
 
             List<OaApprovalApplicationStoragePropertyDetailVO.PropertyAssetItemVO> items = mains.stream().map(m -> {
-                OaApprovalApplicationStoragePropertyDetailVO.PropertyAssetItemVO item = new OaApprovalApplicationStoragePropertyDetailVO.PropertyAssetItemVO();
-                item.setAssetOriginalCode(m.getAssetOriginalCode());
-                item.setAssetName(m.getAssetName());
-                item.setSpecificationModel(m.getSpecificationModel());
-                item.setMeasurementUnit(m.getMeasurementUnit());
-                item.setQuantity(m.getQuantity());
-                item.setUnitPrice(m.getUnitPrice());
-                item.setUsefulLife(m.getUsefulLife());
+                OaApprovalApplicationStoragePropertyDetailVO.PropertyAssetItemVO item = BeanUtil.copyProperties(m, OaApprovalApplicationStoragePropertyDetailVO.PropertyAssetItemVO.class);
                 if (m.getOwnershipDeptId() != null) {
                     TDept dept = ownerDeptMap.get(m.getOwnershipDeptId());
                     item.setOwnerShipDeptName(dept != null ? dept.getDeptName() : null);
                 }
-                item.setUserName(m.getUserName());
-                item.setAssetStatus(m.getAssetStatus());
-                item.setRemarks(m.getRemarks());
-                item.setAccountingStatus(m.getAccountingStatus());
-                item.setAccountingDate(m.getAccountingDate());
-                item.setAccountingVoucherNo(m.getAccountingVoucherNo());
-                item.setAccountingSubject(m.getAccountingSubject());
-                item.setAccountingAmount(m.getAccountingAmount());
+                if (m.getAddressType().equals(0) && m.getUseDeptId() != null) {
+                    TDept dept = useDeptMap.get(m.getUseDeptId());
+                    item.setUseDeptName(dept != null ? dept.getDeptName() : null);
+                } else if (m.getAddressType().equals(1) && m.getWarehouseId() != null){
+                    AssetWarehouse assetWarehouse = warehouseMap.get(m.getWarehouseId());
+                    item.setWarehouseName(assetWarehouse != null ? assetWarehouse.getWarehouseName() : null);
+                }
                 OaApprovalApplicationStorageAssetPropertyExt ext = extMap.get(m.getId());
                 if (ext != null) {
                     item.setRegion(ext.getRegion());
@@ -675,7 +672,6 @@
                 .eq(OaApprovalApplicationStorageAsset::getApprovalApplicationId, app.getId())
                 .eq(OaApprovalApplicationStorageAsset::getAssetTypeId, storage.getAssetTypeId())
                 .list();
-        setAddressInfo(vo, mains);
 
         if (!CollectionUtils.isEmpty(mains)) {
             List<Integer> mainIds = mains.stream().map(OaApprovalApplicationStorageAsset::getId).collect(Collectors.toList());
@@ -686,28 +682,29 @@
                     .filter(id -> id != null).distinct().collect(Collectors.toList());
             Map<Integer, TDept> ownerDeptMap = ownerIds.isEmpty() ? java.util.Collections.emptyMap()
                     : tDeptService.listByIds(ownerIds).stream().collect(Collectors.toMap(TDept::getId, d -> d));
-
+            // 批量查询使用部门
+            List<Integer> useDeptIds = mains.stream().map(OaApprovalApplicationStorageAsset::getUseDeptId)
+                    .filter(Objects::nonNull).distinct().collect(Collectors.toList());
+            Map<Integer, TDept> useDeptMap = ownerIds.isEmpty() ? Collections.emptyMap()
+                    : tDeptService.listByIds(useDeptIds).stream().collect(Collectors.toMap(TDept::getId, d -> d));
+            // 批量查询仓库
+            List<Integer> warehouseIds = mains.stream().map(OaApprovalApplicationStorageAsset::getWarehouseId)
+                    .filter(Objects::nonNull).distinct().collect(Collectors.toList());
+            Map<Integer, AssetWarehouse> warehouseMap = warehouseIds.isEmpty() ? Collections.emptyMap()
+                    : assetWarehouseService.listByIds(useDeptIds).stream().collect(Collectors.toMap(AssetWarehouse::getId, d -> d));
             List<OaApprovalApplicationStorageVehicleDetailVO.VehicleAssetItemVO> items = mains.stream().map(m -> {
-                OaApprovalApplicationStorageVehicleDetailVO.VehicleAssetItemVO item = new OaApprovalApplicationStorageVehicleDetailVO.VehicleAssetItemVO();
-                item.setAssetOriginalCode(m.getAssetOriginalCode());
-                item.setAssetName(m.getAssetName());
-                item.setSpecificationModel(m.getSpecificationModel());
-                item.setMeasurementUnit(m.getMeasurementUnit());
-                item.setQuantity(m.getQuantity());
-                item.setUnitPrice(m.getUnitPrice());
-                item.setUsefulLife(m.getUsefulLife());
+                OaApprovalApplicationStorageVehicleDetailVO.VehicleAssetItemVO item = BeanUtil.copyProperties(m, OaApprovalApplicationStorageVehicleDetailVO.VehicleAssetItemVO.class);
                 if (m.getOwnershipDeptId() != null) {
                     TDept dept = ownerDeptMap.get(m.getOwnershipDeptId());
                     item.setOwnerShipDeptName(dept != null ? dept.getDeptName() : null);
                 }
-                item.setUserName(m.getUserName());
-                item.setAssetStatus(m.getAssetStatus());
-                item.setRemarks(m.getRemarks());
-                item.setAccountingStatus(m.getAccountingStatus());
-                item.setAccountingDate(m.getAccountingDate());
-                item.setAccountingVoucherNo(m.getAccountingVoucherNo());
-                item.setAccountingSubject(m.getAccountingSubject());
-                item.setAccountingAmount(m.getAccountingAmount());
+                if (m.getAddressType().equals(0) && m.getUseDeptId() != null) {
+                    TDept dept = useDeptMap.get(m.getUseDeptId());
+                    item.setUseDeptName(dept != null ? dept.getDeptName() : null);
+                } else if (m.getAddressType().equals(1) && m.getWarehouseId() != null){
+                    AssetWarehouse assetWarehouse = warehouseMap.get(m.getWarehouseId());
+                    item.setWarehouseName(assetWarehouse != null ? assetWarehouse.getWarehouseName() : null);
+                }
                 OaApprovalApplicationStorageAssetVehicleExt ext = extMap.get(m.getId());
                 if (ext != null) {
                     item.setLicensePlate(ext.getLicensePlate());
@@ -766,51 +763,6 @@
             v.setAssetTypeId(storage.getAssetTypeId());
             v.setStorageType(storage.getStorageType());
             v.setStorageTime(storage.getStorageTime());
-        }
-    }
-
-    private void setAddressInfo(Object vo, List<OaApprovalApplicationStorageAsset> mains) {
-        if (CollectionUtils.isEmpty(mains)) {
-            return;
-        }
-        OaApprovalApplicationStorageAsset sample = mains.get(0);
-        Integer addressType = null;
-        String useDeptName = null;
-        String warehouseName = null;
-        String address = null;
-        switch (sample.getAddressType()) {
-            case 0:
-                TDept dept = tDeptService.getById(sample.getUseDeptId());
-                useDeptName = dept != null ? dept.getDeptName() : null;
-                break;
-            case 1:
-                AssetWarehouse wh = assetWarehouseService.getById(sample.getWarehouseId());
-                warehouseName = wh != null ? wh.getWarehouseName() : null;
-                break;
-            case 2:
-                break;
-            default:
-                return;
-        }
-
-        if (vo instanceof OaApprovalApplicationStorageGeneralDetailVO) {
-            OaApprovalApplicationStorageGeneralDetailVO v = (OaApprovalApplicationStorageGeneralDetailVO) vo;
-            v.setAddressType(sample.getAddressType());
-            v.setUseDeptName(useDeptName);
-            v.setWarehouseName(warehouseName);
-            v.setAddress(sample.getAddress());
-        } else if (vo instanceof OaApprovalApplicationStoragePropertyDetailVO) {
-            OaApprovalApplicationStoragePropertyDetailVO v = (OaApprovalApplicationStoragePropertyDetailVO) vo;
-            v.setAddressType(sample.getAddressType());
-            v.setUseDeptName(useDeptName);
-            v.setWarehouseName(warehouseName);
-            v.setAddress(sample.getAddress());
-        } else if (vo instanceof OaApprovalApplicationStorageVehicleDetailVO) {
-            OaApprovalApplicationStorageVehicleDetailVO v = (OaApprovalApplicationStorageVehicleDetailVO) vo;
-            v.setAddressType(sample.getAddressType());
-            v.setUseDeptName(useDeptName);
-            v.setWarehouseName(warehouseName);
-            v.setAddress(sample.getAddress());
         }
     }
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/StorageDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/StorageDetailVO.java
index 651ec43..4d853b7 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/StorageDetailVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/StorageDetailVO.java
@@ -8,7 +8,6 @@
 
 import java.io.Serializable;
 import java.time.LocalDate;
-import java.time.LocalDateTime;
 import java.util.List;
 
 @Data
@@ -24,7 +23,7 @@
     @ApiModelProperty(value = "标题")
     private String title;
     @ApiModelProperty(value = "入库类型 0-正常入库")
-    private Boolean storageType;
+    private Integer storageType;
     @ApiModelProperty(value = "入库日期")
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private LocalDate storageTime;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStorageGeneralDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStorageGeneralDetailVO.java
index bf8ec9c..291c6e8 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStorageGeneralDetailVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStorageGeneralDetailVO.java
@@ -52,18 +52,6 @@
     @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate storageTime;
 
-    @ApiModelProperty(value = "位置类型 0-部门,1-仓库,2-录入地址")
-    private Integer addressType;
-
-    @ApiModelProperty(value = "使用部门/位置名称")
-    private String useDeptName;
-
-    @ApiModelProperty(value = "仓库名称")
-    private String warehouseName;
-
-    @ApiModelProperty(value = "所在位置")
-    private String address;
-
     @ApiModelProperty(value = "通用资产明细列表(按保存展开后的一条资产记录对应一条明细)")
     private List<GeneralAssetItemVO> assetItems;
 
@@ -117,5 +105,17 @@
 
         @ApiModelProperty(value = "入账金额")
         private BigDecimal accountingAmount;
+
+        @ApiModelProperty(value = "位置类型 0-部门,1-仓库,2-录入地址")
+        private Integer addressType;
+
+        @ApiModelProperty(value = "使用部门/位置名称")
+        private String useDeptName;
+
+        @ApiModelProperty(value = "仓库名称")
+        private String warehouseName;
+
+        @ApiModelProperty(value = "所在位置")
+        private String address;
     }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStoragePageVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStoragePageVO.java
index d174a7a..8de36fc 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStoragePageVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStoragePageVO.java
@@ -19,6 +19,9 @@
     @ApiModelProperty("主键ID")
     private Integer id;
 
+    @ApiModelProperty("资产类型ID")
+    private Integer assetTypeId;
+
     @ApiModelProperty("所属部门")
     private String deptName;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStoragePropertyDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStoragePropertyDetailVO.java
index 22421c0..04b89c9 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStoragePropertyDetailVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStoragePropertyDetailVO.java
@@ -52,18 +52,6 @@
     @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate storageTime;
 
-    @ApiModelProperty(value = "位置类型 0-部门,1-仓库,2-录入地址")
-    private Integer addressType;
-
-    @ApiModelProperty(value = "使用部门/位置名称")
-    private String useDeptName;
-
-    @ApiModelProperty(value = "仓库名称")
-    private String warehouseName;
-
-    @ApiModelProperty(value = "所在位置")
-    private String address;
-
     @ApiModelProperty(value = "房产资产明细列表(按保存展开后的一条资产记录对应一条明细)")
     private List<PropertyAssetItemVO> assetItems;
 
@@ -168,5 +156,17 @@
         @ApiModelProperty(value = "租赁期限止")
         @JsonFormat(pattern = "yyyy-MM-dd")
         private LocalDate leaseEndDate;
+
+        @ApiModelProperty(value = "位置类型 0-部门,1-仓库,2-录入地址")
+        private Integer addressType;
+
+        @ApiModelProperty(value = "使用部门/位置名称")
+        private String useDeptName;
+
+        @ApiModelProperty(value = "仓库名称")
+        private String warehouseName;
+
+        @ApiModelProperty(value = "所在位置")
+        private String address;
     }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStorageVehicleDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStorageVehicleDetailVO.java
index e91df3e..c1a2fbf 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStorageVehicleDetailVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/asset/OaApprovalApplicationStorageVehicleDetailVO.java
@@ -52,18 +52,6 @@
     @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate storageTime;
 
-    @ApiModelProperty(value = "位置类型 0-部门,1-仓库,2-录入地址")
-    private Integer addressType;
-
-    @ApiModelProperty(value = "使用部门/位置名称")
-    private String useDeptName;
-
-    @ApiModelProperty(value = "仓库名称")
-    private String warehouseName;
-
-    @ApiModelProperty(value = "所在位置")
-    private String address;
-
     @ApiModelProperty(value = "车辆资产明细列表(按保存展开后的一条资产记录对应一条明细)")
     private List<VehicleAssetItemVO> assetItems;
 
@@ -142,5 +130,18 @@
 
         @ApiModelProperty(value = "产权形式")
         private String propertyRightForm;
+
+        @ApiModelProperty(value = "位置类型 0-部门,1-仓库,2-录入地址")
+        private Integer addressType;
+
+        @ApiModelProperty(value = "使用部门/位置名称")
+        private String useDeptName;
+
+        @ApiModelProperty(value = "仓库名称")
+        private String warehouseName;
+
+        @ApiModelProperty(value = "所在位置")
+        private String address;
+
     }
 }
diff --git a/ruoyi-system/src/main/resources/mapper/system/OaApprovalApplicationStorageMapper.xml b/ruoyi-system/src/main/resources/mapper/system/OaApprovalApplicationStorageMapper.xml
index be9dd4f..94db2a5 100644
--- a/ruoyi-system/src/main/resources/mapper/system/OaApprovalApplicationStorageMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/OaApprovalApplicationStorageMapper.xml
@@ -21,6 +21,7 @@
     <select id="selectApplicationStoragePage" resultType="com.ruoyi.system.vo.asset.OaApprovalApplicationStoragePageVO">
         SELECT
             oas.id                               AS id,
+            oas.asset_type_id                    AS assetTypeId,
             aaa.dept_name                        AS deptName,
             aaa.application_code                 AS applicationCode,
             oas.title                            AS title,
@@ -56,9 +57,9 @@
                    end as useName
 
 
-               from asset_main t1
-                             left join asset_type t2 on t3.id = t1.asset_type_id
-                             left join t_dept t3 on t4.id = t3.ownership_dept_id
+               from oa_approval_application_storage_asset t1
+                             left join asset_type t2 on t2.id = t1.asset_type_id
+                             left join t_dept t3 on t3.id = t1.ownership_dept_id
         where t1.approval_application_id = #{query.approvalApplicationId}
         order by t1.create_time  desc
 

--
Gitblit v1.7.1