From 9a1410301e75363f45bcb0ae704528d639c566ea Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 07 五月 2026 17:15:52 +0800
Subject: [PATCH] feat(account): 添加总账科目模块基础功能
---
src/main/java/com/ruoyi/account/service/AccountSubjectService.java | 24 +++
src/main/java/com/ruoyi/account/pojo/AccountSubject.java | 111 +++++++++++++++
src/main/java/com/ruoyi/account/bean/dto/AccountSubjectDto.java | 10 +
src/main/java/com/ruoyi/account/bean/dto/AccountSubjectImportDto.java | 36 +++++
src/main/resources/mapper/account/AccountSubjectMapper.xml | 21 +++
src/main/java/com/ruoyi/account/service/impl/AccountSubjectServiceImpl.java | 77 +++++++++++
src/main/java/com/ruoyi/account/controller/AccountSubjectController.java | 70 ++++++++++
src/main/java/com/ruoyi/account/bean/vo/AccountSubjectVo.java | 8 +
src/main/java/com/ruoyi/account/mapper/AccountSubjectMapper.java | 18 ++
9 files changed, 375 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/ruoyi/account/bean/dto/AccountSubjectDto.java b/src/main/java/com/ruoyi/account/bean/dto/AccountSubjectDto.java
new file mode 100644
index 0000000..e26844d
--- /dev/null
+++ b/src/main/java/com/ruoyi/account/bean/dto/AccountSubjectDto.java
@@ -0,0 +1,10 @@
+package com.ruoyi.account.bean.dto;
+
+import com.ruoyi.account.pojo.AccountSubject;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class AccountSubjectDto extends AccountSubject {
+}
diff --git a/src/main/java/com/ruoyi/account/bean/dto/AccountSubjectImportDto.java b/src/main/java/com/ruoyi/account/bean/dto/AccountSubjectImportDto.java
new file mode 100644
index 0000000..28c8ab9
--- /dev/null
+++ b/src/main/java/com/ruoyi/account/bean/dto/AccountSubjectImportDto.java
@@ -0,0 +1,36 @@
+package com.ruoyi.account.bean.dto;
+
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class AccountSubjectImportDto {
+
+ @Schema(description = "绉戠洰缂栫爜")
+ @Excel(name = "绉戠洰缂栫爜")
+ private String subjectCode;
+
+ @Schema(description = "绉戠洰鍚嶇О")
+ @Excel(name = "绉戠洰鍚嶇О")
+ private String subjectName;
+
+ @Schema(description = "绉戠洰绫诲瀷")
+ @Excel(name = "绉戠洰绫诲瀷")
+ private String subjectType;
+
+ @Schema(description = "浣欓鏂瑰悜")
+ @Excel(name = "浣欓鏂瑰悜")
+ private String balanceDirection;
+
+ /**
+ * 鐘舵�� 0鍚敤 1绂佺敤
+ */
+ @Schema(description = "鐘舵��")
+ @Excel(name = "鐘舵��",readConverterExp = "0=鍚敤,1=绂佺敤")
+ private Integer status;
+
+ @Schema(description = "澶囨敞")
+ @Excel(name = "澶囨敞")
+ private String remark;
+}
diff --git a/src/main/java/com/ruoyi/account/bean/vo/AccountSubjectVo.java b/src/main/java/com/ruoyi/account/bean/vo/AccountSubjectVo.java
new file mode 100644
index 0000000..3154d1c
--- /dev/null
+++ b/src/main/java/com/ruoyi/account/bean/vo/AccountSubjectVo.java
@@ -0,0 +1,8 @@
+package com.ruoyi.account.bean.vo;
+
+import com.ruoyi.account.pojo.AccountSubject;
+import lombok.Data;
+
+@Data
+public class AccountSubjectVo extends AccountSubject {
+}
diff --git a/src/main/java/com/ruoyi/account/controller/AccountSubjectController.java b/src/main/java/com/ruoyi/account/controller/AccountSubjectController.java
new file mode 100644
index 0000000..acf373a
--- /dev/null
+++ b/src/main/java/com/ruoyi/account/controller/AccountSubjectController.java
@@ -0,0 +1,70 @@
+package com.ruoyi.account.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.bean.dto.AccountSubjectDto;
+import com.ruoyi.account.bean.vo.AccountSubjectVo;
+import com.ruoyi.account.service.AccountSubjectService;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.domain.R;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+
+/**
+ * <p>
+ * 鎬昏处绉戠洰琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-05-07 04:45:30
+ */
+@RestController
+@RequestMapping("/accountSubject")
+@RequiredArgsConstructor
+@Tag(name = "鎬昏处绉戠洰")
+public class AccountSubjectController {
+ private final AccountSubjectService accountSubjectService;
+
+ @GetMapping("list")
+ @Log(title = "鎬昏处绉戠洰鏁版嵁闆嗗悎", businessType = BusinessType.OTHER)
+ @Operation(summary = "鎬昏处绉戠洰鍒嗛〉鏌ヨ")
+ public R<IPage<AccountSubjectVo>> AccountSubjectDtoList(Page<AccountSubjectDto> page, AccountSubjectDto accountSubjectDto) {
+ IPage<AccountSubjectVo> paramList = accountSubjectService.baseList(page, accountSubjectDto);
+ return R.ok(paramList);
+ }
+
+ @PostMapping("/add")
+ @Log(title = "鏂板鎬昏处绉戠洰", businessType = BusinessType.INSERT)
+ @Operation(summary = "鏂板鎬昏处绉戠洰")
+ public R AccountSubjectDtoAdd(@RequestBody AccountSubjectDto accountSubjectDto) {
+ return R.ok(accountSubjectService.save(accountSubjectDto));
+ }
+
+ @PutMapping("/edit")
+ @Log(title = "淇敼鎬昏处绉戠洰", businessType = BusinessType.UPDATE)
+ @Operation(summary = "淇敼鎬昏处绉戠洰")
+ public R AccountSubjectDtoEdit(@RequestBody AccountSubjectDto accountSubjectDto) {
+ return R.ok(accountSubjectService.updateById(accountSubjectDto));
+ }
+
+ @DeleteMapping("/remove/{ids}")
+ @Log(title = "鍒犻櫎鎬昏处绉戠洰", businessType = BusinessType.DELETE)
+ @Operation(summary = "鍒犻櫎鎬昏处绉戠洰")
+ public R AccountSubjectDtooRemove(@PathVariable Long[] ids) {
+ return R.ok(accountSubjectService.removeBatchByIds(Arrays.asList(ids)));
+ }
+
+ @PostMapping("/export")
+ @Operation(summary = "瀵煎嚭鎬昏处绉戠洰鏂囦欢")
+ @Log(title = "瀵煎嚭鎬昏处绉戠洰鏂囦欢", businessType = BusinessType.EXPORT)
+ public void exportAccountSubject(HttpServletResponse response) {
+ accountSubjectService.exportAccountSubject(response);
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/account/mapper/AccountSubjectMapper.java b/src/main/java/com/ruoyi/account/mapper/AccountSubjectMapper.java
new file mode 100644
index 0000000..1fface5
--- /dev/null
+++ b/src/main/java/com/ruoyi/account/mapper/AccountSubjectMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.account.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.account.pojo.AccountSubject;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 鎬昏处绉戠洰琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-05-07 04:45:30
+ */
+@Mapper
+public interface AccountSubjectMapper extends BaseMapper<AccountSubject> {
+
+}
diff --git a/src/main/java/com/ruoyi/account/pojo/AccountSubject.java b/src/main/java/com/ruoyi/account/pojo/AccountSubject.java
new file mode 100644
index 0000000..3516f8c
--- /dev/null
+++ b/src/main/java/com/ruoyi/account/pojo/AccountSubject.java
@@ -0,0 +1,111 @@
+package com.ruoyi.account.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 鎬昏处绉戠洰琛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-05-07 04:45:30
+ */
+@Getter
+@Setter
+@ToString
+@TableName("account_subject")
+@ApiModel(value = "AccountSubject瀵硅薄", description = "鎬昏处绉戠洰琛�")
+public class AccountSubject implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭ID
+ */
+ @ApiModelProperty("涓婚敭ID")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 绉戠洰缂栫爜(鍞竴鏍囪瘑)
+ */
+ @ApiModelProperty("绉戠洰缂栫爜(鍞竴鏍囪瘑)")
+ private String subjectCode;
+
+ /**
+ * 绉戠洰鍚嶇О
+ */
+ @ApiModelProperty("绉戠洰鍚嶇О")
+ private String subjectName;
+
+ /**
+ * 绉戠洰绫诲瀷(瀛楀吀閰嶇疆)
+ */
+ @ApiModelProperty("绉戠洰绫诲瀷(瀛楀吀閰嶇疆)")
+ private String subjectType;
+
+ /**
+ * 浣欓鏂瑰悜
+ */
+ @ApiModelProperty("浣欓鏂瑰悜")
+ private String balanceDirection;
+
+ /**
+ * 鐘舵�� 0鍚敤 1绂佺敤
+ */
+ @ApiModelProperty("鐘舵�� 0鍚敤 1绂佺敤")
+ private Integer status;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private String createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ /**
+ * 淇敼浜�
+ */
+ @ApiModelProperty("淇敼浜�")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private String updateUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @ApiModelProperty("淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 閮ㄩ棬ID
+ */
+ @ApiModelProperty("閮ㄩ棬ID")
+ @TableField(fill = FieldFill.INSERT)
+ private Long deptId;
+}
diff --git a/src/main/java/com/ruoyi/account/service/AccountSubjectService.java b/src/main/java/com/ruoyi/account/service/AccountSubjectService.java
new file mode 100644
index 0000000..a7dd670
--- /dev/null
+++ b/src/main/java/com/ruoyi/account/service/AccountSubjectService.java
@@ -0,0 +1,24 @@
+package com.ruoyi.account.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.bean.dto.AccountSubjectDto;
+import com.ruoyi.account.bean.vo.AccountSubjectVo;
+import com.ruoyi.account.pojo.AccountSubject;
+import com.baomidou.mybatisplus.extension.service.IService;
+import jakarta.servlet.http.HttpServletResponse;
+
+/**
+ * <p>
+ * 鎬昏处绉戠洰琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-05-07 04:45:30
+ */
+public interface AccountSubjectService extends IService<AccountSubject> {
+
+ IPage<AccountSubjectVo> baseList(Page<AccountSubjectDto> page, AccountSubjectDto accountSubjectDto);
+
+ void exportAccountSubject(HttpServletResponse response);
+}
diff --git a/src/main/java/com/ruoyi/account/service/impl/AccountSubjectServiceImpl.java b/src/main/java/com/ruoyi/account/service/impl/AccountSubjectServiceImpl.java
new file mode 100644
index 0000000..152966a
--- /dev/null
+++ b/src/main/java/com/ruoyi/account/service/impl/AccountSubjectServiceImpl.java
@@ -0,0 +1,77 @@
+package com.ruoyi.account.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.account.bean.dto.AccountSubjectDto;
+import com.ruoyi.account.bean.dto.AccountSubjectImportDto;
+import com.ruoyi.account.bean.vo.AccountSubjectVo;
+import com.ruoyi.account.mapper.AccountSubjectMapper;
+import com.ruoyi.account.pojo.AccountSubject;
+import com.ruoyi.account.service.AccountSubjectService;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 鎬昏处绉戠洰琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-05-07 04:45:30
+ */
+@Service
+@RequiredArgsConstructor
+public class AccountSubjectServiceImpl extends ServiceImpl<AccountSubjectMapper, AccountSubject> implements AccountSubjectService {
+
+ private final AccountSubjectMapper accountSubjectMapper;
+
+ @Override
+ public IPage<AccountSubjectVo> baseList(Page<AccountSubjectDto> page, AccountSubjectDto accountSubjectDto) {
+ LambdaQueryWrapper<AccountSubject> queryWrapper = new LambdaQueryWrapper<>();
+ if (accountSubjectDto != null && StringUtils.isNotEmpty(accountSubjectDto.getSubjectCode())) {
+ queryWrapper.like(AccountSubject::getSubjectCode, accountSubjectDto.getSubjectCode());
+ }
+ if (accountSubjectDto != null && StringUtils.isNotEmpty(accountSubjectDto.getSubjectName())) {
+ queryWrapper.like(AccountSubject::getSubjectName, accountSubjectDto.getSubjectName());
+ }
+ if (accountSubjectDto != null && StringUtils.isNotEmpty(accountSubjectDto.getSubjectType())) {
+ queryWrapper.eq(AccountSubject::getSubjectType, accountSubjectDto.getSubjectType());
+ }
+ queryWrapper.orderByDesc(AccountSubject::getId);
+
+ Page<AccountSubject> entityPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
+ Page<AccountSubject> paramPage = page(entityPage, queryWrapper);
+
+ Page<AccountSubjectVo> resultPage = new Page<>(paramPage.getCurrent(), paramPage.getSize(), paramPage.getTotal());
+ List<AccountSubjectVo> records = new ArrayList<>(paramPage.getRecords().size());
+ for (AccountSubject item : paramPage.getRecords()) {
+ AccountSubjectVo vo = new AccountSubjectVo();
+ BeanUtils.copyProperties(item, vo);
+ records.add(vo);
+ }
+ resultPage.setRecords(records);
+ return resultPage;
+ }
+
+ @Override
+ public void exportAccountSubject(HttpServletResponse response) {
+ List<AccountSubject> list = accountSubjectMapper.selectList(null);
+ List<AccountSubjectImportDto> importDtos = list.stream().map(accountSubject -> {
+ AccountSubjectImportDto accountSubjectImportDto = new AccountSubjectImportDto();
+ BeanUtils.copyProperties(accountSubject, accountSubjectImportDto);
+ return accountSubjectImportDto;
+ }).collect(Collectors.toList());
+ ExcelUtil<AccountSubjectImportDto> util = new ExcelUtil<>(AccountSubjectImportDto.class);
+ util.exportExcel(response, importDtos , "鎬昏处绉戠洰");
+ }
+}
diff --git a/src/main/resources/mapper/account/AccountSubjectMapper.xml b/src/main/resources/mapper/account/AccountSubjectMapper.xml
new file mode 100644
index 0000000..179d858
--- /dev/null
+++ b/src/main/resources/mapper/account/AccountSubjectMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.account.mapper.AccountSubjectMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.account.pojo.AccountSubject">
+ <id column="id" property="id" />
+ <result column="subject_code" property="subjectCode" />
+ <result column="subject_name" property="subjectName" />
+ <result column="subject_type" property="subjectType" />
+ <result column="balance_direction" property="balanceDirection" />
+ <result column="status" property="status" />
+ <result column="remark" property="remark" />
+ <result column="create_user" property="createUser" />
+ <result column="create_time" property="createTime" />
+ <result column="update_user" property="updateUser" />
+ <result column="update_time" property="updateTime" />
+ <result column="dept_id" property="deptId" />
+ </resultMap>
+
+</mapper>
--
Gitblit v1.9.3