From 42131eb034e559dc361fe75d653e4d904aa6a316 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期四, 23 十月 2025 17:51:32 +0800
Subject: [PATCH] 保修详情增加资产类型名称字段

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetAdMaterialSporadicSettlementServiceImpl.java |   93 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 92 insertions(+), 1 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetAdMaterialSporadicSettlementServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetAdMaterialSporadicSettlementServiceImpl.java
index 94a38ae..211858c 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetAdMaterialSporadicSettlementServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetAdMaterialSporadicSettlementServiceImpl.java
@@ -3,17 +3,25 @@
 import cn.afterturn.easypoi.excel.ExcelImportUtil;
 import cn.afterturn.easypoi.excel.entity.ImportParams;
 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;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.system.constants.AssetDeptConstant;
 import com.ruoyi.system.dto.asset.AssetAdMaterialSporadicSettlementDTO;
+import com.ruoyi.system.dto.asset.AssetAdMaterialSporadicSettlementImportDTO;
 import com.ruoyi.system.export.AssetAdMaterialSporadicSettlementImport;
 import com.ruoyi.system.mapper.AssetAdMaterialSporadicSettlementMapper;
 import com.ruoyi.system.model.AssetAdMaterialSporadicSettlement;
 import com.ruoyi.system.model.AssetAdMaterialSporadicSettlementInfo;
+import com.ruoyi.system.query.AssetAdMaterialSporadicSettlementQuery;
 import com.ruoyi.system.service.AssetAdMaterialSporadicSettlementInfoService;
 import com.ruoyi.system.service.AssetAdMaterialSporadicSettlementService;
+import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.system.service.OssService;
+import com.ruoyi.system.vo.asset.AssetAdMaterialSporadicSettlementDetailVO;
+import com.ruoyi.system.vo.asset.AssetAdMaterialSporadicSettlementVO;
 import lombok.Cleanup;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
