From 60afc1c228318d136a273cd0b389217f87583277 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期六, 11 十月 2025 11:29:33 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationDisposeServiceImpl.java | 58 ++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 38 insertions(+), 20 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationDisposeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationDisposeServiceImpl.java index edd5be5..d0c21e9 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationDisposeServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationDisposeServiceImpl.java @@ -1,12 +1,12 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.collection.CollUtil; 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.exception.ServiceException; -import com.ruoyi.system.dto.dispose.OaApprovalApplicationDisposeDTO; +import com.ruoyi.system.constants.ApprovalApplicationCodePrefix; +import com.ruoyi.system.dto.asset.OaApprovalApplicationDisposeDTO; import com.ruoyi.system.emums.ApprovalStatusEnum; import com.ruoyi.system.emums.ApprovalTypeEnum; import com.ruoyi.system.mapper.OaApprovalApplicationDisposeMapper; @@ -15,19 +15,22 @@ import com.ruoyi.system.model.OaApprovalApplications; import com.ruoyi.system.model.OaApprovalFlowNode; import com.ruoyi.system.query.OaApprovalApplicationDisposePageQuery; +import com.ruoyi.system.service.AssetMainService; import com.ruoyi.system.service.OaApprovalApplicationAssetItemService; import com.ruoyi.system.service.OaApprovalApplicationDisposeService; import com.ruoyi.system.service.OaApprovalApplicationsService; import com.ruoyi.system.service.OaApprovalFlowNodeService; import com.ruoyi.system.service.OaApprovalTodoService; -import com.ruoyi.system.vo.dispose.OaApprovalApplicationDisposePageVO; +import com.ruoyi.system.vo.asset.AssetMainVO; +import com.ruoyi.system.vo.asset.OaApprovalApplicationDisposeDetailVO; +import com.ruoyi.system.vo.asset.OaApprovalApplicationDisposePageVO; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.time.LocalDate; -import java.time.format.DateTimeFormatter; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -47,6 +50,7 @@ private final OaApprovalFlowNodeService oaApprovalFlowNodeService; private final OaApprovalTodoService oaApprovalTodoService; private final OaApprovalApplicationAssetItemService oaApprovalApplicationAssetItemService; + private final AssetMainService assetMainService; @Override public IPage<OaApprovalApplicationDisposePageVO> getDisposePageList(OaApprovalApplicationDisposePageQuery pageQuery) { @@ -57,9 +61,8 @@ @Override @Transactional(rollbackFor = Exception.class) public void submitDispose(OaApprovalApplicationDisposeDTO dto) { - if (CollUtil.isEmpty(dto.getAssetMainIds())) { - throw new ServiceException("资产ID列表不能为空"); - } + //校验资产状态 + oaApprovalApplicationAssetItemService.validateAssetStatus(dto.getAssetMainIds()); // 1. 构建并保存审批主表 OaApprovalApplications applications = buildOaApprovalApplications(dto); @@ -90,7 +93,7 @@ private OaApprovalApplications buildOaApprovalApplications(OaApprovalApplicationDisposeDTO dto) { OaApprovalApplications applications = BeanUtil.copyProperties(dto, OaApprovalApplications.class); - applications.setApplicationCode(generateApplicationCode("CZ")); + applications.setApplicationCode(oaApprovalApplicationsService.generateApplicationCode(ApprovalApplicationCodePrefix.ASSET_DISPOSE)); applications.setApprovalId(ApprovalTypeEnum.ASSET_DISPOSE.getCode()); applications.setApplicationDate(LocalDate.now()); applications.setApprovalStatus(ApprovalStatusEnum.PENDING.getCode()); @@ -115,22 +118,37 @@ return flowNodes.get(0); } - /** - * 生成申请单号:CZ + yyyyMMdd + 3位序号 - */ - private String generateApplicationCode(String prefix) { - String dateStr = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); - prefix = prefix + dateStr; - Long count = oaApprovalApplicationsService.lambdaQuery() - .like(OaApprovalApplications::getApplicationCode, prefix) - .count(); - return prefix + String.format("%03d", count + 1); - } - @Override public void deleteByApplicationId(Integer applicationId) { this.lambdaUpdate().eq(OaApprovalApplicationDispose::getApprovalApplicationId, applicationId).remove(); oaApprovalApplicationAssetItemService.lambdaUpdate().eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, applicationId).remove(); oaApprovalApplicationsService.removeById(applicationId); } + + @Override + public OaApprovalApplicationDisposeDetailVO getDisposeDetail(Integer id) { + OaApprovalApplications app = oaApprovalApplicationsService.getById(id); + if (app == null) { + throw new ServiceException("审批主记录不存在"); + } + OaApprovalApplicationDispose detail = this.lambdaQuery().eq(OaApprovalApplicationDispose::getApprovalApplicationId, app.getId()).one(); + if (detail == null) { + throw new ServiceException("记录不存在"); + } + oaApprovalApplicationsService.assembleApplicationDetail(app); + List<Integer> assetMainIds = oaApprovalApplicationAssetItemService.lambdaQuery() + .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, app.getId()) + .list().stream().map(OaApprovalApplicationAssetItem::getAssetMainId) + .distinct().collect(Collectors.toList()); + + List<AssetMainVO> assetMainVOS = assetMainIds.isEmpty() ? Collections.emptyList() : assetMainService.getListByIds(assetMainIds); + OaApprovalApplicationDisposeDetailVO vo = BeanUtil.copyProperties(app, OaApprovalApplicationDisposeDetailVO.class); + vo.setTitle(detail.getTitle()); + vo.setAssetTypeId(detail.getAssetTypeId()); + vo.setDisposeTime(detail.getDisposeTime()); + vo.setDisposeType(detail.getDisposeType()); + vo.setDisposeTotalAmount(detail.getDisposeTotalAmount()); + vo.setItems(assetMainVOS); + return vo; + } } -- Gitblit v1.7.1