mitao
昨天 4ad572c4e51e44e3134def3c70879b3a698ab1d8
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationAssetServiceImpl.java
@@ -133,7 +133,7 @@
    private OaApprovalApplicationAsset buildOaApprovalApplicationAsset(OaApprovalApplicationAssetReceiveDTO dto, Integer applicationId) {
        OaApprovalApplicationAsset asset = BeanUtil.copyProperties(dto, OaApprovalApplicationAsset.class);
        asset.setApprovalApplicationId(applicationId);
        asset.setType(AssetOperateTypeEnum.RECEIVE.getCode());
        asset.setType(dto.getType());
        return asset;
    }
@@ -166,7 +166,7 @@
        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("记录不存在");
        }
@@ -198,7 +198,7 @@
        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("记录不存在");
        }
@@ -227,6 +227,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;
    }
@@ -265,6 +267,7 @@
        OaApprovalApplications applications = BeanUtil.copyProperties(dto, OaApprovalApplications.class);
        applications.setApplicationCode(generateApplicationCode("GH"));
        applications.setApprovalId(ApprovalTypeEnum.RETURN.getCode());
        applications.setApplicationDate(LocalDate.now());
        // 2. 获取流程首节点,设置当前节点,并保存
        OaApprovalFlowNode firstFlowNode = getFirstFlowNode(ApprovalTypeEnum.RETURN.getCode());
@@ -277,8 +280,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,18 +310,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();
    }
}