Commit 22e78965 authored by jianglingfeng's avatar jianglingfeng

默认变更列表

parent 74ba681f
......@@ -22,9 +22,11 @@
<bitwalker.version>1.21</bitwalker.version>
<swagger.version>3.0.0</swagger.version>
<kaptcha.version>2.3.2</kaptcha.version>
<mybatis-spring-boot.version>2.2.2</mybatis-spring-boot.version>
<pagehelper.boot.version>1.4.5</pagehelper.boot.version>
<fastjson.version>2.0.16</fastjson.version>
<lombok.version>1.18.20</lombok.version>
<hutool.version>5.7.2</hutool.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>
<commons.io.version>2.11.0</commons.io.version>
<commons.fileupload.version>1.4</commons.fileupload.version>
......@@ -54,6 +56,14 @@
<version>${druid.version}</version>
</dependency>
<!-- mybatis-plus 增强CRUD -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus-spring-boot.version}</version>
</dependency>
<!-- 解析客户端操作系统、浏览器等 -->
<dependency>
<groupId>eu.bitwalker</groupId>
......@@ -61,12 +71,6 @@
<version>${bitwalker.version}</version>
</dependency>
<!-- SpringBoot集成mybatis框架 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot.version}</version>
</dependency>
<!-- pagehelper 分页插件 -->
<dependency>
......@@ -75,6 +79,7 @@
<version>${pagehelper.boot.version}</version>
</dependency>
<!-- 获取系统信息 -->
<dependency>
<groupId>com.github.oshi</groupId>
......@@ -151,6 +156,20 @@
<version>${kaptcha.version}</version>
</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>
<groupId>com.ruoyi</groupId>
......@@ -196,6 +215,7 @@
<module>ruoyi-quartz</module>
<module>ruoyi-generator</module>
<module>ruoyi-common</module>
<module>ruoyi-finance</module>
</modules>
<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:
druid:
# 主库数据源
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
password: password
password: root
# 从库数据源
slave:
# 从数据源开关/默认关闭
......
......@@ -100,13 +100,30 @@ token:
expireTime: 30
# MyBatis配置
mybatis:
#mybatis:
# # 搜索指定包别名
# typeAliasesPackage: com.ruoyi.**.domain
# # 配置mapper的扫描,找到所有的mapper.xml映射文件
# mapperLocations: classpath*:mapper/**/*Mapper.xml
# # 加载全局的配置文件
# configLocation: classpath:mybatis/mybatis-config.xml
# MyBatisPlus配置
mybatis-plus:
# 搜索指定包别名
typeAliasesPackage: com.ruoyi.**.domain
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件
configLocation: classpath:mybatis/mybatis-config.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:
......
<?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 @@
<dependencies>
<!-- Spring框架基本的核心工具 -->
<dependency>
<groupId>org.springframework</groupId>
......@@ -125,6 +126,27 @@
<artifactId>javax.servlet-api</artifactId>
</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>
</project>
\ No newline at end of file
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.util.Date;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
/**
* Entity基类
*
* @author ruoyi
*/
public class BaseEntity implements Serializable
{
@Data
public class BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/** 搜索值 */
@JsonIgnore
/**
* 搜索值
*/
@TableField(exist = false)
private String searchValue;
/** 创建者 */
/**
* 创建者
*/
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/** 更新者 */
/**
* 更新者
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
/** 更新时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
/** 备注 */
private String remark;
/** 请求参数 */
@JsonInclude(JsonInclude.Include.NON_EMPTY)
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;
}
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;
}
/**
* 请求参数
*/
@TableField(exist = false)
private Map<String, Object> params = new HashMap<>();
public Map<String, Object> getParams()
{
if (params == null)
{
params = new HashMap<>();
}
return params;
}
/**
* 请求参数
*/
@TableField(exist = false)
private String remark;
public void setParams(Map<String, Object> params)
{
this.params = params;
}
}
......@@ -31,7 +31,8 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
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",
"yyyyMMdd"};
/**
* 获取当前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 @@
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-system</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
</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:
# 作者
author: ruoyi
author: jlf
# 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
packageName: com.ruoyi.system
# 自动去除表前缀,默认是false
......
package ${packageName}.domain;
#foreach ($import in $importList)
import ${import};
#end
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
#foreach ($import in $importList)
import ${import};
#end
import com.ruoyi.common.annotation.Excel;
#if($table.crud || $table.sub)
import com.ruoyi.common.core.domain.BaseEntity;
#elseif($table.tree)
import com.ruoyi.common.core.domain.TreeEntity;
#end
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
#if($table.crud || $table.sub)
import com.ruoyi.common.core.domain.BaseEntity;
#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}
......@@ -19,87 +23,49 @@ import com.ruoyi.common.core.domain.TreeEntity;
* @date ${datetime}
*/
#if($table.crud || $table.sub)
#set($Entity="BaseEntity")
#set($Entity="BaseEntity")
#elseif($table.tree)
#set($Entity="TreeEntity")
#set($Entity="TreeEntity")
#end
public class ${ClassName} extends ${Entity}
{
private static final long serialVersionUID = 1L;
@Data
@Accessors(chain = true)
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class ${ClassName} extends ${Entity} {
#foreach ($column in $columns)
#if(!$table.isSuperColumn($column.javaField))
/** $column.columnComment */
#if($column.list)
#set($parentheseIndex=$column.columnComment.indexOf("("))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if($parentheseIndex != -1)
#if(!$table.isSuperColumn($column.javaField))
/**
* $column.columnComment
*/
#if($column.list)
#set($parentheseIndex=$column.columnComment.indexOf("("))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if($parentheseIndex != -1)
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
#elseif($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
#else
#elseif($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
#else
@Excel(name = "${comment}")
#end
#end
#end
#end
#if($column.javaField == 'deleteStatus')
@TableField(fill = FieldFill.INSERT)
#end
private $column.javaType $column.javaField;
#end
#end
#end
#if($table.sub)
/** $table.subTable.functionName信息 */
private List<${subClassName}> ${subclassName}List;
#end
#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;
}
/**
* $table.subTable.functionName信息
*/
private List<${subClassName}> ${subclassName}List;
#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;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import ${packageName}.domain.${ClassName};
#if($table.sub)
import ${packageName}.domain.${subClassName};
#end
import ${packageName}.vo.${ClassName}Vo;
#if($table.sub)
import ${packageName}.domain.${subClassName};
#end
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* ${functionName}Mapper接口
......@@ -12,80 +17,12 @@ import ${packageName}.domain.${subClassName};
* @author ${author}
* @date ${datetime}
*/
public interface ${ClassName}Mapper
{
/**
* 查询${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});
public interface ${ClassName}Mapper extends BaseMapper<${ClassName}> {
/**
* 删除${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return 结果
*/
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
Page<${ClassName}Vo> queryList(Page<?> page, @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)
List<${ClassName}Vo> queryList(@Param("entity") ${ClassName}Vo entity);
/**
* 批量删除${subTable.functionName}
*
* @param ${pkColumn.javaField}s 需要删除的数据主键集合
* @return 结果
*/
public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
${ClassName}Vo queryById(@Param("id") ${pkColumn.javaType} ${pkColumn.javaField});
/**
* 批量新增${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;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.page.TableDataInfo;
import ${packageName}.domain.${ClassName};
import ${packageName}.vo.${ClassName}Vo;
import java.util.List;
/**
* ${functionName}Service接口
......@@ -9,53 +13,29 @@ import ${packageName}.domain.${ClassName};
* @author ${author}
* @date ${datetime}
*/
public interface I${ClassName}Service
{
/**
* 查询${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});
public interface I${ClassName}Service extends IService<${ClassName}> {
/**
* 修改${functionName}
* 分页查询
*
* @param ${className} ${functionName}
* @return 结果
* @param entity
* @return
*/
public int update${ClassName}(${ClassName} ${className});
TableDataInfo<${ClassName}Vo> queryList(${ClassName}Vo entity);
/**
* 批量删除${functionName}
* 查询全部
*
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合
* @return 结果
* @param entity
* @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}主键
* @return 结果
* @param ${pkColumn.javaField}
* @return
*/
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
${ClassName}Vo queryById(Long ${pkColumn.javaField});
}
package ${packageName}.service.impl;
import java.util.List;
#foreach ($column in $columns)
#if($column.javaField == 'createTime' || $column.javaField == 'updateTime')
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 com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.PageUtils;
import ${packageName}.domain.${ClassName};
import ${packageName}.vo.${ClassName}Vo;
import ${packageName}.mapper.${ClassName}Mapper;
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业务层处理
......@@ -26,144 +22,20 @@ import ${packageName}.service.I${ClassName}Service;
* @date ${datetime}
*/
@Service
public class ${ClassName}ServiceImpl 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});
}
public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}> implements I${ClassName}Service {
/**
* 查询${functionName}列表
*
* @param ${className} ${functionName}
* @return ${functionName}
*/
@Override
public List<${ClassName}> select${ClassName}List(${ClassName} ${className})
{
return ${className}Mapper.select${ClassName}List(${className});
public TableDataInfo<${ClassName}Vo> queryList(${ClassName}Vo entity) {
return PageUtils.buildDataInfo(this.baseMapper.queryList(PageUtils.buildPage(), entity));
}
/**
* 新增${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override
public int insert${ClassName}(${ClassName} ${className})
{
#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
public List<${ClassName}Vo> queryAll(${ClassName}Vo entity) {
return this.baseMapper.queryList(entity);
}
/**
* 修改${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override
public int update${ClassName}(${ClassName} ${className})
{
#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);
}
}
public ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}) {
return this.baseMapper.queryById(${pkColumn.javaField});
}
#end
}
package ${packageName}.domain;
#foreach ($import in $subImportList)
import ${import};
#end
#foreach ($import in $subImportList)
import ${import};
#end
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
......@@ -15,39 +15,39 @@ import com.ruoyi.common.core.domain.BaseEntity;
* @date ${datetime}
*/
public class ${subClassName} extends BaseEntity
{
private static final long serialVersionUID = 1L;
{
private static final long serialVersionUID = 1L;
#foreach ($column in $subTable.columns)
#if(!$table.isSuperColumn($column.javaField))
#if(!$table.isSuperColumn($column.javaField))
/** $column.columnComment */
#if($column.list)
#set($parentheseIndex=$column.columnComment.indexOf("("))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if($parentheseIndex != -1)
#if($column.list)
#set($parentheseIndex=$column.columnComment.indexOf("("))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if($parentheseIndex != -1)
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
#elseif($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
#else
#elseif($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
#else
@Excel(name = "${comment}")
#end
#end
#end
#end
private $column.javaType $column.javaField;
#end
#end
#end
#foreach ($column in $subTable.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
#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;
......@@ -57,20 +57,20 @@ public class ${subClassName} extends BaseEntity
{
return $column.javaField;
}
#end
#end
#end
@Override
public String toString() {
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
#foreach ($column in $subTable.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
#foreach ($column in $subTable.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
#end
.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" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<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">
<collection property="${subclassName}List" notNullColumn="sub_${subTable.pkColumn.columnName}" javaType="java.util.List" resultMap="${subClassName}Result" />
</resultMap>
<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 id="querySql">
select <include refid="allField"/>
from ${tableName} A
<include refid="search"/>
</sql>
<select id="select${ClassName}List" parameterType="${ClassName}" resultMap="${ClassName}Result">
<include refid="select${ClassName}Vo"/>
<where>
#foreach($column in $columns)
#set($queryType=$column.queryType)
#set($javaField=$column.javaField)
#set($javaType=$column.javaType)
#set($columnName=$column.columnName)
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#if($column.query)
#if($column.queryType == "EQ")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName = #{$javaField}</if>
#elseif($queryType == "NE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName != #{$javaField}</if>
#elseif($queryType == "GT")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &gt; #{$javaField}</if>
#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 id="queryList" resultType="${packageName}.vo.${ClassName}Vo">
<include refid="querySql"/>
#foreach ($column in $columns)
#if($column.query)
#if($column.javaType == 'String')
<if test="entity.$column.javaField != null and entity.$column.javaField != ''">
and A.${column.columnName} like concat('%', #{entity.$column.javaField}, '%')
</if>
#else
<if test="entity.$column.javaField != null and entity.$column.javaField != 0">
and A.${column.columnName} = #{entity.$column.javaField}
</if>
#end
#end
#end
order by A.create_time desc
</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
left join ${subTableName} b on b.${subTableFkName} = a.${pkColumn.columnName}
where a.${pkColumn.columnName} = #{${pkColumn.javaField}}
#end
<select id="queryById" resultType="${packageName}.vo.${ClassName}Vo">
<include refid="querySql"/>
and A.id = #{id}
</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">
delete from ${tableName} where ${pkColumn.columnName} in
<foreach item="${pkColumn.javaField}" collection="array" open="(" separator="," close=")">
#{${pkColumn.javaField}}
</foreach>
</delete>
#if($table.sub)
<delete id="delete${subClassName}By${subTableFkClassName}s" parameterType="String">
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>
<sql id="allField">
#foreach ($column in $columns)
#if($foreach.hasNext)
A.${column.columnName},
#else
A.${column.columnName}
#end
#end
</sql>
<insert id="batch${subClassName}">
insert into ${subTableName}(#foreach($column in $subTable.columns) $column.columnName#if($foreach.count != $subTable.columns.size()),#end#end) values
<foreach item="item" index="index" collection="list" separator=",">
(#foreach($column in $subTable.columns) #{item.$column.javaField}#if($foreach.count != $subTable.columns.size()),#end#end)
</foreach>
</insert>
#end
<sql id="search">
where A.delete_status = 1
</sql>
</mapper>
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'
# 若依管理系统/开发环境
# DBR财务中心/开发环境
VUE_APP_BASE_API = '/dev-api'
# 路由懒加载
......
# 页面标题
VUE_APP_TITLE = 若依管理系统
VUE_APP_TITLE = DBR财务中心
# 生产环境配置
ENV = 'production'
# 若依管理系统/生产环境
# DBR财务中心/生产环境
VUE_APP_BASE_API = '/prod-api'
# 页面标题
VUE_APP_TITLE = 若依管理系统
VUE_APP_TITLE = DBR财务中心
NODE_ENV = production
# 测试环境配置
ENV = 'staging'
# 若依管理系统/测试环境
# DBR财务中心/测试环境
VUE_APP_BASE_API = '/stage-api'
{
"name": "ruoyi",
"version": "3.8.4",
"description": "若依管理系统",
"description": "DBR财务中心",
"author": "若依",
"license": "MIT",
"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 {
},
data() {
return {
title: '若依管理系统',
title: 'DBR财务中心',
logo: logoImg
}
}
......
This diff is collapsed.
This diff is collapsed.
......@@ -41,7 +41,7 @@
<el-col :sm="24" :lg="12" style="padding-left: 20px">
<h2>若依后台管理框架</h2>
<p>
一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了DBR财务中心,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
</p>
<p>
<b>当前版本:</b> <span>v{{ version }}</span>
......
......@@ -7,7 +7,7 @@ function resolve(dir) {
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 // 端口
......
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