工业测量
This commit is contained in:
13
src/main/java/com/xkrs/WordAndExcelApplication.java
Normal file
13
src/main/java/com/xkrs/WordAndExcelApplication.java
Normal file
@ -0,0 +1,13 @@
|
||||
package com.xkrs;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class WordAndExcelApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(WordAndExcelApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
23
src/main/java/com/xkrs/config/CorsConfig.java
Normal file
23
src/main/java/com/xkrs/config/CorsConfig.java
Normal file
@ -0,0 +1,23 @@
|
||||
package com.xkrs.config;
|
||||
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 系统跨域配置
|
||||
* @author tajochen
|
||||
*/
|
||||
@Configuration
|
||||
public class CorsConfig implements WebMvcConfigurer {
|
||||
|
||||
@Resource
|
||||
private CorsInterceptor corsInterceptor;
|
||||
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
registry.addInterceptor(corsInterceptor);
|
||||
}
|
||||
}
|
29
src/main/java/com/xkrs/config/CorsInterceptor.java
Normal file
29
src/main/java/com/xkrs/config/CorsInterceptor.java
Normal file
@ -0,0 +1,29 @@
|
||||
package com.xkrs.config;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* 跨域处理
|
||||
* @author tajochen
|
||||
*/
|
||||
@Component
|
||||
public class CorsInterceptor implements HandlerInterceptor {
|
||||
|
||||
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
|
||||
|
||||
//添加跨域CORS
|
||||
response.setHeader("Access-Control-Allow-Origin", "*");
|
||||
response.setHeader("Access-Control-Allow-Credentials", "false");
|
||||
response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
|
||||
response.setHeader("Access-Control-Allow-Headers", "Content-Type , Authorization," +
|
||||
"Accept,Origin,X-Requested-With");
|
||||
response.setHeader("Access-Control-Max-Age", "216000");
|
||||
response.setHeader("Content-Type","application/json;charset=UTF-8");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
37
src/main/java/com/xkrs/config/MvcConfig.java
Normal file
37
src/main/java/com/xkrs/config/MvcConfig.java
Normal file
@ -0,0 +1,37 @@
|
||||
package com.xkrs.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.scheduling.TaskScheduler;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
|
||||
import org.springframework.web.servlet.config.annotation.CorsRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
/**
|
||||
* WebMVC配置
|
||||
* @author Tajochen
|
||||
*/
|
||||
@Configuration
|
||||
public class MvcConfig implements WebMvcConfigurer {
|
||||
|
||||
/**
|
||||
* 放行跨域请求
|
||||
*/
|
||||
@Override
|
||||
public void addCorsMappings(CorsRegistry registry) {
|
||||
registry.addMapping("/**")
|
||||
.allowedOrigins("*")
|
||||
.allowedMethods("*")
|
||||
.allowedHeaders("*");
|
||||
}
|
||||
|
||||
/**
|
||||
* 定时任务线程池更改,防止多个任务并行
|
||||
*/
|
||||
@Bean
|
||||
public TaskScheduler taskScheduler() {
|
||||
final ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
|
||||
scheduler.setPoolSize(5);
|
||||
return scheduler;
|
||||
}
|
||||
}
|
87
src/main/java/com/xkrs/controller/DataDictController.java
Normal file
87
src/main/java/com/xkrs/controller/DataDictController.java
Normal file
@ -0,0 +1,87 @@
|
||||
package com.xkrs.controller;
|
||||
|
||||
import com.xkrs.dao.DataDictDao;
|
||||
import com.xkrs.encapsulation.PromptMessageEnum;
|
||||
import com.xkrs.model.entity.DataDict;
|
||||
import com.xkrs.model.qo.DataDictQo;
|
||||
import com.xkrs.model.qo.DataDictUpdateQo;
|
||||
import com.xkrs.service.DataDictService;
|
||||
import com.xkrs.util.Query;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.transaction.Transactional;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 10:54
|
||||
*/
|
||||
@RestController
|
||||
public class DataDictController {
|
||||
|
||||
@Resource
|
||||
private DataDictService dataDictService;
|
||||
|
||||
@Resource
|
||||
private DataDictDao dataDictDao;
|
||||
|
||||
@Resource
|
||||
private Query query;
|
||||
|
||||
/**
|
||||
* 添加字典变量数据
|
||||
* @param dataDictQo
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/insertDataDict")
|
||||
public String insertDataDict(@RequestBody DataDictQo dataDictQo){
|
||||
return dataDictService.insertDataDict(dataDictQo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 动态多条件查询字典信息
|
||||
* @param dictChineseName
|
||||
* @param dictEnglishName
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/selectDataDict")
|
||||
public String selectDataDict(@RequestParam("dictChineseName") String dictChineseName,
|
||||
@RequestParam("dictEnglishName") String dictEnglishName){
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
List<DataDict> dataDict = query.selectDataDict(dictChineseName, dictEnglishName);
|
||||
if(dataDict == null || dataDict.size() == 0){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"暂时还没有该型号类型的字典信息!",locale);
|
||||
}
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,dataDict,locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id查询字典信息,用于数据回显,方便进行修改操作
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/selectDataDictById")
|
||||
public String selectDataDictById(@RequestParam("id") Integer id){
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
DataDict dataDict = dataDictDao.findById(id);
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,dataDict,locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id修改字典信息
|
||||
* @param dataDictUpdateQo
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/updateDict")
|
||||
@Transactional(rollbackOn = Exception.class)
|
||||
public String updateDict(@RequestBody DataDictUpdateQo dataDictUpdateQo){
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
dataDictDao.updateDict(dataDictUpdateQo.getId(),dataDictUpdateQo.getDictChineseName());
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"修改成功!",locale);
|
||||
}
|
||||
}
|
74
src/main/java/com/xkrs/controller/DataSourceController.java
Normal file
74
src/main/java/com/xkrs/controller/DataSourceController.java
Normal file
@ -0,0 +1,74 @@
|
||||
package com.xkrs.controller;
|
||||
|
||||
import com.xkrs.dao.DataSourceDao;
|
||||
import com.xkrs.encapsulation.PromptMessageEnum;
|
||||
import com.xkrs.model.qo.DataSourceQo;
|
||||
import com.xkrs.service.DataSourceService;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 17:05
|
||||
*/
|
||||
@RestController
|
||||
public class DataSourceController {
|
||||
|
||||
@Resource
|
||||
private DataSourceService dataSourceService;
|
||||
|
||||
@Resource
|
||||
private DataSourceDao dataSourceDao;
|
||||
|
||||
/**
|
||||
* 添加测量数据
|
||||
* @param dataSourceQo
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/insertDataSource")
|
||||
public String insertDataSource(@RequestBody DataSourceQo dataSourceQo){
|
||||
return dataSourceService.insertDataSource(dataSourceQo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询某一产品的测量信息
|
||||
* @param dataModelNumber
|
||||
* @param dataBatchNumber
|
||||
* @param dataMachineCode
|
||||
* @param productNumber
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/selectDataSource")
|
||||
public String selectDataSource(@RequestParam("dataModelNumber") String dataModelNumber,
|
||||
@RequestParam("dataBatchNumber") String dataBatchNumber,
|
||||
@RequestParam("dataMachineCode") String dataMachineCode,
|
||||
@RequestParam("productNumber") String productNumber){
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
List<Map<String, String>> maps = dataSourceDao.selectDataSource(dataModelNumber, dataBatchNumber, dataMachineCode, productNumber);
|
||||
if(maps == null || maps.size() == 0){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"暂时没有该产品的测量信息!",locale);
|
||||
}
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,maps,locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部的测量信息
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/selectAllSource")
|
||||
public String selectAllSource(){
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
List<Map<String, String>> maps = dataSourceDao.selectAllSource();
|
||||
if(maps == null || maps.size() == 0){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"暂时没有该产品的测量信息!",locale);
|
||||
}
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,maps,locale);
|
||||
}
|
||||
}
|
73
src/main/java/com/xkrs/controller/FileController.java
Normal file
73
src/main/java/com/xkrs/controller/FileController.java
Normal file
@ -0,0 +1,73 @@
|
||||
package com.xkrs.controller;
|
||||
|
||||
import com.xkrs.dao.FileDao;
|
||||
import com.xkrs.encapsulation.PromptMessageEnum;
|
||||
import com.xkrs.model.qo.FileQo;
|
||||
import com.xkrs.model.qo.FileUpdateQo;
|
||||
import com.xkrs.service.FileService;
|
||||
import com.xkrs.util.ExcelUploadUtil;
|
||||
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.transaction.Transactional;
|
||||
import java.io.IOException;
|
||||
import java.util.Locale;
|
||||
|
||||
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 16:01
|
||||
*/
|
||||
@RestController
|
||||
public class FileController {
|
||||
|
||||
@Resource
|
||||
private FileService fileService;
|
||||
|
||||
@Resource
|
||||
private FileDao fileDao;
|
||||
|
||||
/**
|
||||
* 上传模板信息
|
||||
* @param fileQo
|
||||
* @param fileExcel
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
@PostMapping("/insertFileExcel")
|
||||
public String insertFileExcel(FileQo fileQo, @RequestParam("fileExcel") MultipartFile fileExcel) throws IOException {
|
||||
return fileService.insertFileExcel(fileQo,fileExcel);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改上传的模板信息
|
||||
* @param fileUpdateQo
|
||||
* @param fileExcel
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
@PostMapping("/updateFileUploadPath")
|
||||
@Transactional(rollbackOn = Exception.class)
|
||||
public String updateFileUploadPath(FileUpdateQo fileUpdateQo,@RequestParam("fileExcel") MultipartFile fileExcel) throws IOException {
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
String file = ExcelUploadUtil.memoryFile(fileExcel);
|
||||
fileDao.updateFileUploadPath(fileUpdateQo.getFileModelNumber(),fileUpdateQo.getFileBatchNumber(),fileUpdateQo.getFileMachineCode(),fileUpdateQo.getFileProductNumber(),file);
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"修改成功!",locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param fileQo
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/exportExcel")
|
||||
public String exportExcel(@RequestBody FileQo fileQo) throws IOException, InvalidFormatException {
|
||||
return fileService.exportExcel(fileQo);
|
||||
}
|
||||
}
|
48
src/main/java/com/xkrs/dao/DataDictDao.java
Normal file
48
src/main/java/com/xkrs/dao/DataDictDao.java
Normal file
@ -0,0 +1,48 @@
|
||||
package com.xkrs.dao;
|
||||
|
||||
import com.xkrs.model.entity.DataDict;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 10:03
|
||||
*/
|
||||
@Component
|
||||
public interface DataDictDao extends JpaRepository<DataDict,Long>, JpaSpecificationExecutor<DataDict> {
|
||||
|
||||
/**
|
||||
* 通过中文名称查询字典表数据
|
||||
* @param chineseName
|
||||
* @return
|
||||
*/
|
||||
DataDict findByDictChineseName(String chineseName);
|
||||
|
||||
/**
|
||||
* 通过英文变量查询字典表的数据
|
||||
* @param englishName
|
||||
* @return
|
||||
*/
|
||||
DataDict findByDictEnglishName(String englishName);
|
||||
|
||||
/**
|
||||
* 根据id查询字典信息
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
DataDict findById(Integer id);
|
||||
|
||||
/**
|
||||
* 根据id修改字典的信息
|
||||
* @param id
|
||||
* @param chineseName
|
||||
*/
|
||||
@Modifying(clearAutomatically=true)
|
||||
@Query(value = "update data_dict set dict_chinese_name = ?2 where id = ?1",nativeQuery = true)
|
||||
void updateDict(Integer id, String chineseName);
|
||||
}
|
64
src/main/java/com/xkrs/dao/DataSourceDao.java
Normal file
64
src/main/java/com/xkrs/dao/DataSourceDao.java
Normal file
@ -0,0 +1,64 @@
|
||||
package com.xkrs.dao;
|
||||
|
||||
import com.xkrs.model.entity.DataSource;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 16:41
|
||||
*/
|
||||
@Component
|
||||
public interface DataSourceDao extends JpaRepository<DataSource,Long>, JpaSpecificationExecutor<DataSource> {
|
||||
|
||||
/**
|
||||
* 查询测量数据信息
|
||||
* @param dataModelNumber
|
||||
* @param dataBatchNumber
|
||||
* @param dataMachineCode
|
||||
* @param productNumber
|
||||
* @return
|
||||
*/
|
||||
@Query(value = "select ds.data_model_number datamodelnumber, ds.data_batch_number databatchnumber, " +
|
||||
"ds.data_machine_code datamachinecode, ds.product_number productnumber, dd.dict_chinese_name chinesename, " +
|
||||
"ds.data_name dataname,ds.numerical_value numericalvalue " +
|
||||
"from data_dict dd,data_source ds where ds.data_name = dd.dict_english_name and " +
|
||||
"ds.data_model_number = :dataModelNumber and ds.data_batch_number = :dataBatchNumber and " +
|
||||
"ds.data_machine_code = :dataMachineCode and ds.product_number = :productNumber",nativeQuery = true)
|
||||
List<Map<String,String>> selectDataSource(String dataModelNumber, String dataBatchNumber, String dataMachineCode, String productNumber);
|
||||
|
||||
/**
|
||||
* 查询测量信息变量和测量值,用于模板的导入
|
||||
* @param dataModelNumber
|
||||
* @param dataBatchNumber
|
||||
* @param dataMachineCode
|
||||
* @param productNumber
|
||||
* @return
|
||||
*/
|
||||
@Query(value = "select data_name dataname,numerical_value numericalvalue from data_source " +
|
||||
"where data_model_number = :dataModelNumber and data_batch_number = :dataBatchNumber " +
|
||||
"and data_machine_code = :dataMachineCode and product_number = :productNumber",nativeQuery = true)
|
||||
List<Map<String,String>> selectDataNameAndData(String dataModelNumber, String dataBatchNumber, String dataMachineCode, String productNumber);
|
||||
|
||||
/**
|
||||
* 通过英文变量查询信息
|
||||
* @param dataname
|
||||
* @return
|
||||
*/
|
||||
DataSource findByDataName(String dataname);
|
||||
|
||||
/**
|
||||
* 查询全部的测量信息
|
||||
* @return
|
||||
*/
|
||||
@Query(value = "select ds.data_model_number datamodelnumber, ds.data_batch_number databatchnumber, " +
|
||||
"ds.data_machine_code datamachinecode, ds.product_number productnumber, dd.dict_chinese_name chinesename," +
|
||||
"ds.data_name dataname,ds.numerical_value numericalvalue from data_dict dd,data_source ds " +
|
||||
"where ds.data_name = dd.dict_english_name",nativeQuery = true)
|
||||
List<Map<String,String>> selectAllSource();
|
||||
}
|
52
src/main/java/com/xkrs/dao/FileDao.java
Normal file
52
src/main/java/com/xkrs/dao/FileDao.java
Normal file
@ -0,0 +1,52 @@
|
||||
package com.xkrs.dao;
|
||||
|
||||
import com.xkrs.model.entity.FileEntity;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 15:23
|
||||
*/
|
||||
@Component
|
||||
public interface FileDao extends JpaRepository<FileEntity,Long>, JpaSpecificationExecutor<FileEntity> {
|
||||
|
||||
/**
|
||||
* 根据机种号,批次号,机器号,产品号查询文件信息
|
||||
* @param fileModelNumber
|
||||
* @param fileBatchNumber
|
||||
* @param fileMachineCode
|
||||
* @param fileProductNumber
|
||||
* @return
|
||||
*/
|
||||
FileEntity findByFileModelNumberAndFileBatchNumberAndFileMachineCodeAndFileProductNumber(String fileModelNumber,String fileBatchNumber,String fileMachineCode,String fileProductNumber);
|
||||
|
||||
/**
|
||||
* 根据机种号,批次号,机器号,产品号修改模板上传信息
|
||||
* @param fileModelNumber
|
||||
* @param fileBatchNumber
|
||||
* @param fileMachineCode
|
||||
* @param fileProductNumber
|
||||
* @param fileUploadPath
|
||||
*/
|
||||
@Modifying(clearAutomatically=true)
|
||||
@Query(value = "update file set file_upload_path = ?5 where file_model_number = ?1 and file_batch_number = ?2 and file_machine_code = ?3 and file_product_number = ?4",nativeQuery = true)
|
||||
void updateFileUploadPath(String fileModelNumber,String fileBatchNumber,String fileMachineCode,String fileProductNumber,String fileUploadPath);
|
||||
|
||||
/**
|
||||
* 根据机种号,批次号,机器号,产品号修改模板下载信息
|
||||
* @param fileModelNumber
|
||||
* @param fileBatchNumber
|
||||
* @param fileMachineCode
|
||||
* @param fileProductNumber
|
||||
* @param fileDownloadPath
|
||||
*/
|
||||
@Modifying(clearAutomatically=true)
|
||||
@Query(value = "update file set file_download_path = ?5 where file_model_number = ?1 and file_batch_number = ?2 and file_machine_code = ?3 and file_product_number = ?4",nativeQuery = true)
|
||||
void updateFileDownloadPath(String fileModelNumber,String fileBatchNumber,String fileMachineCode,String fileProductNumber,String fileDownloadPath);
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package com.xkrs.encapsulation;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 输出信息对象
|
||||
* @author tajochen
|
||||
* @param <T>
|
||||
*/
|
||||
public class EncapsulationObejct<T> implements Serializable {
|
||||
|
||||
/**
|
||||
* 状态码
|
||||
*/
|
||||
int status;
|
||||
|
||||
/**
|
||||
* 提示信息
|
||||
*/
|
||||
String msg;
|
||||
|
||||
/**
|
||||
* 数据
|
||||
*/
|
||||
T data;
|
||||
|
||||
public int getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(int status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public String getMsg() {
|
||||
return msg;
|
||||
}
|
||||
|
||||
public void setMsg(String msg) {
|
||||
this.msg = msg;
|
||||
}
|
||||
|
||||
public T getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(T data) {
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "EncapsulationObejct{" +
|
||||
"status=" + status +
|
||||
", msg='" + msg + '\'' +
|
||||
", data=" + data +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,96 @@
|
||||
package com.xkrs.encapsulation;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.context.MessageSource;
|
||||
import org.springframework.context.support.ResourceBundleMessageSource;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.validation.FieldError;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* 输出信息封装
|
||||
* @author tajochen
|
||||
*/
|
||||
@Component
|
||||
public class OutputEncapsulation {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(OutputEncapsulation.class);
|
||||
|
||||
/**
|
||||
* 读取多国语言文件
|
||||
* @return
|
||||
*/
|
||||
public static MessageSource messageSource() {
|
||||
Properties properties = new Properties();
|
||||
// 使用ClassLoader加载properties配置文件生成对应的输入流
|
||||
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("application.properties");
|
||||
// 使用properties对象加载输入流
|
||||
try {
|
||||
properties.load(in);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
|
||||
messageSource.setBasename("i18n/messages");
|
||||
messageSource.setDefaultEncoding("UTF-8");
|
||||
return messageSource;
|
||||
}
|
||||
|
||||
/**
|
||||
* 封装输出数据
|
||||
* @param promptMessageEnum
|
||||
* @param obj
|
||||
* @return
|
||||
*/
|
||||
public static String outputEncapsulationObject(PromptMessageEnum promptMessageEnum, Object obj, Locale locale) {
|
||||
|
||||
EncapsulationObejct encapsulationObejct = new EncapsulationObejct();
|
||||
encapsulationObejct.setStatus(promptMessageEnum.getCode());
|
||||
encapsulationObejct.setMsg(messageSource().getMessage(promptMessageEnum.getText(),null,locale));
|
||||
encapsulationObejct.setData(obj);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
// 忽略无法转换的对象
|
||||
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false);
|
||||
// 忽略json字符串中不识别的属性
|
||||
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
// 解决jackson无法反序列化LocalDateTime的问题,引入jsr310标准
|
||||
JavaTimeModule javaTimeModule = new JavaTimeModule();
|
||||
objectMapper.registerModule(javaTimeModule);
|
||||
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
||||
String strByEo = "";
|
||||
try {
|
||||
strByEo = objectMapper.writeValueAsString(encapsulationObejct);
|
||||
} catch (JsonProcessingException e) {
|
||||
e.printStackTrace();
|
||||
logger.warn(e.toString());
|
||||
}
|
||||
return strByEo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 输出请求值检验错误信息
|
||||
* @param fieldErrors
|
||||
* @return
|
||||
*/
|
||||
public static String outputEncapsulationErrorList(List<FieldError> fieldErrors, Locale locale){
|
||||
List<String> errorMsg = new ArrayList<>();
|
||||
for (FieldError fieldError : fieldErrors) {
|
||||
String errMessage = fieldError.getDefaultMessage().subSequence(1,fieldError.getDefaultMessage().length()-1).toString();
|
||||
errorMsg.add(messageSource().getMessage(errMessage,null,locale));
|
||||
}
|
||||
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,errorMsg,locale);
|
||||
}
|
||||
}
|
65
src/main/java/com/xkrs/encapsulation/PromptMessageEnum.java
Normal file
65
src/main/java/com/xkrs/encapsulation/PromptMessageEnum.java
Normal file
@ -0,0 +1,65 @@
|
||||
package com.xkrs.encapsulation;
|
||||
|
||||
/**
|
||||
* 提示信息枚举
|
||||
* @author tajochen
|
||||
*/
|
||||
public enum PromptMessageEnum{
|
||||
|
||||
// 执行成功
|
||||
SUCCESS(0, "sys.message.success"),
|
||||
|
||||
|
||||
// 用户权限错误或非法操作: 1001-1999
|
||||
USER_NOT_LOGGED(1001, "sys.message.user.not_logged_in"),
|
||||
USER_LOGIN_ERROR(1002, "sys.message.user.login_error"),
|
||||
USER_ACCOUNT_FORBIDDEN(1003, "sys.message.user.account_forbidden"),
|
||||
USER_ACCOUNT_NOT_ACTIVATED(1004, "sys.message.user.account_not_activated"),
|
||||
USER_HAS_OVERTIME(1005, "sys.message.user.overtime"),
|
||||
USER_NO_PERMISSION(1006,"sys.message.user.no_permission"),
|
||||
USER_ALREADY_LOGGED(1007, "sys.message.user.already_logged"),
|
||||
|
||||
// 请求参数错误或非法:2001-2999
|
||||
PARAM_NULL(2001, "sys.message.param.null"),
|
||||
PARAM_ILLEGAL(2002, "sys.message.param.illegal"),
|
||||
|
||||
// 数据返回错误:3001-3999
|
||||
DATA_NONE(3001, "sys.message.data.none"),
|
||||
|
||||
DATA_WRONG(3002, "sys.message.data.wrong"),
|
||||
DATA_EXIT(3003,"sys.message.exit"),
|
||||
|
||||
// 操作失败:4001-4999
|
||||
PROCESS_FAIL(4001,"sys.message.process.fail"),
|
||||
PROCESS_OVERTIME(4002,"sys.message.process.overtime"),
|
||||
FILE_EXISTS(4003,"sys.message.file.exists"),
|
||||
FILE_WRITE_ERROR(4004,"sys.message.file.write.error"),
|
||||
FILE_READ_ERROR(4005,"sys.message.file.read.error"),
|
||||
|
||||
// 系统内部错误或异常:5001-5999
|
||||
SYSTEM_INNER_ERROR(5001,"sys.message.system.inner_error"),
|
||||
SYSTEM_ABNORMAL(5002,"sys.message.system.abnormal"),
|
||||
SYSTEM_BUSY(5003,"sys.message.system.busy"),
|
||||
SYSTEM_MAINTAIN(5004,"sys.message.system.maintain"),
|
||||
|
||||
// 数据库错误:6001-6999
|
||||
DATABASE_ERROR(6001,"sys.message.database.error");
|
||||
|
||||
private int code;
|
||||
|
||||
private String text;
|
||||
|
||||
private PromptMessageEnum(int code,String text) {
|
||||
this.code = code;
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return this.text;
|
||||
}
|
||||
|
||||
public int getCode() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
}
|
73
src/main/java/com/xkrs/model/entity/DataDict.java
Normal file
73
src/main/java/com/xkrs/model/entity/DataDict.java
Normal file
@ -0,0 +1,73 @@
|
||||
package com.xkrs.model.entity;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 9:26
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "data_dict")
|
||||
public class DataDict {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "data_dict_seq_gen")
|
||||
@SequenceGenerator(name = "data_dict_seq_gen", sequenceName = "data_dict_id_seq",allocationSize = 1)
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 中文名称
|
||||
*/
|
||||
@Column(length = 65, columnDefinition = "varchar(65)")
|
||||
private String dictChineseName;
|
||||
|
||||
/**
|
||||
* 英文变量值
|
||||
*/
|
||||
@Column(length = 85, columnDefinition = "varchar(85)")
|
||||
private String dictEnglishName;
|
||||
|
||||
public DataDict() {
|
||||
}
|
||||
|
||||
public DataDict(Integer id, String dictChineseName, String dictEnglishName) {
|
||||
this.id = id;
|
||||
this.dictChineseName = dictChineseName;
|
||||
this.dictEnglishName = dictEnglishName;
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getDictChineseName() {
|
||||
return dictChineseName;
|
||||
}
|
||||
|
||||
public void setDictChineseName(String dictChineseName) {
|
||||
this.dictChineseName = dictChineseName;
|
||||
}
|
||||
|
||||
public String getDictEnglishName() {
|
||||
return dictEnglishName;
|
||||
}
|
||||
|
||||
public void setDictEnglishName(String dictEnglishName) {
|
||||
this.dictEnglishName = dictEnglishName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "DataDict{" +
|
||||
"id=" + id +
|
||||
", dictChineseName='" + dictChineseName + '\'' +
|
||||
", dictEnglishName='" + dictEnglishName + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
137
src/main/java/com/xkrs/model/entity/DataSource.java
Normal file
137
src/main/java/com/xkrs/model/entity/DataSource.java
Normal file
@ -0,0 +1,137 @@
|
||||
package com.xkrs.model.entity;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 14:08
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "data_source")
|
||||
public class DataSource {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "data_source_seq_gen")
|
||||
@SequenceGenerator(name = "data_source_seq_gen", sequenceName = "data_source_id_seq",allocationSize = 1)
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 机种号
|
||||
*/
|
||||
@Column(length = 32, columnDefinition = "varchar(32)")
|
||||
private String dataModelNumber;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
@Column(length = 32, columnDefinition = "varchar(32)")
|
||||
private String dataBatchNumber;
|
||||
|
||||
/**
|
||||
* 机器号
|
||||
*/
|
||||
@Column(length = 32, columnDefinition = "varchar(32)")
|
||||
private String dataMachineCode;
|
||||
|
||||
/**
|
||||
* 产品编号
|
||||
*/
|
||||
@Column(length = 32, columnDefinition = "varchar(32)")
|
||||
private String productNumber;
|
||||
|
||||
/**
|
||||
* 变量值
|
||||
*/
|
||||
@Column(length = 85, columnDefinition = "varchar(85)")
|
||||
private String dataName;
|
||||
|
||||
/**
|
||||
* 监测的数值
|
||||
*/
|
||||
@Column(length = 85, columnDefinition = "varchar(85)")
|
||||
private String numericalValue;
|
||||
|
||||
public DataSource() {
|
||||
}
|
||||
|
||||
public DataSource(Integer id, String dataModelNumber, String dataBatchNumber, String dataMachineCode, String productNumber, String dataName, String numericalValue) {
|
||||
this.id = id;
|
||||
this.dataModelNumber = dataModelNumber;
|
||||
this.dataBatchNumber = dataBatchNumber;
|
||||
this.dataMachineCode = dataMachineCode;
|
||||
this.productNumber = productNumber;
|
||||
this.dataName = dataName;
|
||||
this.numericalValue = numericalValue;
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getDataModelNumber() {
|
||||
return dataModelNumber;
|
||||
}
|
||||
|
||||
public void setDataModelNumber(String dataModelNumber) {
|
||||
this.dataModelNumber = dataModelNumber;
|
||||
}
|
||||
|
||||
public String getDataBatchNumber() {
|
||||
return dataBatchNumber;
|
||||
}
|
||||
|
||||
public void setDataBatchNumber(String dataBatchNumber) {
|
||||
this.dataBatchNumber = dataBatchNumber;
|
||||
}
|
||||
|
||||
public String getDataMachineCode() {
|
||||
return dataMachineCode;
|
||||
}
|
||||
|
||||
public void setDataMachineCode(String dataMachineCode) {
|
||||
this.dataMachineCode = dataMachineCode;
|
||||
}
|
||||
|
||||
public String getProductNumber() {
|
||||
return productNumber;
|
||||
}
|
||||
|
||||
public void setProductNumber(String productNumber) {
|
||||
this.productNumber = productNumber;
|
||||
}
|
||||
|
||||
public String getDataName() {
|
||||
return dataName;
|
||||
}
|
||||
|
||||
public void setDataName(String dataName) {
|
||||
this.dataName = dataName;
|
||||
}
|
||||
|
||||
public String getNumericalValue() {
|
||||
return numericalValue;
|
||||
}
|
||||
|
||||
public void setNumericalValue(String numericalValue) {
|
||||
this.numericalValue = numericalValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "DataSource{" +
|
||||
"id=" + id +
|
||||
", dataModelNumber='" + dataModelNumber + '\'' +
|
||||
", dataBatchNumber='" + dataBatchNumber + '\'' +
|
||||
", dataMachineCode='" + dataMachineCode + '\'' +
|
||||
", productNumber='" + productNumber + '\'' +
|
||||
", dataName='" + dataName + '\'' +
|
||||
", numericalValue='" + numericalValue + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
135
src/main/java/com/xkrs/model/entity/FileEntity.java
Normal file
135
src/main/java/com/xkrs/model/entity/FileEntity.java
Normal file
@ -0,0 +1,135 @@
|
||||
package com.xkrs.model.entity;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 15:01
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "file")
|
||||
public class FileEntity {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "file_seq_gen")
|
||||
@SequenceGenerator(name = "file_seq_gen", sequenceName = "file_id_seq",allocationSize = 1)
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 机种号
|
||||
*/
|
||||
@Column(length = 32, columnDefinition = "varchar(32)")
|
||||
private String fileModelNumber;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
@Column(length = 32, columnDefinition = "varchar(32)")
|
||||
private String fileBatchNumber;
|
||||
|
||||
/**
|
||||
* 机器号
|
||||
*/
|
||||
@Column(length = 32, columnDefinition = "varchar(32)")
|
||||
private String fileMachineCode;
|
||||
|
||||
/**
|
||||
* 产品编号
|
||||
*/
|
||||
@Column(length = 32, columnDefinition = "varchar(32)")
|
||||
private String fileProductNumber;
|
||||
|
||||
/**
|
||||
* 上传模板的路径
|
||||
*/
|
||||
private String fileUploadPath;
|
||||
|
||||
/**
|
||||
* 下载路径
|
||||
*/
|
||||
private String fileDownloadPath;
|
||||
|
||||
public FileEntity() {
|
||||
}
|
||||
|
||||
public FileEntity(Integer id, String fileModelNumber, String fileBatchNumber, String fileMachineCode, String fileProductNumber, String fileUploadPath, String fileDownloadPath) {
|
||||
this.id = id;
|
||||
this.fileModelNumber = fileModelNumber;
|
||||
this.fileBatchNumber = fileBatchNumber;
|
||||
this.fileMachineCode = fileMachineCode;
|
||||
this.fileProductNumber = fileProductNumber;
|
||||
this.fileUploadPath = fileUploadPath;
|
||||
this.fileDownloadPath = fileDownloadPath;
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getFileModelNumber() {
|
||||
return fileModelNumber;
|
||||
}
|
||||
|
||||
public void setFileModelNumber(String fileModelNumber) {
|
||||
this.fileModelNumber = fileModelNumber;
|
||||
}
|
||||
|
||||
public String getFileBatchNumber() {
|
||||
return fileBatchNumber;
|
||||
}
|
||||
|
||||
public void setFileBatchNumber(String fileBatchNumber) {
|
||||
this.fileBatchNumber = fileBatchNumber;
|
||||
}
|
||||
|
||||
public String getFileMachineCode() {
|
||||
return fileMachineCode;
|
||||
}
|
||||
|
||||
public void setFileMachineCode(String fileMachineCode) {
|
||||
this.fileMachineCode = fileMachineCode;
|
||||
}
|
||||
|
||||
public String getFileProductNumber() {
|
||||
return fileProductNumber;
|
||||
}
|
||||
|
||||
public void setFileProductNumber(String fileProductNumber) {
|
||||
this.fileProductNumber = fileProductNumber;
|
||||
}
|
||||
|
||||
public String getFileUploadPath() {
|
||||
return fileUploadPath;
|
||||
}
|
||||
|
||||
public void setFileUploadPath(String fileUploadPath) {
|
||||
this.fileUploadPath = fileUploadPath;
|
||||
}
|
||||
|
||||
public String getFileDownloadPath() {
|
||||
return fileDownloadPath;
|
||||
}
|
||||
|
||||
public void setFileDownloadPath(String fileDownloadPath) {
|
||||
this.fileDownloadPath = fileDownloadPath;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "FileEntity{" +
|
||||
"id=" + id +
|
||||
", fileModelNumber='" + fileModelNumber + '\'' +
|
||||
", fileBatchNumber='" + fileBatchNumber + '\'' +
|
||||
", fileMachineCode='" + fileMachineCode + '\'' +
|
||||
", fileProductNumber='" + fileProductNumber + '\'' +
|
||||
", fileUploadPath='" + fileUploadPath + '\'' +
|
||||
", fileDownloadPath='" + fileDownloadPath + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
39
src/main/java/com/xkrs/model/qo/DataDictQo.java
Normal file
39
src/main/java/com/xkrs/model/qo/DataDictQo.java
Normal file
@ -0,0 +1,39 @@
|
||||
package com.xkrs.model.qo;
|
||||
|
||||
import com.xkrs.model.validation.DataDictQoInsert;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 10:14
|
||||
*/
|
||||
public class DataDictQo {
|
||||
|
||||
/**
|
||||
* 中文名称
|
||||
*/
|
||||
@NotBlank(message = "{DataDict.dictChineseName.blank}",groups={DataDictQoInsert.class})
|
||||
private String dictChineseName;
|
||||
|
||||
/**
|
||||
* 英文变量值
|
||||
*/
|
||||
@NotBlank(message = "{DataDict.dictEnglishName.blank}",groups={DataDictQoInsert.class})
|
||||
private String dictEnglishName;
|
||||
|
||||
public String getDictChineseName() {
|
||||
return dictChineseName;
|
||||
}
|
||||
|
||||
public void setDictChineseName(String dictChineseName) {
|
||||
this.dictChineseName = dictChineseName;
|
||||
}
|
||||
|
||||
public String getDictEnglishName() {
|
||||
return dictEnglishName;
|
||||
}
|
||||
|
||||
public void setDictEnglishName(String dictEnglishName) {
|
||||
this.dictEnglishName = dictEnglishName;
|
||||
}
|
||||
}
|
37
src/main/java/com/xkrs/model/qo/DataDictUpdateQo.java
Normal file
37
src/main/java/com/xkrs/model/qo/DataDictUpdateQo.java
Normal file
@ -0,0 +1,37 @@
|
||||
package com.xkrs.model.qo;
|
||||
|
||||
import com.xkrs.model.validation.DataDictUpdateQoUpdate;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 11:23
|
||||
*/
|
||||
public class DataDictUpdateQo {
|
||||
|
||||
@NotBlank(message = "{DataDict.id.blank}",groups={DataDictUpdateQoUpdate.class})
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 中文名称
|
||||
*/
|
||||
@NotBlank(message = "{DataDict.dictChineseName.blank}",groups={DataDictUpdateQoUpdate.class})
|
||||
private String dictChineseName;
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getDictChineseName() {
|
||||
return dictChineseName;
|
||||
}
|
||||
|
||||
public void setDictChineseName(String dictChineseName) {
|
||||
this.dictChineseName = dictChineseName;
|
||||
}
|
||||
}
|
97
src/main/java/com/xkrs/model/qo/DataSourceQo.java
Normal file
97
src/main/java/com/xkrs/model/qo/DataSourceQo.java
Normal file
@ -0,0 +1,97 @@
|
||||
package com.xkrs.model.qo;
|
||||
|
||||
import com.xkrs.model.validation.DataDictQoInsert;
|
||||
import com.xkrs.model.validation.DataSourceQoInsert;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 16:37
|
||||
*/
|
||||
public class DataSourceQo {
|
||||
/**
|
||||
* 机种号
|
||||
*/
|
||||
@NotBlank(message = "{DataSource.dataModelNumber.blank}",groups={DataSourceQoInsert.class})
|
||||
private String dataModelNumber;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
@NotBlank(message = "{DataSource.dataBatchNumber.blank}",groups={DataSourceQoInsert.class})
|
||||
private String dataBatchNumber;
|
||||
|
||||
/**
|
||||
* 机器号
|
||||
*/
|
||||
@NotBlank(message = "{DataSource.dataMachineCode.blank}",groups={DataSourceQoInsert.class})
|
||||
private String dataMachineCode;
|
||||
|
||||
/**
|
||||
* 产品编号
|
||||
*/
|
||||
@NotBlank(message = "{DataSource.productNumber.blank}",groups={DataSourceQoInsert.class})
|
||||
private String productNumber;
|
||||
|
||||
/**
|
||||
* 变量值
|
||||
*/
|
||||
@NotBlank(message = "{DataSource.dataName.blank}",groups={DataSourceQoInsert.class})
|
||||
private String dataName;
|
||||
|
||||
/**
|
||||
* 监测的数值
|
||||
*/
|
||||
@NotBlank(message = "{DataSource.numericalValue.blank}",groups={DataSourceQoInsert.class})
|
||||
private String numericalValue;
|
||||
|
||||
public String getDataModelNumber() {
|
||||
return dataModelNumber;
|
||||
}
|
||||
|
||||
public void setDataModelNumber(String dataModelNumber) {
|
||||
this.dataModelNumber = dataModelNumber;
|
||||
}
|
||||
|
||||
public String getDataBatchNumber() {
|
||||
return dataBatchNumber;
|
||||
}
|
||||
|
||||
public void setDataBatchNumber(String dataBatchNumber) {
|
||||
this.dataBatchNumber = dataBatchNumber;
|
||||
}
|
||||
|
||||
public String getDataMachineCode() {
|
||||
return dataMachineCode;
|
||||
}
|
||||
|
||||
public void setDataMachineCode(String dataMachineCode) {
|
||||
this.dataMachineCode = dataMachineCode;
|
||||
}
|
||||
|
||||
public String getProductNumber() {
|
||||
return productNumber;
|
||||
}
|
||||
|
||||
public void setProductNumber(String productNumber) {
|
||||
this.productNumber = productNumber;
|
||||
}
|
||||
|
||||
public String getDataName() {
|
||||
return dataName;
|
||||
}
|
||||
|
||||
public void setDataName(String dataName) {
|
||||
this.dataName = dataName;
|
||||
}
|
||||
|
||||
public String getNumericalValue() {
|
||||
return numericalValue;
|
||||
}
|
||||
|
||||
public void setNumericalValue(String numericalValue) {
|
||||
this.numericalValue = numericalValue;
|
||||
}
|
||||
}
|
81
src/main/java/com/xkrs/model/qo/FileQo.java
Normal file
81
src/main/java/com/xkrs/model/qo/FileQo.java
Normal file
@ -0,0 +1,81 @@
|
||||
package com.xkrs.model.qo;
|
||||
|
||||
import com.xkrs.model.validation.FileQoInsert;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 15:26
|
||||
*/
|
||||
public class FileQo {
|
||||
|
||||
/**
|
||||
* 机种号
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileModelNumber.blank}",groups={FileQoInsert.class})
|
||||
private String fileModelNumber;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileBatchNumber.blank}",groups={FileQoInsert.class})
|
||||
private String fileBatchNumber;
|
||||
|
||||
/**
|
||||
* 机器号
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileMachineCode.blank}",groups={FileQoInsert.class})
|
||||
private String fileMachineCode;
|
||||
|
||||
/**
|
||||
* 产品编号
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileProductNumber.blank}",groups={FileQoInsert.class})
|
||||
private String fileProductNumber;
|
||||
|
||||
/**
|
||||
* 上传模板的路径
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileUploadPath.blank}",groups={FileQoInsert.class})
|
||||
private String fileUploadPath;
|
||||
|
||||
public String getFileModelNumber() {
|
||||
return fileModelNumber;
|
||||
}
|
||||
|
||||
public void setFileModelNumber(String fileModelNumber) {
|
||||
this.fileModelNumber = fileModelNumber;
|
||||
}
|
||||
|
||||
public String getFileBatchNumber() {
|
||||
return fileBatchNumber;
|
||||
}
|
||||
|
||||
public void setFileBatchNumber(String fileBatchNumber) {
|
||||
this.fileBatchNumber = fileBatchNumber;
|
||||
}
|
||||
|
||||
public String getFileMachineCode() {
|
||||
return fileMachineCode;
|
||||
}
|
||||
|
||||
public void setFileMachineCode(String fileMachineCode) {
|
||||
this.fileMachineCode = fileMachineCode;
|
||||
}
|
||||
|
||||
public String getFileProductNumber() {
|
||||
return fileProductNumber;
|
||||
}
|
||||
|
||||
public void setFileProductNumber(String fileProductNumber) {
|
||||
this.fileProductNumber = fileProductNumber;
|
||||
}
|
||||
|
||||
public String getFileUploadPath() {
|
||||
return fileUploadPath;
|
||||
}
|
||||
|
||||
public void setFileUploadPath(String fileUploadPath) {
|
||||
this.fileUploadPath = fileUploadPath;
|
||||
}
|
||||
}
|
69
src/main/java/com/xkrs/model/qo/FileUpdateQo.java
Normal file
69
src/main/java/com/xkrs/model/qo/FileUpdateQo.java
Normal file
@ -0,0 +1,69 @@
|
||||
package com.xkrs.model.qo;
|
||||
|
||||
|
||||
import com.xkrs.model.validation.FileUpdateQoUpdate;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 16:20
|
||||
*/
|
||||
public class FileUpdateQo {
|
||||
|
||||
/**
|
||||
* 机种号
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileModelNumber.blank}",groups={FileUpdateQoUpdate.class})
|
||||
private String fileModelNumber;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileBatchNumber.blank}",groups={FileUpdateQoUpdate.class})
|
||||
private String fileBatchNumber;
|
||||
|
||||
/**
|
||||
* 机器号
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileMachineCode.blank}",groups={FileUpdateQoUpdate.class})
|
||||
private String fileMachineCode;
|
||||
|
||||
/**
|
||||
* 产品编号
|
||||
*/
|
||||
@NotBlank(message = "{FileEntity.fileProductNumber.blank}",groups={FileUpdateQoUpdate.class})
|
||||
private String fileProductNumber;
|
||||
|
||||
public String getFileModelNumber() {
|
||||
return fileModelNumber;
|
||||
}
|
||||
|
||||
public void setFileModelNumber(String fileModelNumber) {
|
||||
this.fileModelNumber = fileModelNumber;
|
||||
}
|
||||
|
||||
public String getFileBatchNumber() {
|
||||
return fileBatchNumber;
|
||||
}
|
||||
|
||||
public void setFileBatchNumber(String fileBatchNumber) {
|
||||
this.fileBatchNumber = fileBatchNumber;
|
||||
}
|
||||
|
||||
public String getFileMachineCode() {
|
||||
return fileMachineCode;
|
||||
}
|
||||
|
||||
public void setFileMachineCode(String fileMachineCode) {
|
||||
this.fileMachineCode = fileMachineCode;
|
||||
}
|
||||
|
||||
public String getFileProductNumber() {
|
||||
return fileProductNumber;
|
||||
}
|
||||
|
||||
public void setFileProductNumber(String fileProductNumber) {
|
||||
this.fileProductNumber = fileProductNumber;
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.xkrs.model.validation;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 10:22
|
||||
*/
|
||||
public interface DataDictQoInsert {
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.xkrs.model.validation;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 11:23
|
||||
*/
|
||||
public interface DataDictUpdateQoUpdate {
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.xkrs.model.validation;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 16:39
|
||||
*/
|
||||
public interface DataSourceQoInsert {
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.xkrs.model.validation;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 15:26
|
||||
*/
|
||||
public interface FileQoInsert {
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.xkrs.model.validation;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 16:21
|
||||
*/
|
||||
public interface FileUpdateQoUpdate {
|
||||
}
|
18
src/main/java/com/xkrs/service/DataDictService.java
Normal file
18
src/main/java/com/xkrs/service/DataDictService.java
Normal file
@ -0,0 +1,18 @@
|
||||
package com.xkrs.service;
|
||||
|
||||
import com.xkrs.model.entity.DataDict;
|
||||
import com.xkrs.model.qo.DataDictQo;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 10:10
|
||||
*/
|
||||
public interface DataDictService {
|
||||
|
||||
/**
|
||||
* 添加字典数据
|
||||
* @param dataDictQo
|
||||
* @return
|
||||
*/
|
||||
String insertDataDict(DataDictQo dataDictQo);
|
||||
}
|
17
src/main/java/com/xkrs/service/DataSourceService.java
Normal file
17
src/main/java/com/xkrs/service/DataSourceService.java
Normal file
@ -0,0 +1,17 @@
|
||||
package com.xkrs.service;
|
||||
|
||||
import com.xkrs.model.qo.DataSourceQo;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 16:42
|
||||
*/
|
||||
public interface DataSourceService {
|
||||
|
||||
/**
|
||||
* 添加测量数据
|
||||
* @param dataSourceQo
|
||||
* @return
|
||||
*/
|
||||
String insertDataSource(DataSourceQo dataSourceQo);
|
||||
}
|
29
src/main/java/com/xkrs/service/FileService.java
Normal file
29
src/main/java/com/xkrs/service/FileService.java
Normal file
@ -0,0 +1,29 @@
|
||||
package com.xkrs.service;
|
||||
|
||||
import com.xkrs.model.qo.FileQo;
|
||||
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 15:24
|
||||
*/
|
||||
public interface FileService {
|
||||
|
||||
/**
|
||||
* 添加模板信息
|
||||
* @param fileQo
|
||||
* @return
|
||||
*/
|
||||
String insertFileExcel(FileQo fileQo,MultipartFile fileExcel) throws IOException;
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
* @param fileQo
|
||||
* @return
|
||||
*/
|
||||
String exportExcel(FileQo fileQo) throws IOException, InvalidFormatException;
|
||||
}
|
50
src/main/java/com/xkrs/service/impl/DataDictServiceImpl.java
Normal file
50
src/main/java/com/xkrs/service/impl/DataDictServiceImpl.java
Normal file
@ -0,0 +1,50 @@
|
||||
package com.xkrs.service.impl;
|
||||
|
||||
import com.xkrs.dao.DataDictDao;
|
||||
import com.xkrs.encapsulation.PromptMessageEnum;
|
||||
import com.xkrs.model.entity.DataDict;
|
||||
import com.xkrs.model.qo.DataDictQo;
|
||||
import com.xkrs.service.DataDictService;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Locale;
|
||||
|
||||
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 10:28
|
||||
*/
|
||||
@Service
|
||||
public class DataDictServiceImpl implements DataDictService {
|
||||
|
||||
@Resource
|
||||
private DataDictDao dataDictDao;
|
||||
|
||||
/**
|
||||
* 添加字典数据
|
||||
* @param dataDictQo
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String insertDataDict(DataDictQo dataDictQo) {
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
//DataDict byDictChineseName = dataDictDao.findByDictChineseName(dataDictQo.getDictChineseName());
|
||||
/*DataDict chineseName = dataDictDao.findByModelNumberAndBatchNumberAndMachineCodeAndDictProductNumberAndDictChineseName(dataDictQo.getModelNumber(), dataDictQo.getBatchNumber(), dataDictQo.getMachineCode(), dataDictQo.getDictProductNumber(), dataDictQo.getDictChineseName());
|
||||
if(chineseName != null){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_EXIT,"该产品变量已存在,请勿重复添加!",locale);
|
||||
}*/
|
||||
//DataDict byDictEnglishName = dataDictDao.findByDictEnglishName(dataDictQo.getDictEnglishName());
|
||||
DataDict englishName = dataDictDao.findByDictEnglishName(dataDictQo.getDictEnglishName());
|
||||
if(englishName != null){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_EXIT,"该产品变量已存在,请勿重复添加!",locale);
|
||||
}
|
||||
DataDict dataDict = new DataDict();
|
||||
dataDict.setDictChineseName(dataDictQo.getDictChineseName());
|
||||
dataDict.setDictEnglishName(dataDictQo.getDictEnglishName());
|
||||
dataDictDao.save(dataDict);
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"添加成功!",locale);
|
||||
}
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
package com.xkrs.service.impl;
|
||||
|
||||
import com.xkrs.dao.DataDictDao;
|
||||
import com.xkrs.dao.DataSourceDao;
|
||||
import com.xkrs.encapsulation.PromptMessageEnum;
|
||||
import com.xkrs.model.entity.DataDict;
|
||||
import com.xkrs.model.entity.DataSource;
|
||||
import com.xkrs.model.qo.DataSourceQo;
|
||||
import com.xkrs.service.DataSourceService;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Locale;
|
||||
|
||||
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 16:43
|
||||
*/
|
||||
@Service
|
||||
public class DataSourceServiceImpl implements DataSourceService {
|
||||
|
||||
@Resource
|
||||
private DataSourceDao dataSourceDao;
|
||||
|
||||
@Resource
|
||||
private DataDictDao dataDictDao;
|
||||
|
||||
/**
|
||||
* 添加测量数据
|
||||
* @param dataSourceQo
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String insertDataSource(DataSourceQo dataSourceQo) {
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
DataDict byDictEnglishName = dataDictDao.findByDictEnglishName(dataSourceQo.getDataName());
|
||||
if(byDictEnglishName == null){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"不存在该字典类型!",locale);
|
||||
}
|
||||
/*DataSource byDataName = dataSourceDao.findByDataName(dataSourceQo.getDataName());
|
||||
if(byDataName != null){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_EXIT,"该字典类型数据已添加,请勿重复添加!",locale);
|
||||
}*/
|
||||
DataSource dataSource = new DataSource();
|
||||
dataSource.setDataModelNumber(dataSourceQo.getDataModelNumber());
|
||||
dataSource.setDataBatchNumber(dataSourceQo.getDataBatchNumber());
|
||||
dataSource.setDataMachineCode(dataSourceQo.getDataMachineCode());
|
||||
dataSource.setProductNumber(dataSourceQo.getProductNumber());
|
||||
dataSource.setDataName(dataSourceQo.getDataName());
|
||||
dataSource.setNumericalValue(dataSourceQo.getNumericalValue());
|
||||
dataSourceDao.save(dataSource);
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"添加成功!",locale);
|
||||
}
|
||||
}
|
97
src/main/java/com/xkrs/service/impl/FileServiceImpl.java
Normal file
97
src/main/java/com/xkrs/service/impl/FileServiceImpl.java
Normal file
@ -0,0 +1,97 @@
|
||||
package com.xkrs.service.impl;
|
||||
|
||||
import com.xkrs.dao.DataDictDao;
|
||||
import com.xkrs.dao.DataSourceDao;
|
||||
import com.xkrs.dao.FileDao;
|
||||
import com.xkrs.encapsulation.PromptMessageEnum;
|
||||
import com.xkrs.model.entity.FileEntity;
|
||||
import com.xkrs.model.qo.FileQo;
|
||||
import com.xkrs.service.FileService;
|
||||
import com.xkrs.util.ExcelUploadUtil;
|
||||
import com.xkrs.util.ExportExcel;
|
||||
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.transaction.Transactional;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.xkrs.encapsulation.OutputEncapsulation.outputEncapsulationObject;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/20 15:24
|
||||
*/
|
||||
@Service
|
||||
public class FileServiceImpl implements FileService {
|
||||
|
||||
@Resource
|
||||
private FileDao fileDao;
|
||||
|
||||
@Resource
|
||||
private DataDictDao dataDictDao;
|
||||
|
||||
@Resource
|
||||
private DataSourceDao dataSourceDao;
|
||||
|
||||
/**
|
||||
* 添加模板信息
|
||||
* @param fileQo
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String insertFileExcel(FileQo fileQo, MultipartFile fileExcel) throws IOException {
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
FileEntity fileEntity = fileDao.findByFileModelNumberAndFileBatchNumberAndFileMachineCodeAndFileProductNumber(fileQo.getFileModelNumber(), fileQo.getFileBatchNumber(), fileQo.getFileMachineCode(), fileQo.getFileProductNumber());
|
||||
if(fileEntity != null){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_EXIT,"已存在该产品的模板!",locale);
|
||||
}
|
||||
if(fileExcel == null){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"模板不能为空!",locale);
|
||||
}
|
||||
String file = ExcelUploadUtil.memoryFile(fileExcel);
|
||||
FileEntity fileEntity1 = new FileEntity();
|
||||
fileEntity1.setFileModelNumber(fileQo.getFileModelNumber());
|
||||
fileEntity1.setFileBatchNumber(fileQo.getFileBatchNumber());
|
||||
fileEntity1.setFileMachineCode(fileQo.getFileMachineCode());
|
||||
fileEntity1.setFileProductNumber(fileQo.getFileProductNumber());
|
||||
fileEntity1.setFileUploadPath(file);
|
||||
|
||||
fileDao.save(fileEntity1);
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"添加成功!",locale);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
* @param fileQo
|
||||
* @return
|
||||
*/
|
||||
@Transactional(rollbackOn = Exception.class)
|
||||
@Override
|
||||
public String exportExcel(FileQo fileQo) throws IOException, InvalidFormatException {
|
||||
Locale locale = LocaleContextHolder.getLocale();
|
||||
FileEntity entity = fileDao.findByFileModelNumberAndFileBatchNumberAndFileMachineCodeAndFileProductNumber(fileQo.getFileModelNumber(), fileQo.getFileBatchNumber(), fileQo.getFileMachineCode(), fileQo.getFileProductNumber());
|
||||
if(entity == null){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"暂时没有该产品的模板,请添加!",locale);
|
||||
}
|
||||
String fileUploadPath = entity.getFileUploadPath();
|
||||
List<Map<String, String>> maps = dataSourceDao.selectDataNameAndData(fileQo.getFileModelNumber(), fileQo.getFileBatchNumber(), fileQo.getFileMachineCode(), fileQo.getFileProductNumber());
|
||||
if(maps == null || maps.size() == 0){
|
||||
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"暂时没有该产品的信息!",locale);
|
||||
}
|
||||
Map<String,String> map = new HashMap<String,String>();
|
||||
for(Map<String,String> stringMap : maps){
|
||||
map.put(stringMap.get("dataname"),stringMap.get("numericalvalue"));
|
||||
}
|
||||
String fill = ExportExcel.exportToProveExcel(map,fileUploadPath);
|
||||
fileDao.updateFileDownloadPath(fileQo.getFileModelNumber(), fileQo.getFileBatchNumber(), fileQo.getFileMachineCode(), fileQo.getFileProductNumber(),fill);
|
||||
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,fill,locale);
|
||||
}
|
||||
}
|
191
src/main/java/com/xkrs/util/ExcelUploadUtil.java
Normal file
191
src/main/java/com/xkrs/util/ExcelUploadUtil.java
Normal file
@ -0,0 +1,191 @@
|
||||
package com.xkrs.util;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author XinYi Song
|
||||
*/
|
||||
public class ExcelUploadUtil {
|
||||
|
||||
public static Logger log = LoggerFactory.getLogger(ExcelUploadUtil.class);
|
||||
|
||||
/**
|
||||
* 上传单张图片
|
||||
* @param fileExcel
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
public static String memoryFile(MultipartFile fileExcel) throws IOException {
|
||||
//String uploadPath = "http://139.199.98.175:2088/wfTaskImage/";
|
||||
String uploadPath = "http://192.168.2.9:2088/";
|
||||
//获取原始文件名
|
||||
String originalFilename = fileExcel.getOriginalFilename();
|
||||
if (originalFilename != null && !"".equals(originalFilename)) {
|
||||
//找到 . 的位置
|
||||
int index = originalFilename.lastIndexOf(".");
|
||||
//根据 . 的位置进行分割,拿到文件后缀名
|
||||
String suffix = originalFilename.substring(index);
|
||||
//uuid生成新的文件名
|
||||
String newName = UUID.randomUUID().toString() + suffix;
|
||||
|
||||
//将图片保存到本地/usr/etc/images/Folder
|
||||
//File file = new File("E:/shoptest/");
|
||||
File file = new File("/home/sxy/server/industrial_measurement/excel/");
|
||||
if (!file.exists()) {
|
||||
file.mkdirs();
|
||||
}
|
||||
//String path = "E:/shoptest/" + newName;
|
||||
String path = "/home/sxy/server/industrial_measurement/excel/" + newName;
|
||||
String uploadsImage = uploadPath + newName;
|
||||
//实现上传
|
||||
fileExcel.transferTo(new File(path));
|
||||
|
||||
|
||||
return path;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 以文件形式,批量上传图片
|
||||
* @param files
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
/*public static List<FireTaskPhoto> uploadImage(MultipartFile[] files, String fireCode) throws IOException {
|
||||
//String uploadPath = "http://139.199.98.175:2099/forestTaskImage/";
|
||||
String uploadPath = "http://118.24.27.47:2088/";
|
||||
String newName = "";
|
||||
String oldName = "";
|
||||
List<FireTaskPhoto> fireTaskPhotos = new ArrayList<>();
|
||||
for(MultipartFile file : files){
|
||||
//获取file图片名称
|
||||
oldName = file.getOriginalFilename();
|
||||
//找到 . 的位置
|
||||
int index = oldName.lastIndexOf(".");
|
||||
//根据 . 的位置进行分割,拿到文件后缀名
|
||||
String suffix = oldName.substring(index);
|
||||
//uuid生成新的文件名
|
||||
newName = UUID.randomUUID().toString() + suffix;
|
||||
//将图片保存到本地/usr/etc/images/Folder
|
||||
File file1 = new File("/home/sxy/server/fire_point/firePointImage/");
|
||||
//File file1 = new File("E:/file/work/image/");
|
||||
if (!file1.exists()) {
|
||||
file1.mkdirs();
|
||||
}
|
||||
String path = "/home/sxy/server/fire_point/firePointImage/" + newName;
|
||||
//String path = "E:/file/work/image/" + newName;
|
||||
String uploadPaths = "/firePointImage/" + newName;
|
||||
//实现上传
|
||||
file.transferTo(new File(path));
|
||||
FireTaskPhoto fireTaskPhoto = new FireTaskPhoto();
|
||||
fireTaskPhoto.setPhotoFireCode(fireCode);
|
||||
fireTaskPhoto.setTaskPhoto(uploadPaths);
|
||||
|
||||
fireTaskPhotos.add(fireTaskPhoto);
|
||||
}
|
||||
return fireTaskPhotos;
|
||||
}*/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 删除本地或服务器储存的图片
|
||||
* @param path
|
||||
* @return
|
||||
*/
|
||||
public static String delFile(String path){
|
||||
String resultInfo = null;
|
||||
int lastIndexOf = path.lastIndexOf("/");
|
||||
String imgPath = path.substring(lastIndexOf + 1,path.length());
|
||||
System.out.println(imgPath);
|
||||
imgPath = "/usr/local/etc/images/" + imgPath;
|
||||
// img_path = "/usr/etc/images/Folder/" + img_path;
|
||||
File file = new File(imgPath);
|
||||
if(file.exists()){
|
||||
if(file.delete()){
|
||||
resultInfo = "删除成功!";
|
||||
}else {
|
||||
resultInfo = "删除失败!";
|
||||
}
|
||||
}else {
|
||||
resultInfo = "文件不存在";
|
||||
}
|
||||
return resultInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过图片路径解析 ,上传保存
|
||||
* @param listImgSrc
|
||||
* @return
|
||||
*/
|
||||
public static List downloadImage(List<String> listImgSrc) {
|
||||
try {
|
||||
List list = new ArrayList();
|
||||
//开始时间
|
||||
Date beginDate = new Date();
|
||||
for (String url : listImgSrc) {
|
||||
//开始时间
|
||||
Date beginDate2 = new Date();
|
||||
String imageName = url.substring(url.lastIndexOf("/") + 1, url.length());
|
||||
URL uri = new URL(url);
|
||||
InputStream in = uri.openStream();
|
||||
//String pathUpload = "E:/img/" + imageName;
|
||||
String pathUpload = "/home/web/wf-fire-service/wfimage/" + imageName;
|
||||
FileOutputStream fo = new FileOutputStream(new File(pathUpload));
|
||||
byte[] buf = new byte[1024];
|
||||
int length = 0;
|
||||
log.info("-------开始下载:" + url);
|
||||
while ((length = in.read(buf, 0, buf.length)) != -1) {
|
||||
fo.write(buf, 0, length);
|
||||
}
|
||||
in.close();
|
||||
fo.close();
|
||||
list.add(imageName);
|
||||
log.info(imageName + "------下载完成");
|
||||
//结束时间
|
||||
Date overDate2 = new Date();
|
||||
double time = overDate2.getTime() - beginDate2.getTime();
|
||||
log.info("-----耗时:" + time / 1000 + "s");
|
||||
}
|
||||
Date overDate = new Date();
|
||||
double time = overDate.getTime() - beginDate.getTime();
|
||||
log.info("======总耗时:" + time / 1000 + "s");
|
||||
return list;
|
||||
} catch (Exception e) {
|
||||
log.info("++++++下载失败");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除本地文件夹图片
|
||||
* @param url
|
||||
*/
|
||||
public static void deleteImage(String url){
|
||||
File file=new File(url);
|
||||
//判断file是否是文件目录 若是返回TRUE
|
||||
if (file.isDirectory()){
|
||||
//name存储file文件夹中的文件名
|
||||
String[] name =file.list();
|
||||
for (int i=0; i<name.length; i++){
|
||||
//此时就可得到文件夹中的文件
|
||||
File f=new File(url, name[i]);
|
||||
//删除文件
|
||||
f.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
68
src/main/java/com/xkrs/util/ExportExcel.java
Normal file
68
src/main/java/com/xkrs/util/ExportExcel.java
Normal file
@ -0,0 +1,68 @@
|
||||
package com.xkrs.util;
|
||||
|
||||
import net.sf.jxls.transformer.XLSTransformer;
|
||||
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
||||
import java.io.*;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/17 8:56
|
||||
*/
|
||||
public class ExportExcel {
|
||||
|
||||
/**
|
||||
* 最简单的填充
|
||||
*
|
||||
* @since 2.1.1
|
||||
*/
|
||||
/*public static String simpleFill(Map<String, String> map,String templateFileName) {
|
||||
|
||||
|
||||
String s = System.currentTimeMillis() + ".xlsx";
|
||||
// 方案2 根据Map填充
|
||||
String fileName = "/usr/local/excel/" + s;
|
||||
//String fileName = "E:\\shoptest\\" + s;
|
||||
// 这里 会填充到第一个sheet, 然后文件流会自动关闭
|
||||
|
||||
ExcelWriterBuilder write = EasyExcel.write(fileName);
|
||||
|
||||
ExcelWriterBuilder excelWriterBuilder = write.withTemplate(templateFileName);
|
||||
|
||||
ExcelWriter build = excelWriterBuilder.build();
|
||||
WriteSheet writeSheet = EasyExcel.writerSheet().build();
|
||||
|
||||
build.fill(map,writeSheet);
|
||||
build.finish();
|
||||
|
||||
//EasyExcel.write(fileName).withTemplate(templateFileName).sheet().doFill(map);
|
||||
return "http://118.24.27.47:2088/excel/"+s;
|
||||
//return "http://192.168.2.139/"+s;
|
||||
}*/
|
||||
|
||||
|
||||
public static String exportToProveExcel(Map<String, String> dataMap, String srcFilePath) throws IOException, InvalidFormatException {
|
||||
String s = System.currentTimeMillis() + ".xlsx";
|
||||
//String path = "E:/shop/"+s;
|
||||
String path = "/home/sxy/server/industrial_measurement/excel/" + s;
|
||||
|
||||
// 开始转换。利用 transformer 转到Excel
|
||||
XLSTransformer transformer = new XLSTransformer();
|
||||
// 参数:srcFilePath:模板源文件 cMap:需要导出的数据 destFile.getAbsolutePath():下载的目标文件
|
||||
transformer.transformXLS(srcFilePath, dataMap, path);
|
||||
//return "http://192.168.2.139/"+s;
|
||||
return "http://118.24.27.47:2088/excel/"+s;
|
||||
}
|
||||
|
||||
/*public static void main(String[] args) throws IOException, InvalidFormatException {
|
||||
// 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
|
||||
String templateFileName = TestFileUtil.getPath() + "templates" + File.separator + "test.xlsx";
|
||||
Map<String, String> map = new HashMap<String, String>();
|
||||
map.put("name", "张三");
|
||||
map.put("sex", "男");
|
||||
//simpleFill(map,templateFileName);
|
||||
HttpServletResponse response = null;
|
||||
String s = exportToProveExcel(map);
|
||||
System.out.println(s);
|
||||
}*/
|
||||
}
|
48
src/main/java/com/xkrs/util/Query.java
Normal file
48
src/main/java/com/xkrs/util/Query.java
Normal file
@ -0,0 +1,48 @@
|
||||
package com.xkrs.util;
|
||||
|
||||
import com.xkrs.dao.DataDictDao;
|
||||
import com.xkrs.model.entity.DataDict;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.persistence.criteria.CriteriaBuilder;
|
||||
import javax.persistence.criteria.CriteriaQuery;
|
||||
import javax.persistence.criteria.Predicate;
|
||||
import javax.persistence.criteria.Root;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/19 13:56
|
||||
*/
|
||||
@Component
|
||||
public class Query {
|
||||
|
||||
@Resource
|
||||
private DataDictDao dataDictDao;
|
||||
|
||||
/**
|
||||
* 动态多条件查询字典信息
|
||||
* @return
|
||||
*/
|
||||
public List<DataDict> selectDataDict(String dictChineseName,String dictEnglishName) {
|
||||
Specification<DataDict> specification = new Specification<DataDict>() {
|
||||
@Override
|
||||
public Predicate toPredicate(Root<DataDict> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
|
||||
List<Predicate> list = new ArrayList<>();
|
||||
if(dictChineseName != null && !"".equals(dictChineseName)){
|
||||
list.add(criteriaBuilder.equal(root.get("dictChineseName").as(String.class), dictChineseName));
|
||||
}
|
||||
if(dictEnglishName != null && !"".equals(dictEnglishName)){
|
||||
list.add(criteriaBuilder.equal(root.get("dictEnglishName").as(String.class), dictEnglishName));
|
||||
}
|
||||
Predicate[] predicates = new Predicate[list.size()];
|
||||
return criteriaBuilder.and(list.toArray(predicates));
|
||||
}
|
||||
};
|
||||
return dataDictDao.findAll(specification);
|
||||
}
|
||||
}
|
38
src/main/java/com/xkrs/util/TestFileUtil.java
Normal file
38
src/main/java/com/xkrs/util/TestFileUtil.java
Normal file
@ -0,0 +1,38 @@
|
||||
package com.xkrs.util;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* @Author: XinYi Song
|
||||
* @Date: 2022/1/17 9:29
|
||||
*/
|
||||
public class TestFileUtil {
|
||||
public static InputStream getResourcesFileInputStream(String fileName) {
|
||||
return Thread.currentThread().getContextClassLoader().getResourceAsStream("" + fileName);
|
||||
}
|
||||
|
||||
public static String getPath() {
|
||||
return TestFileUtil.class.getResource("/").getPath();
|
||||
}
|
||||
|
||||
public static File createNewFile(String pathName) {
|
||||
File file = new File(getPath() + pathName);
|
||||
if (file.exists()) {
|
||||
file.delete();
|
||||
} else {
|
||||
if (!file.getParentFile().exists()) {
|
||||
file.getParentFile().mkdirs();
|
||||
}
|
||||
}
|
||||
return file;
|
||||
}
|
||||
|
||||
public static File readFile(String pathName) {
|
||||
return new File(getPath() + pathName);
|
||||
}
|
||||
|
||||
public static File readUserHomeFile(String pathName) {
|
||||
return new File(System.getProperty("user.home") + File.separator + pathName);
|
||||
}
|
||||
}
|
54
src/main/resources/application.properties
Normal file
54
src/main/resources/application.properties
Normal file
@ -0,0 +1,54 @@
|
||||
server.port = 6810
|
||||
|
||||
## 数据源配置
|
||||
#spring.datasource.url = jdbc:postgresql://localhost:5432/data_model
|
||||
#spring.datasource.userName = postgres
|
||||
#spring.datasource.password = 123456
|
||||
#spring.datasource.driverClassName = org.postgresql.Driver
|
||||
|
||||
spring.datasource.url = jdbc:mysql://118.24.27.47:3306/data_model?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
|
||||
spring.datasource.userName = sxy
|
||||
spring.datasource.password = sxy123
|
||||
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
|
||||
|
||||
server.tomcat.uri-encoding=UTF-8
|
||||
|
||||
# jackson 配置
|
||||
spring.jackson.serialization.write-date-keys-as-timestamps=false
|
||||
|
||||
## Hikari连接池设置
|
||||
spring.datasource.hikari.auto-commit = true
|
||||
spring.datasource.hikari.maximum-pool-size = 100
|
||||
spring.datasource.hikari.idle-timeout = 10000
|
||||
spring.datasource.hikari.minimum-idle = 5
|
||||
spring.datasource.hikari.validation-timeout = 3000
|
||||
|
||||
## Spring Data JPA 配置
|
||||
spring.jpa.database = mysql
|
||||
spring.jpa.database-platform = org.hibernate.dialect.MySQL5InnoDBDialect
|
||||
spring.jpa.show-sql = false
|
||||
# 指定 ddl mode (none, validate, create, create-drop, update)
|
||||
spring.jpa.hibernate.ddl-auto = update
|
||||
# 命名策略
|
||||
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
|
||||
#spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQL95Dialect
|
||||
#spring.jpa.properties.hibernate.dialect = org.hibernate.spatial.dialect.postgis.PostgisDialect
|
||||
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false
|
||||
|
||||
## Devtools配置
|
||||
spring.devtools.livereload.enabled = true
|
||||
|
||||
## 多国语言配置
|
||||
spring.messages.basename = i18n/messages
|
||||
spring.messages.encoding = UTF-8
|
||||
|
||||
# 上传文件配置
|
||||
spring.servlet.multipart.enabled=true
|
||||
# 最大文件大小
|
||||
spring.servlet.multipart.max-file-size = 100MB
|
||||
# 最大请求大小
|
||||
spring.servlet.multipart.max-request-size = 100MB
|
||||
|
||||
spring.main.allow-bean-definition-overriding = true
|
||||
|
||||
|
162
src/main/resources/i18n/messages.properties
Normal file
162
src/main/resources/i18n/messages.properties
Normal file
@ -0,0 +1,162 @@
|
||||
sys.message.success = 成功
|
||||
sys.message.null = 暂时还没有数据
|
||||
sys.message.exit = 已存在相关内容,请勿重复操作
|
||||
sys.message.user.not_logged_in = 用户未登录
|
||||
sys.message.user.login_error = 用户登陆失败
|
||||
sys.message.user.account_forbidden = 用户已被禁止
|
||||
sys.message.user.account_not_activated = 用户未激活
|
||||
sys.message.user.overtime = 用户登录超时
|
||||
sys.message.user.no_permission = 用户权限不足
|
||||
sys.message.user.already_logged = 用户已经登录
|
||||
sys.message.param.null = 参数为空
|
||||
sys.message.param.illegal = 参数非法
|
||||
sys.message.data.none = 数据为空
|
||||
sys.message.data.wrong = 数据错误
|
||||
sys.message.process.fail = 处理失败
|
||||
sys.message.process.overtime = 处理超时
|
||||
sys.message.system.inner_error = 系统内部错误
|
||||
sys.message.system.abnormal = 系统异常
|
||||
sys.message.system.busy = 系统正忙,请稍后
|
||||
sys.message.system.maintain = 系统维护中
|
||||
sys.message.database.error = 数据库错误
|
||||
sys.message.file.exists = 文件已存在
|
||||
sys.message.file.write.error = 文件写入失败
|
||||
sys.message.file.read.error = 文件读取失败
|
||||
|
||||
SysUser.id.blank = 用户id不能为空
|
||||
SysUser.userName.blank = 用户名不能为空
|
||||
SysUser.userName.length.illegal = 用户名长度不合法
|
||||
SysUser.userName.format.illegal = 用户名格式不合法
|
||||
SysUser.nickName.length.illegal = 用户昵称长度不合法
|
||||
SysUser.userCode.length.illegal = 用户编码长度不合法
|
||||
SysUser.userCode.format.illegal = 用户编码含有非法字符
|
||||
SysUser.password.blank = 用户密码不能为空
|
||||
SysUser.password.length.illegal = 用户密码长度不合法
|
||||
SysUser.password.format.illegal = 用户密码格式不合法
|
||||
SysUser.sex.num.null = 用户性别数字不能为空
|
||||
SysUser.sex.num.illegal = 用户性别数字不合法
|
||||
SysUser.telephone.format.illegal = 用户手机号码不合法
|
||||
SysUser.email.length.illegal = 用户邮箱长度不合法
|
||||
SysUser.email.format.illegal = 用户邮箱格式不合法
|
||||
SysUser.admCode.illegal = 用户行政区划代码不合法
|
||||
SysUser.address.length.illegal = 用户详细地址长度不合法
|
||||
SysUser.birthday.format.illegal = 用户出生日期必须是 yyyy-MM-dd
|
||||
SysUser.personalSignature.length.illegal = 用户个性签名长度非法
|
||||
SysUser.portraitId.illegal = 用户头像id非法
|
||||
SysUser.statusCode.null = 用户当前状态编码为空
|
||||
SysUser.statusCode.illegal = 用户当前状态编码非法
|
||||
SysUser.deleteFlag.null = 用户删除标记不能是空
|
||||
|
||||
TrajectoryRecord.id.null = id 不能为空
|
||||
TrajectoryRecord.startTimeTs.null = startTimeTs 不能为空
|
||||
|
||||
SatelliteFirePoint.id.null = id 不能为空
|
||||
SatelliteFirePoint.fireCode.null = fireCode 不能为空
|
||||
SatelliteFirePoint.fireCode.length.illegal = fireCode 长度过长
|
||||
SatelliteFirePoint.countyCode.null = countyCode 不能为空
|
||||
SatelliteFirePoint.countyCode.length.illegal = countyCode 长度过长
|
||||
SatelliteFirePoint.countyName.null = countyName 不能为空
|
||||
SatelliteFirePoint.countyName.length.illegal = countyName 长度过长
|
||||
SatelliteFirePoint.satelliteType.null = satelliteType 不能为空
|
||||
SatelliteFirePoint.fireStatus.null = fireStatus 不能为空
|
||||
SatelliteFirePoint.verifyStatus.null = verifyStatus 不能为空
|
||||
SatelliteFirePoint.satelliteTimeTs.null = satelliteTimeTs 不能为空
|
||||
|
||||
PictureFirePoint.id.null = id 不能为空
|
||||
PictureFirePoint.fireCode.null = fireCode 不能为空
|
||||
PictureFirePoint.fireCode.length.illegal = fireCode 长度过长
|
||||
PictureFirePoint.pictureName.length.illegal = pictureName 长度过长
|
||||
PictureFirePoint.picturePath.null = picturePath 不能为空
|
||||
PictureFirePoint.picturePath.length.illegal = picturePath 长度过长
|
||||
PictureFirePoint.memo.length.illegal = memo 长度过长
|
||||
PictureFirePoint.size.length.illegal = size 长度过长
|
||||
PictureFirePoint.md5.null = md5 不能为空
|
||||
PictureFirePoint.md5.length.illegal = md5 长度过长
|
||||
PictureFirePoint.shootTimeTs.null = shootTimeTs 不能为空
|
||||
|
||||
PersonInvestigator.id.null = id 不能为空
|
||||
PersonInvestigator.name.null = name 不能为空
|
||||
PersonInvestigator.name.length.illegal = name 长度过长
|
||||
PersonInvestigator.code.length.illegal = code 长度过长
|
||||
PersonInvestigator.telephone.null = telephone 不能为空
|
||||
PersonInvestigator.telephone.format.illegal = telephone 格式非法
|
||||
PersonInvestigator.sex.null = sex 不能为空
|
||||
PersonInvestigator.sex.format.illegal = sex 格式非法
|
||||
PersonInvestigator.idCard.length.illegal = idCard 长度过长
|
||||
PersonInvestigator.memo.length.illegal = memo 长度过长
|
||||
PersonInvestigator.linkUserName.null = linkUserName 不能为空
|
||||
PersonInvestigator.linkUserName.format.illegal = linkUserName 格式非法
|
||||
PersonInvestigator.password.null = password 不能为空
|
||||
PersonInvestigator.password.format.illegal = password 格式非法
|
||||
InvestigateFirePoint.verifyTimeTs.null = verifyTimeTs 不能为空
|
||||
|
||||
InvestigateFirePoint.id.null = id 不能为空
|
||||
InvestigateFirePoint.fireCode.null = fireCode 不能为空
|
||||
InvestigateFirePoint.fireCode.length.illegal = fireCode 长度过长
|
||||
InvestigateFirePoint.countyCode.null = countyCode 不能为空
|
||||
InvestigateFirePoint.countyCode.length.illegal = countyCode 长度过长
|
||||
InvestigateFirePoint.countyName.null = countyName 不能为空
|
||||
InvestigateFirePoint.countyName.length.illegal = countyName 长度过长
|
||||
InvestigateFirePoint.address.null = address 不能为空
|
||||
InvestigateFirePoint.fireArea.null = fireArea 不能为空
|
||||
InvestigateFirePoint.verifyType.null = verifyType 不能为空
|
||||
InvestigateFirePoint.satelliteType.null = satelliteType 不能为空
|
||||
InvestigateFirePoint.satelliteType.length.illegal = satelliteType 长度过长
|
||||
|
||||
FileDocument.id.null = id 不能为空
|
||||
FileDocument.name.null = name 不能为空
|
||||
FileDocument.name.length.illegal = name 长度过长
|
||||
FileDocument.category.length.illegal = category 长度过长
|
||||
FileDocument.filePath.null = filePath 不能为空
|
||||
FileDocument.filePath.length.illegal = filePath 长度过长
|
||||
FileDocument.size.length.illegal = size 长度过长
|
||||
FileDocument.md5.null = md5 不能为空
|
||||
FileDocument.md5.length.illegal = md5 长度过长
|
||||
FileDocument.memo.length.illegal = memo 长度过长
|
||||
FileDocument.checkingToken.length.illegal = checkingToken 长度过长
|
||||
|
||||
AppFile.id.null = id 不能为空
|
||||
AppFile.name.null = name 不能为空
|
||||
AppFile.name.length.illegal = name 长度过长
|
||||
AppFile.appPath.null = appPath 不能为空
|
||||
AppFile.appPath.length.illegal = appPath 长度过长
|
||||
AppFile.versionNumber.null = versionNumber 不能为空
|
||||
AppFile.versionNumber.length.illegal = versionNumber 长度过长
|
||||
AppFile.versionNumber.format.illegal = versionNumber 格式不合法
|
||||
AppFile.size.null = size 不能为空
|
||||
AppFile.size.length.illegal = size 长度过长
|
||||
AppFile.md5.null = md5 不能为空
|
||||
AppFile.md5.length.illegal = md5 长度过长
|
||||
AppFile.memo.length.illegal = memo 长度过长
|
||||
|
||||
RealFirePoint.id.null = id 不能为空
|
||||
RealFirePoint.fireCode.null = fireCode 不能为空
|
||||
RealFirePoint.fireCode.length.illegal = fireCode 不合法
|
||||
RealFirePoint.countyCode.null = countyCode 不能为空
|
||||
RealFirePoint.countyCode.length.illegal = countyCode 不合法
|
||||
RealFirePoint.countyName.null = countyName 不能为空
|
||||
RealFirePoint.countyName.length.illegal = countyName 不合法
|
||||
RealFirePoint.address.null = address 不能为空
|
||||
RealFirePoint.address.length.illegal = address 不合法
|
||||
RealFirePoint.fireArea.null = fireArea 不能为空
|
||||
RealFirePoint.verifyTimeTs.null = verifyTimeTs 不能为空
|
||||
RealFirePoint.verifyType.null = verifyType 不能为空
|
||||
|
||||
InvestigationTeam.id.null = id 不能为空
|
||||
InvestigationTeam.teamName.null = teamName 不能为空
|
||||
InvestigationTeam.teamName.length.illegal = teamName 长度过长
|
||||
InvestigationTeam.memo.length.illegal = memo 长度过长
|
||||
InvestigationTeam.userName.null = userName 不能为空
|
||||
InvestigationTeam.userName.length.illegal = userName 长度过长
|
||||
InvestigationTeam.userRealName.null = userRealName 不能为空
|
||||
InvestigationTeam.userRealName.length.illegal = userRealName 长度过长
|
||||
|
||||
RelTeamInvestigator.id.null = id 不能为空
|
||||
RelTeamInvestigator.teamCode.null = teamCode 不能为空
|
||||
RelTeamInvestigator.teamCode.length.illegal = teamCode 长度过长
|
||||
RelTeamInvestigator.userName.null = userName 不能为空
|
||||
RelTeamInvestigator.userName.length.illegal = userName 长度过长
|
||||
RelTeamInvestigator.teamDeputy.null = teamDeputy 不能为空
|
||||
RelTeamInvestigator.memo.length.illegal = memo 长度过长
|
||||
RelTeamInvestigator.userRealName.null = userRealName 不能为空
|
||||
RelTeamInvestigator.userRealName.length.illegal = userRealName 长度过长
|
162
src/main/resources/i18n/messages_en_US.properties
Normal file
162
src/main/resources/i18n/messages_en_US.properties
Normal file
@ -0,0 +1,162 @@
|
||||
sys.message.success = success
|
||||
sys.message.null = null
|
||||
sys.message.exit = data already exists
|
||||
sys.message.user.not_logged_in = user not logged in
|
||||
sys.message.user.login_error = user login failed
|
||||
sys.message.user.account_forbidden = this account is forbidden
|
||||
sys.message.user.account_not_activated = this account not activated
|
||||
sys.message.user.overtime = user login timeout
|
||||
sys.message.user.no_permission = user permission denied
|
||||
sys.message.user.already_logged = user already logged
|
||||
sys.message.param.null = parameter is null
|
||||
sys.message.param.illegal = parameter is illegal
|
||||
sys.message.data.none = data is none
|
||||
sys.message.data.wrong = data is wrong
|
||||
sys.message.process.fail = process fail
|
||||
sys.message.process.overtime = process overtime
|
||||
sys.message.system.inner_error = system inner error
|
||||
sys.message.system.abnormal = system abnormal
|
||||
sys.message.system.busy = system is busy
|
||||
sys.message.system.maintain = system maintenance
|
||||
sys.message.database.error = database error
|
||||
sys.message.file.exists = file exists
|
||||
sys.message.file.write.error = file write error
|
||||
sys.message.file.read.error = file read error
|
||||
|
||||
SysUser.id.blank = user id can't be blank
|
||||
SysUser.userName.blank = user name can't be blank
|
||||
SysUser.userName.length.illegal = user name length illegal
|
||||
SysUser.userName.format.illegal = user name format illegal
|
||||
SysUser.nickName.length.illegal = user nickname length illegal
|
||||
SysUser.userCode.length.illegal = user code length illegal
|
||||
SysUser.userCode.format.illegal = user code cantains illegal character
|
||||
SysUser.password.blank = user password can't be blank
|
||||
SysUser.password.length.illegal = user password length illegal
|
||||
SysUser.password.format.illegal = user password format illegal
|
||||
SysUser.sex.num.null = user sex num can't be blank
|
||||
SysUser.sex.num.illegal = user sex num illegal
|
||||
SysUser.telephone.format.illegal = user telephone format illegal
|
||||
SysUser.email.length.illegal = user email length illegal
|
||||
SysUser.email.format.illegal = user email format illegal
|
||||
SysUser.admCode.illegal = user administrative area code illegal
|
||||
SysUser.address.length.illegal = user address length illegal
|
||||
SysUser.birthday.format.illegal = user birthday must be yyyy-MM-dd
|
||||
SysUser.personalSignature.length.illegal = user personal signature length illegal
|
||||
SysUser.portraitId.illegal = user portrait id illegal
|
||||
SysUser.statusCode.null = user current status code can't be blank
|
||||
SysUser.statusCode.illegal = user current status code illegal
|
||||
SysUser.deleteFlag.null = user delete flag can't be null
|
||||
|
||||
TrajectoryRecord.id.null = id can't be null
|
||||
TrajectoryRecord.startTimeTs.null = startTimeTs can't be null
|
||||
|
||||
SatelliteFirePoint.id.null = id can't be blank
|
||||
SatelliteFirePoint.fireCode.null = fireCode can't be blank
|
||||
SatelliteFirePoint.fireCode.length.illegal = fireCode length illegal
|
||||
SatelliteFirePoint.countyCode.null = countyCode can't be blank
|
||||
SatelliteFirePoint.countyCode.length.illegal = countyCode length illegal
|
||||
SatelliteFirePoint.countyName.null = countyName can't be blank
|
||||
SatelliteFirePoint.countyName.length.illegal = countyName length illegal
|
||||
SatelliteFirePoint.satelliteType.null = satelliteType can't be blank
|
||||
SatelliteFirePoint.fireStatus.null = fireStatus can't be blank
|
||||
SatelliteFirePoint.verifyStatus.null = verifyStatus can't be blank
|
||||
SatelliteFirePoint.satelliteTimeTs.null = satelliteTimeTs can't be blank
|
||||
|
||||
PictureFirePoint.id.null = id can't be blank
|
||||
PictureFirePoint.fireCode.null = fireCode can't be blank
|
||||
PictureFirePoint.fireCode.length.illegal = fireCode length illegal
|
||||
PictureFirePoint.pictureName.length.illegal = pictureName length illegal
|
||||
PictureFirePoint.picturePath.null = picturePath can't be blank
|
||||
PictureFirePoint.picturePath.length.illegal = picturePath length illegal
|
||||
PictureFirePoint.memo.length.illegal = memo length illegal
|
||||
PictureFirePoint.size.length.illegal = size length illegal
|
||||
PictureFirePoint.md5.null = md5 can't be blank
|
||||
PictureFirePoint.md5.length.illegal = md5 length illegal
|
||||
PictureFirePoint.shootTimeTs.null = shootTimeTs can't be blank
|
||||
|
||||
PersonInvestigator.id.null = id can't be blank
|
||||
PersonInvestigator.name.null = name can't be blank
|
||||
PersonInvestigator.name.length.illegal = name length illegal
|
||||
PersonInvestigator.code.length.illegal = code length illegal
|
||||
PersonInvestigator.telephone.null = telephone can't be blank
|
||||
PersonInvestigator.telephone.format.illegal = telephone format illegal
|
||||
PersonInvestigator.sex.null = sex format can't be blank
|
||||
PersonInvestigator.sex.format.illegal = sex format illegal
|
||||
PersonInvestigator.idCard.length.illegal = idCard length illegal
|
||||
PersonInvestigator.memo.length.illegal = memo length illegal
|
||||
PersonInvestigator.linkUserName.null = linkUserName can't be blank
|
||||
PersonInvestigator.linkUserName.format.illegal = linkUserName format illegal
|
||||
PersonInvestigator.password.null = password can't be blank
|
||||
PersonInvestigator.password.format.illegal = password format
|
||||
InvestigateFirePoint.verifyTimeTs.null = verifyTimeTs can't be blank
|
||||
|
||||
InvestigateFirePoint.id.null = id can't be blank
|
||||
InvestigateFirePoint.fireCode.null = fireCode can't be blank
|
||||
InvestigateFirePoint.fireCode.length.illegal = fireCode length illegal
|
||||
InvestigateFirePoint.countyCode.null = countyCode can't be blank
|
||||
InvestigateFirePoint.countyCode.length.illegal = countyCode length illegal
|
||||
InvestigateFirePoint.countyName.null = countyName can't be blank
|
||||
InvestigateFirePoint.countyName.length.illegal = countyName length illegal
|
||||
InvestigateFirePoint.address.null = address can't be blank
|
||||
InvestigateFirePoint.fireArea.null = fireArea can't be blank
|
||||
InvestigateFirePoint.verifyType.null = verifyType can't be blank
|
||||
InvestigateFirePoint.satelliteType.null = satelliteType can't be blank
|
||||
InvestigateFirePoint.satelliteType.length.illegal = satelliteType length illegal
|
||||
|
||||
FileDocument.id.null = id can't be blank
|
||||
FileDocument.name.null = name can't be blank
|
||||
FileDocument.name.length.illegal = name length illegal
|
||||
FileDocument.category.length.illegal = category length illegal
|
||||
FileDocument.filePath.null = filePath can't be blank
|
||||
FileDocument.filePath.length.illegal = filePath length illegal
|
||||
FileDocument.size.length.illegal = size length illegal
|
||||
FileDocument.md5.null = md5 can't be blank
|
||||
FileDocument.md5.length.illegal = md5 length illegal
|
||||
FileDocument.memo.length.illegal = memo length illegal
|
||||
FileDocument.checkingToken.length.illegal = checkingToken length illegal
|
||||
|
||||
AppFile.id.null = id can't be blank
|
||||
AppFile.name.null = name can't be blank
|
||||
AppFile.name.length.illegal = name length illegal
|
||||
AppFile.appPath.null = appPath can't be blank
|
||||
AppFile.appPath.length.illegal = appPath length illegal
|
||||
AppFile.versionNumber.null = versionNumber can't be blank
|
||||
AppFile.versionNumber.length.illegal = versionNumber length illegal
|
||||
AppFile.versionNumber.format.illegal = versionNumber illegal
|
||||
AppFile.size.null = size can't be blank
|
||||
AppFile.size.length.illegal = size length illegal
|
||||
AppFile.md5.null = md5 can't be blank
|
||||
AppFile.md5.length.illegal = md5 length illegal
|
||||
AppFile.memo.length.illegal = memo length illegal
|
||||
|
||||
RealFirePoint.id.null = id can't be blank
|
||||
RealFirePoint.fireCode.null = fireCode can't be blank
|
||||
RealFirePoint.fireCode.length.illegal = fireCode illegal
|
||||
RealFirePoint.countyCode.null = countyCode can't be blank
|
||||
RealFirePoint.countyCode.length.illegal = countyCode
|
||||
RealFirePoint.countyName.null = countyName can't be blank
|
||||
RealFirePoint.countyName.length.illegal = countyName illegal
|
||||
RealFirePoint.address.null = address can't be blank
|
||||
RealFirePoint.address.length.illegal = address illegal
|
||||
RealFirePoint.fireArea.null = fireArea can't be blank
|
||||
RealFirePoint.verifyTimeTs.null = verifyTimeTs can't be blank
|
||||
RealFirePoint.verifyType.null = verifyType can't be blank
|
||||
|
||||
InvestigationTeam.id.null = id can't be blank
|
||||
InvestigationTeam.teamName.null = teamName can't be blank
|
||||
InvestigationTeam.teamName.length.illegal = teamName length illegal
|
||||
InvestigationTeam.memo.length.illegal = memo length illegal
|
||||
InvestigationTeam.userName.null = userName can't be blank
|
||||
InvestigationTeam.userName.length.illegal = userName length illegal
|
||||
InvestigationTeam.userRealName.null = userRealName can't be blank
|
||||
InvestigationTeam.userRealName.length.illegal = userRealName length illegal
|
||||
|
||||
RelTeamInvestigator.id.null = id can't be blank
|
||||
RelTeamInvestigator.teamCode.null = teamCode can't be blank
|
||||
RelTeamInvestigator.teamCode.length.illegal = teamCode length illegal
|
||||
RelTeamInvestigator.userName.null = userName can't be blank
|
||||
RelTeamInvestigator.userName.length.illegal = userName length illegal
|
||||
RelTeamInvestigator.teamDeputy.null = teamDeputy can't be blank
|
||||
RelTeamInvestigator.memo.length.illegal = memo length illegal
|
||||
RelTeamInvestigator.userRealName.null = userRealName can't be blank
|
||||
RelTeamInvestigator.userRealName.length.illegal = userRealName length illegal
|
162
src/main/resources/i18n/messages_zh_CN.properties
Normal file
162
src/main/resources/i18n/messages_zh_CN.properties
Normal file
@ -0,0 +1,162 @@
|
||||
sys.message.success = 成功
|
||||
sys.message.null = 暂时还没有数据
|
||||
sys.message.exit = 已存在相关内容,请勿重复操作
|
||||
sys.message.user.not_logged_in = 用户未登录
|
||||
sys.message.user.login_error = 用户登陆失败
|
||||
sys.message.user.account_forbidden = 用户已被禁止
|
||||
sys.message.user.account_not_activated = 用户未激活
|
||||
sys.message.user.overtime = 用户登录超时
|
||||
sys.message.user.no_permission = 用户权限不足
|
||||
sys.message.user.already_logged = 用户已经登录
|
||||
sys.message.param.null = 参数为空
|
||||
sys.message.param.illegal = 参数非法
|
||||
sys.message.data.none = 数据为空
|
||||
sys.message.data.wrong = 数据错误
|
||||
sys.message.process.fail = 处理失败
|
||||
sys.message.process.overtime = 处理超时
|
||||
sys.message.system.inner_error = 系统内部错误
|
||||
sys.message.system.abnormal = 系统异常
|
||||
sys.message.system.busy = 系统正忙,请稍后
|
||||
sys.message.system.maintain = 系统维护中
|
||||
sys.message.database.error = 数据库错误
|
||||
sys.message.file.exists = 文件已存在
|
||||
sys.message.file.write.error = 文件写入失败
|
||||
sys.message.file.read.error = 文件读取失败
|
||||
|
||||
SysUser.id.blank = 用户id不能为空
|
||||
SysUser.userName.blank = 用户名不能为空
|
||||
SysUser.userName.length.illegal = 用户名长度不合法
|
||||
SysUser.userName.format.illegal = 用户名格式不合法
|
||||
SysUser.nickName.length.illegal = 用户昵称长度不合法
|
||||
SysUser.userCode.length.illegal = 用户编码长度不合法
|
||||
SysUser.userCode.format.illegal = 用户编码含有非法字符
|
||||
SysUser.password.blank = 用户密码不能为空
|
||||
SysUser.password.length.illegal = 用户密码长度不合法
|
||||
SysUser.password.format.illegal = 用户密码格式不合法
|
||||
SysUser.sex.num.null = 用户性别数字不能为空
|
||||
SysUser.sex.num.illegal = 用户性别数字不合法
|
||||
SysUser.telephone.format.illegal = 用户手机号码不合法
|
||||
SysUser.email.length.illegal = 用户邮箱长度不合法
|
||||
SysUser.email.format.illegal = 用户邮箱格式不合法
|
||||
SysUser.admCode.illegal = 用户行政区划代码不合法
|
||||
SysUser.address.length.illegal = 用户详细地址长度不合法
|
||||
SysUser.birthday.format.illegal = 用户出生日期必须是 yyyy-MM-dd
|
||||
SysUser.personalSignature.length.illegal = 用户个性签名长度非法
|
||||
SysUser.portraitId.illegal = 用户头像id非法
|
||||
SysUser.statusCode.null = 用户当前状态编码为空
|
||||
SysUser.statusCode.illegal = 用户当前状态编码非法
|
||||
SysUser.deleteFlag.null = 用户删除标记不能是空
|
||||
|
||||
TrajectoryRecord.id.null = id 不能为空
|
||||
TrajectoryRecord.startTimeTs.null = startTimeTs 不能为空
|
||||
|
||||
SatelliteFirePoint.id.null = id 不能为空
|
||||
SatelliteFirePoint.fireCode.null = fireCode 不能为空
|
||||
SatelliteFirePoint.fireCode.length.illegal = fireCode 长度过长
|
||||
SatelliteFirePoint.countyCode.null = countyCode 不能为空
|
||||
SatelliteFirePoint.countyCode.length.illegal = countyCode 长度过长
|
||||
SatelliteFirePoint.countyName.null = countyName 不能为空
|
||||
SatelliteFirePoint.countyName.length.illegal = countyName 长度过长
|
||||
SatelliteFirePoint.satelliteType.null = satelliteType 不能为空
|
||||
SatelliteFirePoint.fireStatus.null = fireStatus 不能为空
|
||||
SatelliteFirePoint.verifyStatus.null = verifyStatus 不能为空
|
||||
SatelliteFirePoint.satelliteTimeTs.null = satelliteTimeTs 不能为空
|
||||
|
||||
PictureFirePoint.id.null = id 不能为空
|
||||
PictureFirePoint.fireCode.null = fireCode 不能为空
|
||||
PictureFirePoint.fireCode.length.illegal = fireCode 长度过长
|
||||
PictureFirePoint.pictureName.length.illegal = pictureName 长度过长
|
||||
PictureFirePoint.picturePath.null = picturePath 不能为空
|
||||
PictureFirePoint.picturePath.length.illegal = picturePath 长度过长
|
||||
PictureFirePoint.memo.length.illegal = memo 长度过长
|
||||
PictureFirePoint.size.length.illegal = size 长度过长
|
||||
PictureFirePoint.md5.null = md5 不能为空
|
||||
PictureFirePoint.md5.length.illegal = md5 长度过长
|
||||
PictureFirePoint.shootTimeTs.null = shootTimeTs 不能为空
|
||||
|
||||
PersonInvestigator.id.null = id 不能为空
|
||||
PersonInvestigator.name.null = name 不能为空
|
||||
PersonInvestigator.name.length.illegal = name 长度过长
|
||||
PersonInvestigator.code.length.illegal = code 长度过长
|
||||
PersonInvestigator.telephone.null = telephone 不能为空
|
||||
PersonInvestigator.telephone.format.illegal = telephone 格式非法
|
||||
PersonInvestigator.sex.null = sex 不能为空
|
||||
PersonInvestigator.sex.format.illegal = sex 格式非法
|
||||
PersonInvestigator.idCard.length.illegal = idCard 长度过长
|
||||
PersonInvestigator.memo.length.illegal = memo 长度过长
|
||||
PersonInvestigator.linkUserName.null = linkUserName 不能为空
|
||||
PersonInvestigator.linkUserName.format.illegal = linkUserName 格式非法
|
||||
PersonInvestigator.password.null = password 不能为空
|
||||
PersonInvestigator.password.format.illegal = password 格式非法
|
||||
InvestigateFirePoint.verifyTimeTs.null = verifyTimeTs 不能为空
|
||||
|
||||
InvestigateFirePoint.id.null = id 不能为空
|
||||
InvestigateFirePoint.fireCode.null = fireCode 不能为空
|
||||
InvestigateFirePoint.fireCode.length.illegal = fireCode 长度过长
|
||||
InvestigateFirePoint.countyCode.null = countyCode 不能为空
|
||||
InvestigateFirePoint.countyCode.length.illegal = countyCode 长度过长
|
||||
InvestigateFirePoint.countyName.null = countyName 不能为空
|
||||
InvestigateFirePoint.countyName.length.illegal = countyName 长度过长
|
||||
InvestigateFirePoint.address.null = address 不能为空
|
||||
InvestigateFirePoint.fireArea.null = fireArea 不能为空
|
||||
InvestigateFirePoint.verifyType.null = verifyType 不能为空
|
||||
InvestigateFirePoint.satelliteType.null = satelliteType 不能为空
|
||||
InvestigateFirePoint.satelliteType.length.illegal = satelliteType 长度过长
|
||||
|
||||
FileDocument.id.null = id 不能为空
|
||||
FileDocument.name.null = name 不能为空
|
||||
FileDocument.name.length.illegal = name 长度过长
|
||||
FileDocument.category.length.illegal = category 长度过长
|
||||
FileDocument.filePath.null = filePath 不能为空
|
||||
FileDocument.filePath.length.illegal = filePath 长度过长
|
||||
FileDocument.size.length.illegal = size 长度过长
|
||||
FileDocument.md5.null = md5 不能为空
|
||||
FileDocument.md5.length.illegal = md5 长度过长
|
||||
FileDocument.memo.length.illegal = memo 长度过长
|
||||
FileDocument.checkingToken.length.illegal = checkingToken 长度过长
|
||||
|
||||
AppFile.id.null = id 不能为空
|
||||
AppFile.name.null = name 不能为空
|
||||
AppFile.name.length.illegal = name 长度过长
|
||||
AppFile.appPath.null = appPath 不能为空
|
||||
AppFile.appPath.length.illegal = appPath 长度过长
|
||||
AppFile.versionNumber.null = versionNumber 不能为空
|
||||
AppFile.versionNumber.length.illegal = versionNumber 长度过长
|
||||
AppFile.versionNumber.format.illegal = versionNumber 格式不合法
|
||||
AppFile.size.null = size 不能为空
|
||||
AppFile.size.length.illegal = size 长度过长
|
||||
AppFile.md5.null = md5 不能为空
|
||||
AppFile.md5.length.illegal = md5 长度过长
|
||||
AppFile.memo.length.illegal = memo 长度过长
|
||||
|
||||
RealFirePoint.id.null = id 不能为空
|
||||
RealFirePoint.fireCode.null = fireCode 不能为空
|
||||
RealFirePoint.fireCode.length.illegal = fireCode 不合法
|
||||
RealFirePoint.countyCode.null = countyCode 不能为空
|
||||
RealFirePoint.countyCode.length.illegal = countyCode 不合法
|
||||
RealFirePoint.countyName.null = countyName 不能为空
|
||||
RealFirePoint.countyName.length.illegal = countyName 不合法
|
||||
RealFirePoint.address.null = address 不能为空
|
||||
RealFirePoint.address.length.illegal = address 不合法
|
||||
RealFirePoint.fireArea.null = fireArea 不能为空
|
||||
RealFirePoint.verifyTimeTs.null = verifyTimeTs 不能为空
|
||||
RealFirePoint.verifyType.null = verifyType 不能为空
|
||||
|
||||
InvestigationTeam.id.null = id 不能为空
|
||||
InvestigationTeam.teamName.null = teamName 不能为空
|
||||
InvestigationTeam.teamName.length.illegal = teamName 长度过长
|
||||
InvestigationTeam.memo.length.illegal = memo 长度过长
|
||||
InvestigationTeam.userName.null = userName 不能为空
|
||||
InvestigationTeam.userName.length.illegal = userName 长度过长
|
||||
InvestigationTeam.userRealName.null = userRealName 不能为空
|
||||
InvestigationTeam.userRealName.length.illegal = userRealName 长度过长
|
||||
|
||||
RelTeamInvestigator.id.null = id 不能为空
|
||||
RelTeamInvestigator.teamCode.null = teamCode 不能为空
|
||||
RelTeamInvestigator.teamCode.length.illegal = teamCode 长度过长
|
||||
RelTeamInvestigator.userName.null = userName 不能为空
|
||||
RelTeamInvestigator.userName.length.illegal = userName 长度过长
|
||||
RelTeamInvestigator.teamDeputy.null = teamDeputy 不能为空
|
||||
RelTeamInvestigator.memo.length.illegal = memo 长度过长
|
||||
RelTeamInvestigator.userRealName.null = userRealName 不能为空
|
||||
RelTeamInvestigator.userRealName.length.illegal = userRealName 长度过长
|
BIN
src/main/resources/templates/a.xlsx
Normal file
BIN
src/main/resources/templates/a.xlsx
Normal file
Binary file not shown.
BIN
src/main/resources/templates/test.xlsx
Normal file
BIN
src/main/resources/templates/test.xlsx
Normal file
Binary file not shown.
Reference in New Issue
Block a user