Commit 9f8307d4 authored by 李驰骋's avatar 李驰骋

excel导出方法调整

parent 002253e2
...@@ -59,6 +59,8 @@ basic.error.data.exist=\u6570\u636E\u5DF2\u7ECF\u5B58\u5728\uFF01 ...@@ -59,6 +59,8 @@ basic.error.data.exist=\u6570\u636E\u5DF2\u7ECF\u5B58\u5728\uFF01
basic.error.data.not.exist=\u6570\u636E\u4E0D\u5B58\u5728\uFF01 basic.error.data.not.exist=\u6570\u636E\u4E0D\u5B58\u5728\uFF01
basic.import.error=\u5BFC\u5165\u5931\u8D25\uFF1A{0} basic.import.error=\u5BFC\u5165\u5931\u8D25\uFF1A{0}
basic.import.error.not.null=\u5BFC\u5165\u6570\u636E\u4E0D\u80FD\u4E3A\u7A7A basic.import.error.not.null=\u5BFC\u5165\u6570\u636E\u4E0D\u80FD\u4E3A\u7A7A
basic.excel.error.not.null.DictionaryFormat=\u8BF7\u914D\u7F6E\u5B57\u5178DictionaryFormat\u6CE8\u89E3
basic.excel.error.not.null.StaticDataMappingFormat=\u8BF7\u914D\u7F6E\u6620\u5C04StaticDataMappingFormat\u6CE8\u89E3
basic.error.data.cannot.delete=\u8BE5\u7269\u6599\u6570\u636E\u5DF2\u88AB\u4F7F\u7528\uFF0C\u4E0D\u80FD\u5220\u9664\uFF01 basic.error.data.cannot.delete=\u8BE5\u7269\u6599\u6570\u636E\u5DF2\u88AB\u4F7F\u7528\uFF0C\u4E0D\u80FD\u5220\u9664\uFF01
#md.material #md.material
md.material.data.limit.can.not.delete=\u8BE5\u7269\u6599\u6570\u636E\u5DF2\u88AB\u4F7F\u7528\uFF0C\u4E0D\u80FD\u5220\u9664\uFF01 md.material.data.limit.can.not.delete=\u8BE5\u7269\u6599\u6570\u636E\u5DF2\u88AB\u4F7F\u7528\uFF0C\u4E0D\u80FD\u5220\u9664\uFF01
...@@ -175,6 +177,7 @@ pro.schedule.limit.to.selfMade.min.quantity=\u8F6C\u81EA\u5236\u6570\u91CF\u5FC5 ...@@ -175,6 +177,7 @@ pro.schedule.limit.to.selfMade.min.quantity=\u8F6C\u81EA\u5236\u6570\u91CF\u5FC5
pro.schedule.error.to.selfMade.quantity.lack=\u8F6C\u81EA\u5236\u5931\u8D25\uFF0C\u8F6C\u81EA\u5236\u6570\u91CF\u4E0D\u8DB3 pro.schedule.error.to.selfMade.quantity.lack=\u8F6C\u81EA\u5236\u5931\u8D25\uFF0C\u8F6C\u81EA\u5236\u6570\u91CF\u4E0D\u8DB3
pro.schedule.error.not.null.startTime=\u5F00\u59CB\u65F6\u95F4\u4E0D\u80FD\u4E3A\u7A7A pro.schedule.error.not.null.startTime=\u5F00\u59CB\u65F6\u95F4\u4E0D\u80FD\u4E3A\u7A7A
pro.schedule.error.not.null.duration=\u751F\u4EA7\u65F6\u957F\u5FC5\u987B\u5927\u4E8E0 pro.schedule.error.not.null.duration=\u751F\u4EA7\u65F6\u957F\u5FC5\u987B\u5927\u4E8E0
pro.schedule.error.not.null.vendor=\u59D4\u5916\u52A0\u5DE5\u5546\u4E0D\u80FD\u4E3A\u7A7A
pro.schedule.limit.min.duration=\u751F\u4EA7\u65F6\u957F\u5FC5\u987B\u5927\u4E8E0 pro.schedule.limit.min.duration=\u751F\u4EA7\u65F6\u957F\u5FC5\u987B\u5927\u4E8E0
pro.schedule.error.canNot.use.standardTime=\u4E0D\u652F\u6301\u5DE5\u65F6\u5355\u4F4D{0} pro.schedule.error.canNot.use.standardTime=\u4E0D\u652F\u6301\u5DE5\u65F6\u5355\u4F4D{0}
pro.schedule.error.cal.error1=\u65E5\u5386\u7ED3\u675F\u65F6\u95F4\u5FC5\u987B\u5927\u4E8E\u5F00\u59CB\u65F6\u95F4 pro.schedule.error.cal.error1=\u65E5\u5386\u7ED3\u675F\u65F6\u95F4\u5FC5\u987B\u5927\u4E8E\u5F00\u59CB\u65F6\u95F4
......
...@@ -122,12 +122,9 @@ public class BaseEntity implements Serializable { ...@@ -122,12 +122,9 @@ public class BaseEntity implements Serializable {
} }
String username = null; String username = null;
if (this.apiFlag) { if (SecurityUtils.isLogin()) {
username = "SAP";
} else {
username = SecurityUtils.getUsername(); username = SecurityUtils.getUsername();
} }
Date nowDate = DateUtils.getNowDate(); Date nowDate = DateUtils.getNowDate();
setCreateTime(nowDate); setCreateTime(nowDate);
setCreateBy(username); setCreateBy(username);
...@@ -139,12 +136,8 @@ public class BaseEntity implements Serializable { ...@@ -139,12 +136,8 @@ public class BaseEntity implements Serializable {
if (this.manualUpdate) { if (this.manualUpdate) {
return; return;
} }
String username = null; String username = null;
if (this.apiFlag) { if (SecurityUtils.isLogin()) {
username = "SAP";
} else {
username = SecurityUtils.getUsername(); username = SecurityUtils.getUsername();
} }
setUpdateBy(username); setUpdateBy(username);
......
...@@ -82,13 +82,15 @@ public class SysMenu extends BaseEntity ...@@ -82,13 +82,15 @@ public class SysMenu extends BaseEntity
public String localMenuName(){ public String localMenuName(){
String locale = SecurityUtils.getLoginUser().getUser().getLocale(); String locale = SecurityUtils.getLoginUser().getUser().getLocale();
if(locale.indexOf("th")!=-1){ if(StringUtils.isNotEmpty(locale)){
if(StringUtils.isNoneBlank(this.getMenuNameTh())){ if(locale.indexOf("th")!=-1){
return this.getMenuNameTh(); if(StringUtils.isNoneBlank(this.getMenuNameTh())){
} return this.getMenuNameTh();
}else if(locale.indexOf("en")!=-1){ }
if(StringUtils.isNoneBlank(this.getMenuNameEn())){ }else if(locale.indexOf("en")!=-1){
return this.getMenuNameEn(); if(StringUtils.isNoneBlank(this.getMenuNameEn())){
return this.getMenuNameEn();
}
} }
} }
return this.getMenuName(); return this.getMenuName();
......
...@@ -58,4 +58,8 @@ public enum BusinessType ...@@ -58,4 +58,8 @@ public enum BusinessType
* 清空数据 * 清空数据
*/ */
CLEAN, CLEAN,
/**
* 数据同步
*/
SYNC_DATA,
} }
...@@ -65,6 +65,9 @@ public class SecurityUtils { ...@@ -65,6 +65,9 @@ public class SecurityUtils {
} }
public static boolean isLogin(){ public static boolean isLogin(){
if(SecurityUtils.getAuthentication()==null){
return false;
}
Object obj = SecurityUtils.getAuthentication().getPrincipal(); Object obj = SecurityUtils.getAuthentication().getPrincipal();
if(obj instanceof String){ if(obj instanceof String){
return false; return false;
......
...@@ -16,16 +16,29 @@ import org.springframework.dao.DataAccessException; ...@@ -16,16 +16,29 @@ import org.springframework.dao.DataAccessException;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.*; import java.util.*;
import java.util.function.BiConsumer;
import java.util.function.Consumer; import java.util.function.Consumer;
public class ExcelReadListener<T> implements ReadListener<T> { public class ExcelReadListener<T> implements ReadListener<T> {
private List<String> errors = new ArrayList<>(); private List<String> errors = new ArrayList<>();
private int rowNow = 1; private int rowNow = 1;
private final Consumer<T> reader; private BiConsumer<T,Boolean> reader;
private Boolean isUpdateSupport;
public ExcelReadListener(Consumer<T> reader) { public ExcelReadListener(Consumer<T> reader) {
this.reader = new BiConsumer<T, Boolean>() {
@Override
public void accept(T t, Boolean aBoolean) {
this.accept(t, isUpdateSupport);
}
};
this.isUpdateSupport = false;
}
public ExcelReadListener(BiConsumer<T, Boolean> reader, Boolean isUpdateSupport) {
this.reader = reader; this.reader = reader;
this.isUpdateSupport = isUpdateSupport;
} }
@Override @Override
...@@ -80,7 +93,7 @@ public class ExcelReadListener<T> implements ReadListener<T> { ...@@ -80,7 +93,7 @@ public class ExcelReadListener<T> implements ReadListener<T> {
rowNow++; rowNow++;
try { try {
analysisContext.readRowHolder().getRowType(); analysisContext.readRowHolder().getRowType();
reader.accept(t); reader.accept(t, isUpdateSupport);
} catch (Exception ex) { } catch (Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
Exception outputException = getOutputException(ex); Exception outputException = getOutputException(ex);
......
...@@ -3,10 +3,14 @@ package com.ximai.common.utils.excel; ...@@ -3,10 +3,14 @@ package com.ximai.common.utils.excel;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import java.io.InputStream; import java.io.InputStream;
import java.util.function.BiConsumer;
import java.util.function.Consumer; import java.util.function.Consumer;
public class ExcelReader { public class ExcelReader {
public static <T> void read(InputStream inputStream, Class<T> head, Consumer<T> header){ public static <T> void read(InputStream inputStream, Class<T> head, Consumer<T> header){
EasyExcel.read(inputStream, head, new ExcelReadListener<T>(header)).ignoreEmptyRow(true).sheet().autoTrim(true).doRead(); EasyExcel.read(inputStream, head, new ExcelReadListener<T>(header)).ignoreEmptyRow(true).sheet().autoTrim(true).doRead();
} }
public static <T> void read(InputStream inputStream, Class<T> head, BiConsumer<T, Boolean> header, Boolean isUpdateSupport){
EasyExcel.read(inputStream, head, new ExcelReadListener<T>(header, isUpdateSupport)).ignoreEmptyRow(true).sheet().autoTrim(true).doRead();
}
} }
package com.ximai.common.utils.excel.converter; package com.ximai.common.utils.excel.converter;
import cn.hutool.core.date.DateUtil;
import com.alibaba.excel.converters.Converter; import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration; import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.ReadCellData; import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty; import com.alibaba.excel.metadata.property.ExcelContentProperty;
import com.ximai.common.core.domain.entity.SysDictData;
import com.ximai.common.exception.ServiceException;
import com.ximai.common.utils.DictUtils;
import com.ximai.common.utils.MessageUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Calendar;
import java.util.Date;
import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** /**
* <p>Title: DictionaryConverter</p> * <p>Title: DictionaryConverter</p>
* <p>Description: 表达示转换</p> * <p>Description: 字典转换</p>
* *
* @author chicheng.li * @author chicheng.li
* @version V1.0 * @version V1.0
*/ */
@Component
public class DictionaryConverter implements Converter<String> { public class DictionaryConverter implements Converter<String> {
@Override @Override
...@@ -30,11 +44,24 @@ public class DictionaryConverter implements Converter<String> { ...@@ -30,11 +44,24 @@ public class DictionaryConverter implements Converter<String> {
@Override @Override
public String convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { public String convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
return ""; Optional<DictionaryFormat> conf = Optional.ofNullable(contentProperty.getField().getAnnotation(DictionaryFormat.class));
if(!conf.isPresent()){
throw new ServiceException(MessageUtils.message("basic.excel.error.not.null.DictionaryFormat"));
}
if (cellData.getType().equals(CellDataTypeEnum.STRING)){
String dateStr = cellData.getStringValue();
return DictUtils.getDictValue(conf.get().dictType(), dateStr);
}else {
return null;
}
} }
@Override @Override
public WriteCellData<?> convertToExcelData(String value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { public WriteCellData<?> convertToExcelData(String value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
return new WriteCellData(value); Optional<DictionaryFormat> conf = Optional.ofNullable(contentProperty.getField().getAnnotation(DictionaryFormat.class));
if(!conf.isPresent()){
throw new ServiceException(MessageUtils.message("basic.excel.error.not.null.DictionaryFormat"));
}
return new WriteCellData(DictUtils.getDictLabel(conf.get().dictType(), value));
} }
} }
\ No newline at end of file
package com.ximai.common.utils.excel.converter;
import java.lang.annotation.*;
/**
* Convert date format.
*
* <p>
* write: It can be used on classes {@link java.util.Date}
* <p>
* read: It can be used on classes {@link String}
*
* @author Jiaju Zhuang
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface DictionaryFormat {
/**
*
* 字典名
*/
String dictType() default "";
}
package com.ximai.common.utils.excel.converter;
import cn.hutool.core.date.DateUtil;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import com.ximai.common.exception.ServiceException;
import com.ximai.common.utils.MessageUtils;
import io.swagger.annotations.ApiModel;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Calendar;
import java.util.Date;
import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* <p>Title: StaticDataMappingConverter</p>
* <p>Description: 静态数据内容转换</p>
*
* @author chicheng.li
* @version V1.0
*/
public class StaticDataMappingConverter implements Converter<String> {
@Override
public Class<?> supportJavaTypeKey() {
return LocalDateTime.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public String convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
Optional<StaticDataMappingFormat> conf = Optional.ofNullable(contentProperty.getField().getAnnotation(StaticDataMappingFormat.class));
if(!conf.isPresent()){
throw new ServiceException(MessageUtils.message("basic.excel.error.not.null.StaticDataMappingFormat"));
}
if (cellData.getType().equals(CellDataTypeEnum.STRING)){
String dateStr = cellData.getStringValue();
int i=0;
for(String s : conf.get().excelValue()){
if(s.equals(dateStr)){
break;
}
i++;
}
return conf.get().value()[i];
}
return null;
}
@Override
public WriteCellData<?> convertToExcelData(String value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
Optional<StaticDataMappingFormat> conf = Optional.ofNullable(contentProperty.getField().getAnnotation(StaticDataMappingFormat.class));
if(!conf.isPresent()){
throw new ServiceException(MessageUtils.message("basic.excel.error.not.null.StaticDataMappingFormat"));
}
int i=0;
for(String s : conf.get().value()){
if(s.equals(value)){
break;
}
i++;
}
return new WriteCellData(conf.get().excelValue()[i]);
}
}
\ No newline at end of file
package com.ximai.common.utils.excel.converter;
import com.alibaba.excel.enums.BooleanEnum;
import java.lang.annotation.*;
/**
* Convert date format.
*
* <p>
* write: It can be used on classes {@link java.util.Date}
* <p>
* read: It can be used on classes {@link String}
*
* @author Jiaju Zhuang
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface StaticDataMappingFormat {
/**
*
* 数据库值
* @return Format pattern
*/
String[] value() default "";
/**
* excel显示值
*
* @return True if date uses 1904 windowing, or false if using 1900 date windowing.
*/
String[] excelValue() default "";
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment