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