ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetWarehouseController.java
@@ -7,12 +7,15 @@ import com.ruoyi.system.query.AssetWarehousePageQuery; import com.ruoyi.system.service.AssetWarehouseService; import com.ruoyi.system.vo.asset.AssetWarehouseVO; import java.util.List; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; @@ -66,5 +69,12 @@ return R.ok(); } @ApiOperation("获取仓库列表(不分页)") @GetMapping("/list") public R<List<AssetWarehouseVO>> getList() { List<AssetWarehouseVO> list = assetWarehouseService.getAllList(); return R.ok(list); } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationAssetController.java
@@ -6,9 +6,11 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.constants.AssetDeptConstant; import com.ruoyi.system.dto.asset.OaApprovalApplicationAssetReceiveDTO; import com.ruoyi.system.dto.asset.OaApprovalApplicationAssetReturnDTO; import com.ruoyi.system.query.OaApprovalApplicationAssetPageQuery; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.OaApprovalApplicationAssetService; import com.ruoyi.system.vo.asset.AssetMainVO; import com.ruoyi.system.vo.asset.OaApprovalApplicationAssetDetailVO; @@ -42,12 +44,12 @@ public class OaApprovalApplicationAssetController { private final OaApprovalApplicationAssetService oaApprovalApplicationAssetService; private final ISysUserService sysUserService; @ApiOperation("提交资产领用申请") @PostMapping("/submit-receive") @Log(title = "资产领用申请-提交", businessType = BusinessType.INSERT) public R<Void> submitReceive(@Valid @RequestBody OaApprovalApplicationAssetReceiveDTO dto) { //TODO 提交时需要校验资产状态,是否已经被领用借用处置 oaApprovalApplicationAssetService.submitReceiveBorrow(dto); return R.ok(); } @@ -55,14 +57,26 @@ @ApiOperation("获取资产领用申请分页列表") @PostMapping("/page-list") public R<IPage<OaApprovalApplicationAssetPageVO>> getReceivePageList(@RequestBody OaApprovalApplicationAssetPageQuery pageQuery) { // 数据权限:非管理员仅能查看本部门 // 数据权限:超级管理员/资产管理部查看所有数据,其他部门查看当前及下级部门的数据 Long userId = SecurityUtils.getUserId(); boolean isAdmin = SecurityUtils.isAdmin(userId); if (!isAdmin) { try { pageQuery.setDeptId(Integer.valueOf(SecurityUtils.getDeptId())); // 获取当前用户的部门名称 String deptName = sysUserService.selectUserById(userId).getDept().getDeptName(); // 非超级管理员且非资产管理部,设置部门权限 if (!AssetDeptConstant.ASSET_DEPARTMENT_NAME.equals(deptName)) { pageQuery.setDeptId(Integer.valueOf(SecurityUtils.getLoginUser().getDeptId())); } } catch (Exception e) { // ignore parse, leave null if cannot parse // 如果获取部门信息失败,默认设置部门权限 try { pageQuery.setDeptId(Integer.valueOf(SecurityUtils.getLoginUser().getDeptId())); } catch (Exception ex) { // ignore parse, leave null if cannot parse } } } IPage<OaApprovalApplicationAssetPageVO> page = oaApprovalApplicationAssetService.getReceivePageList(pageQuery); @@ -133,14 +147,26 @@ @ApiOperation("获取资产归还申请分页列表") @PostMapping("/page-return-list") public R<IPage<OaApprovalApplicationAssetPageVO>> getReturnPageList(@RequestBody OaApprovalApplicationAssetPageQuery pageQuery) { // 数据权限:非管理员仅能查看本部门 // 数据权限:超级管理员/资产管理部查看所有数据,其他部门查看当前及下级部门的数据 Long userId = SecurityUtils.getUserId(); boolean isAdmin = SecurityUtils.isAdmin(userId); if (!isAdmin) { try { pageQuery.setDeptId(Integer.valueOf(SecurityUtils.getDeptId())); // 获取当前用户的部门名称 String deptName = sysUserService.selectUserById(userId).getDept().getDeptName(); // 非超级管理员且非资产管理部,设置部门权限 if (!AssetDeptConstant.ASSET_DEPARTMENT_NAME.equals(deptName)) { pageQuery.setDeptId(Integer.valueOf(SecurityUtils.getLoginUser().getDeptId())); } } catch (Exception e) { // ignore parse, leave null if cannot parse // 如果获取部门信息失败,默认设置部门权限 try { pageQuery.setDeptId(Integer.valueOf(SecurityUtils.getLoginUser().getDeptId())); } catch (Exception ex) { // ignore parse, leave null if cannot parse } } } IPage<OaApprovalApplicationAssetPageVO> page = oaApprovalApplicationAssetService.getReturnPageList(pageQuery); @@ -150,14 +176,26 @@ @ApiOperation("获取资产归还提醒分页列表") @PostMapping("/page-return-notify-list") public R<IPage<OaApprovalApplicationAssetPageVO>> getReturnNotifyPageList(@RequestBody OaApprovalApplicationAssetPageQuery pageQuery) { // 数据权限:非管理员仅能查看本部门 // 数据权限:超级管理员/资产管理部查看所有数据,其他部门查看当前及下级部门的数据 Long userId = SecurityUtils.getUserId(); boolean isAdmin = SecurityUtils.isAdmin(userId); if (!isAdmin) { try { pageQuery.setDeptId(Integer.valueOf(SecurityUtils.getDeptId())); // 获取当前用户的部门名称 String deptName = sysUserService.selectUserById(userId).getDept().getDeptName(); // 非超级管理员且非资产管理部,设置部门权限 if (!AssetDeptConstant.ASSET_DEPARTMENT_NAME.equals(deptName)) { pageQuery.setDeptId(Integer.valueOf(SecurityUtils.getLoginUser().getDeptId())); } } catch (Exception e) { // ignore parse, leave null if cannot parse // 如果获取部门信息失败,默认设置部门权限 try { pageQuery.setDeptId(Integer.valueOf(SecurityUtils.getLoginUser().getDeptId())); } catch (Exception ex) { // ignore parse, leave null if cannot parse } } } IPage<OaApprovalApplicationAssetPageVO> page = oaApprovalApplicationAssetService.getReturnNotifyPageList(pageQuery); ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationChangeController.java
@@ -5,6 +5,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.constants.AssetDeptConstant; import com.ruoyi.system.dto.asset.OaApprovalApplicationChangeDTO; import com.ruoyi.system.query.OaApprovalApplicationChangePageQuery; import com.ruoyi.system.service.ISysUserService; @@ -66,7 +67,7 @@ String deptName = sysUserService.selectUserById(userId).getDept().getDeptName(); // 非超级管理员且非资产管理部,设置部门权限 if (!"资产管理部".equals(deptName)) { if (!AssetDeptConstant.ASSET_DEPARTMENT_NAME.equals(deptName)) { pageQuery.setDeptId(Integer.valueOf(SecurityUtils.getLoginUser().getDeptId())); } } catch (Exception e) { ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationDisposeController.java
@@ -5,10 +5,11 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.constants.AssetDeptConstant; import com.ruoyi.system.dto.asset.OaApprovalApplicationDisposeDTO; import com.ruoyi.system.query.OaApprovalApplicationDisposePageQuery; import com.ruoyi.system.service.OaApprovalApplicationDisposeService; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.OaApprovalApplicationDisposeService; import com.ruoyi.system.vo.asset.OaApprovalApplicationDisposeDetailVO; import com.ruoyi.system.vo.asset.OaApprovalApplicationDisposePageVO; import io.swagger.annotations.Api; @@ -66,7 +67,7 @@ String deptName = sysUserService.selectUserById(userId).getDept().getDeptName(); // 非超级管理员且非资产管理部,设置部门权限 if (!"资产管理部".equals(deptName)) { if (!AssetDeptConstant.ASSET_DEPARTMENT_NAME.equals(deptName)) { pageQuery.setDeptId(Integer.valueOf(SecurityUtils.getLoginUser().getDeptId())); } } catch (Exception e) { ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationStorageController.java
@@ -9,12 +9,14 @@ import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.constants.AssetDeptConstant; import com.ruoyi.system.dto.asset.OaApprovalApplicationStorageGeneralDTO; import com.ruoyi.system.dto.asset.OaApprovalApplicationStoragePropertyDTO; import com.ruoyi.system.dto.asset.OaApprovalApplicationStorageVehicleDTO; import com.ruoyi.system.model.AssetWarehouse; import com.ruoyi.system.query.OaApprovalApplicationStoragePageQuery; import com.ruoyi.system.service.AssetWarehouseService; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.OaApprovalApplicationStorageService; import com.ruoyi.system.service.TDeptService; import com.ruoyi.system.vo.asset.OaApprovalApplicationStorageGeneralDetailVO; @@ -56,6 +58,7 @@ private final OaApprovalApplicationStorageService oaApprovalApplicationStorageService; private final TDeptService deptService; private final AssetWarehouseService assetWarehouseService; private final ISysUserService sysUserService; @ApiOperation("提交通用资产入库申请") @PostMapping("/submit-general") @@ -126,6 +129,28 @@ @PostMapping("/page-list") public R<IPage<OaApprovalApplicationStoragePageVO>> getPageList(@RequestBody OaApprovalApplicationStoragePageQuery pageQuery) { IPage<OaApprovalApplicationStoragePageVO> page = null; // 数据权限:超级管理员/资产管理部查看所有数据,其他部门查看当前及下级部门的数据 Long userId = SecurityUtils.getUserId(); boolean isAdmin = SecurityUtils.isAdmin(userId); if (!isAdmin) { try { // 获取当前用户的部门名称 String deptName = sysUserService.selectUserById(userId).getDept().getDeptName(); // 非超级管理员且非资产管理部,设置部门权限 if (!AssetDeptConstant.ASSET_DEPARTMENT_NAME.equals(deptName)) { pageQuery.setDeptId(Integer.valueOf(SecurityUtils.getLoginUser().getDeptId())); } } catch (Exception e) { // 如果获取部门信息失败,默认设置部门权限 try { pageQuery.setDeptId(Integer.valueOf(SecurityUtils.getLoginUser().getDeptId())); } catch (Exception ex) { // ignore parse, leave null if cannot parse } } } try { page = oaApprovalApplicationStorageService.getPageList(pageQuery); } catch (Exception e) { ruoyi-system/src/main/java/com/ruoyi/system/constants/AssetDeptConstant.java
New file @@ -0,0 +1,12 @@ package com.ruoyi.system.constants; /** * @author mitao * @date 2025/9/30 */ public interface AssetDeptConstant { /** * 资产管理部名称,用于写死资产管理模块数据权限 */ String ASSET_DEPARTMENT_NAME = "资产管理部"; } ruoyi-system/src/main/java/com/ruoyi/system/query/OaApprovalApplicationStoragePageQuery.java
@@ -17,5 +17,8 @@ @ApiModelProperty("关键词(标题/入库单号/所属部门)") private String keyword; @ApiModelProperty(value = "部门ID") private Integer deptId; } ruoyi-system/src/main/java/com/ruoyi/system/service/AssetWarehouseService.java
@@ -7,6 +7,8 @@ import com.ruoyi.system.query.AssetWarehousePageQuery; import com.ruoyi.system.vo.asset.AssetWarehouseVO; import java.util.List; /** * <p> * 仓库信息表 服务类 @@ -39,4 +41,10 @@ * @param id */ void delete(Integer id); /** * 获取所有仓库列表 * @return */ List<AssetWarehouseVO> getAllList(); } ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationAssetItemService.java
@@ -6,6 +6,8 @@ import com.ruoyi.system.query.ApprovalDetailQuery; import com.ruoyi.system.vo.GrabListVO; import java.util.List; /** * <p> * 资产领用/借用/归还/处置审批关系表 服务类 @@ -17,4 +19,10 @@ public interface OaApprovalApplicationAssetItemService extends IService<OaApprovalApplicationAssetItem> { PageInfo<GrabListVO> pageList(ApprovalDetailQuery query); /** * 校验资产状态,检查是否存在待审批的记录 * @param assetMainIds 资产ID列表 */ void validateAssetStatus(List<Integer> assetMainIds); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetTypeServiceImpl.java
@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.entity.TDept; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.dto.asset.AssetTypeDTO; @@ -21,14 +20,12 @@ import com.ruoyi.system.service.AssetInventoryRecordService; import com.ruoyi.system.service.AssetMainService; import com.ruoyi.system.service.AssetTypeService; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.vo.AssetIdleListVO; import com.ruoyi.system.vo.AssetInventoryVO; import com.ruoyi.system.vo.AssetStatisticsDetailVO; import com.ruoyi.system.vo.AssetStatisticsVO; import com.ruoyi.system.vo.asset.AssetTypeTreeVO; import com.ruoyi.system.vo.system.NotificationVO; import io.swagger.annotations.ApiModelProperty; import io.swagger.models.auth.In; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -37,7 +34,12 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; /** @@ -55,6 +57,7 @@ private final AssetMainService assetMainService; private final AssetTypeService assetTypeService; private final AssetInventoryRecordService assetInventoryRecordService; private final ISysUserService sysUserService; @Override public List<AssetTypeTreeVO> getAssetTypeTree() { ruoyi-system/src/main/java/com/ruoyi/system/service/impl/AssetWarehouseServiceImpl.java
@@ -120,4 +120,11 @@ } this.removeById(id); } @Override public List<AssetWarehouseVO> getAllList() { LambdaQueryWrapper<AssetWarehouse> queryWrapper = new LambdaQueryWrapper<>(); List<AssetWarehouse> list = this.list(queryWrapper); return BeanUtil.copyToList(list, AssetWarehouseVO.class); } } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationAssetItemServiceImpl.java
@@ -1,16 +1,26 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.system.emums.ApprovalStatusEnum; import com.ruoyi.system.mapper.OaApprovalApplicationAssetItemMapper; import com.ruoyi.system.model.AssetMain; import com.ruoyi.system.model.OaApprovalApplicationAssetItem; import com.ruoyi.system.model.OaApprovalApplications; import com.ruoyi.system.query.ApprovalDetailQuery; import com.ruoyi.system.service.AssetMainService; import com.ruoyi.system.service.OaApprovalApplicationAssetItemService; import com.ruoyi.system.service.OaApprovalApplicationsService; import com.ruoyi.system.vo.GrabListVO; import com.ruoyi.system.vo.PurchaseListVO; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.util.List; import java.util.Set; import java.util.stream.Collectors; /** * <p> @@ -21,8 +31,10 @@ * @since 2025-09-15 */ @Service @RequiredArgsConstructor(onConstructor_ = {@Lazy}) public class OaApprovalApplicationAssetItemServiceImpl extends ServiceImpl<OaApprovalApplicationAssetItemMapper, OaApprovalApplicationAssetItem> implements OaApprovalApplicationAssetItemService { private final AssetMainService assetMainService; private final OaApprovalApplicationsService oaApprovalApplicationsService; @Override public PageInfo<GrabListVO> pageList(ApprovalDetailQuery query) { PageInfo<GrabListVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); @@ -30,4 +42,56 @@ pageInfo.setRecords(list); return pageInfo; } @Override public void validateAssetStatus(List<Integer> assetMainIds) { if (CollUtil.isEmpty(assetMainIds)) { return; } // 1. 根据资产ID列表查询资产关联表 List<OaApprovalApplicationAssetItem> assetItems = this.lambdaQuery() .in(OaApprovalApplicationAssetItem::getAssetMainId, assetMainIds) .list(); if (CollUtil.isEmpty(assetItems)) { return; } // 2. 收集所有资产关联表中的审批申请ID List<Integer> approvalApplicationIds = assetItems.stream() .map(OaApprovalApplicationAssetItem::getApprovalApplicationId) .distinct() .collect(Collectors.toList()); // 3. 查询待审核状态的审批记录 List<OaApprovalApplications> pendingApplications = oaApprovalApplicationsService.lambdaQuery() .in(OaApprovalApplications::getId, approvalApplicationIds) .eq(OaApprovalApplications::getApprovalStatus, ApprovalStatusEnum.PENDING.getCode()) .list(); if (CollUtil.isNotEmpty(pendingApplications)) { // 4. 如果存在待审批记录,获取涉及的资产ID Set<Integer> pendingAssetIds = this.lambdaQuery() .in(OaApprovalApplicationAssetItem::getApprovalApplicationId, pendingApplications.stream() .map(OaApprovalApplications::getId) .collect(Collectors.toList())) .list() .stream() .map(OaApprovalApplicationAssetItem::getAssetMainId) .distinct() .collect(Collectors.toSet()); //取交集 pendingAssetIds.retainAll(assetMainIds); // 获取资产信息用于错误提示 List<AssetMain> pendingAssets = assetMainService.listByIds(pendingAssetIds); String assetNames = pendingAssets.stream() .map(AssetMain::getAssetName) .collect(Collectors.joining("、")); throw new ServiceException("操作失败," + assetNames + "资产已存在待审批的记录"); } } } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationAssetServiceImpl.java
@@ -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); @@ -95,11 +93,6 @@ }) .collect(Collectors.toList()); oaApprovalApplicationAssetItemService.saveBatch(items); } //TODO 是否需要限制只有未提交审批的资产才能提交 private void validateAssetStatus(List<Integer> assetMainIds) { } private OaApprovalFlowNode getFirstFlowNode(Integer approvalId) { @@ -260,9 +253,8 @@ } @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")); ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationChangeServiceImpl.java
@@ -1,11 +1,11 @@ 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.common.utils.SecurityUtils; import com.ruoyi.system.dto.asset.OaApprovalApplicationChangeDTO; import com.ruoyi.system.emums.ApprovalStatusEnum; import com.ruoyi.system.emums.ApprovalTypeEnum; @@ -57,10 +57,8 @@ @Override @Transactional(rollbackFor = Exception.class) public void submitChange(OaApprovalApplicationChangeDTO dto) { if (CollUtil.isEmpty(dto.getAssetMainIds())) { throw new ServiceException("资产ID列表不能为空"); } //校验资产状态 oaApprovalApplicationAssetItemService.validateAssetStatus(dto.getAssetMainIds()); // 1. 构建并保存审批主表 OaApprovalApplications applications = buildOaApprovalApplications(dto); @@ -94,6 +92,10 @@ applications.setApprovalId(ApprovalTypeEnum.ASSET_CHANGE.getCode()); applications.setApplicationDate(LocalDate.now()); applications.setApprovalStatus(ApprovalStatusEnum.PENDING.getCode()); applications.setApplicantUserId(SecurityUtils.getUserId().intValue()); applications.setApplicantName(SecurityUtils.getLoginUser().getUser().getNickName()); applications.setDeptId(Integer.parseInt(SecurityUtils.getLoginUser().getUser().getDeptId())); applications.setDeptName(SecurityUtils.getLoginUser().getUser().getDeptName()); return applications; } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationDisposeServiceImpl.java
@@ -1,7 +1,6 @@ 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; @@ -62,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); ruoyi-system/src/main/resources/mapper/system/AssetMainMapper.xml
@@ -69,6 +69,8 @@ LEFT JOIN asset_type at ON at.id = am.asset_type_id LEFT JOIN t_dept od ON od.id = am.ownership_dept_id LEFT JOIN t_dept ud ON ud.id = am.use_dept_id LEFT JOIN oa_approval_application_asset_item oaaai ON oaaai.asset_main_id = am.id LEFT JOIN oa_approval_applications oaa ON oaa.id = oaaai.approval_application_id <where> AND IFNULL(am.disabled, 0) = 0 AND IFNULL(aaa.disabled, 0) = 0 @@ -76,6 +78,7 @@ AND IFNULL(am.is_disposed, 0) = 0 AND IFNULL(am.is_in_use, 0) = 0 AND IFNULL(am.is_borrowed, 0) = 0 AND ( oaa.id IS NULL OR oaa.approval_status != 0 ) <if test="query != null and query.assetTypeId != null"> AND am.asset_type_id = #{query.assetTypeId} </if> ruoyi-system/src/main/resources/mapper/system/OaApprovalApplicationAssetMapper.xml
@@ -54,7 +54,7 @@ ) </if> <if test="query != null and query.deptId != null"> AND aaa.dept_id = #{query.deptId} AND (td.id = #{query.deptId} OR FIND_IN_SET(#{query.deptId}, td.parent_id)) </if> </where> ORDER BY oaa.operate_time DESC, oaa.id DESC ruoyi-system/src/main/resources/mapper/system/OaApprovalApplicationChangeMapper.xml
@@ -25,7 +25,7 @@ SELECT app.id, app.application_code AS applicationCode, change.title, oaac.title, d.dept_name AS deptName, u.nick_name AS applicantName, app.application_reason AS applicationReason, @@ -39,13 +39,13 @@ ELSE '未知' END AS approvalStatusName FROM oa_approval_applications app INNER JOIN oa_approval_application_change change ON app.id = change.approval_application_id INNER JOIN oa_approval_application_change oaac ON app.id = oaac.approval_application_id LEFT JOIN sys_user u ON app.applicant_user_id = u.user_id LEFT JOIN t_dept d ON app.dept_id = d.id WHERE app.disabled = 0 AND app.approval_id = 4 <!-- 资产变更审批类型 --> AND app.approval_id = '${@com.ruoyi.system.emums.ApprovalTypeEnum@ASSET_CHANGE.getCode()}' <if test="query.keyword != null and query.keyword != ''"> AND (change.title LIKE CONCAT('%', #{query.keyword}, '%') AND (oaac.title LIKE CONCAT('%', #{query.keyword}, '%') OR app.application_code LIKE CONCAT('%', #{query.keyword}, '%')) </if> <if test="query.deptId != null"> ruoyi-system/src/main/resources/mapper/system/OaApprovalApplicationStorageMapper.xml
@@ -20,30 +20,34 @@ <!-- 分页查询:资产入库申请列表(关联审批记录与资产类型) --> <select id="selectApplicationStoragePage" resultType="com.ruoyi.system.vo.asset.OaApprovalApplicationStoragePageVO"> SELECT aaa.id AS id, oas.asset_type_id AS assetTypeId, aaa.dept_name AS deptName, aaa.application_code AS applicationCode, oas.title AS title, CASE WHEN at2.level = 2 THEN at1.type_name ELSE at2.type_name END AS firstAssetTypeName, CASE WHEN at2.level = 2 THEN at2.type_name ELSE NULL END AS secondAssetTypeName, aaa.applicant_name AS applicantName, oas.storage_time AS storageTime, oas.storage_type AS storageType, aaa.approval_status AS approvalStatus aaa.id, oas.asset_type_id, aaa.dept_name, aaa.application_code, oas.title, CASE WHEN at2.level = 2 THEN at1.type_name ELSE at2.type_name END AS firstAssetTypeName, CASE WHEN at2.level = 2 THEN at2.type_name ELSE NULL END AS secondAssetTypeName, aaa.applicant_name, oas.storage_time, oas.storage_type, aaa.approval_status FROM oa_approval_application_storage oas INNER JOIN oa_approval_applications aaa ON aaa.id = oas.approval_application_id LEFT JOIN asset_type at2 ON at2.id = oas.asset_type_id LEFT JOIN asset_type at1 ON at1.id = (CASE WHEN at2.level = 2 THEN at2.parent_id ELSE at2.id END) INNER JOIN oa_approval_applications aaa ON aaa.id = oas.approval_application_id LEFT JOIN asset_type at2 ON at2.id = oas.asset_type_id LEFT JOIN asset_type at1 ON at1.id = (CASE WHEN at2.level = 2 THEN at2.parent_id ELSE at2.id END) LEFT JOIN t_dept d ON aaa.dept_id = d.id <where> AND aaa.disabled = 0 <if test="query != null and query.keyword != null and query.keyword != ''"> AND ( oas.title LIKE CONCAT('%', #{query.keyword}, '%') OR aaa.application_code LIKE CONCAT('%', #{query.keyword}, '%') OR aaa.dept_name LIKE CONCAT('%', #{query.keyword}, '%') OR aaa.application_code LIKE CONCAT('%', #{query.keyword}, '%') OR aaa.dept_name LIKE CONCAT('%', #{query.keyword}, '%') ) </if> <if test="query.deptId != null"> AND (d.id = #{query.deptId} OR FIND_IN_SET(#{query.deptId}, d.parent_id)) </if> </where> ORDER BY oas.storage_time DESC, oas.id DESC </select>