Merge branch 'develop' of http://10.0.6.99/gwall/gwall.git into develop

This commit is contained in:
wangxin
2018-07-06 18:40:10 +08:00
15 changed files with 1675 additions and 27 deletions

View File

@@ -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);
}
}
}

View 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);
}
}

View 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;
}
}

View File

@@ -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
}

View File

@@ -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();
}
}