Commit 22e78965 authored by jianglingfeng's avatar jianglingfeng

默认变更列表

parent 74ba681f
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId> <artifactId>ruoyi</artifactId>
<version>3.8.4</version> <version>3.8.4</version>
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<name>ruoyi</name> <name>ruoyi</name>
<url>http://www.ruoyi.vip</url> <url>http://www.ruoyi.vip</url>
<description>若依管理系统</description> <description>若依管理系统</description>
<properties> <properties>
<ruoyi.version>3.8.4</ruoyi.version> <ruoyi.version>3.8.4</ruoyi.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
...@@ -22,9 +22,11 @@ ...@@ -22,9 +22,11 @@
<bitwalker.version>1.21</bitwalker.version> <bitwalker.version>1.21</bitwalker.version>
<swagger.version>3.0.0</swagger.version> <swagger.version>3.0.0</swagger.version>
<kaptcha.version>2.3.2</kaptcha.version> <kaptcha.version>2.3.2</kaptcha.version>
<mybatis-spring-boot.version>2.2.2</mybatis-spring-boot.version> <lombok.version>1.18.20</lombok.version>
<pagehelper.boot.version>1.4.5</pagehelper.boot.version> <hutool.version>5.7.2</hutool.version>
<fastjson.version>2.0.16</fastjson.version> <mybatis-plus-spring-boot.version>3.4.2</mybatis-plus-spring-boot.version>
<pagehelper.boot.version>1.4.3</pagehelper.boot.version>
<fastjson.version>2.0.12</fastjson.version>
<oshi.version>6.3.0</oshi.version> <oshi.version>6.3.0</oshi.version>
<commons.io.version>2.11.0</commons.io.version> <commons.io.version>2.11.0</commons.io.version>
<commons.fileupload.version>1.4</commons.fileupload.version> <commons.fileupload.version>1.4</commons.fileupload.version>
...@@ -33,7 +35,7 @@ ...@@ -33,7 +35,7 @@
<velocity.version>2.3</velocity.version> <velocity.version>2.3</velocity.version>
<jwt.version>0.9.1</jwt.version> <jwt.version>0.9.1</jwt.version>
</properties> </properties>
<!-- 依赖声明 --> <!-- 依赖声明 -->
<dependencyManagement> <dependencyManagement>
<dependencies> <dependencies>
...@@ -54,6 +56,14 @@ ...@@ -54,6 +56,14 @@
<version>${druid.version}</version> <version>${druid.version}</version>
</dependency> </dependency>
<!-- mybatis-plus 增强CRUD -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus-spring-boot.version}</version>
</dependency>
<!-- 解析客户端操作系统、浏览器等 --> <!-- 解析客户端操作系统、浏览器等 -->
<dependency> <dependency>
<groupId>eu.bitwalker</groupId> <groupId>eu.bitwalker</groupId>
...@@ -61,12 +71,6 @@ ...@@ -61,12 +71,6 @@
<version>${bitwalker.version}</version> <version>${bitwalker.version}</version>
</dependency> </dependency>
<!-- SpringBoot集成mybatis框架 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot.version}</version>
</dependency>
<!-- pagehelper 分页插件 --> <!-- pagehelper 分页插件 -->
<dependency> <dependency>
...@@ -75,6 +79,7 @@ ...@@ -75,6 +79,7 @@
<version>${pagehelper.boot.version}</version> <version>${pagehelper.boot.version}</version>
</dependency> </dependency>
<!-- 获取系统信息 --> <!-- 获取系统信息 -->
<dependency> <dependency>
<groupId>com.github.oshi</groupId> <groupId>com.github.oshi</groupId>
...@@ -151,6 +156,20 @@ ...@@ -151,6 +156,20 @@
<version>${kaptcha.version}</version> <version>${kaptcha.version}</version>
</dependency> </dependency>
<!-- lombok 工具 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<!-- hutool 工具 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<!-- 定时任务--> <!-- 定时任务-->
<dependency> <dependency>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
...@@ -196,6 +215,7 @@ ...@@ -196,6 +215,7 @@
<module>ruoyi-quartz</module> <module>ruoyi-quartz</module>
<module>ruoyi-generator</module> <module>ruoyi-generator</module>
<module>ruoyi-common</module> <module>ruoyi-common</module>
<module>ruoyi-finance</module>
</modules> </modules>
<packaging>pom</packaging> <packaging>pom</packaging>
......
package com.ruoyi.web.controller.finance;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.domain.FncCompany;
import com.ruoyi.system.service.IFncCompanyService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 记账公司Controller
*
* @author ruoyi
* @date 2022-11-16
*/
@RestController
@RequestMapping("/finance/company")
public class FncCompanyController extends BaseController
{
@Autowired
private IFncCompanyService fncCompanyService;
/**
* 查询记账公司列表
*/
@PreAuthorize("@ss.hasPermi('finance:company:list')")
@GetMapping("/list")
public TableDataInfo list(FncCompany fncCompany)
{
startPage();
List<FncCompany> list = fncCompanyService.selectFncCompanyList(fncCompany);
return getDataTable(list);
}
/**
* 导出记账公司列表
*/
@PreAuthorize("@ss.hasPermi('finance:company:export')")
@Log(title = "记账公司", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, FncCompany fncCompany)
{
List<FncCompany> list = fncCompanyService.selectFncCompanyList(fncCompany);
ExcelUtil<FncCompany> util = new ExcelUtil<FncCompany>(FncCompany.class);
util.exportExcel(response, list, "记账公司数据");
}
/**
* 获取记账公司详细信息
*/
@PreAuthorize("@ss.hasPermi('finance:company:query')")
@GetMapping(value = "/{companyId}")
public AjaxResult getInfo(@PathVariable("companyId") Long companyId)
{
return success(fncCompanyService.selectFncCompanyByCompanyId(companyId));
}
/**
* 新增记账公司
*/
@PreAuthorize("@ss.hasPermi('finance:company:add')")
@Log(title = "记账公司", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody FncCompany fncCompany)
{
fncCompany.setCreateBy(getUsername());
return toAjax(fncCompanyService.insertFncCompany(fncCompany));
}
/**
* 修改记账公司
*/
@PreAuthorize("@ss.hasPermi('finance:company:edit')")
@Log(title = "记账公司", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody FncCompany fncCompany)
{
fncCompany.setUpdateBy(getUsername());
return toAjax(fncCompanyService.updateFncCompany(fncCompany));
}
/**
* 删除记账公司
*/
@PreAuthorize("@ss.hasPermi('finance:company:remove')")
@Log(title = "记账公司", businessType = BusinessType.DELETE)
@DeleteMapping("/{companyIds}")
public AjaxResult remove(@PathVariable Long[] companyIds)
{
return toAjax(fncCompanyService.deleteFncCompanyByCompanyIds(companyIds));
}
}
package com.ruoyi.web.controller.finance;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.utils.ServletUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.token.TokenService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.domain.FncLedger;
import com.ruoyi.system.service.IFncLedgerService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
/**
* 项目台账Controller
*
* @author ruoyi
* @date 2022-11-16
*/
@RestController
@RequestMapping("/finance/ledger")
public class FncLedgerController extends BaseController
{
@Autowired
private IFncLedgerService fncLedgerService;
/**
* 查询项目台账列表
*/
@PreAuthorize("@ss.hasPermi('finance:ledger:list')")
@GetMapping("/list")
public TableDataInfo list(FncLedger fncLedger)
{
startPage();
List<FncLedger> list = fncLedgerService.selectFncLedgerList(fncLedger);
return getDataTable(list);
}
/**
* 导出项目台账列表
*/
@PreAuthorize("@ss.hasPermi('finance:ledger:export')")
@Log(title = "项目台账", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, FncLedger fncLedger)
{
List<FncLedger> list = fncLedgerService.selectFncLedgerList(fncLedger);
ExcelUtil<FncLedger> util = new ExcelUtil<FncLedger>(FncLedger.class);
util.exportExcel(response, list, "项目台账数据");
}
/**
* 获取项目台账详细信息
*/
@PreAuthorize("@ss.hasPermi('finance:ledger:query')")
@GetMapping(value = "/{ledgerId}")
public AjaxResult getInfo(@PathVariable("ledgerId") Long ledgerId)
{
return success(fncLedgerService.selectFncLedgerByLedgerId(ledgerId));
}
/**
* 新增项目台账
*/
@PreAuthorize("@ss.hasPermi('finance:ledger:add')")
@Log(title = "项目台账", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody FncLedger fncLedger)
{
return toAjax(fncLedgerService.insertFncLedger(fncLedger));
}
/**
* 修改项目台账
*/
@PreAuthorize("@ss.hasPermi('finance:ledger:edit')")
@Log(title = "项目台账", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody FncLedger fncLedger)
{
return toAjax(fncLedgerService.updateFncLedger(fncLedger));
}
/**
* 删除项目台账
*/
@PreAuthorize("@ss.hasPermi('finance:ledger:remove')")
@Log(title = "项目台账", businessType = BusinessType.DELETE)
@DeleteMapping("/{ledgerIds}")
public AjaxResult remove(@PathVariable Long[] ledgerIds)
{
return toAjax(fncLedgerService.deleteFncLedgerByLedgerIds(ledgerIds));
}
@Log(title = "项目台账", businessType = BusinessType.IMPORT)
@PostMapping("/import")
@Transactional(rollbackFor = Exception.class)
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
{
ExcelUtil<FncLedger> util = new ExcelUtil<FncLedger>(FncLedger.class);
List<FncLedger> list = util.importExcel(file.getInputStream(),4);
return toAjax(fncLedgerService.saveBatch(list));
}
}
...@@ -6,9 +6,9 @@ spring: ...@@ -6,9 +6,9 @@ spring:
druid: druid:
# 主库数据源 # 主库数据源
master: master:
url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://192.168.182.130:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root username: root
password: password password: root
# 从库数据源 # 从库数据源
slave: slave:
# 从数据源开关/默认关闭 # 从数据源开关/默认关闭
......
...@@ -100,13 +100,30 @@ token: ...@@ -100,13 +100,30 @@ token:
expireTime: 30 expireTime: 30
# MyBatis配置 # MyBatis配置
mybatis: #mybatis:
# 搜索指定包别名 # # 搜索指定包别名
typeAliasesPackage: com.ruoyi.**.domain # typeAliasesPackage: com.ruoyi.**.domain
# 配置mapper的扫描,找到所有的mapper.xml映射文件 # # 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*Mapper.xml # mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件 # # 加载全局的配置文件
configLocation: classpath:mybatis/mybatis-config.xml # configLocation: classpath:mybatis/mybatis-config.xml
# MyBatisPlus配置
mybatis-plus:
# 搜索指定包别名
typeAliasesPackage: com.ruoyi.**.domain
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 全局配置
global-config:
db-config:
id-type: auto
logic-delete-field: deleteStatus
logic-not-delete-value: 1
logic-delete-value: 2
configuration:
map-underscore-to-camel-case: true
# PageHelper分页插件 # PageHelper分页插件
pagehelper: pagehelper:
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 全局参数 -->
<settings>
<!-- 使全局的映射器启用或禁用缓存 -->
<setting name="cacheEnabled" value="true" />
<!-- 允许JDBC 支持自动生成主键 -->
<setting name="useGeneratedKeys" value="true" />
<!-- 配置默认的执行器.SIMPLE就是普通执行器;REUSE执行器会重用预处理语句(prepared statements);BATCH执行器将重用语句并执行批量更新 -->
<setting name="defaultExecutorType" value="SIMPLE" />
<!-- 指定 MyBatis 所用日志的具体实现 -->
<setting name="logImpl" value="SLF4J" />
<!-- 使用驼峰命名法转换字段 -->
<!-- <setting name="mapUnderscoreToCamelCase" value="true"/> -->
</settings>
</configuration>
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
<dependencies> <dependencies>
<!-- Spring框架基本的核心工具 --> <!-- Spring框架基本的核心工具 -->
<dependency> <dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>
...@@ -52,7 +53,7 @@ ...@@ -52,7 +53,7 @@
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId> <artifactId>commons-lang3</artifactId>
</dependency> </dependency>
<!-- JSON工具类 --> <!-- JSON工具类 -->
<dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>
...@@ -125,6 +126,27 @@ ...@@ -125,6 +126,27 @@
<artifactId>javax.servlet-api</artifactId> <artifactId>javax.servlet-api</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
<version>3.4.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>
\ No newline at end of file
package com.ruoyi.common.core.domain; package com.ruoyi.common.core.domain;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
/** /**
* Entity基类 * Entity基类
* *
* @author ruoyi * @author ruoyi
*/ */
public class BaseEntity implements Serializable @Data
{ public class BaseEntity implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 搜索值 */ /**
@JsonIgnore * 搜索值
*/
@TableField(exist = false)
private String searchValue; private String searchValue;
/** 创建者 */ /**
* 创建者
*/
@TableField(fill = FieldFill.INSERT)
private String createBy; private String createBy;
/** 创建时间 */ /**
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") * 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime; private Date createTime;
/** 更新者 */ /**
* 更新者
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy; private String updateBy;
/** 更新时间 */ /**
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") * 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime; private Date updateTime;
/** 备注 */ /**
private String remark; * 请求参数
*/
/** 请求参数 */ @TableField(exist = false)
@JsonInclude(JsonInclude.Include.NON_EMPTY) private Map<String, Object> params = new HashMap<>();
private Map<String, Object> params;
public String getSearchValue()
{
return searchValue;
}
public void setSearchValue(String searchValue)
{
this.searchValue = searchValue;
}
public String getCreateBy()
{
return createBy;
}
public void setCreateBy(String createBy)
{
this.createBy = createBy;
}
public Date getCreateTime() /**
{ * 请求参数
return createTime; */
} @TableField(exist = false)
private String remark;
public void setCreateTime(Date createTime)
{
this.createTime = createTime;
}
public String getUpdateBy()
{
return updateBy;
}
public void setUpdateBy(String updateBy)
{
this.updateBy = updateBy;
}
public Date getUpdateTime()
{
return updateTime;
}
public void setUpdateTime(Date updateTime)
{
this.updateTime = updateTime;
}
public String getRemark()
{
return remark;
}
public void setRemark(String remark)
{
this.remark = remark;
}
public Map<String, Object> getParams()
{
if (params == null)
{
params = new HashMap<>();
}
return params;
}
public void setParams(Map<String, Object> params)
{
this.params = params;
}
} }
...@@ -31,7 +31,8 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils ...@@ -31,7 +31,8 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
private static String[] parsePatterns = { private static String[] parsePatterns = {
"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
"yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
"yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM",
"yyyyMMdd"};
/** /**
* 获取当前Date型日期 * 获取当前Date型日期
......
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ruoyi</artifactId>
<groupId>com.ruoyi</groupId>
<version>3.8.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.ruoyi.finance</groupId>
<artifactId>ruoyi-finance</artifactId>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
</project>
\ No newline at end of file
...@@ -58,6 +58,10 @@ ...@@ -58,6 +58,10 @@
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-system</artifactId> <artifactId>ruoyi-system</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
</dependencies> </dependencies>
......
package com.ruoyi.framework.config;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import javax.sql.DataSource;
import org.apache.ibatis.io.VFS;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
import org.springframework.core.type.classreading.MetadataReader;
import org.springframework.core.type.classreading.MetadataReaderFactory;
import org.springframework.util.ClassUtils;
import com.ruoyi.common.utils.StringUtils;
/**
* Mybatis支持*匹配扫描包
*
* @author ruoyi
*/
@Configuration
public class MyBatisConfig
{
@Autowired
private Environment env;
static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";
public static String setTypeAliasesPackage(String typeAliasesPackage)
{
ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();
MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);
List<String> allResult = new ArrayList<String>();
try
{
for (String aliasesPackage : typeAliasesPackage.split(","))
{
List<String> result = new ArrayList<String>();
aliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
+ ClassUtils.convertClassNameToResourcePath(aliasesPackage.trim()) + "/" + DEFAULT_RESOURCE_PATTERN;
Resource[] resources = resolver.getResources(aliasesPackage);
if (resources != null && resources.length > 0)
{
MetadataReader metadataReader = null;
for (Resource resource : resources)
{
if (resource.isReadable())
{
metadataReader = metadataReaderFactory.getMetadataReader(resource);
try
{
result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
}
}
}
if (result.size() > 0)
{
HashSet<String> hashResult = new HashSet<String>(result);
allResult.addAll(hashResult);
}
}
if (allResult.size() > 0)
{
typeAliasesPackage = String.join(",", (String[]) allResult.toArray(new String[0]));
}
else
{
throw new RuntimeException("mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:" + typeAliasesPackage + "未找到任何包");
}
}
catch (IOException e)
{
e.printStackTrace();
}
return typeAliasesPackage;
}
public Resource[] resolveMapperLocations(String[] mapperLocations)
{
ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
List<Resource> resources = new ArrayList<Resource>();
if (mapperLocations != null)
{
for (String mapperLocation : mapperLocations)
{
try
{
Resource[] mappers = resourceResolver.getResources(mapperLocation);
resources.addAll(Arrays.asList(mappers));
}
catch (IOException e)
{
// ignore
}
}
}
return resources.toArray(new Resource[resources.size()]);
}
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception
{
String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");
String mapperLocations = env.getProperty("mybatis.mapperLocations");
String configLocation = env.getProperty("mybatis.configLocation");
typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
VFS.addImplClass(SpringBootVFS.class);
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
return sessionFactory.getObject();
}
}
\ No newline at end of file
package com.ruoyi.framework.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.ruoyi.framework.handle.CreateAndUpdateMetaObjectHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* Mybatis Plus 配置
*
* @author ruoyi
*/
@EnableTransactionManagement(proxyTargetClass = true)
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 分页插件
interceptor.addInnerInterceptor(paginationInnerInterceptor());
// 乐观锁插件
interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
// 阻断插件
interceptor.addInnerInterceptor(blockAttackInnerInterceptor());
return interceptor;
}
/**
* 分页插件,自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html
*/
public PaginationInnerInterceptor paginationInnerInterceptor() {
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
// 设置数据库类型为mysql
paginationInnerInterceptor.setDbType(DbType.MYSQL);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
paginationInnerInterceptor.setMaxLimit(-1L);
return paginationInnerInterceptor;
}
/**
* 乐观锁插件 https://baomidou.com/guide/interceptor-optimistic-locker.html
*/
public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor() {
return new OptimisticLockerInnerInterceptor();
}
/**
* 如果是对全表的删除或更新操作,就会终止该操作 https://baomidou.com/guide/interceptor-block-attack.html
*/
public BlockAttackInnerInterceptor blockAttackInnerInterceptor() {
return new BlockAttackInnerInterceptor();
}
/**
* 元对象字段填充控制器
*/
@Bean
public MetaObjectHandler metaObjectHandler() {
return new CreateAndUpdateMetaObjectHandler();
}
}
package com.ruoyi.framework.handle;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpStatus;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.ibatis.reflection.MetaObject;
import java.util.Date;
/**
* MybatisPlus 字段注入
*
* @author Tellsea
* @date 2022/9/1
*/
@Slf4j
public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
try {
if (ObjectUtils.isNotEmpty(metaObject) && metaObject.getOriginalObject() instanceof BaseEntity) {
BaseEntity baseEntity = (BaseEntity) metaObject.getOriginalObject();
Date current = ObjectUtils.isNotEmpty(baseEntity.getCreateTime())
? baseEntity.getCreateTime() : new Date();
baseEntity.setCreateTime(current);
baseEntity.setUpdateTime(current);
String username = StringUtils.isNotBlank(baseEntity.getCreateBy())
? baseEntity.getCreateBy() : getLoginUsername();
// 当前已登录 且 创建人为空 则填充
baseEntity.setCreateBy(username);
// 当前已登录 且 更新人为空 则填充
baseEntity.setUpdateBy(username);
}
// 默认设置状态1
this.setFieldValByName("deleteStatus", 1, metaObject);
} catch (Exception e) {
throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
}
}
@Override
public void updateFill(MetaObject metaObject) {
try {
if (ObjectUtil.isNotNull(metaObject) && metaObject.getOriginalObject() instanceof BaseEntity) {
BaseEntity baseEntity = (BaseEntity) metaObject.getOriginalObject();
Date current = new Date();
// 更新时间填充(不管为不为空)
baseEntity.setUpdateTime(current);
String username = getLoginUsername();
// 当前已登录 更新人填充(不管为不为空)
if (StringUtils.isNotBlank(username)) {
baseEntity.setUpdateBy(username);
}
}
} catch (Exception e) {
throw new ServiceException("自动注入异常 => " + e.getMessage(), HttpStatus.HTTP_UNAUTHORIZED);
}
}
/**
* 获取登录用户名
*/
private String getLoginUsername() {
LoginUser loginUser;
try {
loginUser = SecurityUtils.getLoginUser();
} catch (Exception e) {
log.warn("自动注入警告 => 用户未登录");
return null;
}
return loginUser.getUsername();
}
}
# 代码生成 # 代码生成
gen: gen:
# 作者 # 作者
author: ruoyi author: jlf
# 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
packageName: com.ruoyi.system packageName: com.ruoyi.system
# 自动去除表前缀,默认是false # 自动去除表前缀,默认是false
......
package ${packageName}.domain; package ${packageName}.domain;
#foreach ($import in $importList) #foreach ($import in $importList)
import ${import}; import ${import};
#end #end
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
#if($table.crud || $table.sub) import com.baomidou.mybatisplus.annotation.FieldFill;
import com.ruoyi.common.core.domain.BaseEntity; import com.baomidou.mybatisplus.annotation.TableField;
#elseif($table.tree) #if($table.crud || $table.sub)
import com.ruoyi.common.core.domain.TreeEntity; import com.ruoyi.common.core.domain.BaseEntity;
#end #elseif($table.tree)
import com.ruoyi.common.core.domain.TreeEntity;
#end
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
/** /**
* ${functionName}对象 ${tableName} * ${functionName}对象 ${tableName}
* *
* @author ${author} * @author ${author}
* @date ${datetime} * @date ${datetime}
*/ */
#if($table.crud || $table.sub) #if($table.crud || $table.sub)
#set($Entity="BaseEntity") #set($Entity="BaseEntity")
#elseif($table.tree) #elseif($table.tree)
#set($Entity="TreeEntity") #set($Entity="TreeEntity")
#end #end
public class ${ClassName} extends ${Entity} @Data
{ @Accessors(chain = true)
private static final long serialVersionUID = 1L; @ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class ${ClassName} extends ${Entity} {
#foreach ($column in $columns) #foreach ($column in $columns)
#if(!$table.isSuperColumn($column.javaField)) #if(!$table.isSuperColumn($column.javaField))
/** $column.columnComment */ /**
#if($column.list) * $column.columnComment
#set($parentheseIndex=$column.columnComment.indexOf("(")) */
#if($parentheseIndex != -1) #if($column.list)
#set($comment=$column.columnComment.substring(0, $parentheseIndex)) #set($parentheseIndex=$column.columnComment.indexOf("("))
#else #if($parentheseIndex != -1)
#set($comment=$column.columnComment) #set($comment=$column.columnComment.substring(0, $parentheseIndex))
#end #else
#if($parentheseIndex != -1) #set($comment=$column.columnComment)
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") #end
#elseif($column.javaType == 'Date') #if($parentheseIndex != -1)
@JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
@Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd") #elseif($column.javaType == 'Date')
#else @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "${comment}") @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
#end #else
#end @Excel(name = "${comment}")
#end
#end
#if($column.javaField == 'deleteStatus')
@TableField(fill = FieldFill.INSERT)
#end
private $column.javaType $column.javaField; private $column.javaType $column.javaField;
#end #end
#end #end
#if($table.sub) #if($table.sub)
/** $table.subTable.functionName信息 */ /**
private List<${subClassName}> ${subclassName}List; * $table.subTable.functionName信息
*/
#end private List<${subClassName}> ${subclassName}List;
#foreach ($column in $columns)
#if(!$table.isSuperColumn($column.javaField))
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
#set($AttrName=$column.javaField)
#else
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#end
public void set${AttrName}($column.javaType $column.javaField)
{
this.$column.javaField = $column.javaField;
}
public $column.javaType get${AttrName}()
{
return $column.javaField;
}
#end
#end
#if($table.sub)
public List<${subClassName}> get${subClassName}List()
{
return ${subclassName}List;
}
public void set${subClassName}List(List<${subClassName}> ${subclassName}List)
{
this.${subclassName}List = ${subclassName}List;
}
#end #end
@Override }
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
#foreach ($column in $columns)
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
#set($AttrName=$column.javaField)
#else
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#end
.append("${column.javaField}", get${AttrName}())
#end
#if($table.sub)
.append("${subclassName}List", get${subClassName}List())
#end
.toString();
}
}
package ${packageName}.mapper; package ${packageName}.mapper;
import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import ${packageName}.domain.${ClassName}; import ${packageName}.domain.${ClassName};
#if($table.sub) import ${packageName}.vo.${ClassName}Vo;
import ${packageName}.domain.${subClassName}; #if($table.sub)
#end import ${packageName}.domain.${subClassName};
#end
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* ${functionName}Mapper接口 * ${functionName}Mapper接口
* *
* @author ${author} * @author ${author}
* @date ${datetime} * @date ${datetime}
*/ */
public interface ${ClassName}Mapper public interface ${ClassName}Mapper extends BaseMapper<${ClassName}> {
{
/**
* 查询${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}
*/
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
/**
* 查询${functionName}列表
*
* @param ${className} ${functionName}
* @return ${functionName}集合
*/
public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
/**
* 新增${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
public int insert${ClassName}(${ClassName} ${className});
/**
* 修改${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
public int update${ClassName}(${ClassName} ${className});
/** Page<${ClassName}Vo> queryList(Page<?> page, @Param("entity") ${ClassName}Vo entity);
* 删除${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return 结果
*/
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
/** List<${ClassName}Vo> queryList(@Param("entity") ${ClassName}Vo entity);
* 批量删除${functionName}
*
* @param ${pkColumn.javaField}s 需要删除的数据主键集合
* @return 结果
*/
public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
#if($table.sub)
/** ${ClassName}Vo queryById(@Param("id") ${pkColumn.javaType} ${pkColumn.javaField});
* 批量删除${subTable.functionName}
*
* @param ${pkColumn.javaField}s 需要删除的数据主键集合
* @return 结果
*/
public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
/**
* 批量新增${subTable.functionName}
*
* @param ${subclassName}List ${subTable.functionName}列表
* @return 结果
*/
public int batch${subClassName}(List<${subClassName}> ${subclassName}List);
/**
* 通过${functionName}主键删除${subTable.functionName}信息
*
* @param ${pkColumn.javaField} ${functionName}ID
* @return 结果
*/
public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});
#end
} }
package ${packageName}.service; package ${packageName}.service;
import java.util.List; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.page.TableDataInfo;
import ${packageName}.domain.${ClassName}; import ${packageName}.domain.${ClassName};
import ${packageName}.vo.${ClassName}Vo;
import java.util.List;
/** /**
* ${functionName}Service接口 * ${functionName}Service接口
* *
* @author ${author} * @author ${author}
* @date ${datetime} * @date ${datetime}
*/ */
public interface I${ClassName}Service public interface I${ClassName}Service extends IService<${ClassName}> {
{
/**
* 查询${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}
*/
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
/**
* 查询${functionName}列表
*
* @param ${className} ${functionName}
* @return ${functionName}集合
*/
public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
/**
* 新增${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
public int insert${ClassName}(${ClassName} ${className});
/** /**
* 修改${functionName} * 分页查询
* *
* @param ${className} ${functionName} * @param entity
* @return 结果 * @return
*/ */
public int update${ClassName}(${ClassName} ${className}); TableDataInfo<${ClassName}Vo> queryList(${ClassName}Vo entity);
/** /**
* 批量删除${functionName} * 查询全部
* *
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合 * @param entity
* @return 结果 * @return
*/ */
public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); List<${ClassName}Vo> queryAll(${ClassName}Vo entity);
/** /**
* 删除${functionName}信息 * 根据ID查询
* *
* @param ${pkColumn.javaField} ${functionName}主键 * @param ${pkColumn.javaField}
* @return 结果 * @return
*/ */
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); ${ClassName}Vo queryById(Long ${pkColumn.javaField});
} }
package ${packageName}.service.impl; package ${packageName}.service.impl;
import java.util.List; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
#foreach ($column in $columns) import com.ruoyi.common.core.page.TableDataInfo;
#if($column.javaField == 'createTime' || $column.javaField == 'updateTime') import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.DateUtils;
#break
#end
#end
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
#if($table.sub)
import java.util.ArrayList;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import ${packageName}.domain.${subClassName};
#end
import ${packageName}.mapper.${ClassName}Mapper;
import ${packageName}.domain.${ClassName}; import ${packageName}.domain.${ClassName};
import ${packageName}.vo.${ClassName}Vo;
import ${packageName}.mapper.${ClassName}Mapper;
import ${packageName}.service.I${ClassName}Service; import ${packageName}.service.I${ClassName}Service;
import org.springframework.stereotype.Service;
#if($table.sub)
import java.util.ArrayList;
import ${packageName}.domain.${subClassName};
#end
import java.util.List;
/** /**
* ${functionName}Service业务层处理 * ${functionName}Service业务层处理
* *
* @author ${author} * @author ${author}
* @date ${datetime} * @date ${datetime}
*/ */
@Service @Service
public class ${ClassName}ServiceImpl implements I${ClassName}Service public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}> implements I${ClassName}Service {
{
@Autowired
private ${ClassName}Mapper ${className}Mapper;
/**
* 查询${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}
*/
@Override
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
{
return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
}
/**
* 查询${functionName}列表
*
* @param ${className} ${functionName}
* @return ${functionName}
*/
@Override @Override
public List<${ClassName}> select${ClassName}List(${ClassName} ${className}) public TableDataInfo<${ClassName}Vo> queryList(${ClassName}Vo entity) {
{ return PageUtils.buildDataInfo(this.baseMapper.queryList(PageUtils.buildPage(), entity));
return ${className}Mapper.select${ClassName}List(${className});
} }
/**
* 新增${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override @Override
public int insert${ClassName}(${ClassName} ${className}) public List<${ClassName}Vo> queryAll(${ClassName}Vo entity) {
{ return this.baseMapper.queryList(entity);
#foreach ($column in $columns)
#if($column.javaField == 'createTime')
${className}.setCreateTime(DateUtils.getNowDate());
#end
#end
#if($table.sub)
int rows = ${className}Mapper.insert${ClassName}(${className});
insert${subClassName}(${className});
return rows;
#else
return ${className}Mapper.insert${ClassName}(${className});
#end
} }
/**
* 修改${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override @Override
public int update${ClassName}(${ClassName} ${className}) public ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}) {
{ return this.baseMapper.queryById(${pkColumn.javaField});
#foreach ($column in $columns)
#if($column.javaField == 'updateTime')
${className}.setUpdateTime(DateUtils.getNowDate());
#end
#end
#if($table.sub)
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());
insert${subClassName}(${className});
#end
return ${className}Mapper.update${ClassName}(${className});
}
/**
* 批量删除${functionName}
*
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override
public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s)
{
#if($table.sub)
${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s);
#end
return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s);
}
/**
* 删除${functionName}信息
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
{
#if($table.sub)
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField});
#end
return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
}
#if($table.sub)
/**
* 新增${subTable.functionName}信息
*
* @param ${className} ${functionName}对象
*/
public void insert${subClassName}(${ClassName} ${className})
{
List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List();
${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}();
if (StringUtils.isNotNull(${subclassName}List))
{
List<${subClassName}> list = new ArrayList<${subClassName}>();
for (${subClassName} ${subclassName} : ${subclassName}List)
{
${subclassName}.set${subTableFkClassName}(${pkColumn.javaField});
list.add(${subclassName});
}
if (list.size() > 0)
{
${className}Mapper.batch${subClassName}(list);
}
}
} }
#end
} }
package ${packageName}.domain; package ${packageName}.domain;
#foreach ($import in $subImportList) #foreach ($import in $subImportList)
import ${import}; import ${import};
#end #end
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
...@@ -10,67 +10,67 @@ import com.ruoyi.common.core.domain.BaseEntity; ...@@ -10,67 +10,67 @@ import com.ruoyi.common.core.domain.BaseEntity;
/** /**
* ${subTable.functionName}对象 ${subTableName} * ${subTable.functionName}对象 ${subTableName}
* *
* @author ${author} * @author ${author}
* @date ${datetime} * @date ${datetime}
*/ */
public class ${subClassName} extends BaseEntity public class ${subClassName} extends BaseEntity
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
#foreach ($column in $subTable.columns) #foreach ($column in $subTable.columns)
#if(!$table.isSuperColumn($column.javaField)) #if(!$table.isSuperColumn($column.javaField))
/** $column.columnComment */ /** $column.columnComment */
#if($column.list) #if($column.list)
#set($parentheseIndex=$column.columnComment.indexOf("(")) #set($parentheseIndex=$column.columnComment.indexOf("("))
#if($parentheseIndex != -1) #if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex)) #set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else #else
#set($comment=$column.columnComment) #set($comment=$column.columnComment)
#end #end
#if($parentheseIndex != -1) #if($parentheseIndex != -1)
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
#elseif($column.javaType == 'Date') #elseif($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
#else #else
@Excel(name = "${comment}") @Excel(name = "${comment}")
#end #end
#end #end
private $column.javaType $column.javaField; private $column.javaType $column.javaField;
#end #end
#end #end
#foreach ($column in $subTable.columns) #foreach ($column in $subTable.columns)
#if(!$table.isSuperColumn($column.javaField)) #if(!$table.isSuperColumn($column.javaField))
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
#set($AttrName=$column.javaField) #set($AttrName=$column.javaField)
#else #else
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#end #end
public void set${AttrName}($column.javaType $column.javaField) public void set${AttrName}($column.javaType $column.javaField)
{ {
this.$column.javaField = $column.javaField; this.$column.javaField = $column.javaField;
} }
public $column.javaType get${AttrName}() public $column.javaType get${AttrName}()
{ {
return $column.javaField; return $column.javaField;
} }
#end #end
#end #end
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
#foreach ($column in $subTable.columns) #foreach ($column in $subTable.columns)
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
#set($AttrName=$column.javaField) #set($AttrName=$column.javaField)
#else #else
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#end #end
.append("${column.javaField}", get${AttrName}()) .append("${column.javaField}", get${AttrName}())
#end #end
.toString(); .toString();
} }
} }
package ${packageName}.vo;
#foreach ($import in $importList)
import ${import};
#end
import ${packageName}.domain.${ClassName};
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
/**
* ${functionName}Vo对象 ${tableName}
*
* @author ${author}
* @date ${datetime}
*/
@Data
@Accessors(chain = true)
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class ${ClassName}Vo extends ${ClassName} {
}
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${packageName}.mapper.${ClassName}Mapper"> <mapper namespace="${packageName}.mapper.${ClassName}Mapper">
<resultMap type="${ClassName}" id="${ClassName}Result">
#foreach ($column in $columns)
<result property="${column.javaField}" column="${column.columnName}" />
#end
</resultMap>
#if($table.sub)
<resultMap id="${ClassName}${subClassName}Result" type="${ClassName}" extends="${ClassName}Result"> <sql id="querySql">
<collection property="${subclassName}List" notNullColumn="sub_${subTable.pkColumn.columnName}" javaType="java.util.List" resultMap="${subClassName}Result" /> select <include refid="allField"/>
</resultMap> from ${tableName} A
<include refid="search"/>
<resultMap type="${subClassName}" id="${subClassName}Result">
#foreach ($column in $subTable.columns)
<result property="${column.javaField}" column="sub_${column.columnName}" />
#end
</resultMap>
#end
<sql id="select${ClassName}Vo">
select#foreach($column in $columns) $column.columnName#if($foreach.count != $columns.size()),#end#end from ${tableName}
</sql> </sql>
<select id="select${ClassName}List" parameterType="${ClassName}" resultMap="${ClassName}Result"> <select id="queryList" resultType="${packageName}.vo.${ClassName}Vo">
<include refid="select${ClassName}Vo"/> <include refid="querySql"/>
<where> #foreach ($column in $columns)
#foreach($column in $columns) #if($column.query)
#set($queryType=$column.queryType) #if($column.javaType == 'String')
#set($javaField=$column.javaField) <if test="entity.$column.javaField != null and entity.$column.javaField != ''">
#set($javaType=$column.javaType) and A.${column.columnName} like concat('%', #{entity.$column.javaField}, '%')
#set($columnName=$column.columnName) </if>
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) #else
#if($column.query) <if test="entity.$column.javaField != null and entity.$column.javaField != 0">
#if($column.queryType == "EQ") and A.${column.columnName} = #{entity.$column.javaField}
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName = #{$javaField}</if> </if>
#elseif($queryType == "NE") #end
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName != #{$javaField}</if> #end
#elseif($queryType == "GT") #end
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &gt; #{$javaField}</if> order by A.create_time desc
#elseif($queryType == "GTE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &gt;= #{$javaField}</if>
#elseif($queryType == "LT")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &lt; #{$javaField}</if>
#elseif($queryType == "LTE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &lt;= #{$javaField}</if>
#elseif($queryType == "LIKE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName like concat('%', #{$javaField}, '%')</if>
#elseif($queryType == "BETWEEN")
<if test="params.begin$AttrName != null and params.begin$AttrName != '' and params.end$AttrName != null and params.end$AttrName != ''"> and $columnName between #{params.begin$AttrName} and #{params.end$AttrName}</if>
#end
#end
#end
</where>
</select> </select>
<select id="select${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}" resultMap="#if($table.sub)${ClassName}${subClassName}Result#else${ClassName}Result#end">
#if($table.crud || $table.tree)
<include refid="select${ClassName}Vo"/>
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
#elseif($table.sub)
select#foreach($column in $columns) a.$column.columnName#if($foreach.count != $columns.size()),#end#end,
#foreach($column in $subTable.columns) b.$column.columnName as sub_$column.columnName#if($foreach.count != $subTable.columns.size()),#end#end
from ${tableName} a <select id="queryById" resultType="${packageName}.vo.${ClassName}Vo">
left join ${subTableName} b on b.${subTableFkName} = a.${pkColumn.columnName} <include refid="querySql"/>
where a.${pkColumn.columnName} = #{${pkColumn.javaField}} and A.id = #{id}
#end
</select> </select>
<insert id="insert${ClassName}" parameterType="${ClassName}"#if($pkColumn.increment) useGeneratedKeys="true" keyProperty="$pkColumn.javaField"#end>
insert into ${tableName}
<trim prefix="(" suffix=")" suffixOverrides=",">
#foreach($column in $columns)
#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName,</if>
#end
#end
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#foreach($column in $columns)
#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">#{$column.javaField},</if>
#end
#end
</trim>
</insert>
<update id="update${ClassName}" parameterType="${ClassName}">
update ${tableName}
<trim prefix="SET" suffixOverrides=",">
#foreach($column in $columns)
#if($column.columnName != $pkColumn.columnName)
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName = #{$column.javaField},</if>
#end
#end
</trim>
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
</update>
<delete id="delete${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}">
delete from ${tableName} where ${pkColumn.columnName} = #{${pkColumn.javaField}}
</delete>
<delete id="delete${ClassName}By${pkColumn.capJavaField}s" parameterType="String"> <sql id="allField">
delete from ${tableName} where ${pkColumn.columnName} in #foreach ($column in $columns)
<foreach item="${pkColumn.javaField}" collection="array" open="(" separator="," close=")"> #if($foreach.hasNext)
#{${pkColumn.javaField}} A.${column.columnName},
</foreach> #else
</delete> A.${column.columnName}
#if($table.sub) #end
#end
<delete id="delete${subClassName}By${subTableFkClassName}s" parameterType="String"> </sql>
delete from ${subTableName} where ${subTableFkName} in
<foreach item="${subTableFkclassName}" collection="array" open="(" separator="," close=")">
#{${subTableFkclassName}}
</foreach>
</delete>
<delete id="delete${subClassName}By${subTableFkClassName}" parameterType="${pkColumn.javaType}">
delete from ${subTableName} where ${subTableFkName} = #{${subTableFkclassName}}
</delete>
<insert id="batch${subClassName}"> <sql id="search">
insert into ${subTableName}(#foreach($column in $subTable.columns) $column.columnName#if($foreach.count != $subTable.columns.size()),#end#end) values where A.delete_status = 1
<foreach item="item" index="index" collection="list" separator=","> </sql>
(#foreach($column in $subTable.columns) #{item.$column.javaField}#if($foreach.count != $subTable.columns.size()),#end#end) </mapper>
</foreach>
</insert>
#end
</mapper>
\ No newline at end of file
package com.ruoyi.system.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 记账公司对象 fnc_company
*
* @author ruoyi
* @date 2022-11-16
*/
public class FncCompany extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 记账公司id */
private Long companyId;
/** 记账公司名称 */
@Excel(name = "记账公司名称")
private String companyName;
/** 营业执照号 */
@Excel(name = "营业执照号")
private String licenseNo;
/** 公司地址 */
@Excel(name = "公司地址")
private String companyAddress;
/** 联系方式 */
@Excel(name = "联系方式")
private String contactInformation;
/** 开户行 */
@Excel(name = "开户行")
private String bankDeposit;
/** 银行账户名称 */
@Excel(name = "银行账户名称")
private String bankAccountName;
/** 银行账户 */
@Excel(name = "银行账户")
private String bankAccount;
public void setCompanyId(Long companyId)
{
this.companyId = companyId;
}
public Long getCompanyId()
{
return companyId;
}
public void setCompanyName(String companyName)
{
this.companyName = companyName;
}
public String getCompanyName()
{
return companyName;
}
public void setLicenseNo(String licenseNo)
{
this.licenseNo = licenseNo;
}
public String getLicenseNo()
{
return licenseNo;
}
public void setCompanyAddress(String companyAddress)
{
this.companyAddress = companyAddress;
}
public String getCompanyAddress()
{
return companyAddress;
}
public void setContactInformation(String contactInformation)
{
this.contactInformation = contactInformation;
}
public String getContactInformation()
{
return contactInformation;
}
public void setBankDeposit(String bankDeposit)
{
this.bankDeposit = bankDeposit;
}
public String getBankDeposit()
{
return bankDeposit;
}
public void setBankAccountName(String bankAccountName)
{
this.bankAccountName = bankAccountName;
}
public String getBankAccountName()
{
return bankAccountName;
}
public void setBankAccount(String bankAccount)
{
this.bankAccount = bankAccount;
}
public String getBankAccount()
{
return bankAccount;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("companyId", getCompanyId())
.append("companyName", getCompanyName())
.append("licenseNo", getLicenseNo())
.append("companyAddress", getCompanyAddress())
.append("contactInformation", getContactInformation())
.append("bankDeposit", getBankDeposit())
.append("bankAccountName", getBankAccountName())
.append("bankAccount", getBankAccount())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}
package com.ruoyi.system.domain;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 项目台账对象 fnc_ledger
*
* @author ruoyi
* @date 2022-11-16
*/
@TableName("fnc_ledger")
public class FncLedger extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 项目台账id */
private Long ledgerId;
/** 分类 */
@Excel(name = "分类")
private String projectType;
/** 日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "日期", width = 30, dateFormat = "yyyyMMdd")
private Date date;
/** 项目中/英文名称 */
@Excel(name = "项目中/英文名称")
private String projectName;
/** 项目负责人 */
@Excel(name = "项目负责人")
private String charge;
/** 负责人电话 */
@Excel(name = "负责人电话")
private String chargePhone;
/** 询单编号 */
@Excel(name = "询单编号")
private String inquiryNo;
/** 客户经理 */
@Excel(name = "客户经理")
private String customerManager;
/** 客户单位 */
@Excel(name = "客户单位")
private String customerCompany;
/** 业务性质 */
@Excel(name = "业务性质")
private String businessType;
/** 项目销售额评估 */
@Excel(name = "项目销售额评估")
private String saleEvaluation;
public void setLedgerId(Long ledgerId)
{
this.ledgerId = ledgerId;
}
public Long getLedgerId()
{
return ledgerId;
}
public void setProjectType(String projectType)
{
this.projectType = projectType;
}
public String getProjectType()
{
return projectType;
}
public void setDate(Date date)
{
this.date = date;
}
public Date getDate()
{
return date;
}
public void setProjectName(String projectName)
{
this.projectName = projectName;
}
public String getProjectName()
{
return projectName;
}
public void setCharge(String charge)
{
this.charge = charge;
}
public String getCharge()
{
return charge;
}
public void setChargePhone(String chargePhone)
{
this.chargePhone = chargePhone;
}
public String getChargePhone()
{
return chargePhone;
}
public void setInquiryNo(String inquiryNo)
{
this.inquiryNo = inquiryNo;
}
public String getInquiryNo()
{
return inquiryNo;
}
public void setCustomerManager(String customerManager)
{
this.customerManager = customerManager;
}
public String getCustomerManager()
{
return customerManager;
}
public void setCustomerCompany(String customerCompany)
{
this.customerCompany = customerCompany;
}
public String getCustomerCompany()
{
return customerCompany;
}
public void setBusinessType(String businessType)
{
this.businessType = businessType;
}
public String getBusinessType()
{
return businessType;
}
public void setSaleEvaluation(String saleEvaluation)
{
this.saleEvaluation = saleEvaluation;
}
public String getSaleEvaluation()
{
return saleEvaluation;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("ledgerId", getLedgerId())
.append("projectType", getProjectType())
.append("date", getDate())
.append("projectName", getProjectName())
.append("charge", getCharge())
.append("chargePhone", getChargePhone())
.append("inquiryNo", getInquiryNo())
.append("customerManager", getCustomerManager())
.append("customerCompany", getCustomerCompany())
.append("businessType", getBusinessType())
.append("saleEvaluation", getSaleEvaluation())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}
package com.ruoyi.system.mapper;
import java.util.List;
import com.ruoyi.system.domain.FncCompany;
/**
* 记账公司Mapper接口
*
* @author ruoyi
* @date 2022-11-16
*/
public interface FncCompanyMapper
{
/**
* 查询记账公司
*
* @param companyId 记账公司主键
* @return 记账公司
*/
public FncCompany selectFncCompanyByCompanyId(Long companyId);
/**
* 查询记账公司列表
*
* @param fncCompany 记账公司
* @return 记账公司集合
*/
public List<FncCompany> selectFncCompanyList(FncCompany fncCompany);
/**
* 新增记账公司
*
* @param fncCompany 记账公司
* @return 结果
*/
public int insertFncCompany(FncCompany fncCompany);
/**
* 修改记账公司
*
* @param fncCompany 记账公司
* @return 结果
*/
public int updateFncCompany(FncCompany fncCompany);
/**
* 删除记账公司
*
* @param companyId 记账公司主键
* @return 结果
*/
public int deleteFncCompanyByCompanyId(Long companyId);
/**
* 批量删除记账公司
*
* @param companyIds 需要删除的数据主键集合
* @return 结果
*/
public int deleteFncCompanyByCompanyIds(Long[] companyIds);
}
package com.ruoyi.system.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.domain.FncLedger;
/**
* 项目台账Mapper接口
*
* @author ruoyi
* @date 2022-11-16
*/
public interface FncLedgerMapper extends BaseMapper<FncLedger>
{
/**
* 查询项目台账
*
* @param ledgerId 项目台账主键
* @return 项目台账
*/
public FncLedger selectFncLedgerByLedgerId(Long ledgerId);
/**
* 查询项目台账列表
*
* @param fncLedger 项目台账
* @return 项目台账集合
*/
public List<FncLedger> selectFncLedgerList(FncLedger fncLedger);
/**
* 新增项目台账
*
* @param fncLedger 项目台账
* @return 结果
*/
public int insertFncLedger(FncLedger fncLedger);
/**
* 修改项目台账
*
* @param fncLedger 项目台账
* @return 结果
*/
public int updateFncLedger(FncLedger fncLedger);
/**
* 删除项目台账
*
* @param ledgerId 项目台账主键
* @return 结果
*/
public int deleteFncLedgerByLedgerId(Long ledgerId);
/**
* 批量删除项目台账
*
* @param ledgerIds 需要删除的数据主键集合
* @return 结果
*/
public int deleteFncLedgerByLedgerIds(Long[] ledgerIds);
}
package com.ruoyi.system.service;
import java.util.List;
import com.ruoyi.system.domain.FncCompany;
/**
* 记账公司Service接口
*
* @author ruoyi
* @date 2022-11-16
*/
public interface IFncCompanyService
{
/**
* 查询记账公司
*
* @param companyId 记账公司主键
* @return 记账公司
*/
public FncCompany selectFncCompanyByCompanyId(Long companyId);
/**
* 查询记账公司列表
*
* @param fncCompany 记账公司
* @return 记账公司集合
*/
public List<FncCompany> selectFncCompanyList(FncCompany fncCompany);
/**
* 新增记账公司
*
* @param fncCompany 记账公司
* @return 结果
*/
public int insertFncCompany(FncCompany fncCompany);
/**
* 修改记账公司
*
* @param fncCompany 记账公司
* @return 结果
*/
public int updateFncCompany(FncCompany fncCompany);
/**
* 批量删除记账公司
*
* @param companyIds 需要删除的记账公司主键集合
* @return 结果
*/
public int deleteFncCompanyByCompanyIds(Long[] companyIds);
/**
* 删除记账公司信息
*
* @param companyId 记账公司主键
* @return 结果
*/
public int deleteFncCompanyByCompanyId(Long companyId);
}
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.system.domain.FncLedger;
import java.util.List;
/**
* 项目台账Service接口
*
* @author ruoyi
* @date 2022-11-16
*/
public interface IFncLedgerService extends IService<FncLedger>
{
/**
* 查询项目台账
*
* @param ledgerId 项目台账主键
* @return 项目台账
*/
public FncLedger selectFncLedgerByLedgerId(Long ledgerId);
/**
* 查询项目台账列表
*
* @param fncLedger 项目台账
* @return 项目台账集合
*/
public List<FncLedger> selectFncLedgerList(FncLedger fncLedger);
/**
* 新增项目台账
*
* @param fncLedger 项目台账
* @return 结果
*/
public int insertFncLedger(FncLedger fncLedger);
/**
* 修改项目台账
*
* @param fncLedger 项目台账
* @return 结果
*/
public int updateFncLedger(FncLedger fncLedger);
/**
* 批量删除项目台账
*
* @param ledgerIds 需要删除的项目台账主键集合
* @return 结果
*/
public int deleteFncLedgerByLedgerIds(Long[] ledgerIds);
/**
* 删除项目台账信息
*
* @param ledgerId 项目台账主键
* @return 结果
*/
public int deleteFncLedgerByLedgerId(Long ledgerId);
}
package com.ruoyi.system.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.FncCompanyMapper;
import com.ruoyi.system.domain.FncCompany;
import com.ruoyi.system.service.IFncCompanyService;
/**
* 记账公司Service业务层处理
*
* @author ruoyi
* @date 2022-11-16
*/
@Service
public class FncCompanyServiceImpl implements IFncCompanyService
{
@Autowired
private FncCompanyMapper fncCompanyMapper;
/**
* 查询记账公司
*
* @param companyId 记账公司主键
* @return 记账公司
*/
@Override
public FncCompany selectFncCompanyByCompanyId(Long companyId)
{
return fncCompanyMapper.selectFncCompanyByCompanyId(companyId);
}
/**
* 查询记账公司列表
*
* @param fncCompany 记账公司
* @return 记账公司
*/
@Override
public List<FncCompany> selectFncCompanyList(FncCompany fncCompany)
{
return fncCompanyMapper.selectFncCompanyList(fncCompany);
}
/**
* 新增记账公司
*
* @param fncCompany 记账公司
* @return 结果
*/
@Override
public int insertFncCompany(FncCompany fncCompany)
{
fncCompany.setCreateTime(DateUtils.getNowDate());
return fncCompanyMapper.insertFncCompany(fncCompany);
}
/**
* 修改记账公司
*
* @param fncCompany 记账公司
* @return 结果
*/
@Override
public int updateFncCompany(FncCompany fncCompany)
{
fncCompany.setUpdateTime(DateUtils.getNowDate());
return fncCompanyMapper.updateFncCompany(fncCompany);
}
/**
* 批量删除记账公司
*
* @param companyIds 需要删除的记账公司主键
* @return 结果
*/
@Override
public int deleteFncCompanyByCompanyIds(Long[] companyIds)
{
return fncCompanyMapper.deleteFncCompanyByCompanyIds(companyIds);
}
/**
* 删除记账公司信息
*
* @param companyId 记账公司主键
* @return 结果
*/
@Override
public int deleteFncCompanyByCompanyId(Long companyId)
{
return fncCompanyMapper.deleteFncCompanyByCompanyId(companyId);
}
}
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.domain.FncLedger;
import com.ruoyi.system.mapper.FncLedgerMapper;
import com.ruoyi.system.service.IFncLedgerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 项目台账Service业务层处理
*
* @author ruoyi
* @date 2022-11-16
*/
@Service
public class FncLedgerServiceImpl extends ServiceImpl<FncLedgerMapper,FncLedger> implements IFncLedgerService {
//
@Autowired
private FncLedgerMapper fncLedgerMapper;
/**
* 查询项目台账
*
* @param ledgerId 项目台账主键
* @return 项目台账
*/
@Override
public FncLedger selectFncLedgerByLedgerId(Long ledgerId)
{
return fncLedgerMapper.selectFncLedgerByLedgerId(ledgerId);
}
/**
* 查询项目台账列表
*
* @param fncLedger 项目台账
* @return 项目台账
*/
@Override
public List<FncLedger> selectFncLedgerList(FncLedger fncLedger)
{
return fncLedgerMapper.selectFncLedgerList(fncLedger);
}
/**
* 新增项目台账
*
* @param fncLedger 项目台账
* @return 结果
*/
@Override
public int insertFncLedger(FncLedger fncLedger)
{
fncLedger.setCreateTime(DateUtils.getNowDate());
return fncLedgerMapper.insertFncLedger(fncLedger);
}
/**
* 修改项目台账
*
* @param fncLedger 项目台账
* @return 结果
*/
@Override
public int updateFncLedger(FncLedger fncLedger)
{
fncLedger.setUpdateTime(DateUtils.getNowDate());
return fncLedgerMapper.updateFncLedger(fncLedger);
}
/**
* 批量删除项目台账
*
* @param ledgerIds 需要删除的项目台账主键
* @return 结果
*/
@Override
public int deleteFncLedgerByLedgerIds(Long[] ledgerIds)
{
return fncLedgerMapper.deleteFncLedgerByLedgerIds(ledgerIds);
}
/**
* 删除项目台账信息
*
* @param ledgerId 项目台账主键
* @return 结果
*/
@Override
public int deleteFncLedgerByLedgerId(Long ledgerId)
{
return fncLedgerMapper.deleteFncLedgerByLedgerId(ledgerId);
}
}
<?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.system.mapper.FncCompanyMapper">
<resultMap type="FncCompany" id="FncCompanyResult">
<result property="companyId" column="company_id" />
<result property="companyName" column="company_name" />
<result property="licenseNo" column="license_no" />
<result property="companyAddress" column="company_address" />
<result property="contactInformation" column="contact_information" />
<result property="bankDeposit" column="bank_deposit" />
<result property="bankAccountName" column="bank_account_name" />
<result property="bankAccount" column="bank_account" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectFncCompanyVo">
select company_id, company_name, license_no, company_address, contact_information, bank_deposit, bank_account_name, bank_account, create_by, create_time, update_by, update_time from fnc_company
</sql>
<select id="selectFncCompanyList" parameterType="FncCompany" resultMap="FncCompanyResult">
<include refid="selectFncCompanyVo"/>
<where>
<if test="companyName != null and companyName != ''"> and company_name like concat('%', #{companyName}, '%')</if>
<if test="licenseNo != null and licenseNo != ''"> and license_no = #{licenseNo}</if>
<if test="companyAddress != null and companyAddress != ''"> and company_address = #{companyAddress}</if>
<if test="contactInformation != null and contactInformation != ''"> and contact_information = #{contactInformation}</if>
<if test="bankDeposit != null and bankDeposit != ''"> and bank_deposit = #{bankDeposit}</if>
<if test="bankAccountName != null and bankAccountName != ''"> and bank_account_name like concat('%', #{bankAccountName}, '%')</if>
<if test="bankAccount != null and bankAccount != ''"> and bank_account = #{bankAccount}</if>
</where>
</select>
<select id="selectFncCompanyByCompanyId" parameterType="Long" resultMap="FncCompanyResult">
<include refid="selectFncCompanyVo"/>
where company_id = #{companyId}
</select>
<insert id="insertFncCompany" parameterType="FncCompany">
insert into fnc_company
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="companyId != null">company_id,</if>
<if test="companyName != null">company_name,</if>
<if test="licenseNo != null">license_no,</if>
<if test="companyAddress != null">company_address,</if>
<if test="contactInformation != null">contact_information,</if>
<if test="bankDeposit != null">bank_deposit,</if>
<if test="bankAccountName != null">bank_account_name,</if>
<if test="bankAccount != null">bank_account,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="companyId != null">#{companyId},</if>
<if test="companyName != null">#{companyName},</if>
<if test="licenseNo != null">#{licenseNo},</if>
<if test="companyAddress != null">#{companyAddress},</if>
<if test="contactInformation != null">#{contactInformation},</if>
<if test="bankDeposit != null">#{bankDeposit},</if>
<if test="bankAccountName != null">#{bankAccountName},</if>
<if test="bankAccount != null">#{bankAccount},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateFncCompany" parameterType="FncCompany">
update fnc_company
<trim prefix="SET" suffixOverrides=",">
<if test="companyName != null">company_name = #{companyName},</if>
<if test="licenseNo != null">license_no = #{licenseNo},</if>
<if test="companyAddress != null">company_address = #{companyAddress},</if>
<if test="contactInformation != null">contact_information = #{contactInformation},</if>
<if test="bankDeposit != null">bank_deposit = #{bankDeposit},</if>
<if test="bankAccountName != null">bank_account_name = #{bankAccountName},</if>
<if test="bankAccount != null">bank_account = #{bankAccount},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where company_id = #{companyId}
</update>
<delete id="deleteFncCompanyByCompanyId" parameterType="Long">
delete from fnc_company where company_id = #{companyId}
</delete>
<delete id="deleteFncCompanyByCompanyIds" parameterType="String">
delete from fnc_company where company_id in
<foreach item="companyId" collection="array" open="(" separator="," close=")">
#{companyId}
</foreach>
</delete>
</mapper>
\ No newline at end of file
<?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.system.mapper.FncLedgerMapper">
<resultMap type="FncLedger" id="FncLedgerResult">
<result property="ledgerId" column="ledger_id" />
<result property="projectType" column="project_type" />
<result property="date" column="date" />
<result property="projectName" column="project_name" />
<result property="charge" column="charge" />
<result property="chargePhone" column="charge_phone" />
<result property="inquiryNo" column="inquiry_no" />
<result property="customerManager" column="customer_manager" />
<result property="customerCompany" column="customer_company" />
<result property="businessType" column="business_type" />
<result property="saleEvaluation" column="sale_evaluation" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectFncLedgerVo">
select ledger_id, project_type, date, project_name, charge, charge_phone, inquiry_no, customer_manager, customer_company, business_type, sale_evaluation, create_by, create_time, update_by, update_time from fnc_ledger
</sql>
<select id="selectFncLedgerList" parameterType="FncLedger" resultMap="FncLedgerResult">
<include refid="selectFncLedgerVo"/>
<where>
<if test="projectType != null and projectType != ''"> and project_type = #{projectType}</if>
<if test="date != null "> and date = #{date}</if>
<if test="projectName != null and projectName != ''"> and project_name like concat('%', #{projectName}, '%')</if>
<if test="charge != null and charge != ''"> and charge = #{charge}</if>
<if test="chargePhone != null and chargePhone != ''"> and charge_phone = #{chargePhone}</if>
<if test="inquiryNo != null and inquiryNo != ''"> and inquiry_no = #{inquiryNo}</if>
<if test="customerManager != null and customerManager != ''"> and customer_manager = #{customerManager}</if>
<if test="customerCompany != null and customerCompany != ''"> and customer_company = #{customerCompany}</if>
<if test="businessType != null and businessType != ''"> and business_type = #{businessType}</if>
<if test="saleEvaluation != null and saleEvaluation != ''"> and sale_evaluation = #{saleEvaluation}</if>
<if test="createBy != null and createBy != ''"> and create_by = #{createBy}</if>
</where>
</select>
<select id="selectFncLedgerByLedgerId" parameterType="Long" resultMap="FncLedgerResult">
<include refid="selectFncLedgerVo"/>
where ledger_id = #{ledgerId}
</select>
<insert id="insertFncLedger" parameterType="FncLedger">
insert into fnc_ledger
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="ledgerId != null">ledger_id,</if>
<if test="projectType != null">project_type,</if>
<if test="date != null">date,</if>
<if test="projectName != null">project_name,</if>
<if test="charge != null">charge,</if>
<if test="chargePhone != null">charge_phone,</if>
<if test="inquiryNo != null">inquiry_no,</if>
<if test="customerManager != null">customer_manager,</if>
<if test="customerCompany != null">customer_company,</if>
<if test="businessType != null">business_type,</if>
<if test="saleEvaluation != null">sale_evaluation,</if>
<if test="createBy != null">createBy,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="ledgerId != null">#{ledgerId},</if>
<if test="projectType != null">#{projectType},</if>
<if test="date != null">#{date},</if>
<if test="projectName != null">#{projectName},</if>
<if test="charge != null">#{charge},</if>
<if test="chargePhone != null">#{chargePhone},</if>
<if test="inquiryNo != null">#{inquiryNo},</if>
<if test="customerManager != null">#{customerManager},</if>
<if test="customerCompany != null">#{customerCompany},</if>
<if test="businessType != null">#{businessType},</if>
<if test="saleEvaluation != null">#{saleEvaluation},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateFncLedger" parameterType="FncLedger">
update fnc_ledger
<trim prefix="SET" suffixOverrides=",">
<if test="projectType != null">project_type = #{projectType},</if>
<if test="date != null">date = #{date},</if>
<if test="projectName != null">project_name = #{projectName},</if>
<if test="charge != null">charge = #{charge},</if>
<if test="chargePhone != null">charge_phone = #{chargePhone},</if>
<if test="inquiryNo != null">inquiry_no = #{inquiryNo},</if>
<if test="customerManager != null">customer_manager = #{customerManager},</if>
<if test="customerCompany != null">customer_company = #{customerCompany},</if>
<if test="businessType != null">business_type = #{businessType},</if>
<if test="saleEvaluation != null">sale_evaluation = #{saleEvaluation},</if>
<if test="createBy != null">createBy = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where ledger_id = #{ledgerId}
</update>
<delete id="deleteFncLedgerByLedgerId" parameterType="Long">
delete from fnc_ledger where ledger_id = #{ledgerId}
</delete>
<delete id="deleteFncLedgerByLedgerIds" parameterType="String">
delete from fnc_ledger where ledger_id in
<foreach item="ledgerId" collection="array" open="(" separator="," close=")">
#{ledgerId}
</foreach>
</delete>
</mapper>
\ No newline at end of file
# 页面标题 # 页面标题
VUE_APP_TITLE = 若依管理系统 VUE_APP_TITLE = DBR财务中心
# 开发环境配置 # 开发环境配置
ENV = 'development' ENV = 'development'
# 若依管理系统/开发环境 # DBR财务中心/开发环境
VUE_APP_BASE_API = '/dev-api' VUE_APP_BASE_API = '/dev-api'
# 路由懒加载 # 路由懒加载
......
# 页面标题 # 页面标题
VUE_APP_TITLE = 若依管理系统 VUE_APP_TITLE = DBR财务中心
# 生产环境配置 # 生产环境配置
ENV = 'production' ENV = 'production'
# 若依管理系统/生产环境 # DBR财务中心/生产环境
VUE_APP_BASE_API = '/prod-api' VUE_APP_BASE_API = '/prod-api'
# 页面标题 # 页面标题
VUE_APP_TITLE = 若依管理系统 VUE_APP_TITLE = DBR财务中心
NODE_ENV = production NODE_ENV = production
# 测试环境配置 # 测试环境配置
ENV = 'staging' ENV = 'staging'
# 若依管理系统/测试环境 # DBR财务中心/测试环境
VUE_APP_BASE_API = '/stage-api' VUE_APP_BASE_API = '/stage-api'
{ {
"name": "ruoyi", "name": "ruoyi",
"version": "3.8.4", "version": "3.8.4",
"description": "若依管理系统", "description": "DBR财务中心",
"author": "若依", "author": "若依",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
......
import request from '@/utils/request'
// 查询记账公司列表
export function listCompany(query) {
return request({
url: '/finance/company/list',
method: 'get',
params: query
})
}
// 查询记账公司详细
export function getCompany(companyId) {
return request({
url: '/finance/company/' + companyId,
method: 'get'
})
}
// 新增记账公司
export function addCompany(data) {
return request({
url: '/finance/company',
method: 'post',
data: data
})
}
// 修改记账公司
export function updateCompany(data) {
return request({
url: '/finance/company',
method: 'put',
data: data
})
}
// 删除记账公司
export function delCompany(companyId) {
return request({
url: '/finance/company/' + companyId,
method: 'delete'
})
}
import request from '@/utils/request'
// 查询项目台账列表
export function listLedger(query) {
return request({
url: '/finance/ledger/list',
method: 'get',
params: query
})
}
// 查询项目台账详细
export function getLedger(ledgerId) {
return request({
url: '/finance/ledger/' + ledgerId,
method: 'get'
})
}
// 新增项目台账
export function addLedger(data) {
return request({
url: '/finance/ledger',
method: 'post',
data: data
})
}
// 修改项目台账
export function updateLedger(data) {
return request({
url: '/finance/ledger',
method: 'put',
data: data
})
}
// 删除项目台账
export function delLedger(ledgerId) {
return request({
url: '/finance/ledger/' + ledgerId,
method: 'delete'
})
}
...@@ -35,7 +35,7 @@ export default { ...@@ -35,7 +35,7 @@ export default {
}, },
data() { data() {
return { return {
title: '若依管理系统', title: 'DBR财务中心',
logo: logoImg logo: logoImg
} }
} }
......
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="记账公司名称" prop="companyName">
<el-input
v-model="queryParams.companyName"
placeholder="请输入记账公司名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="营业执照号" prop="licenseNo">
<el-input
v-model="queryParams.licenseNo"
placeholder="请输入营业执照号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="公司地址" prop="companyAddress">
<el-input
v-model="queryParams.companyAddress"
placeholder="请输入公司地址"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="联系方式" prop="contactInformation">
<el-input
v-model="queryParams.contactInformation"
placeholder="请输入联系方式"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="开户行" prop="bankDeposit">
<el-input
v-model="queryParams.bankDeposit"
placeholder="请输入开户行"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="银行账户名称" prop="bankAccountName">
<el-input
v-model="queryParams.bankAccountName"
placeholder="请输入银行账户名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="银行账户" prop="bankAccount">
<el-input
v-model="queryParams.bankAccount"
placeholder="请输入银行账户"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['finance:company:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['finance:company:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['finance:company:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['finance:company:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="companyList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="记账公司id" align="center" prop="companyId" />
<el-table-column label="记账公司名称" align="center" prop="companyName" />
<el-table-column label="营业执照号" align="center" prop="licenseNo" />
<el-table-column label="公司地址" align="center" prop="companyAddress" />
<el-table-column label="联系方式" align="center" prop="contactInformation" />
<el-table-column label="开户行" align="center" prop="bankDeposit" />
<el-table-column label="银行账户名称" align="center" prop="bankAccountName" />
<el-table-column label="银行账户" align="center" prop="bankAccount" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['finance:company:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['finance:company:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改记账公司对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="记账公司名称" prop="companyName">
<el-input v-model="form.companyName" placeholder="请输入记账公司名称" />
</el-form-item>
<el-form-item label="营业执照号" prop="licenseNo">
<el-input v-model="form.licenseNo" placeholder="请输入营业执照号" />
</el-form-item>
<el-form-item label="公司地址" prop="companyAddress">
<el-input v-model="form.companyAddress" placeholder="请输入公司地址" />
</el-form-item>
<el-form-item label="联系方式" prop="contactInformation">
<el-input v-model="form.contactInformation" placeholder="请输入联系方式" />
</el-form-item>
<el-form-item label="开户行" prop="bankDeposit">
<el-input v-model="form.bankDeposit" placeholder="请输入开户行" />
</el-form-item>
<el-form-item label="银行账户名称" prop="bankAccountName">
<el-input v-model="form.bankAccountName" placeholder="请输入银行账户名称" />
</el-form-item>
<el-form-item label="银行账户" prop="bankAccount">
<el-input v-model="form.bankAccount" placeholder="请输入银行账户" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listCompany, getCompany, delCompany, addCompany, updateCompany } from "@/api/finance/company";
export default {
name: "Company",
data() {
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 记账公司表格数据
companyList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
companyName: null,
licenseNo: null,
companyAddress: null,
contactInformation: null,
bankDeposit: null,
bankAccountName: null,
bankAccount: null,
},
// 表单参数
form: {},
// 表单校验
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询记账公司列表 */
getList() {
this.loading = true;
listCompany(this.queryParams).then(response => {
this.companyList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
companyId: null,
companyName: null,
licenseNo: null,
companyAddress: null,
contactInformation: null,
bankDeposit: null,
bankAccountName: null,
bankAccount: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.companyId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加记账公司";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const companyId = row.companyId || this.ids
getCompany(companyId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改记账公司";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.companyId != null) {
updateCompany(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addCompany(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const companyIds = row.companyId || this.ids;
this.$modal.confirm('是否确认删除记账公司编号为"' + companyIds + '"的数据项?').then(function() {
return delCompany(companyIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('finance/company/export', {
...this.queryParams
}, `company_${new Date().getTime()}.xlsx`)
}
}
};
</script>
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="68px">
<el-form-item label="日期" prop="date">
<el-date-picker clearable v-model="queryParams.date" type="date" value-format="yyyy-MM-dd"
placeholder="请选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="项目中/英文名称" prop="projectName">
<el-input v-model="queryParams.projectName" placeholder="请输入项目中/英文名称" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="项目负责人" prop="charge">
<el-input v-model="queryParams.charge" placeholder="请输入项目负责人" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="负责人电话" prop="chargePhone">
<el-input v-model="queryParams.chargePhone" placeholder="请输入负责人电话" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="询单编号" prop="inquiryNo">
<el-input v-model="queryParams.inquiryNo" placeholder="请输入询单编号" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="客户经理" prop="customerManager">
<el-input v-model="queryParams.customerManager" placeholder="请输入客户经理" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="客户单位" prop="customerCompany">
<el-input v-model="queryParams.customerCompany" placeholder="请输入客户单位" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="销售额评估" prop="saleEvaluation">
<el-input v-model="queryParams.saleEvaluation" placeholder="请输入销售额评估" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="创建人" prop="createby">
<el-input v-model="queryParams.createby" placeholder="请输入创建人" clearable
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索
</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['finance:ledger:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single"
@click="handleUpdate" v-hasPermi="['finance:ledger:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple"
@click="handleDelete" v-hasPermi="['finance:ledger:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
v-hasPermi="['finance:ledger:export']">导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="info" icon="el-icon-upload2" size="mini" @click="handleImport">导入
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<!-- 用户导入对话框 -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px">
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading" :on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess" :auto-upload="false" drag>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处,或
<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
<el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
</div>
<div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
<el-table v-loading="loading" :data="ledgerList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="项目台账id" align="center" prop="ledgerId" />
<el-table-column label="分类" align="center" prop="projectType" />
<el-table-column label="日期" align="center" prop="date" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.date, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="项目中/英文名称" align="center" prop="projectName" />
<el-table-column label="项目负责人" align="center" prop="charge" />
<el-table-column label="负责人电话" align="center" prop="chargePhone" />
<el-table-column label="询单编号" align="center" prop="inquiryNo" />
<el-table-column label="客户经理" align="center" prop="customerManager" />
<el-table-column label="客户单位" align="center" prop="customerCompany" />
<el-table-column label="业务性质" align="center" prop="businessType" />
<el-table-column label="销售额评估" align="center" prop="saleEvaluation" />
<el-table-column label="创建人" align="center" prop="createby" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['finance:ledger:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['finance:ledger:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改项目台账对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="日期" prop="date">
<el-date-picker clearable v-model="form.date" type="date" value-format="yyyy-MM-dd"
placeholder="请选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="台账分类" prop="projectName">
<el-input v-model="form.projectType" placeholder="请输入台账分类" />
</el-form-item>
<el-form-item label="项目中/英文名称" prop="projectName">
<el-input v-model="form.projectName" placeholder="请输入项目中/英文名称" />
</el-form-item>
<el-form-item label="项目负责人" prop="charge">
<el-input v-model="form.charge" placeholder="请输入项目负责人" />
</el-form-item>
<el-form-item label="负责人电话" prop="chargePhone">
<el-input v-model="form.chargePhone" placeholder="请输入负责人电话" />
</el-form-item>
<el-form-item label="询单编号" prop="inquiryNo">
<el-input v-model="form.inquiryNo" placeholder="请输入询单编号" />
</el-form-item>
<el-form-item label="客户经理" prop="customerManager">
<el-input v-model="form.customerManager" placeholder="请输入客户经理" />
</el-form-item>
<el-form-item label="客户单位" prop="customerCompany">
<el-input v-model="form.customerCompany" placeholder="请输入客户单位" />
</el-form-item>
<el-form-item label="业务性质" prop="businessType">
<el-input v-model="form.businessType" placeholder="请输入业务性质" />
</el-form-item>
<el-form-item label="销售额评估" prop="saleEvaluation">
<el-input v-model="form.saleEvaluation" placeholder="请输入销售额评估" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listLedger,
getLedger,
delLedger,
addLedger,
updateLedger,
} from "@/api/finance/ledger";
import { getToken } from "@/utils/auth";
export default {
name: "Ledger",
data() {
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 项目台账表格数据
ledgerList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
projectType: null,
date: null,
projectName: null,
charge: null,
chargePhone: null,
inquiryNo: null,
customerManager: null,
customerCompany: null,
businessType: null,
saleEvaluation: null,
createby: null,
},
// 用户导入参数
upload: {
// 是否显示弹出层(用户导入)
open: false,
// 弹出层标题(用户导入)
title: "",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的用户数据
updateSupport: 0,
// 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() },
// 上传的地址
url: process.env.VUE_APP_BASE_API + "/finance/ledger/import",
},
// 表单参数
form: {},
// 表单校验
rules: {},
};
},
created() {
this.getList();
},
methods: {
/** 导入按钮操作 */
handleImport() {
this.upload.title = "用户导入";
this.upload.open = true;
},
/** 下载模板操作 */
importTemplate() {
importTemplate().then((response) => {
this.download(response.msg);
});
},
// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getList();
},
// 提交上传文件
submitFileForm() {
this.$refs.upload.submit();
},
/** 查询项目台账列表 */
getList() {
this.loading = true;
listLedger(this.queryParams).then((response) => {
this.ledgerList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
ledgerId: null,
projectType: null,
date: null,
projectName: null,
charge: null,
chargePhone: null,
inquiryNo: null,
customerManager: null,
customerCompany: null,
businessType: null,
saleEvaluation: null,
createby: null,
createTime: null,
updateBy: null,
updateTime: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.ledgerId);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加项目台账";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const ledgerId = row.ledgerId || this.ids;
getLedger(ledgerId).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改项目台账";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.ledgerId != null) {
updateLedger(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addLedger(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ledgerIds = row.ledgerId || this.ids;
this.$modal
.confirm('是否确认删除项目台账编号为"' + ledgerIds + '"的数据项?')
.then(function () {
return delLedger(ledgerIds);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"finance/ledger/export",
{
...this.queryParams,
},
`ledger_${new Date().getTime()}.xlsx`
);
},
},
};
</script>
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
<el-col :sm="24" :lg="12" style="padding-left: 20px"> <el-col :sm="24" :lg="12" style="padding-left: 20px">
<h2>若依后台管理框架</h2> <h2>若依后台管理框架</h2>
<p> <p>
一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。 一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了DBR财务中心,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
</p> </p>
<p> <p>
<b>当前版本:</b> <span>v{{ version }}</span> <b>当前版本:</b> <span>v{{ version }}</span>
......
...@@ -7,7 +7,7 @@ function resolve(dir) { ...@@ -7,7 +7,7 @@ function resolve(dir) {
const CompressionPlugin = require('compression-webpack-plugin') const CompressionPlugin = require('compression-webpack-plugin')
const name = process.env.VUE_APP_TITLE || '若依管理系统' // 网页标题 const name = process.env.VUE_APP_TITLE || 'DBR财务中心' // 网页标题
const port = process.env.port || process.env.npm_config_port || 80 // 端口 const port = process.env.port || process.env.npm_config_port || 80 // 端口
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment