master
wangbing 5 years ago
parent 40b05f6725
commit c98b653dd1

@ -224,32 +224,6 @@ public class GlobalController implements ErrorController {
return layout; return layout;
} }
@RequestMapping("/upload")
@ResponseBody
public BaseResponse upload(HttpServletRequest request) {
FileUploadResponse fileUploadResponse = new FileUploadResponse();
MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
MultipartFile target = multipartHttpServletRequest.getFile("file");
String fileName = target.getOriginalFilename();
//========
//处理文件
//========
fileUploadResponse.setId(1L);
fileUploadResponse.setUrl("example.com\\img\\1.jpg");
fileUploadResponse.setDownloadUrl("example.com\\img\\1.jpg");
if (target != null) {
fileUploadResponse.addError(ErrorType.BUSINESS_ERROR, "文件上传成功,但未处理文件[" + fileName + "]!");
} else {
fileUploadResponse.addError(ErrorType.BUSINESS_ERROR, "文件上传失败!");
}
return fileUploadResponse;
}
@RequestMapping("/ajax/{module}/{target}/{method}") @RequestMapping("/ajax/{module}/{target}/{method}")
@ResponseBody @ResponseBody
public Object ajax( public Object ajax(
@ -300,42 +274,23 @@ public class GlobalController implements ErrorController {
} }
return methodC.invoke(ajax, arg); return methodC.invoke(ajax, arg);
} catch (BeansException e) { } catch (BeansException e) {
e.printStackTrace();
BaseResponse baseResponse = new BaseResponse(); BaseResponse baseResponse = new BaseResponse();
baseResponse.addError(ErrorType.BUSINESS_ERROR, "未找到对应的目标!"); baseResponse.addError(ErrorType.BUSINESS_ERROR, "未找到对应的目标!");
return baseResponse; return baseResponse;
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
e.printStackTrace();
BaseResponse baseResponse = new BaseResponse(); BaseResponse baseResponse = new BaseResponse();
baseResponse.addError(ErrorType.BUSINESS_ERROR, "方法执必须公开!"); baseResponse.addError(ErrorType.BUSINESS_ERROR, "方法执必须公开!");
return baseResponse; return baseResponse;
} catch (InvocationTargetException e) { } catch (InvocationTargetException e) {
e.getTargetException().printStackTrace();
BaseResponse baseResponse = new BaseResponse(); BaseResponse baseResponse = new BaseResponse();
baseResponse.addError(ErrorType.BUSINESS_ERROR, "方法执行错误[" + e.getTargetException().getMessage() + "]"); baseResponse.addError(ErrorType.BUSINESS_ERROR, "方法执行错误[" + e.getTargetException().getMessage() + "]");
return baseResponse; return baseResponse;
} }
} }
@RequestMapping("/download")
@ResponseBody
public ResponseEntity<byte[]> download(@RequestParam(value = "file", required = false) String file) throws IOException {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//========
//下载DEMO
//========
if (file == null) {
file = "test.txt";
headers.setContentDispositionFormData("attachment", new String(file.getBytes("UTF-8"), "iso-8859-1"));
return new ResponseEntity<byte[]>("test".getBytes(),
headers, HttpStatus.CREATED);
}
return new ResponseEntity<byte[]>(FileUtil.readFileToByteArray(new File(file)),
headers, HttpStatus.CREATED);
}
private static ConcurrentHashMap<String, SseEmitter> sseMap = new ConcurrentHashMap(); private static ConcurrentHashMap<String, SseEmitter> sseMap = new ConcurrentHashMap();
/** /**

@ -1,22 +1,25 @@
package ${basePackage}.action.ajax.${module}; package ${basePackage}.action.ajax.${module};
import com.fasterxml.jackson.core.TreeNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.multipart.MultipartFile;
import ${basePackage}.frame.excel.WSheet;
import ${basePackage}.frame.utils.LogUtil;
import ${basePackage}.frame.auth.LocalData; import ${basePackage}.frame.auth.LocalData;
import ${basePackage}.frame.base.ErrorType;
import ${basePackage}.frame.utils.MapperUtil; import ${basePackage}.frame.utils.MapperUtil;
import ${basePackage}.frame.base.BaseResponse;
import ${basePackage}.frame.utils.ResponseUtil; import ${basePackage}.frame.utils.ResponseUtil;
import ${basePackage}.module.${module}.mgr.${table.getCName()}Manager; import ${basePackage}.frame.utils.ValidationUtil;
import ${basePackage}.frame.excel.exception.ReadErrorException;
import ${basePackage}.frame.excel.exception.TemplateNotMatchException;
import ${basePackage}.module.${module}.ent.${table.getCName()}; import ${basePackage}.module.${module}.ent.${table.getCName()};
import ${basePackage}.module.${module}.mgr.${table.getCName()}Manager;
import ${basePackage}.module.${module}.req.*; import ${basePackage}.module.${module}.req.*;
import ${basePackage}.module.${module}.rsp.*; import ${basePackage}.module.${module}.rsp.*;
import ${basePackage}.frame.base.BaseResponse;
import ${basePackage}.frame.base.ErrorType;
import ${basePackage}.frame.excel.WSheet;
import ${basePackage}.frame.excel.exception.ReadErrorException;
import ${basePackage}.frame.excel.exception.TemplateNotMatchException;
import com.fasterxml.jackson.core.TreeNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.util.List;
public class ${table.getCName()}Ajax{ public class ${table.getCName()}Ajax{
@ -89,14 +92,22 @@ public class ${table.getCName()}Ajax{
public Object imports(MultipartFile file) { public Object imports(MultipartFile file) {
BaseResponse baseResponse = new BaseResponse(); BaseResponse baseResponse = new BaseResponse();
try { try {
WSheet<${table.getCName()}> sheet = new WSheet<>(file.getBytes(), ${table.getCName()}.class); WSheet<${table.getCName()}> sheet = new WSheet<>(file.getBytes(), ${table.getCName()}.class, new WSheet.Validator<${table.getCName()}>() {
@Override
public List<String> validate(${table.getCName()} o) {
${table.getCName()}CreateRequest request = MapperUtil.map(o, ${table.getCName()}CreateRequest.class);
return ValidationUtil.validate(request);
}
});
if (sheet.hasError()) { if (sheet.hasError()) {
return ResponseUtil.apply(sheet.getBytes(), sheet.getName() + "-err.xlsx"); return ResponseUtil.apply(sheet.getBytes(), sheet.getName() + "-检查.xlsx");
} else { } else {
return baseResponse; return baseResponse;
} }
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace();
LogUtil.dumpException(e);
baseResponse.addError(ErrorType.BUSINESS_ERROR, "上传文件出错"); baseResponse.addError(ErrorType.BUSINESS_ERROR, "上传文件出错");
} catch (TemplateNotMatchException | ReadErrorException e) { } catch (TemplateNotMatchException | ReadErrorException e) {
baseResponse.addError(ErrorType.BUSINESS_ERROR, e.getMessage()); baseResponse.addError(ErrorType.BUSINESS_ERROR, e.getMessage());

@ -3,15 +3,16 @@ package ${basePackage}.action.ajax.system;
import com.fasterxml.jackson.core.TreeNode; import com.fasterxml.jackson.core.TreeNode;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import ${basePackage}.frame.excel.WSheet;
import ${basePackage}.frame.utils.LogUtil;
import ${basePackage}.frame.auth.LocalData; import ${basePackage}.frame.auth.LocalData;
import ${basePackage}.frame.base.BaseResponse;
import ${basePackage}.frame.base.ErrorType; import ${basePackage}.frame.base.ErrorType;
import ${basePackage}.frame.excel.WSheet;
import ${basePackage}.frame.excel.exception.ReadErrorException;
import ${basePackage}.frame.excel.exception.TemplateNotMatchException;
import ${basePackage}.frame.utils.MapperUtil; import ${basePackage}.frame.utils.MapperUtil;
import ${basePackage}.frame.base.BaseResponse;
import ${basePackage}.frame.utils.ResponseUtil; import ${basePackage}.frame.utils.ResponseUtil;
import ${basePackage}.frame.utils.ValidationUtil; import ${basePackage}.frame.utils.ValidationUtil;
import ${basePackage}.frame.excel.exception.ReadErrorException;
import ${basePackage}.frame.excel.exception.TemplateNotMatchException;
import ${basePackage}.module.system.ent.Dict; import ${basePackage}.module.system.ent.Dict;
import ${basePackage}.module.system.mgr.DictManager; import ${basePackage}.module.system.mgr.DictManager;
import ${basePackage}.module.system.req.*; import ${basePackage}.module.system.req.*;
@ -80,11 +81,13 @@ public class DictAjax {
}); });
if (sheet.hasError()) { if (sheet.hasError()) {
return ResponseUtil.apply(sheet.getBytes(true), sheet.getName() + "-err.xlsx"); return ResponseUtil.apply(sheet.getBytes(true), sheet.getName() + "-检查.xlsx");
} else { } else {
return baseResponse; return baseResponse;
} }
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace();
LogUtil.dumpException(e);
baseResponse.addError(ErrorType.BUSINESS_ERROR, "上传文件出错"); baseResponse.addError(ErrorType.BUSINESS_ERROR, "上传文件出错");
} catch (TemplateNotMatchException | ReadErrorException e) { } catch (TemplateNotMatchException | ReadErrorException e) {
baseResponse.addError(ErrorType.BUSINESS_ERROR, e.getMessage()); baseResponse.addError(ErrorType.BUSINESS_ERROR, e.getMessage());

@ -1,93 +1,92 @@
package ${basePackage}.action.ajax.system; package ${basePackage}.action.ajax.system;
import ${basePackage}.frame.auth.LocalData; import com.fasterxml.jackson.core.TreeNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.multipart.MultipartFile;
import ${basePackage}.frame.excel.WSheet; import ${basePackage}.frame.excel.WSheet;
import ${basePackage}.frame.utils.LogUtil;
import ${basePackage}.frame.auth.LocalData;
import ${basePackage}.frame.base.ErrorType;
import ${basePackage}.frame.utils.MapperUtil; import ${basePackage}.frame.utils.MapperUtil;
import ${basePackage}.module.system.mgr.DictItemManager;
import ${basePackage}.module.system.req.*;
import ${basePackage}.module.system.rsp.*;
import ${basePackage}.frame.base.BaseResponse; import ${basePackage}.frame.base.BaseResponse;
import ${basePackage}.frame.base.ErrorType; import ${basePackage}.frame.utils.ResponseUtil;
import ${basePackage}.frame.utils.ValidationUtil;
import ${basePackage}.frame.excel.exception.ReadErrorException; import ${basePackage}.frame.excel.exception.ReadErrorException;
import ${basePackage}.frame.excel.exception.TemplateNotMatchException; import ${basePackage}.frame.excel.exception.TemplateNotMatchException;
import org.springframework.web.multipart.MultipartFile; import ${basePackage}.module.system.ent.DictItem;
import com.fasterxml.jackson.core.TreeNode; import ${basePackage}.module.system.mgr.DictItemManager;
import org.springframework.beans.factory.annotation.Autowired; import ${basePackage}.module.system.req.*;
import org.springframework.http.HttpHeaders; import ${basePackage}.module.system.rsp.*;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.util.List;
public class DictItemAjax { public class DictItemAjax {
@Autowired @Autowired
private DictItemManager dictManager; private DictItemManager dictItemManager;
public DictItemCreateResponse create(TreeNode jsonParam) { public DictItemCreateResponse create(TreeNode jsonParam) {
DictItemCreateRequest request = MapperUtil.toJava(jsonParam, DictItemCreateRequest.class); DictItemCreateRequest request = MapperUtil.toJava(jsonParam, DictItemCreateRequest.class);
return dictManager.create(request, LocalData.getToken()); return dictItemManager.create(request, LocalData.getToken());
} }
public DictItemDeleteResponse delete(TreeNode jsonParam) { public DictItemDeleteResponse delete(TreeNode jsonParam) {
DictItemDeleteRequest request = MapperUtil.toJava(jsonParam, DictItemDeleteRequest.class); DictItemDeleteRequest request = MapperUtil.toJava(jsonParam, DictItemDeleteRequest.class);
return dictManager.delete(request, LocalData.getToken()); return dictItemManager.delete(request, LocalData.getToken());
} }
public DictItemUpdateResponse update(TreeNode jsonParam) { public DictItemUpdateResponse update(TreeNode jsonParam) {
DictItemUpdateRequest request = MapperUtil.toJava(jsonParam, DictItemUpdateRequest.class); DictItemUpdateRequest request = MapperUtil.toJava(jsonParam, DictItemUpdateRequest.class);
return dictManager.update(request, LocalData.getToken()); return dictItemManager.update(request, LocalData.getToken());
} }
public DictItemFindResponse find(TreeNode jsonParam) { public DictItemFindResponse find(TreeNode jsonParam) {
DictItemFindRequest request = MapperUtil.toJava(jsonParam, DictItemFindRequest.class); DictItemFindRequest request = MapperUtil.toJava(jsonParam, DictItemFindRequest.class);
return dictManager.find(request, LocalData.getToken()); return dictItemManager.find(request, LocalData.getToken());
} }
public DictItemGetResponse get(TreeNode jsonParam) { public DictItemGetResponse get(TreeNode jsonParam) {
DictItemGetRequest request = MapperUtil.toJava(jsonParam, DictItemGetRequest.class); DictItemGetRequest request = MapperUtil.toJava(jsonParam, DictItemGetRequest.class);
return dictManager.get(request, LocalData.getToken()); return dictItemManager.get(request, LocalData.getToken());
} }
public Object template(){ public Object template(){
try { return ResponseUtil.apply(new WSheet<>(DictItem.class));
WSheet<DictItemCreateRequest> sheet = new WSheet<>(DictItemCreateRequest.class); }
byte[] bytes = sheet.getBytes();
HttpHeaders headers = new HttpHeaders(); public Object exports(TreeNode jsonParam) {
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); DictItemFindRequest request = MapperUtil.toJava(jsonParam, DictItemFindRequest.class);
headers.setContentDispositionFormData("attachment", URLEncoder.encode(sheet.getName() + ".xlsx","utf-8")); DictItemFindResponse response = dictItemManager.find(request, LocalData.getToken());
return new ResponseEntity<>(bytes, headers, HttpStatus.OK); if (response.hasError()) {
} catch (IOException e) { return response;
BaseResponse baseResponse = new BaseResponse();
baseResponse.addError(ErrorType.BUSINESS_ERROR, "");
return baseResponse;
} }
return ResponseUtil.apply(new WSheet<>(response.getResult()));
} }
public Object imports(MultipartFile file) { public Object imports(MultipartFile file) {
BaseResponse baseResponse = new BaseResponse(); BaseResponse baseResponse = new BaseResponse();
try { try {
byte[] bytes = file.getBytes(); WSheet<DictItem> sheet = new WSheet<>(file.getBytes(), DictItem.class, new WSheet.Validator<DictItem>() {
@Override
WSheet<DictItemCreateRequest> sheet = new WSheet<>(bytes, DictItemCreateRequest.class); public List<String> validate(DictItem o) {
DictItemCreateRequest request = MapperUtil.map(o, DictItemCreateRequest.class);
return ValidationUtil.validate(request);
}
});
if (sheet.hasError()) { if (sheet.hasError()) {
byte[] sheetBytes = sheet.getBytes(true); return ResponseUtil.apply(sheet.getBytes(true), sheet.getName() + "-检查.xlsx");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", URLEncoder.encode(sheet.getName() + "-err.xlsx","utf-8"));
return new ResponseEntity<>(sheetBytes, headers, HttpStatus.OK);
} else { } else {
return baseResponse; return baseResponse;
} }
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace();
LogUtil.dumpException(e);
baseResponse.addError(ErrorType.BUSINESS_ERROR, "上传文件出错"); baseResponse.addError(ErrorType.BUSINESS_ERROR, "上传文件出错");
} catch (TemplateNotMatchException | ReadErrorException e) { } catch (TemplateNotMatchException | ReadErrorException e) {
baseResponse.addError(ErrorType.BUSINESS_ERROR, e.getMessage()); baseResponse.addError(ErrorType.BUSINESS_ERROR, e.getMessage());
} }
return baseResponse; return baseResponse;
} }
} }

@ -20,10 +20,10 @@ import java.util.concurrent.Executors;
*/ */
@Configuration @Configuration
@EnableScheduling @EnableScheduling
@Profile("prod") @Profile("dev")
public class TaskConfig implements SchedulingConfigurer { public class TaskConfig implements SchedulingConfigurer {
@Scheduled(cron="0/30 * * * * ? ") @Scheduled(cron="0/5 * * * * ? ")
public void task(){ public void task(){
// todo 自定实现的定时任务 // todo 自定实现的定时任务
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");

@ -19,24 +19,23 @@ public class WColumn implements Serializable {
/** /**
* *
*/ */
private String name; private String name = "";
/** /**
* *
*/ */
private int cellWidth; private int cellWidth = 8;
/** /**
* *
*/ */
private boolean isRequired; private boolean isRequired = false;
/** /**
* *
*/ */
private String description; private String description = "";
/** /**
* *
*/ */
private Converter converter; private Converter converter;
/** /**
* Field * Field
*/ */
@ -45,21 +44,21 @@ public class WColumn implements Serializable {
* set * set
*/ */
private Method setMethod; private Method setMethod;
/**
* get
*/
private Method getMethod;
/**
* ExcelType
*/
private int cellType = 1; private int cellType = 1;
public WColumn() { public WColumn() {
this.name = ""; this.name = "";
this.cellWidth = 1;
this.isRequired = false;
this.description = "";
} }
public WColumn(String name) { public WColumn(String name) {
this.name = name; this.name = name;
this.cellWidth = 1;
this.isRequired = false;
this.description = "";
} }
public String getName() { public String getName() {
@ -67,9 +66,6 @@ public class WColumn implements Serializable {
} }
public void setName(String name) { public void setName(String name) {
if (StringUtil.getByteLength(name) > cellWidth) {
cellWidth = StringUtil.getByteLength(name);
}
this.name = name; this.name = name;
} }
@ -128,4 +124,12 @@ public class WColumn implements Serializable {
public void setSetMethod(Method setMethod) { public void setSetMethod(Method setMethod) {
this.setMethod = setMethod; this.setMethod = setMethod;
} }
public Method getGetMethod() {
return getMethod;
}
public void setGetMethod(Method getMethod) {
this.getMethod = getMethod;
}
} }

@ -91,6 +91,9 @@ public class WSheet<T> implements Serializable, Cloneable {
Method set = ClassUtil.setMethod(field.getName(), clazz, field.getType()); Method set = ClassUtil.setMethod(field.getName(), clazz, field.getType());
WColumn.setSetMethod(set); WColumn.setSetMethod(set);
Method get = ClassUtil.getMethod(field.getName(), clazz);
WColumn.setGetMethod(get);
//获取列名称 //获取列名称
if (!field.isAnnotationPresent(ColumnName.class)) { if (!field.isAnnotationPresent(ColumnName.class)) {
WColumn.setName(field.getName()); WColumn.setName(field.getName());
@ -98,17 +101,13 @@ public class WSheet<T> implements Serializable, Cloneable {
ColumnName columnColumnName = field.getAnnotation(ColumnName.class); ColumnName columnColumnName = field.getAnnotation(ColumnName.class);
WColumn.setName(columnColumnName.value()); WColumn.setName(columnColumnName.value());
WColumn.setCellWidth(columnColumnName.width()); WColumn.setCellWidth(columnColumnName.width());
WColumn.setRequired(columnColumnName.required());
} }
//获取列填写说明或描述 //获取列填写说明或描述
if (field.isAnnotationPresent(ColumnDescription.class)) { if (field.isAnnotationPresent(ColumnDescription.class)) {
WColumn.setDescription(field.getAnnotation(ColumnDescription.class).value()); WColumn.setDescription(field.getAnnotation(ColumnDescription.class).value());
} }
//列填写标志(是否必填)
if (field.isAnnotationPresent(NotNull.class)) {
WColumn.setRequired(true);
}
//获取列类型 //获取列类型
if (field.isAnnotationPresent(${basePackage}.frame.excel.annotation.Converter.class)) { if (field.isAnnotationPresent(${basePackage}.frame.excel.annotation.Converter.class)) {
${basePackage}.frame.excel.annotation.Converter converter = field.getAnnotation(${basePackage}.frame.excel.annotation.Converter.class); ${basePackage}.frame.excel.annotation.Converter converter = field.getAnnotation(${basePackage}.frame.excel.annotation.Converter.class);
@ -180,8 +179,7 @@ public class WSheet<T> implements Serializable, Cloneable {
if (column == null) { if (column == null) {
continue; continue;
} }
Field field = column.getField(); Method method = column.getGetMethod();
Method method = ClassUtil.setMethod(field.getName(), t.getClass(), field.getType());
try { try {
Object value = method.invoke(t); Object value = method.invoke(t);
if (null == value) { if (null == value) {

@ -9,23 +9,28 @@ import java.lang.annotation.*;
* @version 0.0.1 * @version 0.0.1
* @since 2017-01-01 * @since 2017-01-01
*/ */
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.TYPE}) @Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
@Documented @Documented
public @interface ColumnName { public @interface ColumnName {
/**
*
*/
String value(); String value();
/** /**
* *
*
* @return
*/ */
int width() default 8; int width() default 8;
/**
* *
*/
boolean required() default false;
/** /**
* *
*
* @return
*/ */
String dateFormat() default "yyyy-MM-dd"; String dateFormat() default "yyyy-MM-dd";
} }

@ -3,6 +3,11 @@ package ${basePackage}.module.${moduleName}.ent;
<#if table.has('Date')> <#if table.has('Date')>
import java.util.Date; import java.util.Date;
</#if> </#if>
<#if table.getHtml()>
import ${basePackage}.frame.excel.annotation.ColumnDescription;
import ${basePackage}.frame.excel.annotation.ColumnName;
import ${basePackage}.frame.excel.annotation.SheetName;
</#if>
import ${basePackage}.frame.base.BaseEntity; import ${basePackage}.frame.base.BaseEntity;
/** /**
@ -12,6 +17,9 @@ import ${basePackage}.frame.base.BaseEntity;
* @version 0.0.1 * @version 0.0.1
* @since ${date?string("yyyy-MM-dd")} * @since ${date?string("yyyy-MM-dd")}
*/ */
<#if table.getHtml()>
@SheetName("${table.tableComment?default("")}")
</#if>
public class ${table.getCName()} extends BaseEntity { public class ${table.getCName()} extends BaseEntity {
<#list table.fields as field> <#list table.fields as field>
@ -19,6 +27,10 @@ public class ${table.getCName()} extends BaseEntity {
/** /**
* ${field.fieldName} - ${field.fieldComment?default("")} * ${field.fieldName} - ${field.fieldComment?default("")}
*/ */
<#if table.getHtml()>
@ColumnName("${field.fieldComment?default("")}")
@ColumnDescription("")
</#if>
private ${field.fieldType.javaType()} ${field.getFName()}; private ${field.fieldType.javaType()} ${field.getFName()};
</#if> </#if>
</#list> </#list>

@ -154,7 +154,6 @@
`LAST_UPDATE_BY` = ${r"#{"}token.userId}, `LAST_UPDATE_BY` = ${r"#{"}token.userId},
`LAST_UPDATE_TIME` = sysdate() `LAST_UPDATE_TIME` = sysdate()
</#if> </#if>
WHERE WHERE
<#if dataBase == 'ORACLE'> <#if dataBase == 'ORACLE'>
"IS_DELETED" = 0 "IS_DELETED" = 0

@ -37,7 +37,7 @@ public class Dict extends BaseEntity {
* VALID - * VALID -
*/ */
@ColumnName("是否有效") @ColumnName("是否有效")
@ColumnDescription("true/false") @ColumnDescription("Y/N,是/否")
private Boolean valid; private Boolean valid;
public String getDictName() { public String getDictName() {

@ -1,6 +1,9 @@
package ${basePackage}.module.system.ent; package ${basePackage}.module.system.ent;
import ${basePackage}.frame.base.BaseEntity; import ${basePackage}.frame.base.BaseEntity;
import ${basePackage}.frame.excel.annotation.ColumnDescription;
import ${basePackage}.frame.excel.annotation.ColumnName;
import ${basePackage}.frame.excel.annotation.SheetName;
/** /**
* DICT_ITEM - * DICT_ITEM -
@ -9,27 +12,38 @@ import ${basePackage}.frame.base.BaseEntity;
* @version 0.0.1 * @version 0.0.1
* @since 2019-07-20 * @since 2019-07-20
*/ */
@SheetName("字典项")
public class DictItem extends BaseEntity { public class DictItem extends BaseEntity {
/** /**
* DICT_ID - ID * DICT_ID - ID
*/ */
@ColumnName("字典主键")
@ColumnDescription("字典主键一般为一窜数字,可通过字典查询页获取字典主键")
private Long dictId; private Long dictId;
/** /**
* KEY - KEY * KEY - KEY
*/ */
@ColumnName("字典键")
@ColumnDescription("字典键一般使用数字或字母 01,02... A,B...")
private String key; private String key;
/** /**
* VALUE - VALUE * VALUE - VALUE
*/ */
@ColumnName("字典值")
@ColumnDescription("字典值一般是实际意思字符或文字\n 长度在(1-100)之间")
private String value; private String value;
/** /**
* SORT - * SORT -
*/ */
@ColumnName("字典排序值")
@ColumnDescription("用于标识字典值排列顺序、必须为数字")
private Integer sort; private Integer sort;
/** /**
* VALID - * VALID -
*/ */
@ColumnName("是否有效")
@ColumnDescription("用于标识该字典值是否有效")
private Boolean valid; private Boolean valid;
public Long getDictId() { public Long getDictId() {

@ -15,7 +15,7 @@ import java.util.List;
* DICT_ITEM - * DICT_ITEM -
* *
* @author wangbing * @author wangbing
* @date 2019-07-20 * @since 2019-07-20
*/ */
@Mapper @Mapper
public interface DictItemMapper { public interface DictItemMapper {

@ -97,7 +97,6 @@
UPDATE UPDATE
<include refid="table"/> <include refid="table"/>
SET SET
`DICT_ID` = ${r"#{"}request.dictId,jdbcType=BIGINT},
`KEY` = ${r"#{"}request.key,jdbcType=CHAR}, `KEY` = ${r"#{"}request.key,jdbcType=CHAR},
`VALUE` = ${r"#{"}request.value,jdbcType=VARCHAR}, `VALUE` = ${r"#{"}request.value,jdbcType=VARCHAR},
`SORT` = ${r"#{"}request.sort,jdbcType=INTEGER}, `SORT` = ${r"#{"}request.sort,jdbcType=INTEGER},
@ -105,7 +104,6 @@
`ROW_VERSION` = `ROW_VERSION` + 1, `ROW_VERSION` = `ROW_VERSION` + 1,
`LAST_UPDATE_BY` = ${r"#{"}token.userId}, `LAST_UPDATE_BY` = ${r"#{"}token.userId},
`LAST_UPDATE_TIME` = sysdate() `LAST_UPDATE_TIME` = sysdate()
WHERE WHERE
`IS_DELETED` = 0 `IS_DELETED` = 0
AND `ID` = ${r"#{"}request.id} AND `ID` = ${r"#{"}request.id}

@ -11,7 +11,7 @@ import java.util.List;
* DICT - * DICT -
* *
* @author wangbing * @author wangbing
* @date 2019-07-20 * @since 2019-07-20
*/ */
@Mapper @Mapper
public interface DictMapper { public interface DictMapper {

@ -99,7 +99,6 @@
`ROW_VERSION` = `ROW_VERSION` + 1, `ROW_VERSION` = `ROW_VERSION` + 1,
`LAST_UPDATE_BY` = ${r"#{"}token.userId}, `LAST_UPDATE_BY` = ${r"#{"}token.userId},
`LAST_UPDATE_TIME` = sysdate() `LAST_UPDATE_TIME` = sysdate()
WHERE WHERE
`IS_DELETED` = 0 `IS_DELETED` = 0
AND `ID` = ${r"#{"}request.id} AND `ID` = ${r"#{"}request.id}

@ -17,18 +17,19 @@ public class DictItemCreateRequest extends BaseRequest {
/** /**
* ID * ID
*/ */
@NotNull(message = "字典主键不能为空")
private Long dictId; private Long dictId;
/** /**
* KEY * KEY
*/ */
@Length(min = 0, max = 10, message = "字典KEY长度不合法(0-10)") @Length(min = 1, max = 10, message = "字典KEY长度不合法(1-10)")
private String key; private String key;
/** /**
* VALUE * VALUE
*/ */
@Length(min = 0, max = 100, message = "字典VALUE长度不合法(0-100)") @Length(min = 1, max = 100, message = "字典VALUE长度不合法(1-100)")
private String value; private String value;
/** /**
@ -40,6 +41,7 @@ public class DictItemCreateRequest extends BaseRequest {
/** /**
* *
*/ */
@NotNull(message = "是否有效不能为空")
private Boolean valid; private Boolean valid;
public Long getDictId() { public Long getDictId() {

@ -20,11 +20,6 @@ public class DictItemUpdateRequest extends BaseUpdateRequest {
@NotNull(message = "主键不能为NULL") @NotNull(message = "主键不能为NULL")
private Long id; private Long id;
/**
* ID
*/
private Long dictId;
/** /**
* KEY * KEY
*/ */
@ -40,11 +35,13 @@ public class DictItemUpdateRequest extends BaseUpdateRequest {
/** /**
* *
*/ */
@NotNull(message = "字典项排序值不能为空")
private Integer sort; private Integer sort;
/** /**
* *
*/ */
@NotNull(message = "是否有效不能为空")
private Boolean valid; private Boolean valid;
public Long getId() { public Long getId() {
@ -55,14 +52,6 @@ public class DictItemUpdateRequest extends BaseUpdateRequest {
this.id = id; this.id = id;
} }
public Long getDictId() {
return this.dictId;
}
public void setDictId(Long dictId) {
this.dictId = dictId;
}
public String getKey() { public String getKey() {
return this.key; return this.key;
} }

@ -169,13 +169,13 @@
}, },
upload: function (data) { upload: function (data) {
return upRequest({ return upRequest({
url: "system/File/upload", url: "ajax/system/File/upload",
data: data, data: data,
}) })
}, },
download: function (data) { download: function (data) {
return downRequest({ return downRequest({
url: "system/File/download", url: "ajax/system/File/download",
data: JSON.stringify(data), data: JSON.stringify(data),
}) })
}, },
@ -228,7 +228,7 @@
}) })
}, },
exports: function (module, target, data) { exports: function (module, target, data) {
return upRequest({ return downRequest({
url: "/ajax/" + module + "/" + target + "/exports", url: "/ajax/" + module + "/" + target + "/exports",
data: data, data: data,
}) })

@ -141,7 +141,7 @@
<el-divider></el-divider> <el-divider></el-divider>
<p>ajax.login({}).then(function (response) {</p> <p>this.$ajax.login({}).then(function (response) {</p>
<p style="text-indent: 2em;">if (response.errors.length > 0) {</p> <p style="text-indent: 2em;">if (response.errors.length > 0) {</p>
@ -173,7 +173,7 @@
<el-divider></el-divider> <el-divider></el-divider>
<p>ajax.upload(req.file).then(function (response) {</p> <p>this.$ajax.upload(req.file).then(function (response) {</p>
<p style="text-indent: 2em;">if (response.errors.length > 0) {</p> <p style="text-indent: 2em;">if (response.errors.length > 0) {</p>
@ -941,10 +941,10 @@
</style> </style>
<script> <script>
var app = new Vue({ var app = new Vue({
mixins: [mixin],
el: "#app", el: "#app",
data: { data: {
fileList: [], fileList: [],
form: { form: {
field1: '', field1: '',
field2: '', field2: '',
@ -1028,7 +1028,7 @@
}, },
methods: { methods: {
doAjax: function () { doAjax: function () {
ajax.login({}).then(function (response) { this.$ajax.login({}).then(function (response) {
if (response.errors.length > 0) { if (response.errors.length > 0) {
this.e(response.errors[0].message); this.e(response.errors[0].message);
} else { } else {
@ -1053,7 +1053,7 @@
} }
}, },
handleUpload: function (req) { handleUpload: function (req) {
ajax.upload(req.file).then(function (response) { this.$ajax.upload(req.file).then(function (response) {
if (response.errors.length > 0) { if (response.errors.length > 0) {
req.onError(); req.onError();
this.e(response.errors[0].message); this.e(response.errors[0].message);

@ -13,19 +13,19 @@
active-text-color="#ffd04b"> active-text-color="#ffd04b">
<el-submenu index="${tool.uuid()}" > <el-submenu index="${tool.uuid()}" >
<template slot="title"> <template slot="title">
<i class="el-icon-setting"></i> <i class="el-icon-monitor"></i>
<span slot="title">系统设置</span> <span slot="title">系统设置</span>
</template> </template>
<el-menu-item index="${tool.uuid()}" @click="addTab({title: '字典管理', name: 'dict', url: '${r'${context}'}/system/dict.htm'})">字典管理</el-menu-item> <el-menu-item index="${tool.uuid()}" class="el-icon-coin" @click="addTab({title: '字典管理', name: 'dict', url: '${r'${context}'}/system/dict.htm'})">字典管理</el-menu-item>
</el-submenu> </el-submenu>
<#list modules as item> <#list modules as item>
<el-submenu index="${tool.uuid()}"> <el-submenu index="${tool.uuid()}">
<template slot="title"> <template slot="title">
<i class="el-icon-time"></i> <i class="el-icon-document-copy"></i>
<span slot="title">${item.moduleComment}</span> <span slot="title">${item.moduleComment}</span>
</template> </template>
<#list item.tables as table> <#list item.tables as table>
<el-menu-item index="${tool.uuid()}" @click="addTab({title: '${table.tableComment}', name: '${table.tableName}', url: '${r"${context}"}/${item.moduleName}/${table.getFName()}.htm'})">${table.tableComment}</el-menu-item> <el-menu-item index="${tool.uuid()}" class="el-icon-tickets" @click="addTab({title: '${table.tableComment}', name: '${table.tableName}', url: '${r"${context}"}/${item.moduleName}/${table.getFName()}.htm'})">${table.tableComment}</el-menu-item>
</#list> </#list>
</el-submenu> </el-submenu>
</#list> </#list>

Loading…
Cancel
Save

Powered by TurnKey Linux.