转移阵地

master
chenda 3 years ago
commit 37ee5b7236

57
.gitignore vendored

@ -0,0 +1,57 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 Guazi-cc
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

@ -0,0 +1,2 @@
# ncda-admin
A simple admin system

@ -0,0 +1,67 @@
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.ncda</groupId>
<artifactId>ncda-admin-backend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ncda-admin-backend</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.5.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

@ -0,0 +1,15 @@
package com.ncda;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.ncda.dao")
public class NcdaAdminBackendApplication {
public static void main(String[] args) {
SpringApplication.run(NcdaAdminBackendApplication.class, args);
}
}

@ -0,0 +1,57 @@
package com.ncda.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import java.net.UnknownHostException;
@Configuration
public class RedisConfig {
// 编写我们自己的 redisTemplate
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory)
throws UnknownHostException {
// 我们为了自己开发方便,一般直接使用 <String, Object>
RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
template.setConnectionFactory(factory);
// Json序列化配置
// 将对象变成 JSON 序列化
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
// 进行转义
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,
ObjectMapper.DefaultTyping.NON_FINAL,
JsonTypeInfo.As.WRAPPER_ARRAY);
jackson2JsonRedisSerializer.setObjectMapper(om);
// String 的序列化
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// key采用String的序列化方式
template.setKeySerializer(stringRedisSerializer);
// hash的key也采用String的序列化方式
template.setHashKeySerializer(stringRedisSerializer);
// value序列化方式采用jackson
template.setValueSerializer(jackson2JsonRedisSerializer);
// hash的value序列化方式采用jackson
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}

@ -0,0 +1,189 @@
package com.ncda.controller;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ncda.entity.ext.*;
import com.ncda.entity.result.ResultData;
import com.ncda.service.AcBiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@RestController
@RequestMapping("/acbi")
public class AcBiController {
private final AcBiService acBiService;
@Autowired
public AcBiController(AcBiService acBiService) {
this.acBiService = acBiService;
}
@PostMapping("/getAccountBill")
public ResultData getAccountBill(@RequestBody ExtAccountBill accountBill) {
PageHelper.startPage(accountBill.getCurrentPage(), accountBill.getPageSize());
List<ExtAccountBill> bills = acBiService.getAccountBill(accountBill);
PageInfo<ExtAccountBill> pageInfo = new PageInfo<>(bills);
return ResultData.createSuccessResultData("查询成功", pageInfo, pageInfo.getTotal());
}
@PostMapping("/updateAcBiData")
public ResultData updateAcBiData(@RequestBody ExtAccountBill accountBill) {
Integer num = acBiService.updateAcBiData(accountBill);
if (num == 1) {
return ResultData.createSuccessResult("更新成功", num);
}
return ResultData.createFailResultData("更新失败");
}
@PostMapping("fileUpload")
public ResultData fileUpload(@RequestParam("file") MultipartFile file) {
String fileName = file.getOriginalFilename();
assert fileName != null;
String suffix = fileName.substring(fileName.lastIndexOf("."));
if(".txt".equals(suffix)) {
try {
List<ExtAccountBill> bills = acBiService.fileUpload(file.getInputStream());
return ResultData.createSuccessResultData("文件解析成功", bills, (long) bills.size());
} catch (Exception e) {
e.printStackTrace();
return ResultData.createFailResultData(e.getMessage());
}
}
return ResultData.createFailResultData("格式不正确只接收txt格式文件");
}
@PostMapping("/textUpload")
public ResultData textUpload(@RequestBody ExtAccountBill accountBill) {
try {
List<ExtAccountBill> bills = acBiService.textUpload(accountBill.getText());
return ResultData.createSuccessResultData("文本解析成功", bills, (long) bills.size());
} catch (Exception e) {
e.printStackTrace();
return ResultData.createFailResultData(e.getMessage());
}
}
@PostMapping("/saveUploadData")
public ResultData saveUploadData(@RequestBody List<ExtAccountBill> accountBills) {
ResultData resultData = acBiService.saveUploadData(accountBills);
if (resultData.isSuccess()) {
return resultData;
}
return resultData;
}
@PostMapping("/saveNewData")
public ResultData saveNewData(@RequestBody List<ExtAccountBill> accountBills) {
return acBiService.saveNewData(accountBills);
}
@GetMapping("/getOneType")
public ResultData getOneType() {
List<ExtAccountBillType> accountBillTypes = acBiService.selectLevelOneType();
return ResultData.createSuccessResult("一级分类查询成功", accountBillTypes);
}
@PostMapping("/saveType")
public ResultData saveType(@RequestBody ExtAccountBillType accountBillType) {
if (acBiService.saveType(accountBillType) > 0) {
return ResultData.createSuccessResult("分类保存成功", true);
}
return ResultData.createFailResultData("分类保存失败");
}
@PostMapping("/updateType")
public ResultData updateType(@RequestBody ExtAccountBillType accountBillType) {
if (acBiService.updateType(accountBillType) > 0) {
return ResultData.createSuccessResult("分类更新成功", true);
}
return ResultData.createFailResultData("分类更新失败");
}
@GetMapping("/deleteType")
public ResultData deleteType(String typeId) {
Integer integer = acBiService.deleteType(typeId);
if (integer > 0) {
return ResultData.createSuccessResult("分类删除成功", true);
}
return ResultData.createFailResultData("分类删除失败");
}
// 暂未用到
@GetMapping("/getAllYearAndMonth")
public ResultData getAllYearAndMonth() {
List<ExtAccountBillUploadRecord> allYearAndMonth = acBiService.getAllYearAndMonth();
return ResultData.createSuccessResult("查询成功", allYearAndMonth);
}
@PostMapping("/selectBarChartData")
public ResultData selectBarChartData(@RequestBody ExtAccountBill accountBill) {
List<ChartEntiey> chartEntieyList = acBiService.selectBarChartData(accountBill);
return ResultData.createSuccessResult("柱状图信息查询成功", chartEntieyList);
}
@PostMapping("/selectCalendarHeatmapChartData")
public ResultData selectCalendarHeatmapChartData(@RequestBody ExtAccountBill accountBill) {
List<ChartEntiey> chartEntieyList = acBiService.selectCalendarHeatmapChartData(accountBill);
return ResultData.createSuccessResult("日历热力图信息查询成功", chartEntieyList);
}
@PostMapping("/saveAdvancedSetting")
public ResultData saveAdvancedSetting(@RequestBody AdvancedSetting advancedSetting) {
if (acBiService.saveAdvancedSetting(advancedSetting)) {
return ResultData.createSuccessResult("高级设置保存成功", true);
}
return ResultData.createFailResultData("高级设置保存失败");
}
@GetMapping("/getAdvancedSetting")
public ResultData getAdvancedSetting() {
AdvancedSetting advancedSetting = acBiService.getAdvancedSetting();
return ResultData.createSuccessResult("高级设置获取成功", advancedSetting);
}
@GetMapping("/getCurrentFileUploadTimeLine")
public ResultData getCurrentFileUploadTimeLine() {
List<ExtAccountBillUploadRecord> currentFileUploadTimeLine = acBiService.getCurrentFileUploadTimeLine();
return ResultData.createSuccessResult("获取当前上传文件时间线成功", currentFileUploadTimeLine);
}
@PostMapping("/getHistoryFileUploadTimeLine")
public ResultData getHistoryFileUploadTimeLine(@RequestBody ExtAccountBillUploadRecord accountBillUploadRecord) {
List<ExtAccountBillUploadRecord> historyFileUploadTimeLine = acBiService.getHistoryFileUploadTimeLine(accountBillUploadRecord);
return ResultData.createSuccessResult("历史上传文件时间线查询成功", historyFileUploadTimeLine);
}
@PostMapping("/deletePrimaryData")
public ResultData deletePrimaryData(@RequestBody ExtAccountBillUploadRecord accountBillUploadRecord) {
Integer integer = acBiService.deletePrimaryData(accountBillUploadRecord);
if (integer > 0) {
return ResultData.createSuccessResult("主要数据及其关联数据删除成功", true);
}
return ResultData.createFailResultData("主要数据及其关联数据删除失败");
}
@GetMapping("/deleteHistoryData")
public ResultData deleteHistoryData(String id) {
Integer integer = acBiService.deleteHistoryData(id);
if (integer > 0) {
return ResultData.createSuccessResult("历史上传数据删除成功", integer);
}
return ResultData.createFailResultData("历史上传数据删除失败");
}
@GetMapping("/getWordCloudData")
public ResultData getWordCloudData() {
List<ChartEntiey> wordCloudData = acBiService.getWordCloudData();
return ResultData.createSuccessResult("WordCloud数据查询成功", wordCloudData);
}
@GetMapping("/getPieChartDataByYear")
public ResultData getPieChartDataByYear(String year) {
List<ChartEntiey> pieChartData = acBiService.getPieChartDataByYear(year);
return ResultData.createSuccessResult("pie图按年份查成功了", pieChartData);
}
}

@ -0,0 +1,57 @@
package com.ncda.controller;
import com.ncda.entity.ext.ExtTodoList;
import com.ncda.entity.result.ResultData;
import com.ncda.service.HomeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/home")
public class HomeController {
private final HomeService homeService;
@Autowired
public HomeController(HomeService homeService) {
this.homeService = homeService;
}
@GetMapping("/getTodoList")
public ResultData getTodoList() {
List<ExtTodoList> todoList = homeService.getTodoList();
return ResultData.createSuccessResult("success", todoList);
}
@PostMapping("/addTodoList")
public ResultData addTodoList(@RequestBody ExtTodoList todoList) {
Integer integer = homeService.addTodoList(todoList);
return ResultData.createSuccessResult("success", integer);
}
@PostMapping("/updateTodoList")
public ResultData updateTodoList(@RequestBody ExtTodoList todoList) {
Integer integer = homeService.updateTodoList(todoList);
return ResultData.createSuccessResult("success", integer);
}
@PostMapping("/removeTodoList")
public ResultData removeTodoList(@RequestBody ExtTodoList todoList) {
Integer integer = homeService.removeTodoList(todoList);
return ResultData.createSuccessResult("success", integer);
}
@PostMapping("/recoverTodoList")
public ResultData recoverTodoList(@RequestBody ExtTodoList todoList) {
Integer integer = homeService.recoverTodoList(todoList);
return ResultData.createSuccessResult("success", integer);
}
@PostMapping("/deleteTodoList")
public ResultData deleteTodoList(@RequestBody ExtTodoList todoList) {
Integer integer = homeService.deleteTodoList(todoList);
return ResultData.createSuccessResult("success", integer);
}
}

