package com.ruoyi.system.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.dto.asset.AssetAdDTO; import com.ruoyi.system.mapper.AssetAdMapper; import com.ruoyi.system.model.AssetAd; import com.ruoyi.system.service.AssetAdService; import com.ruoyi.system.service.AssetTypeService; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.format.DateTimeFormatter; /** *

* 广告无形资产表 服务实现类 *

* * @author WuGuanFengYue * @since 2025-09-15 */ @Service @RequiredArgsConstructor(onConstructor_ = {@Lazy}) public class AssetAdServiceImpl extends ServiceImpl implements AssetAdService { private final AssetTypeService assetTypeService; @Override public void addAssetAd(AssetAdDTO dto) { AssetAd assetAd = BeanUtil.copyProperties(dto, AssetAd.class); assetAd.setAssetTypeId(2); assetAd.setAssetCode(generateCode()); assetAd.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName()); save(assetAd); } private String generateCode() { // 根据资产类型ID获取资产编码前缀 String typeCodePrefix = assetTypeService.getAssetCodePrefix(2); LocalDate today = LocalDate.now(); String dateStr = today.format(DateTimeFormatter.ofPattern("yyyyMMdd")); String prefix = typeCodePrefix + dateStr + "-"; // 查询当天该类型资产的数量 Long count = this.lambdaQuery() .like(AssetAd::getAssetCode, prefix) .ge(AssetAd::getCreateTime, today.atStartOfDay()) .lt(AssetAd::getCreateTime, today.plusDays(1).atStartOfDay()) .count(); int sequence = (count != null ? count.intValue() : 0) + 1; String sequenceStr = String.format("%04d", sequence); return prefix + sequenceStr; } @Override public void editAssetAd(AssetAdDTO dto) { AssetAd assetAd = BeanUtil.copyProperties(dto, AssetAd.class); assetAd.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName()); updateById(assetAd); } }