@@ -25,6 +33,8 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStream;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
@@ -42,10 +52,11 @@
 public class AssetAdMaterialSporadicSettlementServiceImpl extends ServiceImpl<AssetAdMaterialSporadicSettlementMapper, AssetAdMaterialSporadicSettlement> implements AssetAdMaterialSporadicSettlementService {
     private final OssService ossService;
     private final AssetAdMaterialSporadicSettlementInfoService assetAdMaterialSporadicSettlementInfoService;
+    private final ISysUserService sysUserService;
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void importData(MultipartFile file, AssetAdMaterialSporadicSettlementDTO dto) {
+    public void importData(MultipartFile file, AssetAdMaterialSporadicSettlementImportDTO dto) {
         try {
             ImportParams importParams = new ImportParams();
             importParams.setTitleRows(0);
@@ -57,6 +68,7 @@
             uploadToOss(list);
             //保存
             AssetAdMaterialSporadicSettlement assetAdMaterialSporadicSettlement = BeanUtil.copyProperties(dto, AssetAdMaterialSporadicSettlement.class);
+            assetAdMaterialSporadicSettlement.setTotalAmount(calculateTotalAmount(list));
             assetAdMaterialSporadicSettlement.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
             assetAdMaterialSporadicSettlement.setDeptId(Integer.parseInt(SecurityUtils.getLoginUser().getUser().getDeptId()));
             save(assetAdMaterialSporadicSettlement);
@@ -67,6 +79,12 @@
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
+    }
+
+    private BigDecimal calculateTotalAmount(List<AssetAdMaterialSporadicSettlementImport> list) {
+        return list.stream().map(item -> BigDecimal.valueOf(item.getQuantity())
+                        .multiply(item.getUnitPrice()).setScale(2, RoundingMode.HALF_UP))
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
     }
 
     private void validateFields(List<AssetAdMaterialSporadicSettlementImport> list) {
@@ -132,4 +150,77 @@
             tmpFile.delete();
         }
     }
+
+    @Override
+    public IPage<AssetAdMaterialSporadicSettlementVO> getPageList(AssetAdMaterialSporadicSettlementQuery query) {
+        // 数据权限:超级管理员/资产管理部查看所有数据,其他部门查看当前及下级部门的数据
+        Long userId = SecurityUtils.getUserId();
+        boolean isAdmin = SecurityUtils.isAdmin(userId);
+
+        if (!isAdmin) {
+            try {
+                // 获取当前用户的部门名称
+                String deptName = sysUserService.selectUserById(userId).getDeptName();
+
+                // 非超级管理员且非资产管理部,设置部门权限
+                if (!AssetDeptConstant.ASSET_INVENTORY_DEPT_NAMES.contains(deptName)) {
+                    query.setDeptId(Integer.valueOf(SecurityUtils.getLoginUser().getDeptId()));
+                }
+            } catch (Exception e) {
+                // 如果获取部门信息失败,默认设置部门权限
+                try {
+                    query.setDeptId(Integer.valueOf(SecurityUtils.getLoginUser().getDeptId()));
+                } catch (Exception ex) {
+                    // ignore parse, leave null if cannot parse
+                }
+            }
+        }
+        // 直接使用Mapper的分页查询方法
+        Page<AssetAdMaterialSporadicSettlementVO> page = new Page<>(query.getPageNum(), query.getPageSize());
+        return baseMapper.getPageList(query);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Boolean add(AssetAdMaterialSporadicSettlementDTO dto) {
+        AssetAdMaterialSporadicSettlement assetAdMaterialSporadicSettlement = BeanUtil.copyProperties(dto, AssetAdMaterialSporadicSettlement.class);
+        assetAdMaterialSporadicSettlement.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
+        assetAdMaterialSporadicSettlement.setDeptId(Integer.parseInt(SecurityUtils.getLoginUser().getUser().getDeptId()));
+        save(assetAdMaterialSporadicSettlement);
+        //保存明细
+        List<AssetAdMaterialSporadicSettlementInfo> assetAdMaterialSporadicSettlementInfos = BeanUtil.copyToList(dto.getInfos(), AssetAdMaterialSporadicSettlementInfo.class);
+        assetAdMaterialSporadicSettlementInfos.forEach(item -> item.setAdMaterialSporadicSettlementId(assetAdMaterialSporadicSettlement.getId()));
+      return assetAdMaterialSporadicSettlementInfoService.saveBatch(assetAdMaterialSporadicSettlementInfos);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Boolean edit(AssetAdMaterialSporadicSettlementDTO dto) {
+        if (Objects.isNull(dto.getId())) {
+            throw new ServiceException("ID不能为空");
+        }
+        AssetAdMaterialSporadicSettlement assetAdMaterialSporadicSettlement = BeanUtil.copyProperties(dto, AssetAdMaterialSporadicSettlement.class);
+        updateById(assetAdMaterialSporadicSettlement);
+        //删除原有明细
+        assetAdMaterialSporadicSettlementInfoService.removeBySettlementId(dto.getId());
+        //保存明细
+        List<AssetAdMaterialSporadicSettlementInfo> assetAdMaterialSporadicSettlementInfos = BeanUtil.copyToList(dto.getInfos(), AssetAdMaterialSporadicSettlementInfo.class);
+        assetAdMaterialSporadicSettlementInfos.forEach(item -> item.setAdMaterialSporadicSettlementId(assetAdMaterialSporadicSettlement.getId()));
+       return assetAdMaterialSporadicSettlementInfoService.saveBatch(assetAdMaterialSporadicSettlementInfos);
+    }
+
+    @Override
+    public Boolean deleteById(Integer id) {
+        //删除明细
+        assetAdMaterialSporadicSettlementInfoService.removeBySettlementId(id);
+        return removeById(id);
+    }
+
+    @Override
+    public AssetAdMaterialSporadicSettlementDetailVO getDetail(Integer id) {
+        AssetAdMaterialSporadicSettlement assetAdMaterialSporadicSettlement = getById(id);
+        AssetAdMaterialSporadicSettlementDetailVO vo = BeanUtil.copyProperties(assetAdMaterialSporadicSettlement, AssetAdMaterialSporadicSettlementDetailVO.class);
+        vo.setInfos(assetAdMaterialSporadicSettlementInfoService.getBySettlementId(id));
+        return vo;
+    }
 }

--
Gitblit v1.7.1