Merge branch 'develop' of http://10.0.6.99/gwall/gwall.git into develop
This commit is contained in:
@@ -10,6 +10,7 @@ import com.nis.domain.BaseEntity;
|
||||
import com.nis.domain.SysMenu;
|
||||
import com.nis.domain.SysUser;
|
||||
import com.nis.util.Configurations;
|
||||
import com.nis.util.StringUtil;
|
||||
/**
|
||||
* 业务辅助表-业务字典信息表
|
||||
* @author zsl
|
||||
@@ -33,7 +34,6 @@ public class ServiceDictInfo extends BaseEntity<ServiceDictInfo>{
|
||||
private Date editTime; //edit_time 修改时间 date Y
|
||||
private Integer levelNo; //层级
|
||||
private List<ServiceDictInfo> childrenList = new ArrayList<ServiceDictInfo>();//子列表
|
||||
|
||||
private Date beginDate; // 开始日期
|
||||
private Date endDate; // 结束日期
|
||||
|
||||
@@ -42,14 +42,20 @@ public class ServiceDictInfo extends BaseEntity<ServiceDictInfo>{
|
||||
|
||||
private String showSequence; //显示序号
|
||||
|
||||
|
||||
private String pNames;//父节点名称
|
||||
/**
|
||||
* 封装参数数据类型,
|
||||
*
|
||||
*/
|
||||
private List<Integer> conditionType;
|
||||
|
||||
|
||||
@JsonIgnore
|
||||
public String getpNames() {
|
||||
return pNames;
|
||||
}
|
||||
public void setpNames(String pNames) {
|
||||
this.pNames = pNames;
|
||||
}
|
||||
public Integer getServiceDictId() {
|
||||
return serviceDictId;
|
||||
}
|
||||
@@ -250,5 +256,23 @@ public class ServiceDictInfo extends BaseEntity<ServiceDictInfo>{
|
||||
|
||||
|
||||
}
|
||||
//获取所有父节点
|
||||
@JsonIgnore
|
||||
public static String getPNames(List<ServiceDictInfo> list,Integer pid,String pNames) {
|
||||
String pName="";
|
||||
for (ServiceDictInfo serviceDictInfo : list) {
|
||||
if(pid==serviceDictInfo.getServiceDictId()){
|
||||
pid=serviceDictInfo.getParent().getServiceDictId();
|
||||
pName=serviceDictInfo.getItemValue();
|
||||
pNames="/"+pName+pNames;
|
||||
}
|
||||
}
|
||||
if(pid==0){
|
||||
if(!StringUtil.isEmpty(pNames)) pNames=pNames.substring(1);
|
||||
return pNames;
|
||||
}else{
|
||||
return getPNames(list, pid, pNames);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
59
src/main/java/com/nis/exceptions/MultiPartNewException.java
Normal file
59
src/main/java/com/nis/exceptions/MultiPartNewException.java
Normal file
@@ -0,0 +1,59 @@
|
||||
package com.nis.exceptions;
|
||||
|
||||
import static java.lang.String.format;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import org.springframework.web.multipart.MultipartException;
|
||||
|
||||
public class MultiPartNewException extends MultipartException {
|
||||
|
||||
private static final long serialVersionUID = 8922896505285617384L;
|
||||
|
||||
public MultiPartNewException(String msg) {
|
||||
super(msg);
|
||||
}
|
||||
public MultiPartNewException(Properties prop,Throwable ex) {
|
||||
super(prop.get("file_upload_error").toString(),ex);
|
||||
}
|
||||
public MultiPartNewException(String msg,Throwable ex) {
|
||||
|
||||
super(msg,ex);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param message The detail message.
|
||||
* @param actual The actual request size.
|
||||
* @param permitted The maximum permitted request size.
|
||||
*/
|
||||
public MultiPartNewException(String msg,long actual,long permitted,Properties prop,Throwable ex) {
|
||||
|
||||
super(format(prop.get("total_file_upload_size_error").toString(),
|
||||
Long.valueOf(actual),Long.valueOf(permitted)),ex);
|
||||
}
|
||||
|
||||
/**single file
|
||||
* @param fileName
|
||||
* @param message The detail message.
|
||||
* @param actual The actual request size.
|
||||
* @param permitted The maximum permitted request size.
|
||||
*/
|
||||
public MultiPartNewException(String msg,String fileName,long actual,long permitted,Properties prop,Throwable ex) {
|
||||
|
||||
super(format(prop.get("single_file_upload_size_error").toString(),
|
||||
fileName,Long.valueOf(actual), Long.valueOf(permitted)),ex);
|
||||
}
|
||||
|
||||
/**single file
|
||||
* @param fileName
|
||||
* @param message The detail message.
|
||||
* @param permitted fileType.
|
||||
*/
|
||||
public MultiPartNewException(String msg,String fileName,String fileType,Properties prop,Throwable ex) {
|
||||
|
||||
super(format(prop.get("file_upload_type_error").toString(),
|
||||
fileName, fileType),ex);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
161
src/main/java/com/nis/interceptor/MultipartFileIntercepter.java
Normal file
161
src/main/java/com/nis/interceptor/MultipartFileIntercepter.java
Normal file
@@ -0,0 +1,161 @@
|
||||
package com.nis.interceptor;
|
||||
|
||||
|
||||
import static java.lang.String.format;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.apache.commons.fileupload.FileUpload;
|
||||
import org.apache.commons.fileupload.FileUploadBase;
|
||||
import org.apache.commons.fileupload.FileUploadException;
|
||||
import org.apache.commons.fileupload.UploadContext;
|
||||
import org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException;
|
||||
import org.apache.commons.fileupload.servlet.ServletFileUpload;
|
||||
import org.apache.commons.fileupload.servlet.ServletRequestContext;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
import org.springframework.web.multipart.MultipartException;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.multipart.commons.CommonsFileUploadSupport;
|
||||
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
|
||||
|
||||
import com.nis.exceptions.MultiPartNewException;
|
||||
import com.nis.util.Configurations;
|
||||
import com.nis.util.Constants;
|
||||
import com.nis.util.FileUtils;
|
||||
|
||||
|
||||
public class MultipartFileIntercepter extends CommonsMultipartResolver{
|
||||
Logger logger = Logger.getLogger(MultipartFileIntercepter.class);
|
||||
|
||||
|
||||
protected CommonsFileUploadSupport.MultipartParsingResult parseRequest(HttpServletRequest request)throws MultipartException{
|
||||
String encoding = determineEncoding(request);
|
||||
//是否是样例文件
|
||||
boolean isSampleFileUpload = request.getRequestURI().contains(Constants.SAMPLE_UPLOAD_URL_KEYWORD);
|
||||
FileUpload fileUpload = this.prepareFileUpload(encoding,isSampleFileUpload);
|
||||
long fileUploadTotalSize=0l;
|
||||
Properties languageProp=getMsgProp();
|
||||
try {
|
||||
/*****************预先获取上传文件的总的大小************/
|
||||
FileUpload fileUploadTotal = fileUpload;
|
||||
|
||||
ServletRequestContext ctx = new ServletRequestContext(request);
|
||||
InputStream input=ctx.getInputStream();
|
||||
@SuppressWarnings("deprecation") // still has to be backward compatible
|
||||
int contentLengthInt = ctx.getContentLength();
|
||||
|
||||
fileUploadTotalSize = UploadContext.class.isAssignableFrom(input.getClass())
|
||||
// Inline conditional is OK here CHECKSTYLE:OFF
|
||||
? ((UploadContext) ctx).contentLength()
|
||||
: contentLengthInt;
|
||||
// CHECKSTYLE:ON
|
||||
logger.error("上传文件总大小为"+fileUploadTotalSize);
|
||||
/*****************预先获取上传文件的总的大小************/
|
||||
//验证文件总大小
|
||||
if(fileUploadTotalSize > fileUpload.getSizeMax()){
|
||||
throw new MultiPartNewException("", fileUploadTotalSize, fileUpload.getSizeMax(),languageProp, null);
|
||||
}
|
||||
//设置文件上传SizeMax为总文件的大小,否则无法通过SizeLimit(总的文件大小)校验,就无法进行下面单个文件大小的校验
|
||||
fileUploadTotal.setSizeMax(fileUploadTotalSize);
|
||||
|
||||
List fileItems = ((ServletFileUpload) fileUploadTotal).parseRequest(request);
|
||||
MultipartParsingResult multipartParsingResult=parseFileItems(fileItems, encoding);
|
||||
MultiValueMap<String, MultipartFile> files=multipartParsingResult.getMultipartFiles();
|
||||
//单个文件验证文件格式和文件大小
|
||||
validFileList(files,fileUpload,languageProp,isSampleFileUpload);
|
||||
|
||||
return multipartParsingResult;
|
||||
|
||||
} catch (FileUploadBase.SizeLimitExceededException ex) {
|
||||
throw new MultiPartNewException("",fileUploadTotalSize,fileUpload.getSizeMax(),languageProp,ex);
|
||||
} catch (FileUploadException ex) {
|
||||
throw new MultiPartNewException(languageProp, ex);
|
||||
}catch (IOException ex) {
|
||||
throw new MultiPartNewException(languageProp, ex);
|
||||
}catch (MultiPartNewException ex) {
|
||||
throw ex;
|
||||
}catch (Exception ex) {
|
||||
throw new MultiPartNewException(languageProp, ex);
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* 校验文件大小、类型
|
||||
* @return
|
||||
* @throws FileSizeLimitExceededException
|
||||
*/
|
||||
protected void validFileList(MultiValueMap<String, MultipartFile> multipartFile,FileUpload fileUpload,Properties prop,boolean isSampleFileUpload) throws FileSizeLimitExceededException{
|
||||
String errorInfo="";
|
||||
|
||||
String fileType="";
|
||||
long fileMaxSize=0l;
|
||||
if(isSampleFileUpload){
|
||||
fileType=Constants.SAMPLE_FILE_TYPE;
|
||||
fileMaxSize=Constants.SAMPLE_SINGLE_FILE_MAX_SIZE;
|
||||
}else{
|
||||
fileType=Constants.DIGEST_FILE_TYPE;
|
||||
fileMaxSize=Constants.DIGEST_SINGLE_FILE_MAX_SIZE;
|
||||
}
|
||||
for (String fileName : multipartFile.keySet()) {
|
||||
MultipartFile file= multipartFile.getFirst(fileName);
|
||||
//文件类型错误
|
||||
if(fileType.indexOf(","+FileUtils.getSuffix(file.getOriginalFilename(), false)+",") == -1){
|
||||
throw new MultiPartNewException(errorInfo,file.getOriginalFilename(),fileType.substring(0,fileType.length()-1).substring(1),prop,null);
|
||||
}
|
||||
if(file.getSize() > fileMaxSize){
|
||||
throw new MultiPartNewException(errorInfo, file.getOriginalFilename(), file.getSize(), fileMaxSize,prop, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 构造FileUpload
|
||||
* @param encoding
|
||||
* @param isSampleFileUpload
|
||||
* @return
|
||||
*/
|
||||
protected FileUpload prepareFileUpload(String encoding,boolean isSampleFileUpload) {
|
||||
FileUpload fileUpload = getFileUpload();
|
||||
FileUpload actualFileUpload = fileUpload;
|
||||
if (encoding != null && !encoding.equals(fileUpload.getHeaderEncoding())) {
|
||||
actualFileUpload = newFileUpload(getFileItemFactory());
|
||||
actualFileUpload.setHeaderEncoding(encoding);
|
||||
if(isSampleFileUpload){
|
||||
actualFileUpload.setSizeMax(Constants.SAMPLE_TOTAL_FILE_MAX_SIZE);
|
||||
}else{
|
||||
actualFileUpload.setSizeMax(Constants.DIGEST_TOTAL_FILE_MAX_SIZE);
|
||||
}
|
||||
}
|
||||
return actualFileUpload;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取国际化配置文件
|
||||
* @return
|
||||
*/
|
||||
public Properties getMsgProp(){
|
||||
Properties msgProp = new Properties();
|
||||
try {
|
||||
String language = LocaleContextHolder.getLocale().getLanguage();
|
||||
if(language.equals("zh_cn")||language.equals("zh")){
|
||||
msgProp.load(Configurations.class.getResourceAsStream("/messages/message_zh_CN.properties"));
|
||||
}else if(language.equals("ru")){
|
||||
msgProp.load(Configurations.class.getResourceAsStream("/messages/message_ru.properties"));
|
||||
}else{
|
||||
msgProp.load(Configurations.class.getResourceAsStream("/messages/message_en.properties"));
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
msgProp = null;
|
||||
logger.error("未知i18n消息配置文件,请确定文件是否存在!",e);
|
||||
}
|
||||
return msgProp;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -408,4 +408,12 @@ public final class Constants {
|
||||
public static final String REDIRECT_URL_KEY = Configurations.getStringProperty("redirect_url_key","url");
|
||||
public static final String REDIRECT_CONTENT_KEY = Configurations.getStringProperty("redirect_content_key","content");
|
||||
public static final String REDIRECT_RESPONSE_CODE_STARTWITH = Configurations.getStringProperty("redirect_response_code_startwith","30");
|
||||
|
||||
public static final String SAMPLE_UPLOAD_URL_KEYWORD = Configurations.getStringProperty("sample_upload_url_keyword","av");
|
||||
public static final String SAMPLE_FILE_TYPE = Configurations.getStringProperty("sample_file_type","");
|
||||
public static final long SAMPLE_SINGLE_FILE_MAX_SIZE = Configurations.getLongProperty("sample_single_file_max_size",10485760l);//10M
|
||||
public static final long SAMPLE_TOTAL_FILE_MAX_SIZE = Configurations.getLongProperty("sample_total_file_max_size",52428800l);//50M
|
||||
public static final String DIGEST_FILE_TYPE = Configurations.getStringProperty("digest_file_type","");
|
||||
public static final long DIGEST_SINGLE_FILE_MAX_SIZE = Configurations.getLongProperty("digest_single_file_max_size",10485760l);//10M
|
||||
public static final long DIGEST_TOTAL_FILE_MAX_SIZE = Configurations.getLongProperty("digest_total_file_max_size",52428800l);//50M
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@ import com.nis.util.Constants;
|
||||
import com.nis.util.DateUtils;
|
||||
import com.nis.util.DictUtils;
|
||||
import com.nis.util.JsonMapper;
|
||||
import com.nis.util.StringUtil;
|
||||
import com.nis.util.excel.ExportExcel;
|
||||
import com.nis.web.service.ArchiveServcie;
|
||||
import com.nis.web.service.AreaService;
|
||||
@@ -277,20 +278,52 @@ public class BaseController {
|
||||
List<RequestInfo> requestInfos=requestInfoService.getAllRequestInfo();
|
||||
model.addAttribute("requestInfos", requestInfos);
|
||||
List<ServiceDictInfo> fls=serviceDictInfoService.findAllFlDict();
|
||||
String pNames="";
|
||||
for (ServiceDictInfo serviceDictInfo : fls) {
|
||||
pNames="";
|
||||
pNames=serviceDictInfo.getPNames(fls, serviceDictInfo.getParent().getServiceDictId(), pNames);
|
||||
serviceDictInfo.setpNames(pNames);
|
||||
}
|
||||
model.addAttribute("fls", fls);
|
||||
List<ServiceDictInfo> xzs=serviceDictInfoService.findAllXzDict();
|
||||
for (ServiceDictInfo serviceDictInfo : xzs) {
|
||||
pNames="";
|
||||
pNames=serviceDictInfo.getPNames(xzs, serviceDictInfo.getParent().getServiceDictId(), pNames);
|
||||
serviceDictInfo.setpNames(pNames);
|
||||
}
|
||||
model.addAttribute("xzs", xzs);
|
||||
List<ServiceDictInfo> lables=serviceDictInfoService.findAllLableDict();
|
||||
for (ServiceDictInfo serviceDictInfo : lables) {
|
||||
pNames="";
|
||||
pNames=serviceDictInfo.getPNames(lables, serviceDictInfo.getParent().getServiceDictId(), pNames);
|
||||
serviceDictInfo.setpNames(pNames);
|
||||
}
|
||||
model.addAttribute("lables", lables);
|
||||
}
|
||||
protected void initPageCondition(Model model,BaseCfg cfg){
|
||||
List<RequestInfo> requestInfos=requestInfoService.getAllRequestInfo();
|
||||
model.addAttribute("requestInfos", requestInfos);
|
||||
List<ServiceDictInfo> fls=serviceDictInfoService.findAllFlDict();
|
||||
String pNames="";
|
||||
for (ServiceDictInfo serviceDictInfo : fls) {
|
||||
pNames="";
|
||||
pNames=serviceDictInfo.getPNames(fls, serviceDictInfo.getParent().getServiceDictId(), pNames);
|
||||
serviceDictInfo.setpNames(pNames);
|
||||
}
|
||||
model.addAttribute("fls", fls);
|
||||
List<ServiceDictInfo> xzs=serviceDictInfoService.findAllXzDict();
|
||||
for (ServiceDictInfo serviceDictInfo : xzs) {
|
||||
pNames="";
|
||||
pNames=serviceDictInfo.getPNames(xzs, serviceDictInfo.getParent().getServiceDictId(), pNames);
|
||||
serviceDictInfo.setpNames(pNames);
|
||||
}
|
||||
model.addAttribute("xzs", xzs);
|
||||
List<ServiceDictInfo> lables=serviceDictInfoService.findAllLableDict();
|
||||
for (ServiceDictInfo serviceDictInfo : lables) {
|
||||
pNames="";
|
||||
pNames=serviceDictInfo.getPNames(lables, serviceDictInfo.getParent().getServiceDictId(), pNames);
|
||||
serviceDictInfo.setpNames(pNames);
|
||||
}
|
||||
model.addAttribute("lables", lables);
|
||||
List<FunctionRegionDict> regionList = DictUtils.getFunctionRegionDictList(cfg.getFunctionId());
|
||||
model.addAttribute("regionList", regionList);
|
||||
@@ -315,10 +348,26 @@ public class BaseController {
|
||||
List<RequestInfo> requestInfos=requestInfoService.getValidRequestInfo();
|
||||
model.addAttribute("requestInfos", requestInfos);
|
||||
List<ServiceDictInfo> fls=serviceDictInfoService.findFlDict();
|
||||
String pNames="";
|
||||
for (ServiceDictInfo serviceDictInfo : fls) {
|
||||
pNames="";
|
||||
pNames=serviceDictInfo.getPNames(fls, serviceDictInfo.getParent().getServiceDictId(), pNames);
|
||||
serviceDictInfo.setpNames(pNames);
|
||||
}
|
||||
model.addAttribute("fls", fls);
|
||||
List<ServiceDictInfo> xzs=serviceDictInfoService.findXzDict();
|
||||
for (ServiceDictInfo serviceDictInfo : xzs) {
|
||||
pNames="";
|
||||
pNames=serviceDictInfo.getPNames(xzs, serviceDictInfo.getParent().getServiceDictId(), pNames);
|
||||
serviceDictInfo.setpNames(pNames);
|
||||
}
|
||||
model.addAttribute("xzs", xzs);
|
||||
List<ServiceDictInfo> lables=serviceDictInfoService.findLableDict();
|
||||
for (ServiceDictInfo serviceDictInfo : lables) {
|
||||
pNames="";
|
||||
pNames=serviceDictInfo.getPNames(lables, serviceDictInfo.getParent().getServiceDictId(), pNames);
|
||||
serviceDictInfo.setpNames(pNames);
|
||||
}
|
||||
model.addAttribute("lables", lables);
|
||||
List<Integer> itTypeList=new ArrayList<Integer>();
|
||||
itTypeList.add(Constants.ITEM_TYPE_AREA);
|
||||
@@ -337,10 +386,26 @@ public class BaseController {
|
||||
List<RequestInfo> requestInfos=requestInfoService.getValidRequestInfo();
|
||||
model.addAttribute("requestInfos", requestInfos);
|
||||
List<ServiceDictInfo> fls=serviceDictInfoService.findFlDict();
|
||||
String pNames="";
|
||||
for (ServiceDictInfo serviceDictInfo : fls) {
|
||||
pNames="";
|
||||
pNames=serviceDictInfo.getPNames(fls, serviceDictInfo.getParent().getServiceDictId(), pNames);
|
||||
serviceDictInfo.setpNames(pNames);
|
||||
}
|
||||
model.addAttribute("fls", fls);
|
||||
List<ServiceDictInfo> xzs=serviceDictInfoService.findXzDict();
|
||||
for (ServiceDictInfo serviceDictInfo : xzs) {
|
||||
pNames="";
|
||||
pNames=serviceDictInfo.getPNames(xzs, serviceDictInfo.getParent().getServiceDictId(), pNames);
|
||||
serviceDictInfo.setpNames(pNames);
|
||||
}
|
||||
model.addAttribute("xzs", xzs);
|
||||
List<ServiceDictInfo> lables=serviceDictInfoService.findLableDict();
|
||||
for (ServiceDictInfo serviceDictInfo : lables) {
|
||||
pNames="";
|
||||
pNames=serviceDictInfo.getPNames(lables, serviceDictInfo.getParent().getServiceDictId(), pNames);
|
||||
serviceDictInfo.setpNames(pNames);
|
||||
}
|
||||
model.addAttribute("lables", lables);
|
||||
List<Integer> itTypeList=new ArrayList<Integer>();
|
||||
itTypeList.add(Constants.ITEM_TYPE_AREA);
|
||||
@@ -399,10 +464,26 @@ public class BaseController {
|
||||
List<RequestInfo> requestInfos=requestInfoService.getValidRequestInfo();//只查询有效的
|
||||
model.addAttribute("requestInfos", requestInfos);
|
||||
List<ServiceDictInfo> fls=serviceDictInfoService.findFlDict();//只查询有效分类字典
|
||||
String pNames="";
|
||||
for (ServiceDictInfo serviceDictInfo : fls) {
|
||||
pNames="";
|
||||
pNames=serviceDictInfo.getPNames(fls, serviceDictInfo.getParent().getServiceDictId(), pNames);
|
||||
serviceDictInfo.setpNames(pNames);
|
||||
}
|
||||
model.addAttribute("fls", fls);
|
||||
List<ServiceDictInfo> xzs=serviceDictInfoService.findXzDict();//只查询有效性质字典
|
||||
for (ServiceDictInfo serviceDictInfo : xzs) {
|
||||
pNames="";
|
||||
pNames=serviceDictInfo.getPNames(xzs, serviceDictInfo.getParent().getServiceDictId(), pNames);
|
||||
serviceDictInfo.setpNames(pNames);
|
||||
}
|
||||
model.addAttribute("xzs", xzs);
|
||||
List<ServiceDictInfo> lables=serviceDictInfoService.findLableDict();//只查询有效标签字典
|
||||
for (ServiceDictInfo serviceDictInfo : lables) {
|
||||
pNames="";
|
||||
pNames=serviceDictInfo.getPNames(lables, serviceDictInfo.getParent().getServiceDictId(), pNames);
|
||||
serviceDictInfo.setpNames(pNames);
|
||||
}
|
||||
model.addAttribute("lables", lables);
|
||||
List<FunctionRegionDict> regionList = DictUtils.getFunctionRegionDictList(cfg.getFunctionId());
|
||||
model.addAttribute("regionList", regionList);
|
||||
@@ -920,4 +1001,5 @@ public class BaseController {
|
||||
}
|
||||
return msg.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user