From 3e35dfd20aeef3473c4a07578724a955b91c4d09 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期四, 23 十月 2025 21:04:45 +0800
Subject: [PATCH] bug修改
---
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