From d9a63819279a0b17070d4af08d24f567ba8904e4 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期日, 28 九月 2025 22:40:53 +0800 Subject: [PATCH] 资产处置 --- ruoyi-system/src/main/java/com/ruoyi/system/query/OaApprovalApplicationDisposePageQuery.java | 24 +++ ruoyi-system/src/main/java/com/ruoyi/system/dto/dispose/OaApprovalApplicationDisposeDTO.java | 69 ++++++++ ruoyi-system/src/main/java/com/ruoyi/system/mapper/OaApprovalApplicationDisposeMapper.java | 16 + ruoyi-system/src/main/resources/mapper/system/OaApprovalApplicationDisposeMapper.xml | 47 +++++ ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationAssetService.java | 7 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationAssetController.java | 7 ruoyi-system/src/main/java/com/ruoyi/system/vo/dispose/OaApprovalApplicationDisposePageVO.java | 57 +++++++ ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationDisposeController.java | 75 +++++++++ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationAssetServiceImpl.java | 26 +++ ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationDisposeService.java | 24 ++ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationDisposeServiceImpl.java | 118 ++++++++++++++ 11 files changed, 464 insertions(+), 6 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationAssetController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationAssetController.java index 4c7b34a..7f04abe 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationAssetController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationAssetController.java @@ -163,6 +163,13 @@ IPage<OaApprovalApplicationAssetPageVO> page = oaApprovalApplicationAssetService.getReturnNotifyPageList(pageQuery); return R.ok(page); } + + @ApiOperation("获取资产归还详情") + @GetMapping("/detail/return/{id}") + public R<OaApprovalApplicationAssetDetailVO> getReturnDetail(@ApiParam(name = "id", value = "审批单ID", required = true) @PathVariable Integer id) { + OaApprovalApplicationAssetDetailVO detail = oaApprovalApplicationAssetService.getReturnDetail(id); + return R.ok(detail); + } @ApiOperation("删除/领用/借用/归还申请") @DeleteMapping("/{id}") public R<?> delete(@ApiParam(name = "id",value = "审批记录ID",required = true) @PathVariable Integer id){ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationDisposeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationDisposeController.java index ae7dca6..03bb7f9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationDisposeController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationDisposeController.java @@ -1,20 +1,91 @@ package com.ruoyi.web.controller.api; - +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.system.dto.dispose.OaApprovalApplicationDisposeDTO; +import com.ruoyi.system.query.OaApprovalApplicationDisposePageQuery; +import com.ruoyi.system.service.OaApprovalApplicationDisposeService; +import com.ruoyi.system.service.ISysUserService; +import com.ruoyi.system.vo.dispose.OaApprovalApplicationDisposePageVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Lazy; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.validation.Valid; + /** * <p> - * 资产领用单明细表 前端控制器 + * 资产处置单明细表 前端控制器 * </p> * * @author WuGuanFengYue * @since 2025-09-15 */ +@Validated @RestController +@Api(tags = {"OA审批-资产处置相关接口"}) +@RequiredArgsConstructor(onConstructor_ = {@Lazy}) @RequestMapping("/oa-approval-application-dispose") public class OaApprovalApplicationDisposeController { + + private final OaApprovalApplicationDisposeService oaApprovalApplicationDisposeService; + private final ISysUserService sysUserService; + @ApiOperation("提交资产处置申请") + @PostMapping("/submit-dispose") + @Log(title = "资产处置申请-提交", businessType = BusinessType.INSERT) + public R<Void> submitDispose(@Valid @RequestBody OaApprovalApplicationDisposeDTO dto) { + oaApprovalApplicationDisposeService.submitDispose(dto); + return R.ok(); + } + + @ApiOperation("获取资产处置申请分页列表") + @PostMapping("/page-list") + public R<IPage<OaApprovalApplicationDisposePageVO>> getDisposePageList(@RequestBody OaApprovalApplicationDisposePageQuery pageQuery) { + // 数据权限:超级管理员/资产管理部查看所有数据,其他部门查看当前及下级部门的数据 + Long userId = SecurityUtils.getUserId(); + boolean isAdmin = SecurityUtils.isAdmin(userId); + + if (!isAdmin) { + try { + // 获取当前用户的部门名称 + String deptName = sysUserService.selectUserById(userId).getDept().getDeptName(); + + // 非超级管理员且非资产管理部,设置部门权限 + if (!"资产管理部".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 + } + } + } + + IPage<OaApprovalApplicationDisposePageVO> page = oaApprovalApplicationDisposeService.getDisposePageList(pageQuery); + return R.ok(page); + } + + @ApiOperation("删除处置申请") + @DeleteMapping("/{id}") + public R<?> deleteByApplicationId(@ApiParam(name = "id", value = "申请单ID", required = true) @PathVariable Integer id) { + oaApprovalApplicationDisposeService.deleteByApplicationId(id); + return R.ok(); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/dispose/OaApprovalApplicationDisposeDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/dispose/OaApprovalApplicationDisposeDTO.java new file mode 100644 index 0000000..9b75f6b --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/dispose/OaApprovalApplicationDisposeDTO.java @@ -0,0 +1,69 @@ +package com.ruoyi.system.dto.dispose; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +/** + * 资产处置申请 DTO + */ +@Data +@ApiModel("资产处置申请DTO") +public class OaApprovalApplicationDisposeDTO implements Serializable { + private static final long serialVersionUID = 2025092801L; + + @ApiModelProperty("事项标题") + @NotNull(message = "事项标题不能为空") + private String title; + + @ApiModelProperty("处置资产类型ID") + @NotNull(message = "处置资产类型不能为空") + private Integer assetTypeId; + + @ApiModelProperty("处置日期") + @NotNull(message = "处置日期不能为空") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate disposeTime; + + @ApiModelProperty("处置方式 0-报废,1-报损,2-捐赠") + @NotNull(message = "处置方式不能为空") + private Integer disposeType; + + @ApiModelProperty("申请部门ID") + @NotNull(message = "申请部门不能为空") + private Integer deptId; + + @ApiModelProperty("申请部门名称") + @NotNull(message = "申请部门名称不能为空") + private String deptName; + + @ApiModelProperty("申请人用户ID") + @NotNull(message = "申请人不能为空") + private Integer applicantUserId; + + @ApiModelProperty("申请人名称") + @NotNull(message = "申请人名称不能为空") + private String applicantName; + + @ApiModelProperty("处置总金额(元)") + @NotNull(message = "处置总金额不能为空") + private BigDecimal disposeTotalAmount; + + @ApiModelProperty("处置备注") + private String applicationReason; + + @ApiModelProperty("附件URL,多个使用英文逗号拼接") + private String attachmentUrl; + + @ApiModelProperty("资产列表") + @NotEmpty(message = "资产列表不能为空") + private List<Integer> assetMainIds; +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/OaApprovalApplicationDisposeMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/OaApprovalApplicationDisposeMapper.java index f173c97..8211d62 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/OaApprovalApplicationDisposeMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/OaApprovalApplicationDisposeMapper.java @@ -1,11 +1,16 @@ package com.ruoyi.system.mapper; -import com.ruoyi.system.model.OaApprovalApplicationDispose; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.system.model.OaApprovalApplicationDispose; +import com.ruoyi.system.query.OaApprovalApplicationDisposePageQuery; +import com.ruoyi.system.vo.dispose.OaApprovalApplicationDisposePageVO; +import org.apache.ibatis.annotations.Param; /** * <p> - * 资产领用单明细表 Mapper 接口 + * 资产处置单明细表 Mapper 接口 * </p> * * @author WuGuanFengYue @@ -13,4 +18,11 @@ */ public interface OaApprovalApplicationDisposeMapper extends BaseMapper<OaApprovalApplicationDispose> { + /** + * 分页查询资产处置申请列表 + * @param page 分页参数 + * @param pageQuery 查询条件 + * @return 分页结果 + */ + IPage<OaApprovalApplicationDisposePageVO> getDisposePageList(Page<OaApprovalApplicationDisposePageVO> page, @Param("query") OaApprovalApplicationDisposePageQuery pageQuery); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/OaApprovalApplicationDisposePageQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/OaApprovalApplicationDisposePageQuery.java new file mode 100644 index 0000000..7214efa --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/OaApprovalApplicationDisposePageQuery.java @@ -0,0 +1,24 @@ +package com.ruoyi.system.query; + +import com.ruoyi.common.core.domain.BasePage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 资产处置申请分页查询参数 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "资产处置申请分页查询参数") +public class OaApprovalApplicationDisposePageQuery extends BasePage { + + private static final long serialVersionUID = 5275799518107306564L; + + @ApiModelProperty(value = "标题/单号") + private String keyword; + + @ApiModelProperty(value = "部门ID") + private Integer deptId; +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationAssetService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationAssetService.java index f88ad32..f06d353 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationAssetService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationAssetService.java @@ -87,6 +87,13 @@ IPage<OaApprovalApplicationAssetPageVO> getReturnNotifyPageList(OaApprovalApplicationAssetPageQuery pageQuery); /** + * 获取归还单详情 + * @param id + * @return + */ + OaApprovalApplicationAssetDetailVO getReturnDetail(Integer id); + + /** * 删除审批单相关的资产领用/借用/归还记录 * @param applicationId */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationDisposeService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationDisposeService.java index a69aae6..2824162 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationDisposeService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationDisposeService.java @@ -1,11 +1,15 @@ package com.ruoyi.system.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.system.dto.dispose.OaApprovalApplicationDisposeDTO; import com.ruoyi.system.model.OaApprovalApplicationDispose; +import com.ruoyi.system.query.OaApprovalApplicationDisposePageQuery; +import com.ruoyi.system.vo.dispose.OaApprovalApplicationDisposePageVO; /** * <p> - * 资产领用单明细表 服务类 + * 资产处置单明细表 服务类 * </p> * * @author WuGuanFengYue @@ -13,4 +17,22 @@ */ public interface OaApprovalApplicationDisposeService extends IService<OaApprovalApplicationDispose> { + /** + * 获取资产处置申请分页列表 + * @param pageQuery 查询参数 + * @return 分页结果 + */ + IPage<OaApprovalApplicationDisposePageVO> getDisposePageList(OaApprovalApplicationDisposePageQuery pageQuery); + + /** + * 提交处置申请 + * @param dto 处置申请数据 + */ + void submitDispose(OaApprovalApplicationDisposeDTO dto); + + /** + * 删除审批单 + * @param applicationId + */ + void deleteByApplicationId(Integer applicationId); } 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 fdb9954..36986e6 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 @@ -316,10 +316,36 @@ }); return pageByType; } + + @Override + public OaApprovalApplicationAssetDetailVO getReturnDetail(Integer id) { + OaApprovalApplications app = oaApprovalApplicationsService.getById(id); + if (app == null) { + throw new ServiceException("审批主记录不存在"); + } + OaApprovalApplicationAsset detail = this.lambdaQuery().eq(OaApprovalApplicationAsset::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); + OaApprovalApplicationAssetDetailVO vo = BeanUtil.copyProperties(app, OaApprovalApplicationAssetDetailVO.class); + vo.setTitle(detail.getTitle()); + vo.setAssetTypeId(detail.getAssetTypeId()); + vo.setOperateTime(detail.getOperateTime()); + 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); } } 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 f1730ce..edd5be5 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,20 +1,136 @@ 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.emums.ApprovalStatusEnum; +import com.ruoyi.system.emums.ApprovalTypeEnum; import com.ruoyi.system.mapper.OaApprovalApplicationDisposeMapper; +import com.ruoyi.system.model.OaApprovalApplicationAssetItem; import com.ruoyi.system.model.OaApprovalApplicationDispose; +import com.ruoyi.system.model.OaApprovalApplications; +import com.ruoyi.system.model.OaApprovalFlowNode; +import com.ruoyi.system.query.OaApprovalApplicationDisposePageQuery; +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 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.List; +import java.util.stream.Collectors; /** * <p> - * 资产领用单明细表 服务实现类 + * 资产处置单明细表 服务实现类 * </p> * * @author WuGuanFengYue * @since 2025-09-15 */ @Service +@RequiredArgsConstructor public class OaApprovalApplicationDisposeServiceImpl extends ServiceImpl<OaApprovalApplicationDisposeMapper, OaApprovalApplicationDispose> implements OaApprovalApplicationDisposeService { + private final OaApprovalApplicationsService oaApprovalApplicationsService; + private final OaApprovalFlowNodeService oaApprovalFlowNodeService; + private final OaApprovalTodoService oaApprovalTodoService; + private final OaApprovalApplicationAssetItemService oaApprovalApplicationAssetItemService; + + @Override + public IPage<OaApprovalApplicationDisposePageVO> getDisposePageList(OaApprovalApplicationDisposePageQuery pageQuery) { + Page<OaApprovalApplicationDisposePageVO> page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()); + return this.baseMapper.getDisposePageList(page, pageQuery); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void submitDispose(OaApprovalApplicationDisposeDTO dto) { + if (CollUtil.isEmpty(dto.getAssetMainIds())) { + throw new ServiceException("资产ID列表不能为空"); + } + + // 1. 构建并保存审批主表 + OaApprovalApplications applications = buildOaApprovalApplications(dto); + + // 2. 获取流程首节点,设置当前节点,并保存 + OaApprovalFlowNode firstFlowNode = getFirstFlowNode(ApprovalTypeEnum.ASSET_DISPOSE.getCode()); + applications.setCurrentFlowNodeId(firstFlowNode.getId()); + oaApprovalApplicationsService.save(applications); + + // 3. 创建待办 + oaApprovalTodoService.createApprovalTodos(applications.getId(), applications.getApplicationCode(), firstFlowNode, dto.getDeptId()); + + // 4. 保存处置明细 + OaApprovalApplicationDispose detail = buildOaApprovalApplicationDispose(dto, applications.getId()); + this.save(detail); + + // 5. 保存关联的资产项 + List<OaApprovalApplicationAssetItem> items = dto.getAssetMainIds().stream() + .map(i -> { + OaApprovalApplicationAssetItem item = new OaApprovalApplicationAssetItem(); + item.setApprovalApplicationId(applications.getId()); + item.setAssetMainId(i); + return item; + }) + .collect(Collectors.toList()); + oaApprovalApplicationAssetItemService.saveBatch(items); + } + + private OaApprovalApplications buildOaApprovalApplications(OaApprovalApplicationDisposeDTO dto) { + OaApprovalApplications applications = BeanUtil.copyProperties(dto, OaApprovalApplications.class); + applications.setApplicationCode(generateApplicationCode("CZ")); + applications.setApprovalId(ApprovalTypeEnum.ASSET_DISPOSE.getCode()); + applications.setApplicationDate(LocalDate.now()); + applications.setApprovalStatus(ApprovalStatusEnum.PENDING.getCode()); + return applications; + } + + private OaApprovalApplicationDispose buildOaApprovalApplicationDispose(OaApprovalApplicationDisposeDTO dto, Integer applicationId) { + OaApprovalApplicationDispose dispose = BeanUtil.copyProperties(dto, OaApprovalApplicationDispose.class); + dispose.setApprovalApplicationId(applicationId); + return dispose; + } + + private OaApprovalFlowNode getFirstFlowNode(Integer approvalId) { + List<OaApprovalFlowNode> flowNodes = oaApprovalFlowNodeService.lambdaQuery() + .eq(OaApprovalFlowNode::getApprovalId, approvalId) + .eq(OaApprovalFlowNode::getStatus, 1) + .orderByAsc(OaApprovalFlowNode::getSortOrder) + .list(); + if (CollectionUtils.isEmpty(flowNodes)) { + throw new ServiceException("未找到有效的审批流程配置"); + } + 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); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/dispose/OaApprovalApplicationDisposePageVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/dispose/OaApprovalApplicationDisposePageVO.java new file mode 100644 index 0000000..bea87a4 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/dispose/OaApprovalApplicationDisposePageVO.java @@ -0,0 +1,57 @@ +package com.ruoyi.system.vo.dispose; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * 资产处置申请分页列表VO + */ +@Data +@ApiModel(value = "资产处置申请分页列表VO") +public class OaApprovalApplicationDisposePageVO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "审批申请ID") + private Integer id; + + @ApiModelProperty(value = "单据号") + private String applicationCode; + + @ApiModelProperty(value = "标题") + private String title; + + @ApiModelProperty(value = "申请人") + private String applicantName; + + @ApiModelProperty(value = "处置日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private LocalDate disposeTime; + + @ApiModelProperty(value = "处置方式 0-报废,1-报损,2-捐赠") + private Integer disposeType; + + @ApiModelProperty(value = "处置方式名称") + private String disposeTypeName; + + @ApiModelProperty(value = "处置金额") + private BigDecimal disposeTotalAmount; + + @ApiModelProperty(value = "处置原因") + private String applicationReason; + + @ApiModelProperty(value = "资产明细") + private String assetTypeDetail; + + @ApiModelProperty(value = "审核状态 0-待审核,1-审核中,2-已通过,3-已拒绝") + private Integer approvalStatus; + + @ApiModelProperty(value = "审核状态名称") + private String approvalStatusName; +} \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/system/OaApprovalApplicationDisposeMapper.xml b/ruoyi-system/src/main/resources/mapper/system/OaApprovalApplicationDisposeMapper.xml index f854897..5beab85 100644 --- a/ruoyi-system/src/main/resources/mapper/system/OaApprovalApplicationDisposeMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/OaApprovalApplicationDisposeMapper.xml @@ -18,4 +18,51 @@ id, approval_application_id, title, asset_type_id, dispose_time, dispose_type, dispose_total_amount </sql> + <!-- 分页查询资产处置申请列表 --> + <select id="getDisposePageList" resultType="com.ruoyi.system.vo.dispose.OaApprovalApplicationDisposePageVO"> + SELECT + app.id, + app.application_code AS applicationCode, + dispose.title, + u.nick_name AS applicantName, + dispose.dispose_time AS disposeTime, + dispose.dispose_type AS disposeType, + CASE dispose.dispose_type + WHEN 0 THEN '报废' + WHEN 1 THEN '报损' + WHEN 2 THEN '捐赠' + ELSE '未知' + END AS disposeTypeName, + dispose.dispose_total_amount AS disposeTotalAmount, + app.application_reason AS applicationReason, + CONCAT( + IFNULL(pt.type_name, ''), + CASE WHEN pt.type_name IS NOT NULL AND ct.type_name IS NOT NULL THEN '-' ELSE '' END, + IFNULL(ct.type_name, '') + ) AS assetTypeDetail, + app.approval_status AS approvalStatus, + CASE app.approval_status + WHEN 0 THEN '待审核' + WHEN 1 THEN '审核中' + WHEN 2 THEN '已通过' + WHEN 3 THEN '已拒绝' + ELSE '未知' + END AS approvalStatusName + FROM oa_approval_applications app + INNER JOIN oa_approval_application_dispose dispose ON app.id = dispose.approval_application_id + LEFT JOIN sys_user u ON app.applicant_user_id = u.user_id + LEFT JOIN asset_type ct ON dispose.asset_type_id = ct.id + LEFT JOIN asset_type pt ON ct.parent_id = pt.id + LEFT JOIN t_dept d ON app.dept_id = d.id + WHERE app.disabled = 0 + <if test="query.keyword != null and query.keyword != ''"> + AND (dispose.title LIKE CONCAT('%', #{query.keyword}, '%') + OR app.application_code LIKE CONCAT('%', #{query.keyword}, '%')) + </if> + <if test="query.deptId != null"> + AND (d.id = #{query.deptId} OR FIND_IN_SET(#{query.deptId}, d.ancestors)) + </if> + ORDER BY app.create_time DESC + </select> + </mapper> -- Gitblit v1.7.1