/**
* Add the individuality nominate about integral type.
* **/
@SuppressWarnings("unchecked")
public ModelAndView addBardianCommendInfo(HttpServletRequest request,
HttpServletResponse response) throws Exception {
logger.info("---------addBardianCommendInfo() start-----------");
// Get page parameters
String command=request.getParameter("command");
String idBardianCommendInfo=request.getParameter("idBardianCommendInfo");
// Get serviceRequest
ServiceRequest serviceRequest = new ServiceRequest();
BardianCommendInfoDTO dto=new BardianCommendInfoDTO();
PrintWriter pw=response.getWriter();
// Set parameters to serviceRequest
serviceRequest
.setRequestedServiceID(ServiceRequestID.COMMON_ACTION);
serviceRequest.setParameter("optionName", "showBardianCommendInfo");
//
ServiceResponse serviceResponse=null;
Map<String, Object> model=null;
//Insert one data into table
if("saveClas".equals(command)){
//
//
// BardianCommendInfoDTO dto=new BardianCommendInfoDTO();
// BindUtils.bind(request, dto, "commad");
String pointType=request.getParameter("pointType");
String upperPoints=StringUtils.defaultString(request.getParameter("upperPoints"), "0");
String lowerPoints=StringUtils.defaultString(request.getParameter("lowerPoints"), "0");
String advertisingAddr=request.getParameter("advertisingAddr");
String advertisingLink=request.getParameter("advertisingLink");
String commendType=request.getParameter("commendType");
dto.setPointType(pointType);
dto.setUpperPoints(Integer.parseInt(upperPoints));
dto.setLowerPoints(Integer.parseInt(lowerPoints));
dto.setAdvertisingAddr(advertisingAddr);
dto.setAdvertisingLink(advertisingLink);
dto.setCommendType(commendType);
//To judge that is to save or update
if(StringUtils.isBlank(idBardianCommendInfo)){
CurrentUser currentUser = new CurrentUser(request);
dto.setCreatedBy(currentUser.getCurrentUser().getUID());
dto.setCreatedDate(new Date());
}else{
CurrentUser currentUser = new CurrentUser(request);
dto.setIdBardianCommendInfo(idBardianCommendInfo);
dto.setUpdatedBy(currentUser.getCurrentUser().getUID());
dto.setUpdatedDate(new Date());
}
serviceRequest.setParameter("dto", dto);
serviceRequest.setParameter("optionName", "addBardianCommendInfo");
serviceResponse = dispatchService(serviceRequest,
WebContextNames.PAFA_AC);
//
model = serviceResponse.getModel();
//
pw.write(model.get("result").toString());
return null;
}else if("deleteClas".equals(command)){
//
dto.setIdBardianCommendInfo(idBardianCommendInfo);
//
serviceRequest.setParameter("dto", dto);
serviceRequest.setParameter("optionName", "deleteBardianCommendInfo");
serviceResponse = dispatchService(serviceRequest,
WebContextNames.PAFA_AC);
//
model = serviceResponse.getModel();
//
pw.write(model.get("result").toString());
return null;
}
//
serviceResponse = dispatchService(serviceRequest,
WebContextNames.PAFA_AC);
// Get result data
model = serviceResponse.getModel();
logger.info("---------addBardianCommendInfo() end------------");
return new ModelAndView(addBardianCommendInfoView, model);
}
/**
* Go to the page of Prepaid Card Type Uploading.
* **/
public ModelAndView goPrpdCardWitLstUploadPage(HttpServletRequest request,
HttpServletResponse response) throws Exception {
return new ModelAndView(goPrpdCardWitLstUploadPageView);
}
/**
* Upload file , analyse the data and insert into the database.
* **/
public ModelAndView upLoadPrpdCardWitLst(HttpServletRequest request,
HttpServletResponse response) throws Exception {
logger.debug("---------upLoadPrpdCardWitLst() start-----------");
//Get parameters.
String type=request.getParameter("type");
//
Map<String, Object> model=new HashMap<String, Object>();
String message="";
/**Upload the file on the Server.**/
String file = upLoadFile(request);
//
if("".equals(file)){
message="文件不存在或者为空";
model.put("message", message);
return new ModelAndView(goPrpdCardWitLstUploadPageView,model);
}
/**Parse the data and get data list**/
CurrentUser currentUser = new CurrentUser(request);
Map<String, Object> resultMap =parseFile(file,type,currentUser);
String returnCode=(String) resultMap.get("returnCode");
if(!"0000".equals(returnCode)){
message="数据格式不正确,请检查修改正确后再次上传";
model.put("message", message);
model.put("messages", resultMap.get("messages"));
return new ModelAndView(goPrpdCardWitLstUploadPageView,model);
}else{
// Get serviceRequest
ServiceRequest serviceRequest = new ServiceRequest();
// Set parameters to serviceRequest
serviceRequest
.setRequestedServiceID(ServiceRequestID.COMMON_ACTION);
serviceRequest.setParameter("optionName", "uploadPrepdCardWitLst");
serviceRequest.setParameter("dataSet", resultMap.get("dataSet"));
//
ServiceResponse serviceResponse = dispatchService(serviceRequest,
WebContextNames.PAFA_AC);
// Get result data
model = serviceResponse.getModel();
}
logger.debug("---------upLoadPrpdCardWitLst() start-----------");
return new ModelAndView(goPrpdCardWitLstUploadPageView,model);
}
/**
* Find Prepaid Card White List by page.
* **/
public ModelAndView findPrpdCardWitLstByPage(HttpServletRequest request,
HttpServletResponse response) throws Exception {
logger.debug("---------findPrpdCardWitLstByPage() start-----------");
// Get page parameters
String firstrow = request.getParameter("firstrow");
String lastrow = request.getParameter("lastrow");
String npage = request.getParameter("npage");
String cardAlias = request.getParameter("cardAlias");
String memberOrCardno = request.getParameter("memberOrCardno");
String endTime = request.getParameter("endTime");
//
PrepaidCardWhiteListDTO prepaidCardWhiteListDTO = new PrepaidCardWhiteListDTO();
// Set page parameters
if (StringUtils.isNotEmpty(firstrow)) {
prepaidCardWhiteListDTO.setFirstrow(Integer.parseInt(firstrow));
}
if (StringUtils.isNotEmpty(lastrow)) {
prepaidCardWhiteListDTO.setLastrow(Integer.parseInt(lastrow));
}
if (StringUtils.isNotEmpty(npage)) {
prepaidCardWhiteListDTO.setNpage(Integer.parseInt(npage));
}
if(StringUtils.isNotBlank(cardAlias)){
prepaidCardWhiteListDTO.setCardAlias(cardAlias.trim());
}
if(StringUtils.isNotBlank(memberOrCardno)){
prepaidCardWhiteListDTO.setMemberOrCardno(memberOrCardno.trim().toUpperCase());
}
if(StringUtils.isNotBlank(endTime)){
Date date;
try {
date = DateUtils.parseDate(endTime.trim(), new String[]{"yyyy-MM-dd HH:mm:ss"});
prepaidCardWhiteListDTO.setEndTime(date);
} catch (Exception e) {
prepaidCardWhiteListDTO.setEndTime(null);
}
}
// Get serviceRequest
ServiceRequest serviceRequest = new ServiceRequest();
// Set parameters to serviceRequest
serviceRequest
.setRequestedServiceID(ServiceRequestID.COMMON_ACTION);
serviceRequest.setParameter("optionName", "findPrpdCardWitLstByPage");
serviceRequest.setParameter("prepaidCardWhiteListDTO", prepaidCardWhiteListDTO);
//
ServiceResponse serviceResponse = dispatchService(serviceRequest,
WebContextNames.PAFA_AC);
// Get result data
Map<String, Object> model = serviceResponse.getModel();
model.put("prepaidCardWhiteListDTO", prepaidCardWhiteListDTO);
logger.debug("---------findPrpdCardWitLstByPage() end-----------");
return new ModelAndView(findPrpdCardWitLstView,model);
}
/**
* Upload file.
* @return "" the empty file.
* @return filePath uploadDir + fileName
* **/
private String upLoadFile(HttpServletRequest request) throws IOException {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultipartFile file = (MultipartFile) multipartRequest.getFile("file");
byte[] bytes = file.getBytes();
if (file == null || bytes.length < 1) {
return "";
}
String uploadDir = PropertiesUtil.PRODUCT_IMAGE_PATH;
File dirPath = new File(uploadDir);
if (!dirPath.exists()) {
dirPath.mkdirs();
}
String fileName = renameFile(file.getOriginalFilename());
String filePath = uploadDir + fileName;
File uploadedFile = new File(filePath);
FileCopyUtils.copy(bytes, uploadedFile);
return filePath;
}
private String renameFile(String originalFilename) {
Date date = new Date();
DateFormat format = new SimpleDateFormat("yyyyMMddHHmmssS");
String[] fileNames = originalFilename.split("\\.");
if (fileNames == null || fileNames.length < 2) {
return originalFilename;
}
int length = fileNames.length;
String ext = fileNames[length - 1];
return format.format(date) + "." + ext;
}
/**
* Parse the data of uploading.
* @param localPath -Local file path.
* @param type -Upload file type(01,02).
* @param currentUser -CurrentUser
* @return dataList -List<PrepaidCardWhiteListDTO>
* **/
private Map<String, Object> parseFile(String localPath,String type,CurrentUser currentUser) {
BufferedReader br = null;
FileInputStream fis =null;
//
Set<PrepaidCardWhiteListDTO> dataSet=null;
//
Map<String, Object> resultMap=new HashMap<String, Object>();
//
String[] dateFormats={"yyyy-MM-dd HH:mm:ss","yyyy/MM/dd HH:mm:ss","yyyy.MM.dd HH:mm:ss"};
//Error messages.
List<String> messages=new LinkedList<String>();
StringBuffer sb=new StringBuffer();
String returnCode="0000";
//Line number
int lineNo = 0;
try {
fis = new FileInputStream(localPath);
br = new BufferedReader(new InputStreamReader(fis));
dataSet = new HashSet<PrepaidCardWhiteListDTO>();
//
String line = "";
while ((line = br.readLine()) != null) {
++lineNo;
if ("".equals(StringUtils.trim(line))) {
continue;
}
//
String[] strs=line.split(",");
//
if(isEmptyData(strs)){
returnCode="0006";
sb.setLength(0);
sb.append("第");
sb.append(lineNo);
sb.append("行有空数据");
messages.add(sb.toString());
continue;
}
//
PrepaidCardWhiteListDTO dto=new PrepaidCardWhiteListDTO();
if(3==strs.length){
dto.setCardAlias(strs[0].trim().toLowerCase());
dto.setMemberOrCardno(strs[1].trim().toUpperCase());
//
try {
Date d= DateUtils.parseDate(strs[2].trim(), dateFormats);
dto.setEndTime(d);
} catch (Exception e) {
returnCode="0002";
sb.setLength(0);
sb.append("第");
sb.append(lineNo);
sb.append("行日期格式不正确");
messages.add(sb.toString());
}
// Set default charge ratio 500
dto.setChargeRatio(500);
dto.setType(type);
}else if(4==strs.length){
dto.setCardAlias(strs[0].trim().toLowerCase());
dto.setMemberOrCardno(strs[1].trim().toUpperCase());
//
try {
Date d= DateUtils.parseDate(strs[2].trim(), dateFormats);
dto.setEndTime(d);
} catch (Exception e) {
returnCode="0002";
sb.setLength(0);
sb.append("第");
sb.append(lineNo);
sb.append("行日期格式不正确");
messages.add(sb.toString());
}
if(StringUtils.isNumeric(strs[3].trim())){
dto.setChargeRatio(Integer.parseInt(strs[3].trim()));
}else{
returnCode="0005";
sb.setLength(0);
sb.append("第");
sb.append(lineNo);
sb.append("行充值比列不是数字");
messages.add(sb.toString());
}
dto.setType(type);
}else{
returnCode="0003";
sb.setLength(0);
sb.append("第");
sb.append(lineNo);
sb.append("行数据量不够或者超出");
messages.add(sb.toString());
}
dto.setCreatedBy(currentUser.getCurrentUser().getUID());
dto.setCreatedDate(new Date());
if(dataSet.contains(dto)){
returnCode="0007";
sb.setLength(0);
sb.append("第");
sb.append(lineNo);
sb.append("行前面两个数据有相同数据存在");
messages.add(sb.toString());
}else{
dataSet.add(dto);
}
}
} catch (Exception e) {
returnCode="0004";
sb.setLength(0);
sb.append("在解析第");
sb.append(lineNo);
sb.append("行数据时抛出异常");
messages.add(sb.toString());
logger.fatal("Parse file exception:"+e);
} finally {
//Process the result
resultMap.put("returnCode", returnCode);
resultMap.put("messages", messages);
resultMap.put("dataSet", dataSet);
try {
fis.close();
br.close();
} catch (IOException e) {
logger.fatal("close IO exception:"+e);
}
}
return resultMap;
}
public boolean isEmptyData(String[] str){
boolean flag=false;
for(int i=0;i<str.length;i++){
if(StringUtils.isBlank(str[i])){
flag=true;break;
}
}
return flag;
}