| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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); |
| | |
| | | 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); |
| | |
| | | } 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) { |
| | |
| | | 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; |
| | | } |
| | | } |