一份很完善的文件上传

来源:互联网 发布:忽略此网络后怎么恢复 编辑:程序博客网 时间:2024/06/14 07:48

/**
  * 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;
 }

0 0
原创粉丝点击