@ -0,0 +1,53 @@
package com.ncda.dao;
import com.ncda.entity.AccountBill;
public interface AccountBillMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
int deleteByPrimaryKey(Integer id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
int insert(AccountBill record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
int insertSelective(AccountBill record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
AccountBill selectByPrimaryKey(Integer id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
int updateByPrimaryKeySelective(AccountBill record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
int updateByPrimaryKey(AccountBill record);
}

@ -0,0 +1,53 @@
package com.ncda.dao;
import com.ncda.entity.AccountBillType;
public interface AccountBillTypeMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill_type
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
int deleteByPrimaryKey(Integer typeId);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill_type
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
int insert(AccountBillType record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill_type
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
int insertSelective(AccountBillType record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill_type
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
AccountBillType selectByPrimaryKey(Integer typeId);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill_type
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
int updateByPrimaryKeySelective(AccountBillType record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill_type
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
int updateByPrimaryKey(AccountBillType record);
}

@ -0,0 +1,61 @@
package com.ncda.dao;
import com.ncda.entity.AccountBillUploadRecord;
public interface AccountBillUploadRecordMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill_upload_record
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
int deleteByPrimaryKey(Integer id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill_upload_record
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
int insert(AccountBillUploadRecord record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill_upload_record
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
int insertSelective(AccountBillUploadRecord record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill_upload_record
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
AccountBillUploadRecord selectByPrimaryKey(Integer id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill_upload_record
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
int updateByPrimaryKeySelective(AccountBillUploadRecord record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill_upload_record
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
int updateByPrimaryKeyWithBLOBs(AccountBillUploadRecord record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table account_bill_upload_record
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
int updateByPrimaryKey(AccountBillUploadRecord record);
}

@ -0,0 +1,53 @@
package com.ncda.dao;
import com.ncda.entity.TodoList;
public interface TodoListMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table todo_list
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
int deleteByPrimaryKey(Integer id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table todo_list
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
int insert(TodoList record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table todo_list
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
int insertSelective(TodoList record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table todo_list
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
TodoList selectByPrimaryKey(Integer id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table todo_list
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
int updateByPrimaryKeySelective(TodoList record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table todo_list
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
int updateByPrimaryKey(TodoList record);
}

@ -0,0 +1,79 @@
package com.ncda.dao.ext;
import com.ncda.entity.ext.AdvancedSetting;
import com.ncda.entity.ext.ChartEntiey;
import com.ncda.entity.ext.ExtAccountBill;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public interface AcBiMapper {
/**
*
* @param accountBill
* @return
*/
List<ExtAccountBill> getAccountBill(ExtAccountBill accountBill);
/**
*
* @param accountBill
* @return Integer
*/
Integer updateAcBiData(ExtAccountBill accountBill);
/**
*
* @param acBiList
* @return Integer
*/
Integer batchSaveUploadData(@Param("acBiList") List<ExtAccountBill> acBiList);
/**
*
* @param year
* @param month
* @return Integer
*/
Integer deleteDataByYearMonth(@Param("year") int year, @Param("month") int month);
/**
*
* @param accountBill
* @return
*/
List<ChartEntiey> selectBarChartData(ExtAccountBill accountBill);
/**
*
* @param accountBill
* @return
*/
List<ChartEntiey> selectCalendarHeatmapChartData(ExtAccountBill accountBill);
/**
* id
* @param typeId
* @return
*/
Integer deleteAcBiTypeByTypeId(String typeId);
/**
*
* @param advancedSetting
* @return
*/
Integer filterDataByAdvanceSetting(AdvancedSetting advancedSetting);
/**
*
*/
void recoverData();
List<ChartEntiey> getWordCloudData();
List<ChartEntiey> getPieChartDataByYear(String year);
}

@ -0,0 +1,18 @@
package com.ncda.dao.ext;
import com.ncda.entity.ext.ExtAccountBillType;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public interface AcBiTypeMapper {
List<ExtAccountBillType> selectLevelOneType();
Integer saveType(ExtAccountBillType accountBillType);
Integer updateType(ExtAccountBillType accountBillType);
Integer deleteType(String typeId);
}

@ -0,0 +1,56 @@
package com.ncda.dao.ext;
import com.ncda.entity.ext.ExtAccountBillUploadRecord;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public interface AcBilUploadRecordMapper {
/**
*
* @param accountBillUploadRecord
* @return
*/
Integer saveUploadRecordData(ExtAccountBillUploadRecord accountBillUploadRecord);
/**
*
* @param year
* @param month
* @return
*/
Integer selectCountByYearMonth(@Param("year") int year, @Param("month") int month);
/**
*
* @param year
* @param month
* @return
*/
ExtAccountBillUploadRecord selectDataByYearMonth(@Param("year") int year, @Param("month") int month);
/**
*
* @param year
* @param month
* @return
*/
Integer deleteOldDataByYearMonth(@Param("year") int year, @Param("month") int month);
/**
*
* @return
*/
List<ExtAccountBillUploadRecord> getAllYearAndMonth();
List<ExtAccountBillUploadRecord> getHistoryFileUploadTimeLine(ExtAccountBillUploadRecord accountBillUploadRecord);
List<ExtAccountBillUploadRecord> getCurrentFileUploadTimeLine();
Integer deletePrimaryData(ExtAccountBillUploadRecord accountBillUploadRecord);
Integer deleteHistoryData(String id);
}

@ -0,0 +1,22 @@
package com.ncda.dao.ext;
import com.ncda.entity.ext.ExtTodoList;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public interface ExtTodoListMapper {
List<ExtTodoList> getTodoList();
Integer addTodoList(ExtTodoList todoList);
Integer updateTodoList(ExtTodoList todoList);
Integer removeTodoList(ExtTodoList todoList);
Integer recoverTodoList(ExtTodoList todoList);
Integer deleteTodoList(ExtTodoList todoList);
}

@ -0,0 +1,294 @@
package com.ncda.entity;
import java.math.BigDecimal;
import java.util.Date;
public class AccountBill {
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill.ID
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
private Integer id;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill.DATE
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
private Date date;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill.MONEY
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
private BigDecimal money;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill.MONEY_STATE
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
private String moneyState;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill.TYPE
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
private Integer type;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill.COMMENT
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
private String comment;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill.DEL_STATE
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
private String delState;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill.ITEM_NAME
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
private String itemName;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill.USER_ID
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
private Integer userId;
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill.ID
*
* @return the value of account_bill.ID
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public Integer getId() {
return id;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill.ID
*
* @param id the value for account_bill.ID
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public void setId(Integer id) {
this.id = id;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill.DATE
*
* @return the value of account_bill.DATE
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public Date getDate() {
return date;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill.DATE
*
* @param date the value for account_bill.DATE
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public void setDate(Date date) {
this.date = date;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill.MONEY
*
* @return the value of account_bill.MONEY
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public BigDecimal getMoney() {
return money;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill.MONEY
*
* @param money the value for account_bill.MONEY
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public void setMoney(BigDecimal money) {
this.money = money;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill.MONEY_STATE
*
* @return the value of account_bill.MONEY_STATE
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public String getMoneyState() {
return moneyState;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill.MONEY_STATE
*
* @param moneyState the value for account_bill.MONEY_STATE
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public void setMoneyState(String moneyState) {
this.moneyState = moneyState;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill.TYPE
*
* @return the value of account_bill.TYPE
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public Integer getType() {
return type;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill.TYPE
*
* @param type the value for account_bill.TYPE
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public void setType(Integer type) {
this.type = type;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill.COMMENT
*
* @return the value of account_bill.COMMENT
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public String getComment() {
return comment;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill.COMMENT
*
* @param comment the value for account_bill.COMMENT
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public void setComment(String comment) {
this.comment = comment;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill.DEL_STATE
*
* @return the value of account_bill.DEL_STATE
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public String getDelState() {
return delState;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill.DEL_STATE
*
* @param delState the value for account_bill.DEL_STATE
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public void setDelState(String delState) {
this.delState = delState;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill.ITEM_NAME
*
* @return the value of account_bill.ITEM_NAME
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public String getItemName() {
return itemName;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill.ITEM_NAME
*
* @param itemName the value for account_bill.ITEM_NAME
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public void setItemName(String itemName) {
this.itemName = itemName;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill.USER_ID
*
* @return the value of account_bill.USER_ID
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public Integer getUserId() {
return userId;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill.USER_ID
*
* @param userId the value for account_bill.USER_ID
*
* @mbggenerated Fri Aug 20 17:06:38 CST 2021
*/
public void setUserId(Integer userId) {
this.userId = userId;
}
}

@ -0,0 +1,131 @@
package com.ncda.entity;
public class AccountBillType {
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill_type.TYPE_ID
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
private Integer typeId;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill_type.TYPE_ONE_NAME
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
private String typeOneName;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill_type.USER_ID
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
private Integer userId;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill_type.TYPE_KEYWORD
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
private String typeKeyword;
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill_type.TYPE_ID
*
* @return the value of account_bill_type.TYPE_ID
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
public Integer getTypeId() {
return typeId;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill_type.TYPE_ID
*
* @param typeId the value for account_bill_type.TYPE_ID
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
public void setTypeId(Integer typeId) {
this.typeId = typeId;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill_type.TYPE_ONE_NAME
*
* @return the value of account_bill_type.TYPE_ONE_NAME
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
public String getTypeOneName() {
return typeOneName;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill_type.TYPE_ONE_NAME
*
* @param typeOneName the value for account_bill_type.TYPE_ONE_NAME
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
public void setTypeOneName(String typeOneName) {
this.typeOneName = typeOneName;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill_type.USER_ID
*
* @return the value of account_bill_type.USER_ID
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
public Integer getUserId() {
return userId;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill_type.USER_ID
*
* @param userId the value for account_bill_type.USER_ID
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
public void setUserId(Integer userId) {
this.userId = userId;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill_type.TYPE_KEYWORD
*
* @return the value of account_bill_type.TYPE_KEYWORD
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
public String getTypeKeyword() {
return typeKeyword;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill_type.TYPE_KEYWORD
*
* @param typeKeyword the value for account_bill_type.TYPE_KEYWORD
*
* @mbggenerated Tue Aug 31 15:21:51 CST 2021
*/
public void setTypeKeyword(String typeKeyword) {
this.typeKeyword = typeKeyword;
}
}

@ -0,0 +1,165 @@
package com.ncda.entity;
import java.util.Date;
public class AccountBillUploadRecord {
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill_upload_record.ID
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
private Integer id;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill_upload_record.DATE
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
private Date date;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill_upload_record.DEL_STATE
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
private String delState;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill_upload_record.UPLOAD_TIME
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
private Date uploadTime;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column account_bill_upload_record.FILE_CONTENT
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
private String fileContent;
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill_upload_record.ID
*
* @return the value of account_bill_upload_record.ID
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
public Integer getId() {
return id;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill_upload_record.ID
*
* @param id the value for account_bill_upload_record.ID
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
public void setId(Integer id) {
this.id = id;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill_upload_record.DATE
*
* @return the value of account_bill_upload_record.DATE
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
public Date getDate() {
return date;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill_upload_record.DATE
*
* @param date the value for account_bill_upload_record.DATE
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
public void setDate(Date date) {
this.date = date;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill_upload_record.DEL_STATE
*
* @return the value of account_bill_upload_record.DEL_STATE
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
public String getDelState() {
return delState;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill_upload_record.DEL_STATE
*
* @param delState the value for account_bill_upload_record.DEL_STATE
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
public void setDelState(String delState) {
this.delState = delState;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill_upload_record.UPLOAD_TIME
*
* @return the value of account_bill_upload_record.UPLOAD_TIME
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
public Date getUploadTime() {
return uploadTime;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill_upload_record.UPLOAD_TIME
*
* @param uploadTime the value for account_bill_upload_record.UPLOAD_TIME
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
public void setUploadTime(Date uploadTime) {
this.uploadTime = uploadTime;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column account_bill_upload_record.FILE_CONTENT
*
* @return the value of account_bill_upload_record.FILE_CONTENT
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
public String getFileContent() {
return fileContent;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column account_bill_upload_record.FILE_CONTENT
*
* @param fileContent the value for account_bill_upload_record.FILE_CONTENT
*
* @mbggenerated Tue Aug 17 14:27:59 CST 2021
*/
public void setFileContent(String fileContent) {
this.fileContent = fileContent;
}
}

@ -0,0 +1,229 @@
package com.ncda.entity;
import java.util.Date;
public class TodoList {
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column todo_list.ID
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
private Integer id;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column todo_list.CONTENT
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
private String content;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column todo_list.STATUS
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
private Boolean status;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column todo_list.CREATE_TIME
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
private Date createTime;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column todo_list.COMPLETE_TIME
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
private Date completeTime;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column todo_list.USER_ID
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
private Integer userId;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database column todo_list.DEL_STATE
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
private Boolean delState;
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column todo_list.ID
*
* @return the value of todo_list.ID
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
public Integer getId() {
return id;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column todo_list.ID
*
* @param id the value for todo_list.ID
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
public void setId(Integer id) {
this.id = id;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column todo_list.CONTENT
*
* @return the value of todo_list.CONTENT
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
public String getContent() {
return content;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column todo_list.CONTENT
*
* @param content the value for todo_list.CONTENT
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
public void setContent(String content) {
this.content = content;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column todo_list.STATUS
*
* @return the value of todo_list.STATUS
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
public Boolean getStatus() {
return status;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column todo_list.STATUS
*
* @param status the value for todo_list.STATUS
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
public void setStatus(Boolean status) {
this.status = status;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column todo_list.CREATE_TIME
*
* @return the value of todo_list.CREATE_TIME
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
public Date getCreateTime() {
return createTime;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column todo_list.CREATE_TIME
*
* @param createTime the value for todo_list.CREATE_TIME
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column todo_list.COMPLETE_TIME
*
* @return the value of todo_list.COMPLETE_TIME
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
public Date getCompleteTime() {
return completeTime;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column todo_list.COMPLETE_TIME
*
* @param completeTime the value for todo_list.COMPLETE_TIME
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
public void setCompleteTime(Date completeTime) {
this.completeTime = completeTime;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column todo_list.USER_ID
*
* @return the value of todo_list.USER_ID
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
public Integer getUserId() {
return userId;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column todo_list.USER_ID
*
* @param userId the value for todo_list.USER_ID
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
public void setUserId(Integer userId) {
this.userId = userId;
}
/**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column todo_list.DEL_STATE
*
* @return the value of todo_list.DEL_STATE
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
public Boolean getDelState() {
return delState;
}
/**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column todo_list.DEL_STATE
*
* @param delState the value for todo_list.DEL_STATE
*
* @mbggenerated Thu Sep 09 16:28:57 CST 2021
*/
public void setDelState(Boolean delState) {
this.delState = delState;
}
}

@ -0,0 +1,44 @@
package com.ncda.entity.ext;
public class AdvancedSetting {
private Double heatmapMax; // 高级设置热力图最大值
private Double moneyMax; // 高级设置最大值
private Double moneyMin; // 高级设置最小值
private String filterKeyword; // 高级设置过滤关键词
public Double getHeatmapMax() {
return heatmapMax;
}
public void setHeatmapMax(Double heatmapMax) {
this.heatmapMax = heatmapMax;
}
public Double getMoneyMax() {
return moneyMax;
}
public void setMoneyMax(Double moneyMax) {
this.moneyMax = moneyMax;
}
public Double getMoneyMin() {
return moneyMin;
}
public void setMoneyMin(Double moneyMin) {
this.moneyMin = moneyMin;
}
public String getFilterKeyword() {
return filterKeyword;
}
public void setFilterKeyword(String filterKeyword) {
this.filterKeyword = filterKeyword;
}
}

@ -0,0 +1,65 @@
package com.ncda.entity.ext;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* Chart
*/
public class ChartEntiey {
private Integer id;
private String itemName;
@JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date date;
private BigDecimal money;
private String typeOneName;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getItemName() {
return itemName;
}
public void setItemName(String itemName) {
this.itemName = itemName;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public BigDecimal getMoney() {
return money;
}
public void setMoney(BigDecimal money) {
this.money = money;
}
public String getTypeOneName() {
return typeOneName;
}
public void setTypeOneName(String typeOneName) {
this.typeOneName = typeOneName;
}
}

@ -0,0 +1,128 @@
package com.ncda.entity.ext;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ncda.entity.AccountBill;
import com.ncda.util.AcBiUtil;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* @author chenda
* @title: ExtAccountBill
* @description:
* @date 2021/8/13 9:18
*/
public class ExtAccountBill extends AccountBill implements Serializable {
//分页
private Integer pageSize;
private Integer currentPage;
@JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8") // 后台到前台的时间格式的转换
@DateTimeFormat(pattern = "yyyy-MM-dd") // 前后到后台的时间格式的转换
private Date date;
@JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startTime;
@JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endTime;
@JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date yearMonth; // 年月
private String text; //接收字符串用的
private String typeOneName; // 一级类型的名字 关联查询字段
private String year; // 日历热力图查询,年份
private String xdataType; // 柱状图搜索横轴0以时间为横轴1以类型为横轴
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
@Override
public Date getDate() {
return date;
}
@Override
public void setDate(Date date) {
this.date = date;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public Date getYearMonth() {
return yearMonth;
}
public void setYearMonth(Date yearMonth) {
this.yearMonth = yearMonth;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getTypeOneName() {
return typeOneName;
}
public void setTypeOneName(String typeOneName) {
this.typeOneName = typeOneName;
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public String getXdataType() {
return xdataType;
}
public void setXdataType(String xdataType) {
this.xdataType = xdataType;
}
}

@ -0,0 +1,13 @@
package com.ncda.entity.ext;
import com.ncda.entity.AccountBillType;
/**
* @author chenda
* @title: ExtAccountBillType
* @description:
* @date 2021/8/19 13:57
*/
public class ExtAccountBillType extends AccountBillType {
}

@ -0,0 +1,45 @@
package com.ncda.entity.ext;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ncda.entity.AccountBillUploadRecord;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @author chenda
* @title: ExtAccountBillUploadRecord
* @description:
* @date 2021/8/13 9:18
*/
public class ExtAccountBillUploadRecord extends AccountBillUploadRecord {
@JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date date;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
// hh:mm:ss按12小时制格式化HH:mm:ss按24小时制格式化
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date uploadTime;
@Override
public Date getDate() {
return date;
}
@Override
public void setDate(Date date) {
this.date = date;
}
@Override
public Date getUploadTime() {
return uploadTime;
}
@Override
public void setUploadTime(Date uploadTime) {
this.uploadTime = uploadTime;
}
}

@ -0,0 +1,38 @@
package com.ncda.entity.ext;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ncda.entity.TodoList;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
public class ExtTodoList extends TodoList {
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date completeTime;
@Override
public Date getCreateTime() {
return createTime;
}
@Override
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@Override
public Date getCompleteTime() {
return completeTime;
}
@Override
public void setCompleteTime(Date completeTime) {
this.completeTime = completeTime;
}
}

@ -0,0 +1,176 @@
package com.ncda.entity.result;
import java.util.Date;
public class ResultData {
private int code;//状态码
private String message;//信息
private Object data;//数据
private boolean success;
private Date timestamp;
private Long total;
public static ResultData createSuccessResultData(String message,Object data ,Long total){
ResultData instance=new ResultData();
instance.setCode(200);
instance.setData(data);
instance.setTotal(total);
instance.setMessage(message);
instance.setSuccess(true);
instance.setTimestamp(new Date());
return instance;
}
public static ResultData createFailResultData(String message){
ResultData instance=new ResultData();
instance.setCode(500);
instance.setData(null);
instance.setTotal(0L);
instance.setMessage(message);
instance.setSuccess(false);
instance.setTimestamp(new Date());
return instance;
}
public static class ResultDataBuilder{
private int code;//状态码
private String message;//信息
private Object data;//数据
private boolean success;
private Date timestamp;
private Long total;
public ResultDataBuilder code(int code){
this.code=code;
return this;
}
public ResultDataBuilder message(String message){
this.message=message;
return this;
}
public ResultDataBuilder data(Object data){
this.data=data;
return this;
}
public ResultDataBuilder success(boolean success){
this.success=success;
return this;
}
public ResultDataBuilder timestamp(Date timestamp){
this.timestamp=timestamp;
return this;
}
public ResultDataBuilder total(Long total){
this.total=total;
return this;
}
public ResultData build(){
ResultData instance=new ResultData();
instance.setCode(this.code);
instance.setData(this.data);
instance.setTotal(this.total);
instance.setMessage(this.message);
instance.setSuccess(this.success);
instance.setTimestamp(this.timestamp);
return instance;
}
}
public static ResultDataBuilder builder(){
return new ResultDataBuilder();
}
/**
*
* @param status
* @param msg
* @param data
*/
public ResultData(boolean status, String msg, Object data) {
this.success = status;
this.message = msg;
this.data = data;
}
/**
*
*/
public ResultData(){
}
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
this.total = total;
}
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public Date getTimestamp() {
return timestamp;
}
public void setTimestamp(Date timestamp) {
this.timestamp = timestamp;
}
/**
*
* @param msg
* @param data
* @return
*/
public static ResultData createSuccessResult(String msg, Object data){
return new ResultData(ResultData.ResultStatus.STATUS_SUCCESS,msg,data);
}
/**
*
* @param msg
* @param data
* @return
*/
public static ResultData createFailResult(String msg,Object data){
return new ResultData(ResultData.ResultStatus.STATUS_FAIL,msg,data);
}
/**
* @Description:
* @Param:
* @return:
* @Author:
* @Date: 2020/12/23 8:58
**/
public class ResultStatus{
public static final boolean STATUS_SUCCESS=true;
public static final boolean STATUS_FAIL=false;
}
}

@ -0,0 +1,98 @@
package com.ncda.service;
import com.ncda.entity.ext.*;
import com.ncda.entity.result.ResultData;
import java.io.InputStream;
import java.util.List;
public interface AcBiService {
List<ExtAccountBill> getAccountBill(ExtAccountBill accountBill);
/**
*
* @param accountBill
* @return
*/
Integer updateAcBiData(ExtAccountBill accountBill);
/**
*
* @param inputStream
* @return
* @throws Exception
*/
List<ExtAccountBill> fileUpload(InputStream inputStream) throws Exception;
/**
*
* @param text
* @return
* @throws Exception
*/
List<ExtAccountBill> textUpload(String text) throws Exception;
/**
* 使
* @param accountBillList
* @return result
*/
ResultData saveUploadData(List<ExtAccountBill> accountBillList);
/**
*
* @param accountBillList
* @return result
*/
ResultData saveNewData(List<ExtAccountBill> accountBillList);
/**
*
* @return
*/
List<ExtAccountBillType> selectLevelOneType();
/**
*
* @param accountBillType
* @return
*/
Integer saveType(ExtAccountBillType accountBillType);
/**
*
* @param accountBillType
* @return
*/
Integer updateType(ExtAccountBillType accountBillType);
/**
*
* @param typeId
* @return
*/
Integer deleteType(String typeId);
List<ExtAccountBillUploadRecord> getAllYearAndMonth();
List<ChartEntiey> selectBarChartData(ExtAccountBill accountBill);
List<ChartEntiey> selectCalendarHeatmapChartData(ExtAccountBill accountBill);
Boolean saveAdvancedSetting(AdvancedSetting advancedSetting);
AdvancedSetting getAdvancedSetting();
List<ExtAccountBillUploadRecord> getHistoryFileUploadTimeLine(ExtAccountBillUploadRecord accountBillUploadRecord);
List<ExtAccountBillUploadRecord> getCurrentFileUploadTimeLine();
Integer deletePrimaryData(ExtAccountBillUploadRecord accountBillUploadRecord);
Integer deleteHistoryData(String id);
List<ChartEntiey> getWordCloudData();
List<ChartEntiey> getPieChartDataByYear(String year);
}

@ -0,0 +1,20 @@
package com.ncda.service;
import com.ncda.entity.ext.ExtTodoList;
import java.util.List;
public interface HomeService {
List<ExtTodoList> getTodoList();
Integer addTodoList(ExtTodoList todoList);
Integer updateTodoList(ExtTodoList todoList);
Integer removeTodoList(ExtTodoList todoList);
Integer recoverTodoList(ExtTodoList todoList);
Integer deleteTodoList(ExtTodoList todoList);
}

@ -0,0 +1,237 @@
package com.ncda.service.impl;
import com.ncda.dao.ext.AcBiMapper;
import com.ncda.dao.ext.AcBiTypeMapper;
import com.ncda.dao.ext.AcBilUploadRecordMapper;
import com.ncda.entity.ext.*;
import com.ncda.entity.result.ResultData;
import com.ncda.service.AcBiService;
import com.ncda.util.AcBiReadUtil;
import com.ncda.util.AcBiUtil;
import com.ncda.util.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.InputStream;
import java.util.*;
@Service
@Transactional
public class AcBiServiceImpl implements AcBiService {
private final AcBiMapper acBiMapper;
private final AcBilUploadRecordMapper acBilUploadRecordMapper;
private final AcBiTypeMapper acBiTypeMapper;
private final RedisUtil redisUtil;
@Autowired
public AcBiServiceImpl(AcBiMapper acBiMapper, AcBilUploadRecordMapper acBilUploadRecordMapper, AcBiTypeMapper acBiTypeMapper, RedisUtil redisUtil) {
this.acBiMapper = acBiMapper;
this.acBilUploadRecordMapper = acBilUploadRecordMapper;
this.acBiTypeMapper = acBiTypeMapper;
this.redisUtil = redisUtil;
}
@Override
public List<ExtAccountBill> getAccountBill(ExtAccountBill accountBill) {
return acBiMapper.getAccountBill(accountBill);
}
@Override
public Integer updateAcBiData(ExtAccountBill accountBill) {
return acBiMapper.updateAcBiData(accountBill);
}
@Override
public List<ExtAccountBill> fileUpload(InputStream inputStream) throws Exception {
return AcBiReadUtil.analysisAcBiFile(inputStream);
}
@Override
public List<ExtAccountBill> textUpload(String text) throws Exception {
return AcBiReadUtil.analysisAcBiText(text);
}
@Override
public ResultData saveUploadData(List<ExtAccountBill> accountBillList) {
Date date = accountBillList.get(0).getDate();
Calendar calendar = AcBiUtil.dateToCalendar(date); // 获取数据的时间,主要是年月,所以可以选择集合中的任意数据
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1; // 获取的月份要 +1 才是真实的月份
Integer count = acBilUploadRecordMapper.selectCountByYearMonth(year, month);
if (count > 0) {
// 该月份数据已经存在
ExtAccountBillUploadRecord uploadRecord = acBilUploadRecordMapper.selectDataByYearMonth(year, month);
// 将冲突月份数据返回,让用户比较,决定谁去谁留
HashMap<Object, Object> map = new HashMap<>();
map.put("oldContent", uploadRecord.getFileContent()); // 旧数据
map.put("newContent", AcBiReadUtil.getContent()); // 新数据
map.put("newData", accountBillList);
return ResultData.createFailResult("该月份数据已经存在,请对比文件差异", map);
}
// 没有数据才可以保存
Integer num = saveData(accountBillList);
if (num == 1) {
return ResultData.createSuccessResult("保存成功", num);
}
return ResultData.createFailResultData("保存失败");
}
@Override
public ResultData saveNewData(List<ExtAccountBill> accountBillList) {
Calendar calendar = AcBiUtil.dateToCalendar(accountBillList.get(0).getDate());
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
Integer count = acBiMapper.deleteDataByYearMonth(year, month); // 删除旧数据(真删除)
if (count > 0) {
acBilUploadRecordMapper.deleteOldDataByYearMonth(year, month); // 删除上传记录(逻辑删除)
Integer num = saveData(accountBillList);
if (num == 1) {
return ResultData.createSuccessResult("数据更新成功", num);
}
return ResultData.createFailResultData("数据更新失败");
}
return ResultData.createFailResultData("数据更新失败");
}
/**
*
* @param accountBillList list
* @return 1 0
*/
public Integer saveData(List<ExtAccountBill> accountBillList) {
Integer state = acBiMapper.batchSaveUploadData(accountBillList); // 没有数据才可以保存
if (state == accountBillList.size()) {
ExtAccountBillUploadRecord uploadRecord = new ExtAccountBillUploadRecord();
uploadRecord.setDate(accountBillList.get(0).getDate());
uploadRecord.setFileContent(AcBiReadUtil.getContent());
uploadRecord.setUploadTime(new Date());
uploadRecord.setDelState("0");
// 每一次保存成功后都会在记录表中加入一条信息
acBilUploadRecordMapper.saveUploadRecordData(uploadRecord);
return 1;
}
return 0;
}
@Override
public List<ExtAccountBillType> selectLevelOneType() {
return acBiTypeMapper.selectLevelOneType();
}
@Override
public List<ExtAccountBillUploadRecord> getAllYearAndMonth() {
return acBilUploadRecordMapper.getAllYearAndMonth();
}
@Override
public List<ChartEntiey> selectBarChartData(ExtAccountBill accountBill) {
return acBiMapper.selectBarChartData(accountBill);
}
@Override
public List<ChartEntiey> selectCalendarHeatmapChartData(ExtAccountBill accountBill) {
return acBiMapper.selectCalendarHeatmapChartData(accountBill);
}
@Override
public Boolean saveAdvancedSetting(AdvancedSetting advancedSetting) {
boolean flag = redisUtil.set("heatmapMax", advancedSetting.getHeatmapMax()) &&
redisUtil.set("moneyMax", advancedSetting.getMoneyMax()) &&
redisUtil.set("moneyMin", advancedSetting.getMoneyMin()) &&
redisUtil.set("filterKeyword", advancedSetting.getFilterKeyword());
if (flag) {
try {
filterData(advancedSetting);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
return false;
}
private void filterData(AdvancedSetting advancedSetting) {
acBiMapper.recoverData(); /* 将所有数据恢复 */
// 将空格分隔转换为|分隔用于mysql 正则表达式匹配
advancedSetting.setFilterKeyword(AcBiUtil.strReplace(advancedSetting.getFilterKeyword().trim(), "|"));
acBiMapper.filterDataByAdvanceSetting(advancedSetting); /* 过滤数据(逻辑删除) */
}
@Override
public AdvancedSetting getAdvancedSetting() {
AdvancedSetting advancedSetting = new AdvancedSetting();
advancedSetting.setHeatmapMax((Double) redisUtil.get("heatmapMax"));
advancedSetting.setMoneyMax((Double) redisUtil.get("moneyMax"));
advancedSetting.setMoneyMin((Double) redisUtil.get("moneyMin"));
advancedSetting.setFilterKeyword((String) redisUtil.get("filterKeyword"));
return advancedSetting;
}
@Override
public List<ExtAccountBillUploadRecord> getHistoryFileUploadTimeLine(ExtAccountBillUploadRecord accountBillUploadRecord) {
return acBilUploadRecordMapper.getHistoryFileUploadTimeLine(accountBillUploadRecord);
}
@Override
public List<ExtAccountBillUploadRecord> getCurrentFileUploadTimeLine() {
return acBilUploadRecordMapper.getCurrentFileUploadTimeLine();
}
@Override
public Integer deletePrimaryData(ExtAccountBillUploadRecord accountBillUploadRecord) {
try {
// 文件记录表主数据删除(删除同年月的所有数据)
acBilUploadRecordMapper.deletePrimaryData(accountBillUploadRecord);
Calendar calendar = AcBiUtil.dateToCalendar(accountBillUploadRecord.getDate());
// 删除账单表中同年月的数据
acBiMapper.deleteDataByYearMonth(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1);
return 1;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
@Override
public Integer deleteHistoryData(String id) {
return acBilUploadRecordMapper.deleteHistoryData(id);
}
@Override
public List<ChartEntiey> getPieChartDataByYear(String year) {
return acBiMapper.getPieChartDataByYear(year);
}
@Override
public List<ChartEntiey> getWordCloudData() {
return acBiMapper.getWordCloudData();
}
@Override
public Integer saveType(ExtAccountBillType accountBillType) {
return acBiTypeMapper.saveType(accountBillType);
}
@Override
public Integer deleteType(String typeId) {
Integer delState = acBiTypeMapper.deleteType(typeId);
if (delState > 0) {
acBiMapper.deleteAcBiTypeByTypeId(typeId);
return 1;
}
return 0;
}
@Override
public Integer updateType(ExtAccountBillType accountBillType) {
return acBiTypeMapper.updateType(accountBillType);
}
}

@ -0,0 +1,52 @@
package com.ncda.service.impl;
import com.ncda.dao.ext.ExtTodoListMapper;
import com.ncda.entity.ext.ExtTodoList;
import com.ncda.service.HomeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
@Service
public class HomeServiceImpl implements HomeService {
private final ExtTodoListMapper todoListMapper;
@Autowired
public HomeServiceImpl(ExtTodoListMapper todoListMapper) {
this.todoListMapper = todoListMapper;
}
@Override
public List<ExtTodoList> getTodoList() {
return todoListMapper.getTodoList();
}
@Override
public Integer addTodoList(ExtTodoList todoList) {
return todoListMapper.addTodoList(todoList);
}
@Override
public Integer updateTodoList(ExtTodoList todoList) {
todoList.setCompleteTime(todoList.getStatus() ? new Date() : null);
return todoListMapper.updateTodoList(todoList);
}
@Override
public Integer removeTodoList(ExtTodoList todoList) {
return todoListMapper.removeTodoList(todoList);
}
@Override
public Integer recoverTodoList(ExtTodoList todoList) {
return todoListMapper.recoverTodoList(todoList);
}
@Override
public Integer deleteTodoList(ExtTodoList todoList) {
return todoListMapper.deleteTodoList(todoList);
}
}

@ -0,0 +1,214 @@
package com.ncda.util;
import com.ncda.entity.ext.ExtAccountBill;
import java.io.*;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
* @version 1.0
* @description
*/
public class AcBiReadUtil {
/**
*
*/
private static String content;
public static String getContent() {
return content;
}
/**
*
* @param inputStream
* @return
* @throws Exception
*/
public static List<ExtAccountBill> analysisAcBiFile(InputStream inputStream) throws Exception {
setContent(inputStream);
return readText();
}
/**
*
* @param text
* @return
* @throws Exception
*/
public static List<ExtAccountBill> analysisAcBiText(String text) throws Exception {
setContent(text);
return readText();
}
/**
*
* @param inputStream
* @return
* @throws Exception
*/
private static void setContent(InputStream inputStream) throws Exception {
content = "";
InputStreamReader read = new InputStreamReader(inputStream, StandardCharsets.UTF_8.name());
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt; // 每行数据
while ((lineTxt = bufferedReader.readLine()) != null) {
if (CommonUtil.strIsNull(content)) {
content = content + lineTxt;
} else {
content = content + "\n" + lineTxt;
}
}
}
/**
*
* @param text
* @return
*/
private static void setContent(String text) {
content = text;
}
/**
*
* @return
* @throws Exception
*/
private static List<ExtAccountBill> readText() throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
List<ExtAccountBill> billList = new ArrayList<>();
List<Date> dateList = new ArrayList<>(); // 保存所有的日期,用于检验日期是否有重复
String[] lineTxts = content.split("\\\n"); // 保存每一行数据
int lineNum = 0; //记录行数
String currYear = null; // 当前年份
for (String lineTxt : lineTxts) {
lineNum++;
if(lineNum == 1) {
// 第一行获取年份
currYear = getYear(lineTxt);
if (currYear == null) {
throw new Exception("第一行格式错误,没找到年份");
}
} else {
lineTxt = lineTxt.contains("=") ? lineTxt.substring(0, lineTxt.indexOf("=")).trim() : lineTxt; // 若末尾有"=" 去掉
String[] billItems = lineTxt.split("/"); // 提取出"/"分隔的每一项
String dateStr = billItems[0];
Date date = sdf.parse(dateFormatter(currYear, dateStr, lineNum));
dateList.add(date);
for (int i = 1; i < billItems.length; i++) { // 这里从1开始也就是跳过第一项
String billItem = billItems[i].trim();
ExtAccountBill accountBill = new ExtAccountBill();
accountBill.setDate(date); // 第一项为时间
if(!CommonUtil.strIsNull(billItem)) {
for (int j = billItem.length()-1; j >= 0; j--) {
if(!isNumber(billItem.charAt(j))) {
String substr = billItem.substring(j+1, billItem.length());
if(billItem.charAt(j)==43){ //若是 “+” 则为收入
accountBill.setMoneyState("1"); // 状态1 收入
accountBill.setItemName(billItem.substring(0, j)); // 设置名字
} else { //否则支出
accountBill.setMoneyState("0"); // 状态0 支出
accountBill.setItemName(billItem.substring(0, j+1));
}
if(!CommonUtil.strIsNull(substr)) {
accountBill.setMoney(new BigDecimal(substr)); // 设置金额
}
break;
}
}
}
billList.add(accountBill);
}
}
}
if (checkRepeatedDate(dateList)) {
return billList;
} else {
throw new Exception("内容中有重复日期,请你检查检查");
}
}
/**
*
* @param list
* @return
*/
private static boolean checkRepeatedDate(List<Date> list) {
return new HashSet<>(list).size() == list.size();
}
/**
*
* @param c
* @return true false
*/
private static boolean isNumber(char c) {
return c >= 48 && c <= 57 || c == 46;
}
/**
* 2000~2099
* @param yearStr ddddsss2018dfd
* @return 4null
*/
private static String getYear(String yearStr) {
for (int i = 0; i < yearStr.length(); i++) {
if (yearStr.charAt(i) == '2' && yearStr.charAt(i+1) == '0') {
String year = yearStr.substring(i, i+4);
if (strIsDigit(year)) {
return year;
}
return null;
}
}
return null;
}
/**
*
* @param strNum
* @return boolean true false
*/
private static boolean strIsDigit(String strNum) {
Pattern pattern = Pattern.compile("[0-9]{1,}");
Matcher matcher = pattern.matcher((CharSequence) strNum);
return matcher.matches();
}
/**
*
* @param year
* @param monDay 7.8 || 07.2 || 12.14
* @param lineNum
* @return 2021.07.22
* @throws Exception
*/
private static String dateFormatter(String year, String monDay, int lineNum) throws Exception {
StringBuilder sb = new StringBuilder();
sb.append(year).append(".");
if (!monDay.contains(".")) {
throw new Exception("第" + lineNum + "行 " + monDay + " 日期格式错误!");
}
// 用.分割记得加转义符号,困扰了我好几个小时的问题
String[] split = monDay.split("\\.");
for (String s : split) {
if (s.length() > 2 || !strIsDigit(s)) {
throw new Exception("第" + lineNum + "行 " + monDay + " 日期格式错误!");
}
s = s.trim();
String formatStr = s.length() == 1 ? "0" + s : s;
sb.append(formatStr).append(".");
}
return sb.toString().substring(0, 10);
}
}

@ -0,0 +1,25 @@
package com.ncda.util;
import java.util.Calendar;
import java.util.Date;
public class AcBiUtil {
/**
* date Calendar
* @param date
* @return calendar
*/
public static Calendar dateToCalendar(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar;
}
public static String strReplace(String str, String delimiter) {
if (!CommonUtil.strIsNull(str)) {
return String.join(delimiter, str.split("\\s+"));
}
return str;
}
}

@ -0,0 +1,13 @@
package com.ncda.util;
public class CommonUtil {
/**
*
* @param str
* @return true
*/
public static boolean strIsNull(String str) {
return str == null || "".equals(str);
}
}

@ -0,0 +1,571 @@
package com.ncda.util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@Component
public final class RedisUtil {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
// =============================common============================
/**
*
* @param key
* @param time ()
*/
public boolean expire(String key, long time) {
try {
if (time > 0) {
redisTemplate.expire(key, time, TimeUnit.SECONDS);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* key
* @param key null
* @return () 0
*/
public long getExpire(String key) {
return redisTemplate.getExpire(key, TimeUnit.SECONDS);
}
/**
* key
* @param key
* @return true false
*/
public boolean hasKey(String key) {
try {
return redisTemplate.hasKey(key);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
*
* @param key
*/
@SuppressWarnings("unchecked")
public void del(String... key) {
if (key != null && key.length > 0) {
if (key.length == 1) {
redisTemplate.delete(key[0]);
} else {
redisTemplate.delete((Collection<String>) CollectionUtils.arrayToList(key));
}
}
}
// ============================String=============================
/**
*
* @param key
* @return
*/
public Object get(String key) {
return key == null ? null : redisTemplate.opsForValue().get(key);
}
/**
*
* @param key
* @param value
* @return true false
*/
public boolean set(String key, Object value) {
try {
redisTemplate.opsForValue().set(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
*
* @param key
* @param value
* @param time () time0 time0
* @return true false
*/
public boolean set(String key, Object value, long time) {
try {
if (time > 0) {
redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
} else {
set(key, value);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
*
* @param key
* @param delta (0)
*/
public long incr(String key, long delta) {
if (delta < 0) {
throw new RuntimeException("递增因子必须大于0");
}
return redisTemplate.opsForValue().increment(key, delta);
}
/**
*
* @param key
* @param delta (0)
*/
public long decr(String key, long delta) {
if (delta < 0) {
throw new RuntimeException("递减因子必须大于0");
}
return redisTemplate.opsForValue().increment(key, -delta);
}
// ================================Map=================================
/**
* HashGet
* @param key null
* @param item null
*/
public Object hget(String key, String item) {
return redisTemplate.opsForHash().get(key, item);
}
/**
* hashKey
* @param key
* @return
*/
public Map<Object, Object> hmget(String key) {
return redisTemplate.opsForHash().entries(key);
}
/**
* HashSet
* @param key
* @param map
*/
public boolean hmset(String key, Map<String, Object> map) {
try {
redisTemplate.opsForHash().putAll(key, map);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* HashSet
* @param key
* @param map
* @param time ()
* @return true false
*/
public boolean hmset(String key, Map<String, Object> map, long time) {
try {
redisTemplate.opsForHash().putAll(key, map);
if (time > 0) {
expire(key, time);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* hash,
*
* @param key
* @param item
* @param value
* @return true false
*/
public boolean hset(String key, String item, Object value) {
try {
redisTemplate.opsForHash().put(key, item, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* hash,
*
* @param key
* @param item
* @param value
* @param time () :hash,
* @return true false
*/
public boolean hset(String key, String item, Object value, long time) {
try {
redisTemplate.opsForHash().put(key, item, value);
if (time > 0) {
expire(key, time);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* hash
*
* @param key null
* @param item 使 null
*/
public void hdel(String key, Object... item) {
redisTemplate.opsForHash().delete(key, item);
}
/**
* hash
*
* @param key null
* @param item null
* @return true false
*/
public boolean hHasKey(String key, String item) {
return redisTemplate.opsForHash().hasKey(key, item);
}
/**
* hash ,
*
* @param key
* @param item
* @param by (0)
*/
public double hincr(String key, String item, double by) {
return redisTemplate.opsForHash().increment(key, item, by);
}
/**
* hash
*
* @param key
* @param item
* @param by (0)
*/
public double hdecr(String key, String item, double by) {
return redisTemplate.opsForHash().increment(key, item, -by);
}
// ============================set=============================
/**
* keySet
* @param key
*/
public Set<Object> sGet(String key) {
try {
return redisTemplate.opsForSet().members(key);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* valueset,
*
* @param key
* @param value
* @return true false
*/
public boolean sHasKey(String key, Object value) {
try {
return redisTemplate.opsForSet().isMember(key, value);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* set
*
* @param key
* @param values
* @return
*/
public long sSet(String key, Object... values) {
try {
return redisTemplate.opsForSet().add(key, values);
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* set
*
* @param key
* @param time ()
* @param values
* @return
*/
public long sSetAndTime(String key, long time, Object... values) {
try {
Long count = redisTemplate.opsForSet().add(key, values);
if (time > 0)
expire(key, time);
return count;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* set
*
* @param key
*/
public long sGetSetSize(String key) {
try {
return redisTemplate.opsForSet().size(key);
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* value
*
* @param key
* @param values
* @return
*/
public long setRemove(String key, Object... values) {
try {
Long count = redisTemplate.opsForSet().remove(key, values);
return count;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
// ===============================list=================================
/**
* list
*
* @param key
* @param start
* @param end 0 -1
*/
public List<Object> lGet(String key, long start, long end) {
try {
return redisTemplate.opsForList().range(key, start, end);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* list
*
* @param key
*/
public long lGetListSize(String key) {
try {
return redisTemplate.opsForList().size(key);
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* list
*
* @param key
* @param index index>=0 0 1 index<0-1-2
*/
public Object lGetIndex(String key, long index) {
try {
return redisTemplate.opsForList().index(key, index);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* list
*
* @param key
* @param value
*/
public boolean lSet(String key, Object value) {
try {
redisTemplate.opsForList().rightPush(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* list
* @param key
* @param value
* @param time ()
*/
public boolean lSet(String key, Object value, long time) {
try {
redisTemplate.opsForList().rightPush(key, value);
if (time > 0)
expire(key, time);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* list
*
* @param key
* @param value
* @return
*/
public boolean lSet(String key, List<Object> value) {
try {
redisTemplate.opsForList().rightPushAll(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* list
*
* @param key
* @param value
* @param time ()
* @return
*/
public boolean lSet(String key, List<Object> value, long time) {
try {
redisTemplate.opsForList().rightPushAll(key, value);
if (time > 0)
expire(key, time);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* list
*
* @param key
* @param index
* @param value
* @return
*/
public boolean lUpdateIndex(String key, long index, Object value) {
try {
redisTemplate.opsForList().set(key, index, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* Nvalue
*
* @param key
* @param count
* @param value
* @return
*/
public long lRemove(String key, long count, Object value) {
try {
Long remove = redisTemplate.opsForList().remove(key, count, value);
return remove;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
}

@ -0,0 +1,8 @@
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: root
url: jdbc:mysql://localhost:3306/testdb01?useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai
server:
port: 4536

@ -0,0 +1,8 @@
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
url: jdbc:mysql://192.168.1.15:3306/testdb01?useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai
server:
port: 4536

@ -0,0 +1,15 @@
spring:
profiles:
active: dev02
redis:
host: 192.168.1.15
port: 6379
database: 0
password: 123456
mybatis:
mapper-locations: classpath*:mybatis/**/*Mapper.xml
type-aliases-package: com.ncda.entity
logging:
level:
com:
ncda: DEBUG

@ -0,0 +1,181 @@
<?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.ncda.dao.AccountBillMapper">
<resultMap id="BaseResultMap" type="com.ncda.entity.AccountBill">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Fri Aug 20 17:06:38 CST 2021.
-->
<id column="ID" jdbcType="INTEGER" property="id" />
<result column="DATE" jdbcType="DATE" property="date" />
<result column="MONEY" jdbcType="DECIMAL" property="money" />
<result column="MONEY_STATE" jdbcType="CHAR" property="moneyState" />
<result column="TYPE" jdbcType="INTEGER" property="type" />
<result column="COMMENT" jdbcType="VARCHAR" property="comment" />
<result column="DEL_STATE" jdbcType="CHAR" property="delState" />
<result column="ITEM_NAME" jdbcType="VARCHAR" property="itemName" />
<result column="USER_ID" jdbcType="INTEGER" property="userId" />
</resultMap>
<sql id="Base_Column_List">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Fri Aug 20 17:06:38 CST 2021.
-->
ID, DATE, MONEY, MONEY_STATE, TYPE, COMMENT, DEL_STATE, ITEM_NAME, USER_ID
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Fri Aug 20 17:06:38 CST 2021.
-->
select
<include refid="Base_Column_List" />
from account_bill
where ID = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Fri Aug 20 17:06:38 CST 2021.
-->
delete from account_bill
where ID = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.ncda.entity.AccountBill">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Fri Aug 20 17:06:38 CST 2021.
-->
insert into account_bill (ID, DATE, MONEY,
MONEY_STATE, TYPE, COMMENT,
DEL_STATE, ITEM_NAME, USER_ID
)
values (#{id,jdbcType=INTEGER}, #{date,jdbcType=DATE}, #{money,jdbcType=DECIMAL},
#{moneyState,jdbcType=CHAR}, #{type,jdbcType=INTEGER}, #{comment,jdbcType=VARCHAR},
#{delState,jdbcType=CHAR}, #{itemName,jdbcType=VARCHAR}, #{userId,jdbcType=INTEGER}
)
</insert>
<insert id="insertSelective" parameterType="com.ncda.entity.AccountBill">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Fri Aug 20 17:06:38 CST 2021.
-->
insert into account_bill
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
ID,
</if>
<if test="date != null">
DATE,
</if>
<if test="money != null">
MONEY,
</if>
<if test="moneyState != null">
MONEY_STATE,
</if>
<if test="type != null">
TYPE,
</if>
<if test="comment != null">
COMMENT,
</if>
<if test="delState != null">
DEL_STATE,
</if>
<if test="itemName != null">
ITEM_NAME,
</if>
<if test="userId != null">
USER_ID,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
</if>
<if test="date != null">
#{date,jdbcType=DATE},
</if>
<if test="money != null">
#{money,jdbcType=DECIMAL},
</if>
<if test="moneyState != null">
#{moneyState,jdbcType=CHAR},
</if>
<if test="type != null">
#{type,jdbcType=INTEGER},
</if>
<if test="comment != null">
#{comment,jdbcType=VARCHAR},
</if>
<if test="delState != null">
#{delState,jdbcType=CHAR},
</if>
<if test="itemName != null">
#{itemName,jdbcType=VARCHAR},
</if>
<if test="userId != null">
#{userId,jdbcType=INTEGER},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.ncda.entity.AccountBill">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Fri Aug 20 17:06:38 CST 2021.
-->
update account_bill
<set>
<if test="date != null">
DATE = #{date,jdbcType=DATE},
</if>
<if test="money != null">
MONEY = #{money,jdbcType=DECIMAL},
</if>
<if test="moneyState != null">
MONEY_STATE = #{moneyState,jdbcType=CHAR},
</if>
<if test="type != null">
TYPE = #{type,jdbcType=INTEGER},
</if>
<if test="comment != null">
COMMENT = #{comment,jdbcType=VARCHAR},
</if>
<if test="delState != null">
DEL_STATE = #{delState,jdbcType=CHAR},
</if>
<if test="itemName != null">
ITEM_NAME = #{itemName,jdbcType=VARCHAR},
</if>
<if test="userId != null">
USER_ID = #{userId,jdbcType=INTEGER},
</if>
</set>
where ID = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.ncda.entity.AccountBill">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Fri Aug 20 17:06:38 CST 2021.
-->
update account_bill
set DATE = #{date,jdbcType=DATE},
MONEY = #{money,jdbcType=DECIMAL},
MONEY_STATE = #{moneyState,jdbcType=CHAR},
TYPE = #{type,jdbcType=INTEGER},
COMMENT = #{comment,jdbcType=VARCHAR},
DEL_STATE = #{delState,jdbcType=CHAR},
ITEM_NAME = #{itemName,jdbcType=VARCHAR},
USER_ID = #{userId,jdbcType=INTEGER}
where ID = #{id,jdbcType=INTEGER}
</update>
</mapper>

@ -0,0 +1,122 @@
<?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.ncda.dao.AccountBillTypeMapper">
<resultMap id="BaseResultMap" type="com.ncda.entity.AccountBillType">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 31 15:21:51 CST 2021.
-->
<id column="TYPE_ID" jdbcType="INTEGER" property="typeId" />
<result column="TYPE_ONE_NAME" jdbcType="VARCHAR" property="typeOneName" />
<result column="USER_ID" jdbcType="INTEGER" property="userId" />
<result column="TYPE_KEYWORD" jdbcType="VARCHAR" property="typeKeyword" />
</resultMap>
<sql id="Base_Column_List">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 31 15:21:51 CST 2021.
-->
TYPE_ID, TYPE_ONE_NAME, USER_ID, TYPE_KEYWORD
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 31 15:21:51 CST 2021.
-->
select
<include refid="Base_Column_List" />
from account_bill_type
where TYPE_ID = #{typeId,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 31 15:21:51 CST 2021.
-->
delete from account_bill_type
where TYPE_ID = #{typeId,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.ncda.entity.AccountBillType">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 31 15:21:51 CST 2021.
-->
insert into account_bill_type (TYPE_ID, TYPE_ONE_NAME, USER_ID,
TYPE_KEYWORD)
values (#{typeId,jdbcType=INTEGER}, #{typeOneName,jdbcType=VARCHAR}, #{userId,jdbcType=INTEGER},
#{typeKeyword,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.ncda.entity.AccountBillType">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 31 15:21:51 CST 2021.
-->
insert into account_bill_type
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="typeId != null">
TYPE_ID,
</if>
<if test="typeOneName != null">
TYPE_ONE_NAME,
</if>
<if test="userId != null">
USER_ID,
</if>
<if test="typeKeyword != null">
TYPE_KEYWORD,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="typeId != null">
#{typeId,jdbcType=INTEGER},
</if>
<if test="typeOneName != null">
#{typeOneName,jdbcType=VARCHAR},
</if>
<if test="userId != null">
#{userId,jdbcType=INTEGER},
</if>
<if test="typeKeyword != null">
#{typeKeyword,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.ncda.entity.AccountBillType">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 31 15:21:51 CST 2021.
-->
update account_bill_type
<set>
<if test="typeOneName != null">
TYPE_ONE_NAME = #{typeOneName,jdbcType=VARCHAR},
</if>
<if test="userId != null">
USER_ID = #{userId,jdbcType=INTEGER},
</if>
<if test="typeKeyword != null">
TYPE_KEYWORD = #{typeKeyword,jdbcType=VARCHAR},
</if>
</set>
where TYPE_ID = #{typeId,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.ncda.entity.AccountBillType">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 31 15:21:51 CST 2021.
-->
update account_bill_type
set TYPE_ONE_NAME = #{typeOneName,jdbcType=VARCHAR},
USER_ID = #{userId,jdbcType=INTEGER},
TYPE_KEYWORD = #{typeKeyword,jdbcType=VARCHAR}
where TYPE_ID = #{typeId,jdbcType=INTEGER}
</update>
</mapper>

@ -0,0 +1,162 @@
<?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.ncda.dao.AccountBillUploadRecordMapper">
<resultMap id="BaseResultMap" type="com.ncda.entity.AccountBillUploadRecord">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 17 14:27:59 CST 2021.
-->
<id column="ID" jdbcType="INTEGER" property="id" />
<result column="DATE" jdbcType="DATE" property="date" />
<result column="DEL_STATE" jdbcType="CHAR" property="delState" />
<result column="UPLOAD_TIME" jdbcType="TIMESTAMP" property="uploadTime" />
</resultMap>
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.ncda.entity.AccountBillUploadRecord">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 17 14:27:59 CST 2021.
-->
<result column="FILE_CONTENT" jdbcType="LONGVARCHAR" property="fileContent" />
</resultMap>
<sql id="Base_Column_List">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 17 14:27:59 CST 2021.
-->
ID, DATE, DEL_STATE, UPLOAD_TIME
</sql>
<sql id="Blob_Column_List">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 17 14:27:59 CST 2021.
-->
FILE_CONTENT
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="ResultMapWithBLOBs">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 17 14:27:59 CST 2021.
-->
select
<include refid="Base_Column_List" />
,
<include refid="Blob_Column_List" />
from account_bill_upload_record
where ID = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 17 14:27:59 CST 2021.
-->
delete from account_bill_upload_record
where ID = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.ncda.entity.AccountBillUploadRecord">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 17 14:27:59 CST 2021.
-->
insert into account_bill_upload_record (ID, DATE, DEL_STATE,
UPLOAD_TIME, FILE_CONTENT)
values (#{id,jdbcType=INTEGER}, #{date,jdbcType=DATE}, #{delState,jdbcType=CHAR},
#{uploadTime,jdbcType=TIMESTAMP}, #{fileContent,jdbcType=LONGVARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.ncda.entity.AccountBillUploadRecord">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 17 14:27:59 CST 2021.
-->
insert into account_bill_upload_record
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
ID,
</if>
<if test="date != null">
DATE,
</if>
<if test="delState != null">
DEL_STATE,
</if>
<if test="uploadTime != null">
UPLOAD_TIME,
</if>
<if test="fileContent != null">
FILE_CONTENT,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
</if>
<if test="date != null">
#{date,jdbcType=DATE},
</if>
<if test="delState != null">
#{delState,jdbcType=CHAR},
</if>
<if test="uploadTime != null">
#{uploadTime,jdbcType=TIMESTAMP},
</if>
<if test="fileContent != null">
#{fileContent,jdbcType=LONGVARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.ncda.entity.AccountBillUploadRecord">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 17 14:27:59 CST 2021.
-->
update account_bill_upload_record
<set>
<if test="date != null">
DATE = #{date,jdbcType=DATE},
</if>
<if test="delState != null">
DEL_STATE = #{delState,jdbcType=CHAR},
</if>
<if test="uploadTime != null">
UPLOAD_TIME = #{uploadTime,jdbcType=TIMESTAMP},
</if>
<if test="fileContent != null">
FILE_CONTENT = #{fileContent,jdbcType=LONGVARCHAR},
</if>
</set>
where ID = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKeyWithBLOBs" parameterType="com.ncda.entity.AccountBillUploadRecord">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 17 14:27:59 CST 2021.
-->
update account_bill_upload_record
set DATE = #{date,jdbcType=DATE},
DEL_STATE = #{delState,jdbcType=CHAR},
UPLOAD_TIME = #{uploadTime,jdbcType=TIMESTAMP},
FILE_CONTENT = #{fileContent,jdbcType=LONGVARCHAR}
where ID = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.ncda.entity.AccountBillUploadRecord">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Aug 17 14:27:59 CST 2021.
-->
update account_bill_upload_record
set DATE = #{date,jdbcType=DATE},
DEL_STATE = #{delState,jdbcType=CHAR},
UPLOAD_TIME = #{uploadTime,jdbcType=TIMESTAMP}
where ID = #{id,jdbcType=INTEGER}
</update>
</mapper>

@ -0,0 +1,157 @@
<?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.ncda.dao.TodoListMapper">
<resultMap id="BaseResultMap" type="com.ncda.entity.TodoList">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Thu Sep 09 16:28:57 CST 2021.
-->
<id column="ID" jdbcType="INTEGER" property="id" />
<result column="CONTENT" jdbcType="VARCHAR" property="content" />
<result column="STATUS" jdbcType="BIT" property="status" />
<result column="CREATE_TIME" jdbcType="TIMESTAMP" property="createTime" />
<result column="COMPLETE_TIME" jdbcType="TIMESTAMP" property="completeTime" />
<result column="USER_ID" jdbcType="INTEGER" property="userId" />
<result column="DEL_STATE" jdbcType="BIT" property="delState" />
</resultMap>
<sql id="Base_Column_List">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Thu Sep 09 16:28:57 CST 2021.
-->
ID, CONTENT, STATUS, CREATE_TIME, COMPLETE_TIME, USER_ID, DEL_STATE
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Thu Sep 09 16:28:57 CST 2021.
-->
select
<include refid="Base_Column_List" />
from todo_list
where ID = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Thu Sep 09 16:28:57 CST 2021.
-->
delete from todo_list
where ID = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.ncda.entity.TodoList">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Thu Sep 09 16:28:57 CST 2021.
-->
insert into todo_list (ID, CONTENT, STATUS,
CREATE_TIME, COMPLETE_TIME, USER_ID,
DEL_STATE)
values (#{id,jdbcType=INTEGER}, #{content,jdbcType=VARCHAR}, #{status,jdbcType=BIT},
#{createTime,jdbcType=TIMESTAMP}, #{completeTime,jdbcType=TIMESTAMP}, #{userId,jdbcType=INTEGER},
#{delState,jdbcType=BIT})
</insert>
<insert id="insertSelective" parameterType="com.ncda.entity.TodoList">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Thu Sep 09 16:28:57 CST 2021.
-->
insert into todo_list
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
ID,
</if>
<if test="content != null">
CONTENT,
</if>
<if test="status != null">
STATUS,
</if>
<if test="createTime != null">
CREATE_TIME,
</if>
<if test="completeTime != null">
COMPLETE_TIME,
</if>
<if test="userId != null">
USER_ID,
</if>
<if test="delState != null">
DEL_STATE,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
</if>
<if test="content != null">
#{content,jdbcType=VARCHAR},
</if>
<if test="status != null">
#{status,jdbcType=BIT},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="completeTime != null">
#{completeTime,jdbcType=TIMESTAMP},
</if>
<if test="userId != null">
#{userId,jdbcType=INTEGER},
</if>
<if test="delState != null">
#{delState,jdbcType=BIT},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.ncda.entity.TodoList">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Thu Sep 09 16:28:57 CST 2021.
-->
update todo_list
<set>
<if test="content != null">
CONTENT = #{content,jdbcType=VARCHAR},
</if>
<if test="status != null">
STATUS = #{status,jdbcType=BIT},
</if>
<if test="createTime != null">
CREATE_TIME = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="completeTime != null">
COMPLETE_TIME = #{completeTime,jdbcType=TIMESTAMP},
</if>
<if test="userId != null">
USER_ID = #{userId,jdbcType=INTEGER},
</if>
<if test="delState != null">
DEL_STATE = #{delState,jdbcType=BIT},
</if>
</set>
where ID = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.ncda.entity.TodoList">
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Thu Sep 09 16:28:57 CST 2021.
-->
update todo_list
set CONTENT = #{content,jdbcType=VARCHAR},
STATUS = #{status,jdbcType=BIT},
CREATE_TIME = #{createTime,jdbcType=TIMESTAMP},
COMPLETE_TIME = #{completeTime,jdbcType=TIMESTAMP},
USER_ID = #{userId,jdbcType=INTEGER},
DEL_STATE = #{delState,jdbcType=BIT}
where ID = #{id,jdbcType=INTEGER}
</update>
</mapper>

@ -0,0 +1,225 @@
<?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.ncda.dao.ext.AcBiMapper" >
<resultMap id="BaseResultMap" type="com.ncda.entity.ext.ExtAccountBill">
<id column="ID" property="id" jdbcType="INTEGER"/>
<result column="DATE" property="date" jdbcType="DATE"/>
<result column="MONEY" property="money" jdbcType="DECIMAL"/>
<result column="MONEY_STATE" property="moneyState" jdbcType="CHAR"/>
<result column="TYPE" property="type" jdbcType="INTEGER"/>
<result column="COMMENT" property="comment" jdbcType="VARCHAR"/>
<result column="DEL_STATE" property="delState" jdbcType="CHAR"/>
<result column="ITEM_NAME" property="itemName" jdbcType="VARCHAR"/>
<result column="TYPE_ONE_NAME" property="typeOneName" jdbcType="VARCHAR"/>
</resultMap>
<resultMap id="ChartResultMap" type="com.ncda.entity.ext.ChartEntiey">
<id column="ID" property="id" jdbcType="INTEGER"/>
<result column="fdate" property="date" jdbcType="DATE"/>
<result column="DATE" property="date" jdbcType="DATE"/>
<result column="MONEY" property="money" jdbcType="DECIMAL"/>
<result column="ITEM_NAME" property="itemName" jdbcType="VARCHAR"/>
<result column="TYPE_ONE_NAME" property="typeOneName" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List" >
ID, DATE, MONEY, MONEY_STATE, TYPE, COMMENT, DEL_STATE, ITEM_NAME
</sql>
<select id="getAccountBill" resultMap="BaseResultMap">
SELECT
a.ID, a.DATE, a.MONEY, a.MONEY_STATE, a.TYPE, a.COMMENT, a.DEL_STATE, a.ITEM_NAME, b.TYPE_ONE_NAME
FROM
account_bill a
LEFT JOIN account_bill_type b ON a.TYPE = b.TYPE_ID
<where>
DEL_STATE = '0'
<if test="itemName != null and itemName != ''">
AND a.ITEM_NAME LIKE concat('%', #{ itemName }, '%')
</if>
<if test="yearMonth != null">
AND date_format(a.DATE, '%Y-%m') = date_format(#{ yearMonth }, '%Y-%m')
</if>
<if test="date != null">
AND a.DATE = #{ date }
</if>
<if test="type != null and type != ''">
AND a.TYPE = #{ type }
</if>
<if test="moneyState != null and moneyState != ''">
AND a.MONEY_STATE = #{ moneyState }
</if>
</where>
</select>
<insert id="batchSaveUploadData" parameterType="java.util.List">
insert into account_bill (DATE, MONEY, MONEY_STATE, TYPE, COMMENT, DEL_STATE, ITEM_NAME) values
<foreach collection="acBiList" item="acBi" separator=",">
(#{ acBi.date },
#{ acBi.money },
#{ acBi.moneyState },
#{ acBi.type },
#{ acBi.comment },
'0',
#{ acBi.itemName })
</foreach>
</insert>
<delete id="deleteDataByYearMonth" parameterType="java.lang.Integer">
DELETE FROM account_bill
WHERE
YEAR ( DATE ) = #{ year }
AND MONTH ( DATE ) = #{ month }
</delete>
<update id="updateAcBiData" parameterType="com.ncda.entity.ext.ExtAccountBill">
update account_bill
<set>
<if test="date != null">
DATE = #{date,jdbcType=DATE},
</if>
<if test="money != null">
MONEY = #{money,jdbcType=DECIMAL},
</if>
<if test="moneyState != null">
MONEY_STATE = #{moneyState,jdbcType=CHAR},
</if>
<if test="type != null">
TYPE = #{type,jdbcType=INTEGER},
</if>
<if test="comment != null">
COMMENT = #{comment,jdbcType=VARCHAR},
</if>
<if test="delState != null">
DEL_STATE = #{delState,jdbcType=CHAR},
</if>
<if test="itemName != null">
ITEM_NAME = #{itemName,jdbcType=VARCHAR},
</if>
</set>
where ID = #{id,jdbcType=INTEGER}
</update>
<select id="selectBarChartData" parameterType="com.ncda.entity.ext.ExtAccountBill" resultMap="ChartResultMap">
SELECT
<choose>
<when test="xdataType == '1'.toString()">
b.TYPE_ONE_NAME,
</when>
<otherwise>
DATE_FORMAT( DATE, '%Y-%m-01' ) fdate,
</otherwise>
</choose>
SUM( MONEY ) money
FROM
account_bill a
<if test="xdataType == '1'.toString()">
LEFT JOIN account_bill_type b ON a.TYPE = b.TYPE_ID
</if>
<where>
DEL_STATE = '0'
<if test="xdataType == '1'.toString()">
AND b.TYPE_ONE_NAME IS NOT NULL
</if>
<if test="moneyState != null and moneyState != ''">
AND MONEY_STATE = #{ moneyState }
</if>
<if test="startTime != null">
AND DATE &gt;= #{ startTime }
</if>
<if test="endTime != null">
AND DATE &lt;= #{ endTime }
</if>
</where>
GROUP BY
<if test="xdataType == '0'.toString()">
fdate
</if>
<if test="xdataType == '1'.toString()">
TYPE
</if>
</select>
<select id="selectCalendarHeatmapChartData" resultMap="ChartResultMap">
SELECT
a.DATE,
SUM( a.MONEY ) MONEY
FROM
(
SELECT DATE, MONEY, MONEY_STATE, TYPE, COMMENT, DEL_STATE, ITEM_NAME, USER_ID FROM account_bill
<where>
DEL_STATE = '0'
<if test="itemName != null and itemName != ''">
AND ITEM_NAME LIKE concat('%', #{ itemName }, '%')
</if>
<if test="year != null and year != ''">
AND YEAR(DATE) = #{ year }
</if>
<if test="type != null and type != ''">
AND TYPE = #{ type }
</if>
<if test="moneyState != null and moneyState != ''">
AND MONEY_STATE = #{ moneyState }
</if>
</where>
) a
GROUP BY
a.DATE
</select>
<select id="getWordCloudData" resultMap="ChartResultMap">
SELECT
ITEM_NAME,
COUNT(ITEM_NAME) id
FROM
account_bill
WHERE
DEL_STATE = '0'
GROUP BY ITEM_NAME
ORDER BY id DESC
LIMIT 0, 100
</select>
<select id="getPieChartDataByYear" resultMap="ChartResultMap">
SELECT
b.TYPE_ONE_NAME,
SUM(MONEY) money
FROM
account_bill a
LEFT JOIN account_bill_type b ON a.TYPE = b.TYPE_ID
WHERE
YEAR ( DATE ) = #{ 0 }
AND DEL_STATE = '0'
GROUP BY TYPE
HAVING TYPE IS NOT NULL
</select>
<update id="deleteAcBiTypeByTypeId" parameterType="string">
UPDATE account_bill
SET TYPE = NULL
WHERE TYPE = #{ 0 }
</update>
<update id="filterDataByAdvanceSetting" parameterType="com.ncda.entity.ext.AdvancedSetting">
UPDATE account_bill
SET DEL_STATE = '1'
<where>
<if test="moneyMax != null and moneyMax != 0">
AND MONEY &gt;= #{ moneyMax }
</if>
<if test="moneyMin != null and moneyMin != 0">
OR MONEY &lt;= #{ moneyMin }
</if>
<if test="filterKeyword !=null and filterKeyword != ''">
OR ITEM_NAME REGEXP #{ filterKeyword }
</if>
</where>
</update>
<update id="recoverData">
UPDATE account_bill
SET DEL_STATE = '0'
WHERE DEL_STATE = '1'
</update>
</mapper>

@ -0,0 +1,53 @@
<?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.ncda.dao.ext.AcBiTypeMapper" >
<resultMap id="BaseResultMap" type="com.ncda.entity.ext.ExtAccountBillType">
<id column="TYPE_ID" jdbcType="INTEGER" property="typeId" />
<result column="TYPE_ONE_NAME" jdbcType="VARCHAR" property="typeOneName" />
<result column="USER_ID" jdbcType="INTEGER" property="userId" />
<result column="TYPE_KEYWORD" jdbcType="VARCHAR" property="typeKeyword" />
</resultMap>
<select id="selectLevelOneType" resultMap="BaseResultMap">
SELECT TYPE_ID, TYPE_ONE_NAME, USER_ID, TYPE_KEYWORD FROM account_bill_type
</select>
<insert id="saveType" parameterType="com.ncda.entity.ext.ExtAccountBillType">
INSERT INTO
account_bill_type
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="typeOneName != null and typeOneName != ''">
TYPE_ONE_NAME,
</if>
<if test="userId != null and userId != ''">
USER_ID,
</if>
<if test="typeKeyword != null and typeKeyword != ''">
TYPE_KEYWORD,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="typeOneName != null and typeOneName != ''">
#{typeOneName,jdbcType=VARCHAR},
</if>
<if test="userId != null and userId != ''">
#{userId,jdbcType=INTEGER},
</if>
<if test="typeKeyword != null and typeKeyword != ''">
#{typeKeyword,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateType" parameterType="com.ncda.entity.AccountBillType">
UPDATE account_bill_type
SET TYPE_ONE_NAME = #{ typeOneName }, TYPE_KEYWORD = #{ typeKeyword }
WHERE TYPE_ID = #{typeId,jdbcType=INTEGER}
</update>
<delete id="deleteType" parameterType="string">
DELETE FROM account_bill_type
WHERE TYPE_ID = #{ 0 }
</delete>
</mapper>

@ -0,0 +1,103 @@
<?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.ncda.dao.ext.AcBilUploadRecordMapper" >
<resultMap id="BaseResultMap" type="com.ncda.entity.ext.ExtAccountBillUploadRecord">
<id column="ID" jdbcType="INTEGER" property="id" />
<result column="DATE" jdbcType="DATE" property="date" />
<result column="DEL_STATE" jdbcType="CHAR" property="delState" />
<result column="UPLOAD_TIME" jdbcType="TIMESTAMP" property="uploadTime" />
<result column="FILE_CONTENT" jdbcType="TIMESTAMP" property="fileContent" />
</resultMap>
<insert id="saveUploadRecordData" parameterType="com.ncda.entity.ext.ExtAccountBillUploadRecord" >
INSERT INTO account_bill_upload_record
(DATE, FILE_CONTENT, DEL_STATE, UPLOAD_TIME)
VALUES
(#{date,jdbcType=DATE},
#{fileContent,jdbcType=LONGVARCHAR},
#{delState,jdbcType=CHAR},
#{uploadTime,jdbcType=TIMESTAMP})
</insert>
<delete id="deletePrimaryData" parameterType="com.ncda.entity.ext.ExtAccountBillUploadRecord">
DELETE FROM
account_bill_upload_record
WHERE
date_format(DATE, '%Y-%m') = date_format(#{ date }, '%Y-%m')
</delete>
<delete id="deleteHistoryData">
DELETE FROM
account_bill_upload_record
WHERE
ID = #{ 0 }
</delete>
<select id="selectCountByYearMonth" parameterType="java.lang.Integer" resultType="java.lang.Integer">
SELECT
COUNT( 1 )
FROM
account_bill_upload_record
WHERE
YEAR ( DATE ) = #{year}
AND MONTH ( DATE ) = #{month}
AND DEL_STATE = '0'
</select>
<select id="selectDataByYearMonth" parameterType="java.lang.Integer" resultType="com.ncda.entity.ext.ExtAccountBillUploadRecord">
SELECT
ID, DATE, FILE_CONTENT fileContent, UPLOAD_TIME uploadTime
FROM
account_bill_upload_record
WHERE
YEAR ( DATE ) = #{year}
AND MONTH ( DATE ) = #{month}
AND DEL_STATE = '0'
</select>
<update id="deleteOldDataByYearMonth" parameterType="java.lang.Integer">
update account_bill_upload_record
<set>
DEL_STATE = '1',
</set>
where
YEAR ( DATE ) = #{year}
AND MONTH ( DATE ) = #{month}
AND DEL_STATE = '0'
</update>
<select id="getAllYearAndMonth" resultType="com.ncda.entity.ext.ExtAccountBillUploadRecord">
SELECT DATE FROM account_bill_upload_record WHERE DEL_STATE = '0'
</select>
<select id="getHistoryFileUploadTimeLine" resultMap="BaseResultMap" parameterType="com.ncda.entity.ext.ExtAccountBillUploadRecord">
SELECT
ID,
DATE,
FILE_CONTENT,
DEL_STATE,
UPLOAD_TIME
FROM
account_bill_upload_record
WHERE
date_format(DATE, '%Y-%m') = date_format(#{ date }, '%Y-%m')
ORDER BY
UPLOAD_TIME DESC
</select>
<select id="getCurrentFileUploadTimeLine" resultMap="BaseResultMap">
SELECT
ID,
DATE,
FILE_CONTENT,
UPLOAD_TIME
FROM
account_bill_upload_record
WHERE
DEL_STATE = 0
ORDER BY
DATE DESC
</select>
</mapper>

@ -0,0 +1,82 @@
<?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.ncda.dao.ext.ExtTodoListMapper" >
<resultMap id="BaseResultMap" type="com.ncda.entity.ext.ExtTodoList" >
<id column="ID" jdbcType="INTEGER" property="id" />
<result column="CONTENT" jdbcType="VARCHAR" property="content" />
<result column="STATUS" jdbcType="BIT" property="status" />
<result column="CREATE_TIME" jdbcType="TIMESTAMP" property="createTime" />
<result column="COMPLETE_TIME" jdbcType="TIMESTAMP" property="completeTime" />
<result column="USER_ID" jdbcType="INTEGER" property="userId" />
<result column="DEL_STATE" jdbcType="BIT" property="delState" />
</resultMap>
<sql id="Base_Column_List">
ID, CONTENT, STATUS, CREATE_TIME, COMPLETE_TIME, USER_ID, DEL_STATE
</sql>
<insert id="addTodoList" parameterType="com.ncda.entity.ext.ExtTodoList" >
INSERT INTO todo_list (CONTENT, STATUS, CREATE_TIME, DEL_STATE)
VALUES (#{ content }, false, current_timestamp, false)
</insert>
<update id="updateTodoList" parameterType="com.ncda.entity.ext.ExtTodoList" >
update todo_list
<set >
<if test="content != null" >
CONTENT = #{content,jdbcType=VARCHAR},
</if>
<if test="status != null" >
STATUS = #{status,jdbcType=BIT},
</if>
<if test="createTime != null" >
CREATE_TIME = #{createTime,jdbcType=TIMESTAMP},
</if>
COMPLETE_TIME = #{completeTime,jdbcType=TIMESTAMP},
</set>
where ID = #{id,jdbcType=INTEGER}
</update>
<update id="removeTodoList" parameterType="com.ncda.entity.ext.ExtTodoList">
UPDATE todo_list
SET DEL_STATE = true
WHERE ID = #{id,jdbcType=INTEGER}
</update>
<update id="recoverTodoList" parameterType="com.ncda.entity.ext.ExtTodoList">
UPDATE todo_list
SET DEL_STATE = false
WHERE ID = #{id,jdbcType=INTEGER}
</update>
<delete id="deleteTodoList" parameterType="com.ncda.entity.ext.ExtTodoList">
DELETE FROM todo_list
WHERE ID = #{id,jdbcType=INTEGER}
</delete>
<select id="getTodoList" resultMap="BaseResultMap">
( SELECT
<include refid="Base_Column_List" />
FROM
todo_list
WHERE
STATUS = 0
ORDER BY
CREATE_TIME DESC
LIMIT 999999999 )
UNION ALL
(
SELECT
<include refid="Base_Column_List" />
FROM
todo_list
WHERE
STATUS = 1
ORDER BY
COMPLETE_TIME DESC
LIMIT 999999999
)
</select>
</mapper>

@ -0,0 +1,37 @@
package com.ncda.ncdaadminbackend;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ncda.entity.AccountBill;
import com.ncda.service.AcBiService;
import com.ncda.util.RedisUtil;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@SpringBootTest
class NcdaAdminBackendApplicationTests {
@Autowired
private RedisUtil redisUtil;
@Test
void contextLoads() {
}
@Test
void redisTest() {
redisUtil.set("test", "测试 ");
System.out.println(redisUtil.get("test"));
}
}

@ -0,0 +1,5 @@
[*.{js,jsx,ts,tsx,vue}]
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
insert_final_newline = true

@ -0,0 +1,24 @@
# gmh-admin
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Lints and fixes files
```
npm run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).

@ -0,0 +1,5 @@
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
.wrapper[data-v-44fa1227]{position:relative;height:100%;background-color:#323232}.main[data-v-44fa1227]{position:absolute;top:50%;left:50%;width:330px;height:260px;margin-top:-180px;margin-left:-165px}.main-info--emphasis[data-v-44fa1227],.main-info--normal[data-v-44fa1227]{font-weight:700;font-style:italic}.main-info--emphasis[data-v-44fa1227]{color:#459f75;font-size:170px}.main-info--normal[data-v-44fa1227]{color:#fff;font-size:150px}.el-button[data-v-44fa1227]{width:120px}

@ -0,0 +1 @@
.el-form[data-v-e488f654]{padding:0 10px}.el-date-editor[data-v-e488f654]{width:100%!important}

@ -0,0 +1 @@
.search-box[data-v-04b88941]{margin-bottom:10px}

@ -0,0 +1 @@
.el-tab-pane[data-v-2c697798]{padding:20px 0;border-radius:5px}.btn-batch[data-v-2c697798]{margin:20px 0 0 10px}

@ -0,0 +1 @@
.el-row[data-v-76e5b69b]{margin-top:20px}.chart[data-v-76e5b69b]{width:100%;height:330px;border-radius:8px;background-color:#f5f5f5;box-shadow:0 0 5px transparent}.chart[data-v-76e5b69b]:hover{box-shadow:0 0 5px #459f75}

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
.wrapper[data-v-8c0eec08]{position:relative;height:100%;background-color:#eee}.main[data-v-8c0eec08]{position:relative;top:50%;height:300px;background:url(../img/error-page.f95a23eb.png) 50% no-repeat;transform:translateY(-50%)}.btn[data-v-8c0eec08]{position:absolute;border:0;box-shadow:none!important;background-color:transparent;color:#fff!important;font-size:18px}.btn-return[data-v-8c0eec08]{left:calc(50% - 279px);width:117px;height:78px;padding:22px 18px 0 0;background-image:url(../img/error-return-normal.539ddd29.png)}.btn-return[data-v-8c0eec08]:hover{background-image:url(../img/error-return-active.405291b7.png)}.btn-refresh[data-v-8c0eec08]{right:calc(50% - 279px);width:99px;height:64px;padding:8px 5px 0 0;background-image:url(../img/error-refresh-normal.3e9d834d.png)}.btn-refresh[data-v-8c0eec08]:hover{background-image:url(../img/error-refresh-active.f96d3950.png)}

@ -0,0 +1 @@
.el-row[data-v-21cdafd3]{margin-top:20px}.chart[data-v-21cdafd3]{width:100%;height:350px;border-radius:8px;background-color:#f5f5f5;box-shadow:0 0 5px transparent}.chart[data-v-21cdafd3]:hover{box-shadow:0 0 5px #459f75}

@ -0,0 +1 @@
.login-wrapper[data-v-01571756]{height:100%}#canvas[data-v-01571756]{width:100%}.login-main[data-v-01571756]{position:absolute;top:50%;left:50%;width:320px;height:370px;padding:20px 35px;border:1px solid #eee;margin:-185px 0 0 -160px}.login-main[data-v-01571756]:after,.login-main[data-v-01571756]:before{position:absolute;height:12px;content:""}.login-main[data-v-01571756]:before{left:4px;right:4px;top:-12px;z-index:2;background-color:#f5f5f5}.login-main[data-v-01571756]:after{left:10px;right:10px;top:-22px;z-index:1;background-color:#f0f0f0}.login-title[data-v-01571756]{padding-bottom:15px;border-bottom:2px solid #459f75;margin:15px 0 45px 0;color:#555;text-align:center;font-size:30px}.login-btn[data-v-01571756]{width:100%;height:36px;margin-top:30px;font-size:16px}.login-tip[data-v-01571756]{color:#999;font-size:12px;line-height:30px}.login-anim[data-v-01571756]{position:absolute;bottom:0;left:0;z-index:-1}

@ -0,0 +1 @@
.home[data-v-05a4154c]{height:calc(100% - 40px)}.stat[data-v-05a4154c]{display:flex;height:230px}.stat-user[data-v-05a4154c]{position:relative;width:300px;background-color:#f5f5f5;box-shadow:2px 2px 5px #ccc}.stat-user__title[data-v-05a4154c]{height:100px;background-color:#459f75;color:#fff;font-size:18px;font-weight:700;text-align:center;line-height:70px}.stat-user__detail[data-v-05a4154c]{padding-top:50px;color:#666;font-size:13px;text-align:center}.stat-user__portrait[data-v-05a4154c]{position:absolute;top:50%;left:50%;width:80px;height:80px;border-radius:40px;border:3px solid #fff;box-shadow:0 0 5px #ccc;margin-top:-55px;margin-left:-40px}.stat-info[data-v-05a4154c]{flex:1;margin-left:20px}.el-row+.el-row[data-v-05a4154c]{margin-top:10px}.stat-info__item[data-v-05a4154c]{display:flex;height:110px;box-shadow:2px 2px 5px #ccc;background-color:#f5f5f5}.stat-info__icon[data-v-05a4154c]{display:flex;justify-content:center;align-items:center;width:80px;color:#fff}.stat-info__icon [class*=el-icon][data-v-05a4154c]{font-size:50px}.stat-info__detail[data-v-05a4154c]{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center}.stat-info__total[data-v-05a4154c]{color:#0085d0;font-size:27px;font-weight:700}.stat-info__title[data-v-05a4154c]{color:#666;font-size:12px}.list[data-v-05a4154c]{display:flex;height:calc(100% - 250px)}.list .el-col[data-v-05a4154c]{height:100%}.el-card[data-v-05a4154c]{height:100%;background-color:#f5f5f5}.el-card .el-icon-plus[data-v-05a4154c]{float:right;color:#f56c6c;font-weight:700;cursor:pointer}.el-card__header span[data-v-05a4154c]{color:#3b7459}.el-card__body p[data-v-05a4154c]{border-bottom:1px solid #e5e5e5;color:#555;font-size:15px;line-height:30px}.el-card__body .active[data-v-05a4154c]{color:#666;text-decoration:line-through}.latest-new-list__time[data-v-05a4154c]{color:#666;font-size:14px}.todolist-box[data-v-05a4154c]{height:450px;overflow-y:auto}.home .el-card__body{padding-top:0}

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
[class*=el-icon][data-v-133f1952]{cursor:pointer}.el-header[data-v-133f1952]{width:100%;padding:0 30px;background-color:#459f75;color:#fff;font-size:16px;line-height:53px}.btn-info[data-v-133f1952],.header-title[data-v-133f1952]{display:inline-block}.btn-collapse[data-v-133f1952],.el-icon-bell[data-v-133f1952],.header-title[data-v-133f1952]{font-size:25px}.header-right[data-v-133f1952]{float:right}.btn-collapse[data-v-133f1952]{vertical-align:sub}.btn-info[data-v-133f1952]{position:relative}.btn-info-tip[data-v-133f1952]{position:absolute;top:10px;width:8px;height:8px;border-radius:4px;background-color:#ff464f}.el-icon-bell[data-v-133f1952]{color:#fff;vertical-align:text-top}.header-portrait[data-v-133f1952]{width:40px;height:40px;border-radius:20px;margin:0 20px;vertical-align:middle}.el-dropdown-link[data-v-133f1952]{color:#fff;cursor:pointer}.el-menu[data-v-f6a8d23a]{height:100%;border:none}.el-menu[data-v-f6a8d23a]:not(.el-menu--collapse){width:200px}.el-menu-item.is-active[data-v-f6a8d23a]{border-left:3px solid #459f75;background-color:#171717!important}.main-tags[data-v-773576b9]{position:absolute;top:0;left:0;z-index:2;width:100%;height:42px;padding:8px 5px;background-color:#f5f5f5;box-shadow:1px 0 2px #ccc}.tag-list[data-v-773576b9]{float:left;font-size:14px!important}.tag-item[data-v-773576b9]{float:left;padding:3px 15px;border:1px solid #ccc;border-radius:5px}.tag-item+.tag-item[data-v-773576b9]{margin-left:10px}.tag-item.active[data-v-773576b9]{border-color:#333;background-color:#333;color:#fff!important}.tag-item[data-v-773576b9]:hover{background-color:#444;color:#fff}.tag-item:hover .tag-item-title[data-v-773576b9]{color:#fff}.tag-item .el-icon-close[data-v-773576b9]{position:relative;right:-5px;margin-left:3px;cursor:pointer}.tag-item-title[data-v-773576b9]{color:#666}.tag-item-title.router-link-active[data-v-773576b9]{color:#fff}.el-dropdown[data-v-773576b9]{position:absolute;right:5px}.wrapper[data-v-77d7f57e]{position:relative;height:100%;overflow:hidden;background-color:#eee}.main[data-v-77d7f57e],.sidebar[data-v-77d7f57e]{position:absolute;top:60px;bottom:0}.main[data-v-77d7f57e]{left:200px;right:0;padding:20px;overflow:auto;transition:left .3s ease-in-out}.main-cont[data-v-77d7f57e]{margin-top:40px}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@ -0,0 +1,2 @@
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>gmh-admin</title><script src="http://pv.sohu.com/cityjson?ie=utf-8"></script><script>sessionStorage.setItem("ip", returnCitySN["cip"]);
sessionStorage.setItem("area", returnCitySN["cname"]);</script><link href="/css/chunk-0acb3f9e.2cbeeff5.css" rel="prefetch"><link href="/css/chunk-1fd412cf.124ef006.css" rel="prefetch"><link href="/css/chunk-2608ff9c.a21973e2.css" rel="prefetch"><link href="/css/chunk-297a914b.dd527f16.css" rel="prefetch"><link href="/css/chunk-3944b608.f2ae8019.css" rel="prefetch"><link href="/css/chunk-40ea2ca3.c78f0aaf.css" rel="prefetch"><link href="/css/chunk-67578d1d.c9c95476.css" rel="prefetch"><link href="/css/chunk-76bbdbd1.141924c7.css" rel="prefetch"><link href="/css/chunk-777aef64.0088890c.css" rel="prefetch"><link href="/css/chunk-7cc4723d.04637574.css" rel="prefetch"><link href="/css/chunk-89432710.5f3b431b.css" rel="prefetch"><link href="/css/chunk-8e1020a0.e2421c84.css" rel="prefetch"><link href="/js/chunk-0acb3f9e.e3329e75.js" rel="prefetch"><link href="/js/chunk-1fd412cf.b389dc43.js" rel="prefetch"><link href="/js/chunk-2608ff9c.0c53efe2.js" rel="prefetch"><link href="/js/chunk-26c7b2ee.d97aa210.js" rel="prefetch"><link href="/js/chunk-297a914b.50fde7f6.js" rel="prefetch"><link href="/js/chunk-2d209162.d305f657.js" rel="prefetch"><link href="/js/chunk-3944b608.20d91c3e.js" rel="prefetch"><link href="/js/chunk-40ea2ca3.58315ca0.js" rel="prefetch"><link href="/js/chunk-67578d1d.aa841dc6.js" rel="prefetch"><link href="/js/chunk-76bbdbd1.82e4abfb.js" rel="prefetch"><link href="/js/chunk-777aef64.7d303ad3.js" rel="prefetch"><link href="/js/chunk-7cc4723d.844a6d62.js" rel="prefetch"><link href="/js/chunk-89432710.26b1f6a6.js" rel="prefetch"><link href="/js/chunk-8e1020a0.1cd27049.js" rel="prefetch"><link href="/css/app.61155632.css" rel="preload" as="style"><link href="/js/app.26c192ac.js" rel="preload" as="script"><link href="/js/chunk-vendors.b840bfba.js" rel="preload" as="script"><link href="/css/app.61155632.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but gmh-admin doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/js/chunk-vendors.b840bfba.js"></script><script src="/js/app.26c192ac.js"></script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,2 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-0acb3f9e"],{"3a74":function(t,a,s){"use strict";s("454c")},"454c":function(t,a,s){},"5b5e":function(t,a,s){"use strict";s.r(a);var n=function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("div",{staticClass:"wrapper"},[s("div",{staticClass:"main"},[t._m(0),s("div",{staticClass:"main-btn-group"},[s("el-row",[s("el-button",{staticClass:"pull-left",attrs:{type:"danger"},on:{click:t.goBack}},[t._v("上一页")]),s("router-link",{attrs:{to:"/"}},[s("el-button",{staticClass:"pull-right",attrs:{type:"info"}},[t._v("首页")])],1)],1)],1)])])},i=[function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("div",{staticClass:"main-info"},[s("span",{staticClass:"main-info--emphasis"},[t._v("4")]),s("span",{staticClass:"main-info--normal"},[t._v("0")]),s("span",{staticClass:"main-info--emphasis"},[t._v("4")])])}],e={name:"404",methods:{goBack:function(){this.$router.go(-1)}}},c=e,l=(s("3a74"),s("2877")),o=Object(l["a"])(c,n,i,!1,null,"44fa1227",null);a["default"]=o.exports}}]);
//# sourceMappingURL=chunk-0acb3f9e.e3329e75.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,2 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2608ff9c"],{1386:function(e,t,n){"use strict";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("div",{staticClass:"search-box"},[n("el-row",{attrs:{type:"flex"}},[n("el-col",{attrs:{xs:8,sm:4,md:5,lg:4,xl:4}},[n("span",{staticClass:"search-label"},[e._v("名称:")]),n("el-input",{staticStyle:{width:"70% !important"},attrs:{placeholder:"请输入内容",size:"mini",clearable:""},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.searchClick.apply(null,arguments)}},model:{value:e.searchForm.itemName,callback:function(t){e.$set(e.searchForm,"itemName",t)},expression:"searchForm.itemName"}})],1),n("el-col",{attrs:{span:8}},[n("el-button",{attrs:{type:"primary",size:"mini"},on:{click:e.searchClick}},[e._v("搜索")]),n("el-button",{attrs:{type:"primary",size:"mini"},on:{click:e.searchClick}},[e._v("新增")])],1)],1)],1),n("el-row",{attrs:{gutter:10}},[n("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],ref:"tableRef",staticStyle:{width:"120%"},attrs:{data:e.tableData,border:"",stripe:"","highlight-current-row":"",height:e.tableHeight}},[n("el-table-column",{attrs:{property:"itemName",label:"名称",width:"180","show-overflow-tooltip":""}}),n("el-table-column",{attrs:{property:"typeOneName",label:"描述"}}),n("el-table-column",{attrs:{property:"comment",label:"访问次数","show-overflow-tooltip":""}}),n("el-table-column",{attrs:{label:"操作",width:"130",align:"center"},scopedSlots:e._u([{key:"default",fn:function(t){return[n("el-button",{attrs:{circle:"",icon:"el-icon-edit-outline",type:"primary",title:"编辑",size:"small"},on:{click:function(n){return e.rowEdit(t.row)}}})]}}])})],1),n("el-row",{staticClass:"margin-t-5"},[n("el-col",{attrs:{span:22}})],1)],1)],1)},l=[],r={data:function(){return{screenHeight:0,searchForm:{},loading:!1,tableData:[]}},methods:{searchClick:function(){},getScreenHeight:function(){var e=this;this.screenHeight=document.documentElement.clientHeight,window.onresize=function(){return function(){e.screenHeight=document.documentElement.clientHeight}()}},rowEdit:function(e){}},mounted:function(){this.getScreenHeight()},computed:{tableHeight:function(){return this.screenHeight-220+"px"}}},a=r,c=(n("c647"),n("2877")),o=Object(c["a"])(a,i,l,!1,null,"04b88941",null);t["default"]=o.exports},c647:function(e,t,n){"use strict";n("d2c4")},d2c4:function(e,t,n){}}]);
//# sourceMappingURL=chunk-2608ff9c.0c53efe2.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,2 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d209162"],{a80e:function(e,t,n){"use strict";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticStyle:{height:"90%"}},[n("iframe",{staticStyle:{width:"100%",height:"100%"},attrs:{src:e.reportUrl,frameborder:"0",id:"iframeBox"}})])},r=[],c={data:function(){return{reportUrl:"/sosob/sosobMarket.html",screenHeight:0}},created:function(){},mounted:function(){this.getScreenHeight()},methods:{getScreenHeight:function(){var e=this;this.screenHeight=document.documentElement.clientHeight,window.onresize=function(){return function(){e.screenHeight=document.documentElement.clientHeight}()}}}},o=c,s=n("2877"),u=Object(s["a"])(o,i,r,!1,null,"f5289354",null);t["default"]=u.exports}}]);
//# sourceMappingURL=chunk-2d209162.d305f657.js.map

@ -0,0 +1 @@
{"version":3,"sources":["webpack:///./src/components/page/Test.vue?9084","webpack:///src/components/page/Test.vue","webpack:///./src/components/page/Test.vue?6a3e","webpack:///./src/components/page/Test.vue"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticStyle","attrs","reportUrl","staticRenderFns","data","screenHeight","created","mounted","getScreenHeight","methods","document","documentElement","clientHeight","window","onresize","component"],"mappings":"uHAAA,IAAIA,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,CAAC,OAAS,QAAQ,CAACF,EAAG,SAAS,CAACE,YAAY,CAAC,MAAQ,OAAO,OAAS,QAAQC,MAAM,CAAC,IAAMP,EAAIQ,UAAU,YAAc,IAAI,GAAK,kBACjPC,EAAkB,GCWtB,GACEC,KADF,WAEI,MAAO,CACLF,UAAW,0BACXG,aAAc,IAGlBC,QAPF,aAQEC,QARF,WASIZ,KAAKa,mBAEPC,QAAS,CACPD,gBADJ,WACA,WACMb,KAAKU,aAAeK,SAASC,gBAAgBC,aAC7CC,OAAOC,SAAW,WAChB,OAAO,WACL,EAAV,mDADe,OC3B8U,I,YCOzVC,EAAY,eACd,EACAtB,EACAU,GACA,EACA,KACA,WACA,MAIa,aAAAY,E","file":"js/chunk-2d209162.d305f657.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"height\":\"90%\"}},[_c('iframe',{staticStyle:{\"width\":\"100%\",\"height\":\"100%\"},attrs:{\"src\":_vm.reportUrl,\"frameborder\":\"0\",\"id\":\"iframeBox\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div style=\"height: 90%\">\r\n <iframe\r\n :src=\"reportUrl\"\r\n frameborder=\"0\"\r\n style=\"width:100%; height: 100%;\"\r\n id=\"iframeBox\"\r\n ></iframe>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n data() {\r\n return {\r\n reportUrl: \"/sosob/sosobMarket.html\",\r\n screenHeight: 0\r\n };\r\n },\r\n created() {},\r\n mounted() {\r\n this.getScreenHeight();\r\n },\r\n methods: {\r\n getScreenHeight() {\r\n this.screenHeight = document.documentElement.clientHeight;\r\n window.onresize = () => {\r\n return (() => {\r\n this.screenHeight = document.documentElement.clientHeight;\r\n })();\r\n };\r\n }\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"less\"></style>\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Test.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Test.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Test.vue?vue&type=template&id=f5289354&scoped=true&\"\nimport script from \"./Test.vue?vue&type=script&lang=js&\"\nexport * from \"./Test.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f5289354\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,2 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-67578d1d"],{"034c":function(t,n,e){"use strict";e.r(n);var r=function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"wrapper"},[e("div",{staticClass:"main"},[e("el-button",{staticClass:"btn btn-return J-page-return",on:{click:t.goBack}},[t._v("上一页")]),e("router-link",{attrs:{to:"/"}},[e("el-button",{staticClass:"btn btn-refresh J-page-refresh"},[t._v("首页")])],1)],1)])},s=[],c={name:"Error",methods:{goBack:function(){this.$router.go(-1)}}},a=c,o=(e("79c4"),e("2877")),i=Object(o["a"])(a,r,s,!1,null,"8c0eec08",null);n["default"]=i.exports},"79c4":function(t,n,e){"use strict";e("f18f")},f18f:function(t,n,e){}}]);
//# sourceMappingURL=chunk-67578d1d.aa841dc6.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,2 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-777aef64"],{"02906":function(e,t,r){"use strict";r.r(t);var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"login-wrapper"},[r("div",{staticClass:"login-main"},[r("h3",{staticClass:"login-title"},[e._v("MAA")]),r("el-form",{ref:"ruleForm",attrs:{model:e.ruleForm,rules:e.rules}},[r("el-form-item",{attrs:{prop:"username"}},[r("el-input",{attrs:{placeholder:"用户名"},model:{value:e.ruleForm.username,callback:function(t){e.$set(e.ruleForm,"username",t)},expression:"ruleForm.username"}})],1),r("el-form-item",{attrs:{prop:"password"}},[r("el-input",{attrs:{type:"password",placeholder:"密码"},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.submitForm("ruleForm")}},model:{value:e.ruleForm.password,callback:function(t){e.$set(e.ruleForm,"password",t)},expression:"ruleForm.password"}})],1),r("el-form-item",[r("el-button",{staticClass:"login-btn",attrs:{type:"primary"},on:{click:function(t){return e.submitForm("ruleForm")}}},[e._v("登录")]),r("p",{staticClass:"login-tip"},[e._v("提示:用户名和密可以随便填。")])],1)],1)],1),r("canvas",{staticClass:"login-anim",attrs:{id:"canvas"}})])},i=[],o=(r("cb29"),{name:"login",data:function(){return{ruleForm:{username:"admin",password:"123123"},rules:{username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]}}},methods:{submitForm:function(e){var t=this;this.$refs[e].validate((function(e){if(!e)return t.$message.error("登录表单字段输入格式有误"),!1;localStorage.setItem("username",t.ruleForm.username),t.$router.push("/")}))}},mounted:function(){var e=document.getElementById("canvas"),t=e.getContext("2d");e.width=e.parentNode.offsetWidth,e.height=e.parentNode.offsetHeight,console.log(e.width,e.height),window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)}}();var r=40,n=e.height-150,i=0,o=["rgba(69, 159, 117, 0.1)","rgba(95, 170, 135, 0.6)","rgba(69, 159, 117, 0.4)"];function a(){t.clearRect(0,0,e.width,e.height),i++;for(var s=o.length-1;s>=0;s--){t.fillStyle=o[s];var l=(i+70*s)*Math.PI/180,u=Math.sin(l)*r,m=Math.cos(l)*r;t.beginPath(),t.moveTo(0,n+u),t.moveTo(0,n+u),t.bezierCurveTo(e.width/2,n+u-r,e.width/2,n+m-r,e.width,n+m),t.lineTo(e.width,e.height),t.lineTo(0,e.height),t.lineTo(0,n+u),t.closePath(),t.fill()}requestAnimFrame(a)}a()}}),a=o,s=(r("f374"),r("2877")),l=Object(s["a"])(a,n,i,!1,null,"01571756",null);t["default"]=l.exports},"7e5c":function(e,t,r){},"81d5":function(e,t,r){"use strict";var n=r("7b0b"),i=r("23cb"),o=r("50c4");e.exports=function(e){var t=n(this),r=o(t.length),a=arguments.length,s=i(a>1?arguments[1]:void 0,r),l=a>2?arguments[2]:void 0,u=void 0===l?r:i(l,r);while(u>s)t[s++]=e;return t}},cb29:function(e,t,r){var n=r("23e7"),i=r("81d5"),o=r("44d2");n({target:"Array",proto:!0},{fill:i}),o("fill")},f374:function(e,t,r){"use strict";r("7e5c")}}]);
//# sourceMappingURL=chunk-777aef64.7d303ad3.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save