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/OaApprovalApplicationAssetServiceImpl.java | 113 ++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 73 insertions(+), 40 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationAssetServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationAssetServiceImpl.java index 8fcf871..17cfd99 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationAssetServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationAssetServiceImpl.java @@ -8,6 +8,7 @@ import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.bo.OaApprovalApplicationAssetReturnBO; +import com.ruoyi.system.constants.ApprovalApplicationCodePrefix; import com.ruoyi.system.dto.asset.OaApprovalApplicationAssetReceiveDTO; import com.ruoyi.system.dto.asset.OaApprovalApplicationAssetReturnDTO; import com.ruoyi.system.emums.ApprovalStatusEnum; @@ -36,7 +37,6 @@ 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.Map; @@ -65,10 +65,8 @@ @Override @Transactional(rollbackFor = Exception.class) public void submitReceiveBorrow(OaApprovalApplicationAssetReceiveDTO dto) { - if (CollUtil.isEmpty(dto.getAssetMainIds())) { - throw new ServiceException("资产ID列表不能为空"); - } - validateAssetStatus(dto.getAssetMainIds()); + //校验资产状态 + oaApprovalApplicationAssetItemService.validateAssetStatus(dto.getAssetMainIds()); // 1. 构建并保存审批主表 OaApprovalApplications applications = buildOaApprovalApplications(dto); @@ -97,11 +95,6 @@ oaApprovalApplicationAssetItemService.saveBatch(items); } - //TODO 是否需要限制只有未提交审批的资产才能提交 - private void validateAssetStatus(List<Integer> assetMainIds) { - - } - private OaApprovalFlowNode getFirstFlowNode(Integer approvalId) { List<OaApprovalFlowNode> flowNodes = oaApprovalFlowNodeService.lambdaQuery() .eq(OaApprovalFlowNode::getApprovalId, approvalId) @@ -116,7 +109,8 @@ private OaApprovalApplications buildOaApprovalApplications(OaApprovalApplicationAssetReceiveDTO dto) { OaApprovalApplications applications = new OaApprovalApplications(); - applications.setApplicationCode(generateApplicationCode(dto.getType().equals(0) ? "LY" : "JY")); + applications.setApplicationCode(oaApprovalApplicationsService.generateApplicationCode(dto.getType().equals(0) ? + ApprovalApplicationCodePrefix.ASSET_RECEIVE : ApprovalApplicationCodePrefix.ASSET_BORROW)); applications.setApprovalId(dto.getType().equals(0) ? ApprovalTypeEnum.GRAB.getCode() : ApprovalTypeEnum.BORROW.getCode()); applications.setApplicantUserId(dto.getApplicantUserId()); applications.setApplicantName(dto.getApplicantName()); @@ -131,26 +125,10 @@ } private OaApprovalApplicationAsset buildOaApprovalApplicationAsset(OaApprovalApplicationAssetReceiveDTO dto, Integer applicationId) { - OaApprovalApplicationAsset asset = new OaApprovalApplicationAsset(); + OaApprovalApplicationAsset asset = BeanUtil.copyProperties(dto, OaApprovalApplicationAsset.class); asset.setApprovalApplicationId(applicationId); - asset.setType(AssetOperateTypeEnum.RECEIVE.getCode()); + asset.setType(dto.getType()); return asset; - } - - /** - * 生成申请单号:LY + 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) - .ge(OaApprovalApplications::getCreateTime, LocalDate.now().atStartOfDay()) - .lt(OaApprovalApplications::getCreateTime, LocalDate.now().plusDays(1).atStartOfDay()) - .count(); - int sequence = (count != null ? count.intValue() : 0) + 1; - String sequenceStr = String.format("%03d", sequence); - return prefix + sequenceStr; } @Override @@ -166,11 +144,11 @@ if (app == null) { throw new ServiceException("审批主记录不存在"); } - OaApprovalApplicationAsset detail = this.lambdaQuery().eq(OaApprovalApplicationAsset::getApprovalApplicationId, app.getId()).one(); + OaApprovalApplicationAsset detail = getOaApprovalApplicationAssetByApplicationId(app.getId()); if (detail == null) { throw new ServiceException("记录不存在"); } - + oaApprovalApplicationsService.assembleApplicationDetail(app); List<Integer> assetMainIds = oaApprovalApplicationAssetItemService.lambdaQuery() .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, app.getId()) .list().stream().map(OaApprovalApplicationAssetItem::getAssetMainId) @@ -198,11 +176,11 @@ if (app == null) { throw new ServiceException("审批主记录不存在"); } - OaApprovalApplicationAsset detail = this.lambdaQuery().eq(OaApprovalApplicationAsset::getApprovalApplicationId, app.getId()).one(); + OaApprovalApplicationAsset detail = getOaApprovalApplicationAssetByApplicationId(app.getId()); if (detail == null) { throw new ServiceException("记录不存在"); } - + oaApprovalApplicationsService.assembleApplicationDetail(app); List<Integer> assetMainIds = oaApprovalApplicationAssetItemService.lambdaQuery() .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, app.getId()) .list().stream().map(OaApprovalApplicationAssetItem::getAssetMainId) @@ -227,6 +205,8 @@ vo.setTitle(detail.getTitle()); vo.setAssetTypeId(detail.getAssetTypeId()); vo.setOperateTime(detail.getOperateTime()); + vo.setExpectReturnDate(detail.getExpectReturnDate()); + vo.setReturnStatus(detail.getReturnStatus()); vo.setItems(assetMainVOS); return vo; } @@ -258,13 +238,13 @@ } @Override public void submitReturn(OaApprovalApplicationAssetReturnDTO dto) { - if (CollUtil.isEmpty(dto.getAssetMainIds())) { - throw new ServiceException("资产ID列表不能为空"); - } + //校验资产状态 + oaApprovalApplicationAssetItemService.validateAssetStatus(dto.getAssetMainIds()); // 1. 构建并保存审批主表 OaApprovalApplications applications = BeanUtil.copyProperties(dto, OaApprovalApplications.class); - applications.setApplicationCode(generateApplicationCode("GH")); + applications.setApplicationCode(oaApprovalApplicationsService.generateApplicationCode(ApprovalApplicationCodePrefix.ASSET_RETURN)); applications.setApprovalId(ApprovalTypeEnum.RETURN.getCode()); + applications.setApplicationDate(LocalDate.now()); // 2. 获取流程首节点,设置当前节点,并保存 OaApprovalFlowNode firstFlowNode = getFirstFlowNode(ApprovalTypeEnum.RETURN.getCode()); @@ -277,8 +257,12 @@ // 4. 保存归还明细 OaApprovalApplicationAsset detail = BeanUtil.copyProperties(dto, OaApprovalApplicationAsset.class); detail.setApprovalApplicationId(applications.getId()); + detail.setBorrowApplicationId(dto.getApprovalApplicationId()); detail.setType(AssetOperateTypeEnum.RETURN.getCode()); - + OaApprovalApplicationAsset asset = lambdaQuery().eq(OaApprovalApplicationAsset::getApprovalApplicationId, dto.getApprovalApplicationId()).one(); + if (Objects.nonNull(asset)) { + detail.setAssetTypeId(asset.getAssetTypeId()); + } this.save(detail); // 5. 保存关联的资产项 @@ -303,12 +287,61 @@ @Override public IPage<OaApprovalApplicationAssetPageVO> getReturnNotifyPageList(OaApprovalApplicationAssetPageQuery pageQuery) { Page<OaApprovalApplicationAssetPageVO> page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()); - pageQuery.setType(AssetOperateTypeEnum.RETURN.getCode()); + pageQuery.setType(AssetOperateTypeEnum.BORROW.getCode()); + pageQuery.setReturnNotify(1); IPage<OaApprovalApplicationAssetPageVO> pageByType = this.baseMapper.getPageByType(page, pageQuery); LocalDate toDay = LocalDate.now(); pageByType.getRecords().forEach(item->{ - item.setDueDays(toDay.until(item.getExpectReturnDate()).getDays()); + if (Objects.nonNull(item.getExpectReturnDate())) { + item.setDueDays(toDay.until(item.getExpectReturnDate()).getDays()); + } }); return pageByType; } + + @Override + public OaApprovalApplicationAssetDetailVO getReturnDetail(Integer id) { + OaApprovalApplications app = oaApprovalApplicationsService.getById(id); + if (app == null) { + throw new ServiceException("审批主记录不存在"); + } + OaApprovalApplicationAsset detail = getOaApprovalApplicationAssetByApplicationId(id); + if (detail == null) { + throw new ServiceException("记录不存在"); + } + oaApprovalApplicationsService.assembleApplicationDetail(app); + //查询借用申请单 + OaApprovalApplications borrowApprovalApplication = oaApprovalApplicationsService.getById(detail.getBorrowApplicationId()); + OaApprovalApplicationAsset borrowApprovalApplicationAsset = null; + if (Objects.nonNull(borrowApprovalApplication)) { + borrowApprovalApplicationAsset = getOaApprovalApplicationAssetByApplicationId(borrowApprovalApplication.getId()); + } + 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); + OaApprovalApplicationAssetDetailVO vo = BeanUtil.copyProperties(app, OaApprovalApplicationAssetDetailVO.class); + + vo.setTitle(detail.getTitle()); + vo.setAssetTypeId(detail.getAssetTypeId()); + vo.setOperateTime(detail.getOperateTime()); + vo.setBorrowDate(Objects.nonNull(borrowApprovalApplicationAsset) ? borrowApprovalApplicationAsset.getOperateTime() : null); + vo.setReturnStatus(detail.getReturnStatus()); + vo.setItems(assetMainVOS); + return vo; + } + @Transactional(rollbackFor = Exception.class) + @Override + public void deleteByApplicationId(Integer applicationId) { + this.lambdaUpdate().eq(OaApprovalApplicationAsset::getApprovalApplicationId, applicationId).remove(); + oaApprovalApplicationAssetItemService.lambdaUpdate().eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, applicationId).remove(); + oaApprovalApplicationsService.removeById(applicationId); + } + + @Override + public OaApprovalApplicationAsset getOaApprovalApplicationAssetByApplicationId(Integer applicationId) { + return this.lambdaQuery().eq(OaApprovalApplicationAsset::getApprovalApplicationId, applicationId).one(); + } } -- Gitblit v1.7.1