Quellcode durchsuchen

宁夏一网通接口

杨秀河 vor 3 Jahren
Ursprung
Commit
c72dd0f6a9

+ 17 - 0
WebRoot/WEB-INF/classes/struts.xml

@@ -127,6 +127,23 @@
 
 	</package>
 
+	<package name="nx" namespace="/" extends="json-default" strict-method-invocation="false">
+		<action name="city_country_inifo" class="com.runzhixing.action.NxAppCarAction" method="city_country_inifo"></action>
+		<action name="cert_install_Info" class="com.runzhixing.action.NxAppCarAction" method="cert_install_Info"></action>
+		<action name="crud_car_info" class="com.runzhixing.action.NxAppCarAction" method="crud_car_info"></action>
+		<action name="upload_img" class="com.runzhixing.action.NxAppCarAction" method="upload_img">
+			<interceptor-ref name="fileUpload">
+				<param name="allowedTypes">image/bmp,image/jpg,image/jpeg,image/png,image/gif,image/pjepg</param>
+				<param name="maximumSize">10485760</param>
+			</interceptor-ref>
+			<interceptor-ref name="defaultStack" />
+		</action>
+		<action name="remove_img" class="com.runzhixing.action.NxAppCarAction" method="remove_img"></action>
+		<action name="get_car_cylinder_cert_info" class="com.runzhixing.action.NxAppCarAction" method="get_car_cylinder_cert_info"></action>
+		<action name="crud_single_cylinder_info" class="com.runzhixing.action.NxAppCarAction" method="crud_single_cylinder_info"></action>
+		
+	</package>
+
 
 	<!-- <include file="struts-login.xml"/> -->
 	<package name="ajax" namespace="/" extends="json-default"

+ 528 - 0
src/com/runzhixing/action/NxAppCarAction.java

@@ -0,0 +1,528 @@
+package com.runzhixing.action;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.log4j.Logger;
+import org.apache.struts2.ServletActionContext;
+
+import com.opensymphony.xwork2.ActionSupport;
+import com.runzhixing.bean.Car1;
+import com.runzhixing.bean.CityPlace;
+import com.runzhixing.bean.CylinderImg;
+import com.runzhixing.bean.CylinderWx;
+import com.runzhixing.bean.HiddenCoutry;
+import com.runzhixing.bean.Provice_new;
+import com.runzhixing.dao.QueryDao;
+import com.runzhixing.dao.ThirdInterfaceDao;
+import com.runzhixing.filter.MyFilter;
+import com.runzhixing.packageProcedure.AlterPassWordProcedure;
+import com.runzhixing.packageProcedure.GetStationProcedure;
+import com.runzhixing.tool.JsonUtil;
+import com.runzhixing.tool.Result;
+import com.runzhixing.tool.ResultCode;
+import com.runzhixing.tool.Tool;
+import com.runzhixing.tool.Util;
+
+/**
+ * 宁夏对接 app业务办理功能
+ * @author it5
+ *
+ */
+public class NxAppCarAction extends ActionSupport{
+
+	private static final long serialVersionUID = 1L;
+	private static Logger logger = Logger.getLogger(NxAppCarAction.class); 
+	
+	private File imageCert;
+	private String imageCertFileName;
+	private List<File> imageItem = new ArrayList<File>();
+	private List<String> imageItemFileName = new ArrayList<String>();
+	
+
+	public String getImageCertFileName() {
+		return imageCertFileName;
+	}
+	public void setImageCertFileName(String imageCertFileName) {
+		this.imageCertFileName = imageCertFileName;
+	}
+	public File getImageCert() {
+		return imageCert;
+	}
+	public void setImageCert(File imageCert) {
+		this.imageCert = imageCert;
+	}
+	public List<File> getImageItem() {
+		return imageItem;
+	}
+	public void setImageItem(List<File> imageItem) {
+		this.imageItem = imageItem;
+	}
+	public List<String> getImageItemFileName() {
+		return imageItemFileName;
+	}
+	public void setImageItemFileName(List<String> imageItemFileName) {
+		this.imageItemFileName = imageItemFileName;
+	}
+	
+	
+	
+	/**
+	 * 获取市,县信息
+	 *
+	 */
+	public void city_country_inifo(){
+		HttpServletResponse res = ServletActionContext.getResponse();
+		HttpServletRequest req = ServletActionContext.getRequest();
+		Result result = null;
+		boolean logined = verifyLogin(req);
+		if(logined){
+			String province = req.getParameter("provinceNo");
+			if(Tool.isNullOrEmpty(province)){
+				result = Result.failure(ResultCode.PARAM_IS_BLANK);
+			}else{
+				List<Provice_new> cplist = new ArrayList<Provice_new>();
+				cplist = ThirdInterfaceDao.city_country_inifo(province);
+				result = Result.success(ResultCode.SUCCESS_GET, cplist);
+			}
+			
+		}else{
+			result = Result.failure(ResultCode.FAIL_NOT_LOGIN);
+		}
+		JsonUtil.outjson(result.toString(), res, logger, JsonUtil.df, "");
+	}
+	
+	/**
+	 * 获取安装/发证/制造单位信息
+	 */
+	public void cert_install_Info(){
+		HttpServletResponse res = ServletActionContext.getResponse();
+		HttpServletRequest req = ServletActionContext.getRequest();
+		Result result = null;
+		boolean logined = verifyLogin(req);
+		if(logined){
+			String unitType = req.getParameter("unitType");
+			String districtNo  = req.getParameter("districtNo");
+			if(Tool.isNullOrEmpty(districtNo)
+					||Tool.isNullOrEmpty(unitType)){
+				result = Result.failure(ResultCode.PARAM_IS_BLANK);
+			}else{
+				districtNo = districtNo.replaceAll("(00)*$", "");
+				List<HiddenCoutry> list = new ArrayList<HiddenCoutry>();
+				int type = Integer.parseInt(unitType);
+				if(type==0||type==3){
+					list = new GetStationProcedure().getStationInfo(100, 1, districtNo, type);
+					Collections.sort(list,new Comparator<HiddenCoutry>(){
+			            public int compare(HiddenCoutry arg0, HiddenCoutry arg1) {
+			                return arg0.getId().compareTo(arg1.getId());
+			            }
+			        });
+					if(type==0){//发证单位
+						for(HiddenCoutry hc:list){
+							hc.setContactTel("028-87777259");
+							hc.setAddress("四川省成都市高新西区西区达到1699号成都模具工业园");
+							hc.setWorkTime("9:00-17:00(法定节假日除外)");
+							hc.setLng("0.00");
+							hc.setLat("0.00");
+						}
+					}
+					result = Result.success(ResultCode.SUCCESS_GET,list);
+				}else if(type==10){
+					List<CityPlace> cplist = new ArrayList<CityPlace>();
+					cplist = new QueryDao().getCylinderProduct();
+					result = Result.success(ResultCode.SUCCESS_GET,cplist);
+				}else{
+					result = Result.failure(ResultCode.PARAM_IS_INVALID);
+				}
+				
+			}
+		}else{
+			result = Result.failure(ResultCode.FAIL_NOT_LOGIN);
+		}
+		JsonUtil.outjson(result.toString(), res, logger, JsonUtil.df, "");
+	}
+	
+	/**
+	 * 增删改车辆信息
+	 */
+	public void crud_car_info(){
+		HttpServletResponse res = ServletActionContext.getResponse();
+		HttpServletRequest req = ServletActionContext.getRequest();
+		Result result = null;
+		boolean logined = verifyLogin(req);
+		if(logined){
+			String operType = req.getParameter("operate");
+			String userGuid = req.getParameter("userGuid");
+			if(Tool.isNullOrEmpty(operType)||Tool.isNullOrEmpty(userGuid)){
+				result = Result.failure(ResultCode.PARAM_IS_BLANK);
+			}else{
+				int optype = Integer.parseInt(operType);
+				if(optype==0||optype==1||optype==2){
+					Car1 car = new AlterPassWordProcedure().crud_car_info(req);
+					if(car.getResult()==0&&Tool.isNullOrEmpty(car.getRetinfo())){
+						if(optype==0){//新增
+							result = Result.success(ResultCode.SUCCESS_CREATE,car);
+						}else if(optype==1){//修改
+							
+							String carGuid = req.getParameter("carGuid");
+							List<CylinderWx> cylinderList=new ArrayList<CylinderWx>();
+							cylinderList = new AlterPassWordProcedure().cylinder_info_by_car1(1,10,carGuid);
+							car.setCyList(cylinderList);
+							result = Result.success(ResultCode.SUCCESS_UPDATE,car);
+						}else{//删除
+							result = Result.success(ResultCode.SUCCESS_DELETE,car);
+							String cylinderGuid = req.getParameter("cylinderGuid");
+							if(!Tool.isNullOrEmpty(cylinderGuid)){
+								List<CylinderWx> cylinderWxList = new ArrayList<CylinderWx>();
+								String[] cyli = cylinderGuid.split(",");
+								if(cyli.length>0){
+									for(String cy:cyli){
+										CylinderWx cw = new CylinderWx();
+										cw.setCylinderGuid(cy);
+										cylinderWxList.add(cw);
+									}
+								}
+								if(cylinderWxList.size()>0){
+									new AlterPassWordProcedure().crud_cylinder_info(req,cylinderWxList);
+									ThirdInterfaceDao.deleteCertInfo(cylinderWxList);
+								}
+								
+							}
+						}
+						
+					}else{
+						Map<String,Object> map=new HashMap<String, Object>();
+						map.put("code", car.getResult());
+						map.put("message", car.getRetinfo());
+						map.put("data", car);
+						JsonUtil.outjson(map, res, null, JsonUtil.df, "");
+						return;
+					}
+				}else{
+					result = Result.failure(ResultCode.FAIL_UNKNOW);
+				}
+				
+			}
+			
+		}else{
+			result = Result.failure(ResultCode.FAIL_NOT_LOGIN);
+		}
+		JsonUtil.outjson(result.toString(), res, logger, JsonUtil.df, "");
+	}
+	
+	
+	/**
+	 * 上传资质/证书图片
+	 */
+	public void upload_img(){
+		HttpServletResponse res = ServletActionContext.getResponse();
+		HttpServletRequest req = ServletActionContext.getRequest();
+		String imageType = req.getParameter("imageType");
+		String certPage = req.getParameter("certPage");
+		String cylinderGuid = req.getParameter("cylinderGuid");
+		String userGuid = req.getParameter("userGuid");
+		Result result = null;
+		boolean logined = verifyLogin(req);
+		if(logined){
+			if(Tool.isNullOrEmpty(imageType)||Tool.isNullOrEmpty(certPage)||Tool.isNullOrEmpty(userGuid)
+					||
+				Tool.isNullOrEmpty(imageCertFileName)||Tool.isNullOrEmpty(cylinderGuid)
+				||
+				imageCert==null||imageCert.length()<=0){
+					result = Result.failure(ResultCode.PARAM_IS_BLANK);
+				}else{
+					int re = 0;
+					String dir = MyFilter.saveImgPath;
+					String yearMonth = Util.yearMonthdf.format(new java.util.Date());
+					dir +="//"+yearMonth;
+					File file = new File(dir);
+					if (!file.exists()) {
+			            file.mkdirs();
+			        }
+					
+					String imageName = "";
+					int lastIndex = imageCertFileName.lastIndexOf(".");
+					imageName=imageCertFileName.substring(lastIndex,imageCertFileName.length());
+					imageName=cylinderGuid+"_"+imageType+"_"+certPage+imageName;
+					CylinderImg cimg = new CylinderImg();
+					try {
+						re=1;
+						cimg.setCYLINDER_GUID(cylinderGuid);
+						cimg.setIMGTYPE(imageType);
+						cimg.setIMGINDEX(certPage);
+						cimg.setIMGDIR(yearMonth);
+						cimg.setFILENAME(imageName);
+						cimg.setFROMTYPE("2");
+						cimg.setEDITOPERTIME(Util.df.format(new java.util.Date()));
+						cimg.setUserGuid(userGuid);
+						re = new QueryDao().uploadImgInfo(cimg);
+						if(re!=0){
+							copyBufFile(imageCert, new File(dir+"//"+imageName));
+						}
+					} catch (Exception e) {
+						e.printStackTrace();
+						re=0;
+					}
+					if(re==0){
+						result = Result.success(ResultCode.FAIL_UPLOAD,cimg);
+					}else{
+						result = Result.success(ResultCode.SUCCESS_UPLOAD,cimg);
+					}
+				}
+		}else{
+			result = Result.failure(ResultCode.FAIL_NOT_LOGIN);
+		}
+		
+		JsonUtil.outjson(result.toString(), res, logger, JsonUtil.df, "");
+		
+	}
+	
+	/**
+	 * 移除图片
+	 */
+	
+	public void  remove_img(){
+		HttpServletResponse res = ServletActionContext.getResponse();
+		HttpServletRequest req = ServletActionContext.getRequest();
+		String fileName = req.getParameter("fileName");
+		String dir = req.getParameter("dir");
+		String userGuid = req.getParameter("userGuid");
+		boolean logined = verifyLogin(req);
+		Result result = null;
+		if (!logined) {
+			result = Result.failure(ResultCode.FAIL_NOT_LOGIN);
+			JsonUtil.outjson(result.toString(), res, logger, JsonUtil.df, "");
+			return;
+		}
+		if(Tool.isNullOrEmpty(fileName)||Tool.isNullOrEmpty(dir)||Tool.isNullOrEmpty(userGuid)){
+			result = Result.failure(ResultCode.PARAM_IS_BLANK);
+		}else{
+			CylinderImg img = new CylinderImg();
+			img.setFILENAME(fileName);
+			img.setUserGuid(userGuid);
+			img.setIMGDIR(dir);
+//			int ret = new ThirdInterfaceDao().remove_img(img);
+			int ret = 1;
+			if(ret==0){
+				result = Result.failure(ResultCode.FAIL_DELETE,img);
+			}else if(ret==1){
+				String dir1 = MyFilter.saveImgPath;
+				dir1 +="//"+dir+"//"+fileName;
+				File file = new File(dir1);
+				file.delete();
+				result = Result.success(ResultCode.SUCCESS_DELETE,img);
+			}else{
+				result = Result.failure(ResultCode.FAIL_EXCEPTION,img);
+			}
+		}
+		JsonUtil.outjson(result.toString(), res, logger, JsonUtil.df, "");
+	}
+	
+	/**
+	 * 根据微信唯一标志号获取车辆气瓶信息
+	 * @param source
+	 * @param target
+	 * @throws Exception
+	 */
+	public void get_car_cylinder_cert_info(){
+		HttpServletResponse res = ServletActionContext.getResponse();
+		HttpServletRequest req = ServletActionContext.getRequest();
+		Result result = null;
+		boolean logined = verifyLogin(req);
+		if(logined){
+			String userGuid = req.getParameter("userGuid");
+			String pageNumber = req.getParameter("pageNumber");
+			String pageSize = req.getParameter("pageSize");
+			if(Tool.isNullOrEmpty(pageNumber)||Tool.isNullOrEmpty(pageSize)||Tool.isNullOrEmpty(userGuid)){
+				result = Result.failure(ResultCode.PARAM_IS_BLANK);
+			}else{
+				List<Car1> carList = new ArrayList<Car1>();
+				carList = new AlterPassWordProcedure().car_info_by_user(req);
+				if(carList.size()>0){
+					for(Car1 car:carList){
+						String carGuid = car.getCarGuid();
+						if(Tool.isNullOrEmpty(carGuid)){//获取的carguid为空
+							result = Result.failure(ResultCode.FAIL_CAR_DATA_EXCEPTION,carList);
+						}else{
+							List<CylinderWx> cyList = new ArrayList<CylinderWx>();
+							cyList = new AlterPassWordProcedure().cylinder_info_by_car1(1,10,carGuid);
+							if(cyList.size()>0){
+								for(CylinderWx cy:cyList){
+									if(Tool.isNullOrEmpty(cy.getCylinderGuid())){
+										result = Result.failure(ResultCode.FAIL_CYLINDER_DATA_EXCEPTION,carList);
+										break;
+									}else{
+										List<CylinderImg> cyImgList = ThirdInterfaceDao.queryCylinderImg(cy.getCylinderGuid());
+										cy.setImgList(cyImgList);
+										if(cyImgList==null||cyImgList.size()<3){
+											cy.setCertStatus(0);
+											cy.setCertStatusStr("有证书未上传");
+										}else{
+											boolean cert0 = false;
+											boolean cert1 = false;
+											boolean cert2 = false;
+											for(CylinderImg cyImg:cyImgList){
+												if(cyImg.getIMGTYPE().equals("0")){
+													cert0 = true;
+												}else if(cyImg.getIMGTYPE().equals("1")){
+													cert1 = true;
+												}else if(cyImg.getIMGTYPE().equals("2")){
+													cert2 = true;
+												}
+											}
+											if(cert0&&cert1&&cert2){
+												cy.setCertStatus(1);
+												cy.setCertStatusStr("所有类型的证书都已上传");
+											}else{
+												cy.setCertStatus(0);
+												cy.setCertStatusStr("有证书未上传");
+											}
+										}
+									}
+								}
+							}
+							
+							car.setCyList(cyList);
+						}
+					}
+					result = Result.success(ResultCode.SUCCESS_GET, carList);
+					
+				}else{//获取的车辆信息为空
+					result = Result.failure(ResultCode.FAIL_RESULT_NULL);
+				}
+			}
+		}else{
+			result = Result.failure(ResultCode.FAIL_NOT_LOGIN);
+		}
+		JsonUtil.outjson(result.toString(), res, logger, JsonUtil.df, "");
+	}
+	
+	/**
+	 * (单个气瓶)增_删_改气瓶信息
+	 */
+	public void crud_single_cylinder_info(){
+		HttpServletResponse res = ServletActionContext.getResponse();
+		HttpServletRequest req = ServletActionContext.getRequest();
+		String operate = req.getParameter("operate");
+		Result result = null;
+		if(Tool.isNullOrEmpty(operate)){
+			result = Result.failure(ResultCode.PARAM_IS_BLANK);
+		}else{
+			if(operate.equals("0")||operate.equals("1")||operate.equals("2")){
+			 	String carGuid = req.getParameter("carGuid");//车辆guid
+			    String carNo = req.getParameter("carNo");//车牌号
+			    String platTy = req.getParameter("plateType");
+			    int plateType = Tool.isNullOrEmpty(platTy)?-1:Integer.parseInt(platTy);//车辆类型
+			    String cylinderGuid = req.getParameter("cylinderGuid");//气瓶guid
+			    String cylinderNo = req.getParameter("cylinderNo");//气瓶编号
+			    String cylinderTy = req.getParameter("cylinderType");
+			    int cylinderType = Tool.isNullOrEmpty(cylinderTy)?-1:Integer.parseInt(cylinderTy);//气瓶类型
+			    String productNo = req.getParameter("productNo");//制造单位
+			    String productLicense = req.getParameter("productLicense");//生产许可
+			    String productDate = req.getParameter("productDate");//制造日期 yyyy-MM-dd格式,以下日期雷同
+			    String installStationNo = req.getParameter("installStationNo");//安装单位
+			    String installLicense = req.getParameter("installLicense");//安装许可
+			    String installCert = req.getParameter("installCert");//安装合格证
+			    String installTy = req.getParameter("installType");
+			    int installType = Tool.isNullOrEmpty(installTy)?0:Integer.parseInt(installTy);//安装类型
+			    String installLoc = req.getParameter("installLoc");//安装位置,后备箱/底部/顶部/货厢/中部/未知
+			    String installWorker = req.getParameter("installWorker");//安装人员
+			    String thirdPartyInstall = req.getParameter("thirdPartyInstall");//第三方安装
+			    String installDate = req.getParameter("installDate");//改装出厂时间
+			    String startUseDate = req.getParameter("startUseDate");//初次投用时间
+			    String nextCheckDate = req.getParameter("nextCheckDate");//下次检验时间
+			    String yeatL = req.getParameter("yearLimit");
+			    int yearLimit = Tool.isNullOrEmpty(yeatL)?0:Integer.parseInt(yeatL);//年限 0为不限制
+			    String timesAv = req.getParameter("timesAvailable");
+			    int timesAvailable = Tool.isNullOrEmpty(timesAv)?0:Integer.parseInt(timesAv);//充装次数 0为不限制
+			    String productType = req.getParameter("productType");//产品型号
+			    String vol = req.getParameter("vol");//容积
+			    String weight = req.getParameter("weight");//重量
+			    String thickness = req.getParameter("thickness");//壁厚
+			    String press = req.getParameter("press");//公称压力
+			    String material = req.getParameter("material");//材质
+			    String fibre = req.getParameter("fibre");//纤维
+			    String resin = req.getParameter("resin");//树脂
+			    String equitpmentNo = req.getParameter("equitpmentNo");//设备代码
+			    String productMonitor = req.getParameter("productMonitor");//制造监管检验机构
+			    String typeTest = req.getParameter("typeTest");//型式试验机构
+			    String valveProduct = req.getParameter("valveProduct");//阀门厂家
+			    String valveType = req.getParameter("valveType");//阀门型号
+			    String valveBatch = req.getParameter("valveBatch");//阀门批次
+			    String designUnit = req.getParameter("designUnit");//设计单位
+			    CylinderWx cw = new CylinderWx(carGuid, carNo, plateType, cylinderGuid, cylinderNo, cylinderType, productNo, productLicense, productDate, installStationNo, installLicense, installCert, installType, installLoc, installWorker, thirdPartyInstall, installDate, startUseDate, nextCheckDate, yearLimit, timesAvailable, productType, vol, weight, thickness, press, material, fibre, resin, equitpmentNo, productMonitor, typeTest, valveProduct, valveType, valveBatch, designUnit);
+			    CylinderWx resultCw = new AlterPassWordProcedure().crud_single_cylinder_info(req,cw);
+			    if(cw.getResult()==0){
+			    	if(operate.equals("0")){
+			    		result = Result.success(ResultCode.SUCCESS_CREATE, resultCw);
+			    	}else if(operate.equals("1")){
+			    		result = Result.success(ResultCode.SUCCESS_UPDATE, resultCw);
+			    	}else{
+			    		
+			    		if(!Tool.isNullOrEmpty(cylinderGuid)){
+							List<CylinderWx> cw1List = new ArrayList<CylinderWx>();
+							CylinderWx cw1 = new CylinderWx();
+							cw1.setCylinderGuid(cylinderGuid);
+							cw1List.add(cw1);
+							ThirdInterfaceDao.deleteCertInfo(cw1List);
+							
+						}
+			    		result = Result.success(ResultCode.SUCCESS_DELETE, resultCw);
+			    	}
+			    	
+			    }else{
+			    	Map<String,Object> map=new HashMap<String, Object>();
+					map.put("code", 999);
+					map.put("message", resultCw.getRetinfo());
+					map.put("data", resultCw);
+					JsonUtil.outjson(map, res, null, JsonUtil.df, "");
+					return;
+			    }
+			}else{
+				result = Result.failure(ResultCode.PARAM_IS_INVALID);
+			}
+		}
+		JsonUtil.outjson(result.toString(), res, null, JsonUtil.df, "");
+	}
+	
+	
+	/**
+	 * 接口验证
+	 * @param req 
+	 */
+	private boolean verifyLogin(HttpServletRequest req) {
+		String station = req.getHeader("station");
+		String signature = req.getHeader("signature");
+		String signature2 = Util.getSignature(MyFilter.nxUser, MyFilter.nxPwd, station, MyFilter.secretKey);
+		if (signature2.equals(signature)) {
+			return true;
+		}
+		return false;
+	}
+	
+	
+	
+	private void copyBufFile(File source,File target) throws Exception {
+	    BufferedInputStream in= new BufferedInputStream(new FileInputStream(source));
+	    BufferedOutputStream out=new  BufferedOutputStream(new FileOutputStream(target));
+	    byte[] bbuf=new byte[1024];
+	    int len=0;
+	    while((len = in.read(bbuf))!=-1) {
+	        out.write(bbuf, 0, len);
+	    }
+	    in.close();
+	    out.close();
+	}
+}

+ 5 - 2
src/com/runzhixing/config/config.properties

@@ -4,7 +4,7 @@ url=jdbc:oracle:thin:@//192.168.1.8:1521/cng
 username=cngdba
 password=temp1234
 #password=nxBot*5087
-whitelist=localhost;127.0.0.1;218.95.174.32;nx.cngrfid.com;111.51.123.243;v488052s50.vicp.fun;
+whitelist=localhost;127.0.0.1;218.95.174.32;nx.cngrfid.com;111.51.123.243;192.168.1.110;
 company=\u56DB\u5DDD\u6DA6\u667A\u5174\u79D1\u6280\u6709\u9650\u516C\u53F8
 unified_login_baseUrl=http://111.50.160.216:8083/
 unified_login_redirectUrl=https://nx.cngrfid.com/cng3/nxlogin.do
@@ -23,4 +23,7 @@ integration_login_redirectUrl=http://172.29.3.5:6009/cng2/lclogin.do
 integration_login_clientId=qpzlaqzs
 integration_login_clientSecret=5ebae3ab1ab44af2a7b02dd5b8a2da80
 
-statistics_path=D://statistics
+statistics_path=D://statistics
+secret_key=1213123
+nx_user=宁夏
+nx_pwd=nx123456

+ 12 - 0
src/com/runzhixing/filter/MyFilter.java

@@ -52,6 +52,11 @@ public class MyFilter implements Filter {
 	public static String man_prefix="";
 	
 	public static String info_publish="0";
+	
+	public static String secretKey = "";
+	public static String nxUser = "";
+	public static String nxPwd = "";
+	
 	public void destroy() {
 
 	}
@@ -111,6 +116,10 @@ public class MyFilter implements Filter {
 				chain.doFilter(new XssHttpServletRequestWrapperNew((HttpServletRequest) request), res);
 				return;
 			}
+			if(reqUri1.contains("nx/")){
+				chain.doFilter(new XssHttpServletRequestWrapperNew((HttpServletRequest) request), res);
+				return;
+			}
 			if(reqUri1.contains("CNG_LNG_REPORT.pdf")){
 				res.setContentType("application/pdf;charset=UTF-8");//编码
 				chain.doFilter(new XssHttpServletRequestWrapperNew((HttpServletRequest) request), res);
@@ -293,6 +302,9 @@ public class MyFilter implements Filter {
 			String paramID="1";
 			saveImgPath = new QueryDao().getImgPath(paramID);
 			statisticsPath = properties.getProperty("statistics_path");
+			secretKey = properties.getProperty("secret_key");
+			nxUser = properties.getProperty("nx_user");
+			nxPwd = properties.getProperty("nx_pwd");
 //			saveImgPath ="C:\\tomcat\\Tomcat 8.5\\webapps\\cngningxia2";
 			baseUrl=properties.getProperty("unified_login_baseUrl");
 			redirectUri=properties.getProperty("unified_login_redirectUrl");

+ 480 - 454
src/com/runzhixing/tool/Util.java

@@ -1,454 +1,480 @@
-package com.runzhixing.tool;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.sql.Date;
-import java.sql.Timestamp;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Comparator;
-
-import com.runzhixing.bean.CityPlace;
-
-public class Util  implements Comparator{
-	public static String s1="";
-	public static String s2="";
-	public static String s3="";
-	public static String s4="";
-	public static final String DEFAULT_FORMAT1 = "yyyy-MM-dd HH:mm:ss";
-	public static  SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-	public static  SimpleDateFormat yearMonthdf = new SimpleDateFormat("yyyyMM");
-	public static void main(String[] args) {
-		//System.out.println(getStringMD5("VIMG1;https://nx.cngrfid.com/cng/upimg;0F443ACA5582441EA846C0A4C96E9C4E;0;1;202007;1347955693Rzx64fdsi#25"));
-//		System.out.println(new java.util.Date().getTime()-Long.parseLong("1347955693"));
-//		System.out.println(new Timestamp(System.currentTimeMillis()));
-		System.out.println(timeStamp2Date("1347955693",null));
-		System.out.println(date2TimeStamp("2012-09-18 16:13:13",DEFAULT_FORMAT1));
-	}
-	
-	public static String timeStamp2Date(String seconds,String format) {  
-        if(seconds == null || seconds.isEmpty() || seconds.equals("null")){  
-            return "";  
-        }  
-        if(format == null || format.isEmpty()){
-            format = "yyyy-MM-dd HH:mm:ss";
-        }   
-        SimpleDateFormat sdf = new SimpleDateFormat(format);  
-        return sdf.format(new Date(Long.valueOf(seconds+"000")));  
-    }
-	
-	/** 
-     * 日期格式字符串转换成时间戳 
-     * @param date 字符串日期 
-     * @param format 如:yyyy-MM-dd HH:mm:ss 
-     * @return 
-     */  
-    public static String date2TimeStamp(String date_str,String format){  
-        try {  
-            SimpleDateFormat sdf = new SimpleDateFormat(format);  
-            return String.valueOf(sdf.parse(date_str).getTime()/1000);  
-        } catch (Exception e) {  
-            e.printStackTrace();  
-        }  
-        return "";  
-    }
-	/**
-	 * 获取字符串的MD5
-	 * @param input
-	 * @return
-	 */
-	public static String getStringMD5(String input){
-		try {
-			// get MD5 digest
-			MessageDigest mDigest = MessageDigest.getInstance("MD5");
-			// The input String to Byte Array
-			byte[] inputArr = input.getBytes();
-			// Updates the digest using the specified byte.
-			mDigest.update(inputArr);
-			// Completes the hash computation by performing final operations such as padding.
-			// The digest is reset after this call is made.
-			byte[] resultArr = mDigest.digest();
-			// 
-			return byteArrToHex(resultArr);
-		} catch (NoSuchAlgorithmException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		return null;
-	}
-	
-	/**
-	 * 将字节数组转换为16进制字符串
-	 * @param resultArr
-	 * @return 16进制字符串
-	 */
-	private static String byteArrToHex(byte[] byteArr) {
-		// Initialize the character array, used to store each hexadecimal string
-		char[] hexDigits = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
-		// Initialize a char Array, used to form the result string
-		char[] resultCharArr = new char[byteArr.length*2];
-		// Traverse the byte array, converted into characters in a character array
-		int index = 0;
-		for (byte b : byteArr) {
-			resultCharArr[index++] = hexDigits[b>>> 4 & 0xf];  
-			resultCharArr[index++] = hexDigits[b & 0xf];
-		}
-		return new String(resultCharArr);
-	}
-	
-	
-	 /**
-     * 将一个int数字转换为二进制的字符串形式。
-     * @param num 需要转换的int类型数据
-     * @param digits 要转换的二进制位数,位数不足则在前面补0
-     * @return 二进制的字符串形式
-     */
-    public static String toBinary(int num, int digits) {
-        int value = 1 << digits | num;
-        String bs = Integer.toBinaryString(value); //0x20 | 这个是为了保证这个string长度是6位数
-        return  bs.substring(1);
-    }
-//	public static void main(String[] args) {
-//		System.out.println(toBinary(31,8));
-//	}
-	
-	public static boolean isEmpty(String s){
-		if(s==null||s.trim().equals("")){
-			return true;
-		}else{
-			return false;
-		}
-	}
-	public static String reLenStr(String s){
-		if(isEmpty(s)){
-			return "00000";
-		}
-		int i = Integer.parseInt(s);
-		if(i<99999){
-			i+=1;
-		}
-		String s1= i+"";
-		if(s1.length()<5){
-			int j=5-s1.length();
-			for(int a=0;a<j;a++){
-				s1="0"+s1;
-			}
-		}
-		return s1;
-		
-	}
-	public static String reLenStr6(String s){
-		if(isEmpty(s)){
-			return "000001";
-		}
-		int i = Integer.parseInt(s);
-		if(i<999999){
-			i+=1;
-		}
-		String s1= i+"";
-		if(s1.length()<6){
-			int j=6-s1.length();
-			for(int a=0;a<j;a++){
-				s1="0"+s1;
-			}
-		}
-		return s1;
-		
-	}
-	public static java.util.Date str2Date(String str, String format){
-		  if (null != str && !"".equals(str)) {
-		    SimpleDateFormat sdf = new SimpleDateFormat(format);
-		    java.util.Date date = null;
-		    try {
-		     date = sdf.parse(str);
-		     return date;
-		   } catch (ParseException e) {
-		     e.printStackTrace();
-		  }
-		}
-		return null;
-		}
-	public static Timestamp str2Timestamp(String str) {
-		  if(null != str && !"".equals(str)){
-		    java.util.Date date = str2Date(str, DEFAULT_FORMAT1);
-		    return new Timestamp(date.getTime());
-		  }
-		  return null;
-		}
-	 public static int zhuanhuan(String s){
-	    	int result = -1;
-	    	if(s.equals("其他")){
-	    		result=0;
-	    	}else if(s.equals("出租")){
-	    		result=1;
-	    	}else if(s.equals("公交")){
-	    		result=2;
-	    	}else if(s.equals("私用")){
-	    		result=3;
-	    	}else if(s.equals("货运")){
-	    		result=4;
-	    	}else if(s.equals("客运")){
-	    		result=5;
-	    	}else if(s.equals("营转非")){
-	    		result=6;
-	    	}else if(s.equals("外地车")){
-	    		result=9;
-	    	}else{
-	    		result=-1;
-	    	}
-	    	return result;
-	    }
-	 
-	 public static String zhuanhuan1(int s){
-	    	String result = "";
-	    	if(s==0){
-	    		result="其他";
-	    	}else if(s==1){
-	    		result="出租";
-	    	}else if(s==2){
-	    		result="公交";
-	    	}else if(s==3){
-	    		result="私用";
-	    	}else if(s==4){
-	    		result="货运";
-	    	}else if(s==5){
-	    		result="客运";
-	    	}else if(s==6){
-	    		result="营转非";
-	    	}else if(s==9){
-	    		result="外地车";
-	    	}else{
-	    		result="未知";
-	    	}
-	    	return result;
-	    }
-	public static String jiequString(String s,int l){
-		String result="";
-		if(s!=null&&s.length()>=l&&!s.equals("")){
-			result = s.substring(0, l);
-		}
-		return result;
-	}
-	
-	public static int calculateFlag(Date name1, Date name2) {
-	  	Object[] temp = {name1,name2};
-	  	
-	  	int count = 0;
-	  	for (int i = 0; i < temp.length; i++) {
-	  		if (temp[i] instanceof String && ((String)temp[i]).length()==0) temp[i]=null; 
-	  		if (temp[i] != null) count += (i + 1);
-	  	}
-	  	return count;
-	  }
-
-	public static Date dateChange(String date1) {
-		if(Tool.isNullOrEmpty(date1)){
-			return null;
-		}
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-		java.util.Date cDate;
-		Date dd = null;
-		try {
-			cDate = sdf.parse(date1);
-			dd = new Date(cDate.getTime());
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		return dd;
-
-	}
-	public static Date dateChange1(String date1) {
-		if(Tool.isNullOrEmpty(date1)){
-			return null;
-		}
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
-		java.util.Date cDate;
-		Date dd = null;
-		try {
-			cDate = sdf.parse(date1);
-			dd = new Date(cDate.getTime());
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		return dd;
-
-	}
-	public static Date dateChange2(String date1) {
-		if(Tool.isNullOrEmpty(date1)){
-			return null;
-		}
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-		java.util.Date cDate;
-		Date dd = null;
-		try {
-			cDate = sdf.parse(date1);
-			dd = new Date(cDate.getTime());
-
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		try {
-			dd = (Date) new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date1);
-		} catch (ParseException e) {
-			e.printStackTrace();
-		}
-		return dd;
-
-	}
-	public static Timestamp dateChange3(String date1) {
-		if(Tool.isNullOrEmpty(date1)){
-			return null;
-		}
-		Timestamp sqlDate = null;
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-		java.util.Date utilDate;
-		Date dd = null;
-		try {
-			utilDate = sdf.parse(date1);
-			sqlDate = new Timestamp(utilDate.getTime());
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		return sqlDate;
-
-	}
-	public static int getCommonStrLength(String str1, String str2) {
-        str1 = str1.toLowerCase();  
-       str2 = str2.toLowerCase();  
-       int len1 = str1.length();  
-       int len2 = str2.length();  
-       String min = null;  
-       String max = null;  
-       String target = null;
-       min = len1 <= len2 ? str1 : str2;
-       max = len1 >  len2 ? str1 : str2;
-       //最外层:min子串的长度,从最大长度开始
-       for (int i = min.length(); i >= 1; i--) {
-           //遍历长度为i的min子串,从0开始
-           for (int j = 0; j <= min.length() - i; j++) {  
-               target = min.substring(j, j + i);  
-               //遍历长度为i的max子串,判断是否与target子串相同,从0开始
-               for (int k = 0; k <= max.length() - i; k++) {  
-                   if (max.substring(k,k + i).equals(target)) {  
-                       return i;  
-                   }
-               }
-           }
-       }  
-       return 0;  
-}
-	public static String removeNull(String s){
-		if(s==null) return "";
-		if(s==null||s.equals("null")){
-			s="";
-		}
-		return s;
-	}
-	
-	public static boolean isNumeric(String str){
-		  for (int i = 0; i < str.length(); i++){
-		   if (!Character.isDigit(str.charAt(i))){
-		    return false;
-		   }
-		  }
-		  return true;
-		 }
-	
-	
-	 
-	public int compare(Object arg0, Object arg1) {
-		 CityPlace user0=(CityPlace)arg0;
-		 CityPlace user1=(CityPlace)arg1;
-		  int flag=user0.getId().compareTo(user1.getId());
-		  if(flag==0){
-		   return user0.getName().compareTo(user1.getName());
-		  }else{
-		   return flag;
-		  }
-	}
-	
-	/**
-     * 
-     * @param date1 <String>
-     * @param date2 <String>
-     * @return int
-     * @throws ParseException
-     */
-    public static int getMonthSpace(String date1, String date2)
-            throws ParseException {
-
-        int result = 0;
-
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-
-        Calendar c1 = Calendar.getInstance();
-        Calendar c2 = Calendar.getInstance();
-
-        c1.setTime(sdf.parse(date1));
-        c2.setTime(sdf.parse(date2));
-
-        result = c2.get(Calendar.MONTH) - c1.get(Calendar.MONTH);
-//        System.out.println("result="+result);
-        return result == 0 ? 1 : Math.abs(result);
-
-    }
-    
-    public long daysOfTwo_2(String day1,String day2) throws ParseException {
-        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
-        //跨年不会出现问题
-        //如果时间为:2016-03-18 11:59:59 和 2016-03-19 00:00:01的话差值为 0
-        java.util.Date  fDate=sdf.parse(day1);
-        java.util.Date oDate=sdf.parse(day2);
-        long days=(oDate.getTime()-fDate.getTime())/(1000*3600*24);
-        return days;
-    }  
-//    public static void main(String[] args) {
-////    	 System.out.println(getServerVersion());
-//	}
-    public static String getServerVersion() {
-        String urlStr = "http://em.hizima.com/serverurl.txt";
-        //long a = System.currentTimeMillis();
-        try {
-			/*
-			 * 通过URL取得HttpURLConnection 要网络连接成功,需在AndroidMainfest.xml中进行权限配置
-			 * <uses-permission android:name="android.permission.INTERNET" />
-			 */
-            URL url = new URL(urlStr);
-            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
-            conn.setConnectTimeout(60 * 1000);
-            conn.setReadTimeout(60 * 1000);
-            // 取得inputStream,并进行读取
-            InputStream input = conn.getInputStream();
-//            BufferedReader in = new BufferedReader(new InputStreamReader(input));
-            BufferedReader in = new BufferedReader(new InputStreamReader(input,"GBK"));
-            String line = null;
-            StringBuffer sb = new StringBuffer();
-            while ((line = in.readLine()) != null) {
-                sb.append(line);
-
-            }
-
-           
-            return sb.toString();
-//            newVersion = Integer.parseInt(sb.toString());
-        } catch (MalformedURLException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-
-        return "";
-    }
-
-}
-
+package com.runzhixing.tool;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.sql.Date;
+import java.sql.Timestamp;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Comparator;
+
+import com.runzhixing.bean.CityPlace;
+
+public class Util  implements Comparator{
+	public static String s1="";
+	public static String s2="";
+	public static String s3="";
+	public static String s4="";
+	public static final String DEFAULT_FORMAT1 = "yyyy-MM-dd HH:mm:ss";
+	public static  SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+	public static  SimpleDateFormat yearMonthdf = new SimpleDateFormat("yyyyMM");
+	public static void main(String[] args) {
+		//System.out.println(getStringMD5("VIMG1;https://nx.cngrfid.com/cng/upimg;0F443ACA5582441EA846C0A4C96E9C4E;0;1;202007;1347955693Rzx64fdsi#25"));
+//		System.out.println(new java.util.Date().getTime()-Long.parseLong("1347955693"));
+//		System.out.println(new Timestamp(System.currentTimeMillis()));
+		System.out.println(timeStamp2Date("1347955693",null));
+		System.out.println(date2TimeStamp("2012-09-18 16:13:13",DEFAULT_FORMAT1));
+	}
+	
+	public static String timeStamp2Date(String seconds,String format) {  
+        if(seconds == null || seconds.isEmpty() || seconds.equals("null")){  
+            return "";  
+        }  
+        if(format == null || format.isEmpty()){
+            format = "yyyy-MM-dd HH:mm:ss";
+        }   
+        SimpleDateFormat sdf = new SimpleDateFormat(format);  
+        return sdf.format(new Date(Long.valueOf(seconds+"000")));  
+    }
+	
+	/** 
+     * 日期格式字符串转换成时间戳 
+     * @param date 字符串日期 
+     * @param format 如:yyyy-MM-dd HH:mm:ss 
+     * @return 
+     */  
+    public static String date2TimeStamp(String date_str,String format){  
+        try {  
+            SimpleDateFormat sdf = new SimpleDateFormat(format);  
+            return String.valueOf(sdf.parse(date_str).getTime()/1000);  
+        } catch (Exception e) {  
+            e.printStackTrace();  
+        }  
+        return "";  
+    }
+	/**
+	 * 获取字符串的MD5
+	 * @param input
+	 * @return
+	 */
+	public static String getStringMD5(String input){
+		try {
+			// get MD5 digest
+			MessageDigest mDigest = MessageDigest.getInstance("MD5");
+			// The input String to Byte Array
+			byte[] inputArr = input.getBytes();
+			// Updates the digest using the specified byte.
+			mDigest.update(inputArr);
+			// Completes the hash computation by performing final operations such as padding.
+			// The digest is reset after this call is made.
+			byte[] resultArr = mDigest.digest();
+			// 
+			return byteArrToHex(resultArr);
+		} catch (NoSuchAlgorithmException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		return null;
+	}
+	
+	/**
+	 * 将字节数组转换为16进制字符串
+	 * @param resultArr
+	 * @return 16进制字符串
+	 */
+	private static String byteArrToHex(byte[] byteArr) {
+		// Initialize the character array, used to store each hexadecimal string
+		char[] hexDigits = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
+		// Initialize a char Array, used to form the result string
+		char[] resultCharArr = new char[byteArr.length*2];
+		// Traverse the byte array, converted into characters in a character array
+		int index = 0;
+		for (byte b : byteArr) {
+			resultCharArr[index++] = hexDigits[b>>> 4 & 0xf];  
+			resultCharArr[index++] = hexDigits[b & 0xf];
+		}
+		return new String(resultCharArr);
+	}
+	
+	
+	 /**
+     * 将一个int数字转换为二进制的字符串形式。
+     * @param num 需要转换的int类型数据
+     * @param digits 要转换的二进制位数,位数不足则在前面补0
+     * @return 二进制的字符串形式
+     */
+    public static String toBinary(int num, int digits) {
+        int value = 1 << digits | num;
+        String bs = Integer.toBinaryString(value); //0x20 | 这个是为了保证这个string长度是6位数
+        return  bs.substring(1);
+    }
+//	public static void main(String[] args) {
+//		System.out.println(toBinary(31,8));
+//	}
+	
+	public static boolean isEmpty(String s){
+		if(s==null||s.trim().equals("")){
+			return true;
+		}else{
+			return false;
+		}
+	}
+	public static String reLenStr(String s){
+		if(isEmpty(s)){
+			return "00000";
+		}
+		int i = Integer.parseInt(s);
+		if(i<99999){
+			i+=1;
+		}
+		String s1= i+"";
+		if(s1.length()<5){
+			int j=5-s1.length();
+			for(int a=0;a<j;a++){
+				s1="0"+s1;
+			}
+		}
+		return s1;
+		
+	}
+	public static String reLenStr6(String s){
+		if(isEmpty(s)){
+			return "000001";
+		}
+		int i = Integer.parseInt(s);
+		if(i<999999){
+			i+=1;
+		}
+		String s1= i+"";
+		if(s1.length()<6){
+			int j=6-s1.length();
+			for(int a=0;a<j;a++){
+				s1="0"+s1;
+			}
+		}
+		return s1;
+		
+	}
+	public static java.util.Date str2Date(String str, String format){
+		  if (null != str && !"".equals(str)) {
+		    SimpleDateFormat sdf = new SimpleDateFormat(format);
+		    java.util.Date date = null;
+		    try {
+		     date = sdf.parse(str);
+		     return date;
+		   } catch (ParseException e) {
+		     e.printStackTrace();
+		  }
+		}
+		return null;
+		}
+	public static Timestamp str2Timestamp(String str) {
+		  if(null != str && !"".equals(str)){
+		    java.util.Date date = str2Date(str, DEFAULT_FORMAT1);
+		    return new Timestamp(date.getTime());
+		  }
+		  return null;
+		}
+	 public static int zhuanhuan(String s){
+	    	int result = -1;
+	    	if(s.equals("其他")){
+	    		result=0;
+	    	}else if(s.equals("出租")){
+	    		result=1;
+	    	}else if(s.equals("公交")){
+	    		result=2;
+	    	}else if(s.equals("私用")){
+	    		result=3;
+	    	}else if(s.equals("货运")){
+	    		result=4;
+	    	}else if(s.equals("客运")){
+	    		result=5;
+	    	}else if(s.equals("营转非")){
+	    		result=6;
+	    	}else if(s.equals("外地车")){
+	    		result=9;
+	    	}else{
+	    		result=-1;
+	    	}
+	    	return result;
+	    }
+	 
+	 public static String zhuanhuan1(int s){
+	    	String result = "";
+	    	if(s==0){
+	    		result="其他";
+	    	}else if(s==1){
+	    		result="出租";
+	    	}else if(s==2){
+	    		result="公交";
+	    	}else if(s==3){
+	    		result="私用";
+	    	}else if(s==4){
+	    		result="货运";
+	    	}else if(s==5){
+	    		result="客运";
+	    	}else if(s==6){
+	    		result="营转非";
+	    	}else if(s==9){
+	    		result="外地车";
+	    	}else{
+	    		result="未知";
+	    	}
+	    	return result;
+	    }
+	public static String jiequString(String s,int l){
+		String result="";
+		if(s!=null&&s.length()>=l&&!s.equals("")){
+			result = s.substring(0, l);
+		}
+		return result;
+	}
+	
+	public static int calculateFlag(Date name1, Date name2) {
+	  	Object[] temp = {name1,name2};
+	  	
+	  	int count = 0;
+	  	for (int i = 0; i < temp.length; i++) {
+	  		if (temp[i] instanceof String && ((String)temp[i]).length()==0) temp[i]=null; 
+	  		if (temp[i] != null) count += (i + 1);
+	  	}
+	  	return count;
+	  }
+
+	public static Date dateChange(String date1) {
+		if(Tool.isNullOrEmpty(date1)){
+			return null;
+		}
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+		java.util.Date cDate;
+		Date dd = null;
+		try {
+			cDate = sdf.parse(date1);
+			dd = new Date(cDate.getTime());
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return dd;
+
+	}
+	public static Date dateChange1(String date1) {
+		if(Tool.isNullOrEmpty(date1)){
+			return null;
+		}
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
+		java.util.Date cDate;
+		Date dd = null;
+		try {
+			cDate = sdf.parse(date1);
+			dd = new Date(cDate.getTime());
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return dd;
+
+	}
+	public static Date dateChange2(String date1) {
+		if(Tool.isNullOrEmpty(date1)){
+			return null;
+		}
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		java.util.Date cDate;
+		Date dd = null;
+		try {
+			cDate = sdf.parse(date1);
+			dd = new Date(cDate.getTime());
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		try {
+			dd = (Date) new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date1);
+		} catch (ParseException e) {
+			e.printStackTrace();
+		}
+		return dd;
+
+	}
+	public static Timestamp dateChange3(String date1) {
+		if(Tool.isNullOrEmpty(date1)){
+			return null;
+		}
+		Timestamp sqlDate = null;
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		java.util.Date utilDate;
+		Date dd = null;
+		try {
+			utilDate = sdf.parse(date1);
+			sqlDate = new Timestamp(utilDate.getTime());
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return sqlDate;
+
+	}
+	public static int getCommonStrLength(String str1, String str2) {
+        str1 = str1.toLowerCase();  
+       str2 = str2.toLowerCase();  
+       int len1 = str1.length();  
+       int len2 = str2.length();  
+       String min = null;  
+       String max = null;  
+       String target = null;
+       min = len1 <= len2 ? str1 : str2;
+       max = len1 >  len2 ? str1 : str2;
+       //最外层:min子串的长度,从最大长度开始
+       for (int i = min.length(); i >= 1; i--) {
+           //遍历长度为i的min子串,从0开始
+           for (int j = 0; j <= min.length() - i; j++) {  
+               target = min.substring(j, j + i);  
+               //遍历长度为i的max子串,判断是否与target子串相同,从0开始
+               for (int k = 0; k <= max.length() - i; k++) {  
+                   if (max.substring(k,k + i).equals(target)) {  
+                       return i;  
+                   }
+               }
+           }
+       }  
+       return 0;  
+}
+	public static String removeNull(String s){
+		if(s==null) return "";
+		if(s==null||s.equals("null")){
+			s="";
+		}
+		return s;
+	}
+	
+	public static boolean isNumeric(String str){
+		  for (int i = 0; i < str.length(); i++){
+		   if (!Character.isDigit(str.charAt(i))){
+		    return false;
+		   }
+		  }
+		  return true;
+		 }
+	
+	
+	 
+	public int compare(Object arg0, Object arg1) {
+		 CityPlace user0=(CityPlace)arg0;
+		 CityPlace user1=(CityPlace)arg1;
+		  int flag=user0.getId().compareTo(user1.getId());
+		  if(flag==0){
+		   return user0.getName().compareTo(user1.getName());
+		  }else{
+		   return flag;
+		  }
+	}
+	
+	/**
+     * 
+     * @param date1 <String>
+     * @param date2 <String>
+     * @return int
+     * @throws ParseException
+     */
+    public static int getMonthSpace(String date1, String date2)
+            throws ParseException {
+
+        int result = 0;
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+        Calendar c1 = Calendar.getInstance();
+        Calendar c2 = Calendar.getInstance();
+
+        c1.setTime(sdf.parse(date1));
+        c2.setTime(sdf.parse(date2));
+
+        result = c2.get(Calendar.MONTH) - c1.get(Calendar.MONTH);
+//        System.out.println("result="+result);
+        return result == 0 ? 1 : Math.abs(result);
+
+    }
+    
+    public long daysOfTwo_2(String day1,String day2) throws ParseException {
+        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
+        //跨年不会出现问题
+        //如果时间为:2016-03-18 11:59:59 和 2016-03-19 00:00:01的话差值为 0
+        java.util.Date  fDate=sdf.parse(day1);
+        java.util.Date oDate=sdf.parse(day2);
+        long days=(oDate.getTime()-fDate.getTime())/(1000*3600*24);
+        return days;
+    }  
+//    public static void main(String[] args) {
+////    	 System.out.println(getServerVersion());
+//	}
+    public static String getServerVersion() {
+        String urlStr = "http://em.hizima.com/serverurl.txt";
+        //long a = System.currentTimeMillis();
+        try {
+			/*
+			 * 通过URL取得HttpURLConnection 要网络连接成功,需在AndroidMainfest.xml中进行权限配置
+			 * <uses-permission android:name="android.permission.INTERNET" />
+			 */
+            URL url = new URL(urlStr);
+            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+            conn.setConnectTimeout(60 * 1000);
+            conn.setReadTimeout(60 * 1000);
+            // 取得inputStream,并进行读取
+            InputStream input = conn.getInputStream();
+//            BufferedReader in = new BufferedReader(new InputStreamReader(input));
+            BufferedReader in = new BufferedReader(new InputStreamReader(input,"GBK"));
+            String line = null;
+            StringBuffer sb = new StringBuffer();
+            while ((line = in.readLine()) != null) {
+                sb.append(line);
+
+            }
+
+           
+            return sb.toString();
+//            newVersion = Integer.parseInt(sb.toString());
+        } catch (MalformedURLException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        return "";
+    }
+
+    /**
+     * 接口认证授权
+     * @param userName 用户名称
+     * @param password 密码
+     * @param station 基站编号
+     * @param secretKey 安全秘钥
+     * @return
+     */
+    public static String getSignature(String userName,String password,String station,String secretKey){
+	    try{
+	        Long timestamp = System.currentTimeMillis()/(1000*60*60*24);
+	        String signStr = secretKey + userName + station +password + timestamp;
+	        MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
+	        messageDigest.update(signStr.getBytes());
+	        byte[] signData = messageDigest.digest();
+	        StringBuilder stringBuilder = new StringBuilder("");
+	        for (int i = 0;i<10;i++){
+	            stringBuilder.append(String.format("%02X", signData[i] & 0xFF));
+	        }
+	        return stringBuilder.toString();
+
+	    }catch (Exception e){
+
+	    }
+	    return "";
+	}
+}
+

+ 715 - 698
src/struts.xml

@@ -1,698 +1,715 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE struts PUBLIC
-    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
-    "http://struts.apache.org/dtds/struts-2.5.dtd">
-
-<struts>
-
-	<!--<constant name="struts.enable.DynamicMethodInvocation" value="false" 
-		/> <constant name="struts.devMode" value="false" /> <include file="example.xml"/> -->
-	<constant name="struts.enable.DynamicMethodInvocation" value="true" />
-	<!-- 为修复struts2 s2-016、s2-017漏洞,重写DefaultActionMapper -->
-	<bean type="org.apache.struts2.dispatcher.mapper.ActionMapper"
-		name="myDefaultActionMapper" class="com.runzhixing.tool.MyDefaultActionMapper" />
-	<constant name="struts.mapper.class" value="myDefaultActionMapper" />
-	<constant name="struts.custom.i18n.resources" value="global" />
-	<constant name="struts.multipart.maxSize" value="100000000" />
-
-
-	<package name="login" namespace="/" extends="struts-default"
-		strict-method-invocation="false">
-		<action name="validateLogin" class="com.runzhixing.action.LoginAction"
-			method="validateLogin">
-			<result name="success">/jsp/rzx/bgman.jsp</result>
-			<result name="fail">/jsp/fail/loginfail.jsp</result>
-		</action>
-	</package>
-	<package name="wxCert" namespace="/" extends="struts-default"
-		strict-method-invocation="false">
-		<action name="useCert" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="useCert">
-			<result name="success">
-				/wxUseCert.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/500.jsp
-			</result>
-		</action>
-		<action name="electronicsCert" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="electronicsCert">
-			<result name="success">
-				/wxElectronicsCert.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/500.jsp
-			</result>
-		</action>
-
-	</package>
-	<package name="/" namespace="/" extends="json-default"
-		strict-method-invocation="false">
-		<action name="nxlogin" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="nxlogin"></action>
-	</package>
-	<package name="wx" namespace="/" extends="json-default"
-		strict-method-invocation="false">
-		<action name="checkSignature" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="checkSignature"></action>
-		<action name="crud_single_cylinder_info" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="crud_single_cylinder_info"></action>
-		<action name="query_car_info" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="query_car_info"></action>
-		<action name="use_Cert" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="use_Cert"></action>
-		<action name="wx_Login" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="wx_Login"></action>
-		<action name="wx_register" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="wx_register"></action>
-		<action name="city_country_inifo" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="city_country_inifo"></action>
-		<action name="cert_install_Info" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="cert_install_Info"></action>
-		<action name="base_info" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="base_info"></action>
-		<action name="crud_car_info" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="crud_car_info"></action>
-		<action name="car_info_by_user" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="car_info_by_user"></action>
-		<action name="crud_cylinder_info" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="crud_cylinder_info">
-		</action>
-		<action name="cylinder_info_by_car" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="cylinder_info_by_car"></action>
-		<action name="upload_img" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="upload_img">
-			<interceptor-ref name="fileUpload">
-				<param name="allowedTypes">image/bmp,image/jpg,image/jpeg,image/png,image/gif,image/pjepg</param>
-				<param name="maximumSize">10485760</param>
-			</interceptor-ref>
-			<interceptor-ref name="defaultStack" />
-		</action>
-
-		<action name="upload_more_img" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="upload_more_img">
-			<interceptor-ref name="fileUpload">
-				<param name="allowedTypes">image/bmp,image/jpg,image/jpeg,image/png,image/gif,image/pjepg</param>
-				<param name="maximumSize">10485760</param>
-			</interceptor-ref>
-			<interceptor-ref name="defaultStack" />
-		</action>
-
-		<action name="get_car_cylinder_cert_info" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="get_car_cylinder_cert_info"></action>
-		<action name="city_Info" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="city_Info"></action>
-		<action name="clear_Cookie" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="clear_Cookie"></action>
-		<action name="getSwiperList" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="getSwiperList"></action>
-		<action name="getFunctionList" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="getFunctionList"></action>
-		<action name="lately_fill_info" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="lately_fill_info"></action>
-		<action name="getReportFormData" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="getReportFormData"></action>
-		<action name="chart1SaveAsImage" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="chart1SaveAsImage"></action>
-		<action name="generatetPDF" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="generatetPDF"></action>
-		<action name="get_cert_by_carguid" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="get_cert_by_carguid"></action>
-		<action name="remove_img" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="remove_img"></action>
-		<action name="bind_existed_car_cylinder" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="bind_existed_car_cylinder"></action>
-		<action name="unbind_car" class="com.runzhixing.action.ThirdInterfaceAction"
-			method="unbind_car"></action>
-
-	</package>
-
-
-	<!-- <include file="struts-login.xml"/> -->
-	<package name="ajax" namespace="/" extends="json-default"
-		strict-method-invocation="false">
-		
-		
-		<action name="getStation2" class="com.runzhixing.action.TodayModifyAction"
-			method="getStation2"></action>
-		<action name="updateMachine" class="com.runzhixing.action.TodayModifyAction"
-			method="updateMachine"></action>
-		<action name="updateFillCheckOper" class="com.runzhixing.action.TodayModifyAction"
-			method="updateFillCheckOper"></action>
-		<action name="updateFillCheck2" class="com.runzhixing.action.TodayModifyAction"
-			method="updateFillCheck2"></action>
-		<action name="getRegister" class="com.runzhixing.action.AlterPasswordAction"
-			method="getRegister"></action>
-		<action name="examineAll" class="com.runzhixing.action.AlterPasswordAction"
-			method="examineAll"></action>
-		<action name="getInstallLocInfo" class="com.runzhixing.action.AlterPasswordAction"
-			method="getInstallLocInfo"></action>
-		<action name="getInstallTypeInfo" class="com.runzhixing.action.AlterPasswordAction"
-			method="getInstallTypeInfo"></action>
-		<action name="getProductInfo" class="com.runzhixing.action.AlterPasswordAction"
-			method="getProductInfo"></action>
-		<action name="CRUDCarInfo" class="com.runzhixing.action.AlterPasswordAction"
-			method="CRUDCarInfo"></action>
-		<action name="getCarInfo_1" class="com.runzhixing.action.AlterPasswordAction"
-			method="getCarInfo_1"></action>
-		<action name="getCarTypeInfo" class="com.runzhixing.action.AlterPasswordAction"
-			method="getCarTypeInfo"></action>
-		<action name="getCarPlateColorInfo" class="com.runzhixing.action.AlterPasswordAction"
-			method="getCarPlateColorInfo"></action>
-		<action name="getUnitInfo" class="com.runzhixing.action.AlterPasswordAction"
-			method="getUnitInfo"></action>
-		<action name="getCountryInfo" class="com.runzhixing.action.AlterPasswordAction"
-			method="getCountryInfo"></action>
-		<action name="getCityInfo" class="com.runzhixing.action.AlterPasswordAction"
-			method="getCityInfo"></action>
-		<action name="getAppTypeInfo" class="com.runzhixing.action.AlterPasswordAction"
-			method="getAppTypeInfo"></action>
-		<action name="insertWXID" class="com.runzhixing.action.AlterPasswordAction"
-			method="insertWXID"></action>
-		<action name="updateNickName" class="com.runzhixing.action.AlterPasswordAction"
-			method="updateNickName"></action>
-
-		<action name="latelyFill" class="com.runzhixing.action.AlterPasswordAction"
-			method="latelyFill"></action>
-		<action name="getPreCarNo" class="com.runzhixing.action.AlterPasswordAction"
-			method="getPreCarNo"></action>
-		<action name="register" class="com.runzhixing.action.AlterPasswordAction"
-			method="register"></action>
-		<action name="examineCylinder" class="com.runzhixing.action.AlterPasswordAction"
-			method="examineCylinder"></action>
-		<action name="replaceRegNo" class="com.runzhixing.action.AlterPasswordAction"
-			method="replaceRegNo"></action>
-		<action name="examineSingleCylinder" class="com.runzhixing.action.AlterPasswordAction"
-			method="examineSingleCylinder"></action>
-		<action name="examineCar" class="com.runzhixing.action.AlterPasswordAction"
-			method="examineCar"></action>
-		<action name="uploadCert" class="com.runzhixing.action.AlterPasswordAction"
-			method="uploadCert">
-			<interceptor-ref name="fileUpload">
-				<param name="allowedTypes">image/bmp,image/jpg,image/jpeg,image/png,image/gif,image/pjepg</param>
-				<!-- <param name="maximumSize">5242880*2</param> -->
-				<param name="maximumSize">15242880</param>
-			</interceptor-ref>
-			<interceptor-ref name="defaultStack" />
-		</action>
-		<action name="getCylinderProduct" class="com.runzhixing.action.AlterPasswordAction"
-			method="getCylinderProduct"></action>
-		<action name="getCylinderInfo" class="com.runzhixing.action.AlterPasswordAction"
-			method="getCylinderInfo"></action>
-		<action name="getCarInfo" class="com.runzhixing.action.AlterPasswordAction"
-			method="getCarInfo"></action>
-		<action name="deleteCarCylinder" class="com.runzhixing.action.AlterPasswordAction"
-			method="deleteCarCylinder"></action>
-		<action name="getcarcylinderbyuser" class="com.runzhixing.action.AlterPasswordAction"
-			method="getcarcylinderbyuser"></action>
-		<action name="insertCylinderInfo" class="com.runzhixing.action.AlterPasswordAction"
-			method="insertCylinderInfo"></action>
-		<action name="insertCarInfo" class="com.runzhixing.action.AlterPasswordAction"
-			method="insertCarInfo"></action>
-		<action name="insertCarCylinder" class="com.runzhixing.action.AlterPasswordAction"
-			method="insertCarCylinder">
-
-
-		</action>
-		<action name="getRedirect" class="com.runzhixing.action.AlterPasswordAction"
-			method="getRedirect"></action>
-		<action name="getPhoneCode" class="com.runzhixing.action.AlterPasswordAction"
-			method="getPhoneCode"></action>
-		<action name="getVCode" class="com.runzhixing.action.AlterPasswordAction"
-			method="getVCode"></action>
-		<action name="testVCode" class="com.runzhixing.action.AlterPasswordAction"
-			method="testVCode"></action>
-		<action name="getCity" class="com.runzhixing.action.AlterPasswordAction"
-			method="getCity"></action>
-		<action name="getCity123" class="com.runzhixing.action.AlterPasswordAction"
-			method="getCity123"></action>
-		<action name="getCounty123" class="com.runzhixing.action.AlterPasswordAction"
-			method="getCounty123"></action>
-		<action name="getUnit123" class="com.runzhixing.action.AlterPasswordAction"
-			method="getUnit123"></action>
-		<action name="getCountry" class="com.runzhixing.action.AlterPasswordAction"
-			method="getCountry"></action>
-		<action name="getUnit" class="com.runzhixing.action.AlterPasswordAction"
-			method="getUnit"></action>
-		<action name="getCarCylinderInfo" class="com.runzhixing.action.AlterPasswordAction"
-			method="getCarCylinderInfo"></action>
-
-		<action name="modifyWorkPersonInfoCheck"
-			class="com.runzhixing.action.ModifyWorkPersonInfoCheckAction" method="modifyWorkPersonInfoCheck"></action>
-		<action name="modifyStationInfoCheck"
-			class="com.runzhixing.action.ModifyStationInfoCheckAction" method="modifyStationInfoCheck"></action>
-		<action name="testingStationInfoCheck"
-			class="com.runzhixing.action.TestingStationInfoCheckAction" method="testingStationInfoCheck"></action>
-		<action name="modifyCompanyform" class="com.runzhixing.action.ModifyCompanyformAction"
-			method="modifyCompanyform"></action>
-		<action name="todayModify" class="com.runzhixing.action.TodayModifyAction"
-			method="todayModify"></action>
-		<action name="todayModify123" class="com.runzhixing.action.TodayModifyAction"
-			method="todayModify123"></action>
-		<action name="testingworkPersonInfo" class="com.runzhixing.action.WorkPersonInfoAction"
-			method="testingworkPersonInfo"></action>
-		<action name="TagdataStatis" class="com.runzhixing.action.TagdataStatisAction"
-			method="TagdataStatis"></action>
-		<action name="tagIssuingfrom" class="com.runzhixing.action.TagIssuingfromAction"
-			method="tagIssuingfrom"></action>
-		<action name="tagIssuingStatistics" class="com.runzhixing.action.TagIssuingfromAction"
-			method="tagIssuingStatistics"></action>
-		<action name="checkSeedataform" class="com.runzhixing.action.CheckSeedataQueryAction"
-			method="checkSeedataQuery"></action>
-		<action name="workPersonInfo" class="com.runzhixing.action.WorkPersonInfoAction"
-			method="workPersonInfo"></action>
-		<action name="fillingMachineInfo" class="com.runzhixing.action.FillingMachineInfoAction"
-			method="fillingMachineInfo"></action>
-		<action name="checkStationInfo" class="com.runzhixing.action.CheckStationInfoAction"
-			method="checkStationInfo"></action>
-		<action name="kaoqinDateStatist" class="com.runzhixing.action.KaoqinDateStatistAction"
-			method="kaoqinDateStatist"></action>
-
-		<action name="CNGQualityInto" class="com.runzhixing.action.CNGQualityIntoAction"
-			method="CNGQualityInto"></action>
-		<action name="specialInto" class="com.runzhixing.action.SpecialIntoAction"
-			method="specialInto"></action>
-		<action name="nonlocalQuery" class="com.runzhixing.action.NonlocalQueryAction"
-			method="nonlocalQuery"></action>
-		<action name="kaoqingQuery" class="com.runzhixing.action.KaoqingQueryAction"
-			method="kaoqingQuery"></action>
-		<action name="releaseAnnformform" class="com.runzhixing.action.CheckAnnounformmentAction"
-			method="releaseAnn"></action>
-		<action name="checkAnnounformment" class="com.runzhixing.action.CheckAnnounformmentAction"
-			method="checkAnnoun"></action>
-		<!-- 修改密码 -->
-		<action name="alterpassword" class="com.runzhixing.action.AlterPasswordAction"
-			method="alterpassword"></action>
-
-		<action name="infoview" class="com.runzhixing.action.InfoviewAction"
-			method="infoview"></action>
-		<!-- 查看网络情况 -->
-		<action name="getCNGStationTranInfoList" class="com.runzhixing.action.CNGStationTranInfoAction"
-			method="getCNGStationTranInfoList"></action>
-		<!-- 监察人员管理 -->
-		<action name="Supervisormanagement" class="com.runzhixing.action.SupervisormanagementAction"
-			method="supervisormanagement"></action>
-		<!-- 场所管理 -->
-		<action name="Placemanagement" class="com.runzhixing.action.PlacemanagementAction"
-			method="placemanagement"></action>
-		<!-- 得到原先的告警参数 -->
-		<action name="getoldwarningparam" class="com.runzhixing.action.WarningparasetAction"
-			method="getoldwarningparam"></action>
-		<!-- 设置新的告警参数 -->
-		<action name="warningparaset" class="com.runzhixing.action.WarningparasetAction"
-			method="warningparaset"></action>
-		<!-- 加气机运行状态 -->
-		<action name="aeratedmachinerunningstate"
-			class="com.runzhixing.action.AeratedmachinerunningstateAction"
-			method="aeratedmachinerunningstate"></action>
-		<!-- 人员巡查情况查询 -->
-		<action name="personnelInspection" class="com.runzhixing.action.PersonnelInspectionAction"
-			method="personnelInspection"></action>
-		<!-- 人员巡查情况查询 -->
-		<action name="personnelInspection1" class="com.runzhixing.action.PersonnelInspectionAction"
-			method="personnelInspection1"></action>
-		<!-- 巡查数据查询 -->
-		<action name="inspectiondataQuery" class="com.runzhixing.action.InspectiondataQueryAction"
-			method="inspectiondataQuery"></action>
-
-		<!-- 特种设备数据查询 -->
-		<action name="specialequipmentdataQuery"
-			class="com.runzhixing.action.SpecialequipmentdataQueryAction" method="specialequipmentdataQuery"></action>
-		<!-- 气瓶数据查询 -->
-		<action name="cylinderDataQuery" class="com.runzhixing.action.CylinderDataQueryAction"
-			method="cylinderDataQuery11"></action>
-		<action name="cylinderDataQuery12" class="com.runzhixing.action.CylinderDataQueryAction"
-			method="cylinderDataQuery12"></action>
-		<action name="cylinderDataQuery13" class="com.runzhixing.action.CylinderDataQueryAction"
-			method="cylinderDataQuery13"></action>
-		<action name="cylinderDataQuery14" class="com.runzhixing.action.CylinderDataQueryAction"
-			method="cylinderDataQuery14"></action>
-		<!-- 气瓶数据查询 -->
-		<action name="cylinderDataQuery1" class="com.runzhixing.action.CylinderDataQueryAction"
-			method="cylinderDataQuery1"></action>
-		<!-- 气瓶将要检测数量查询 -->
-		<action name="cylinderDataQueryagain"
-			class="com.runzhixing.action.CylinderDataQueryagainAction" method="cylinderDataQueryagain"></action>
-		<!-- 当天检验情况 -->
-		<action name="todattestingdataQuery" class="com.runzhixing.action.TestingdataQueryAction"
-			method="todaytestingdataQuery"></action>
-		<!-- 检验数据查询 -->
-		<action name="testingdataQuery" class="com.runzhixing.action.TestingdataQueryAction"
-			method="testingdataQuery"></action>
-		<!-- 车辆数据查询 -->
-		<action name="carsDataQuery" class="com.runzhixing.action.CarsDataQueryAction"
-			method="carsDataQuery"></action>
-			<!-- 车辆数据查询 -->
-		<action name="getCarsDataQuery" class="com.runzhixing.action.CarsDataQueryAction"
-			method="getCarsDataQuery"></action>
-		<!-- 车辆数据查询 -->
-		<action name="carsDataQueryagain" class="com.runzhixing.action.CarsDataQueryAction"
-			method="carsDataQueryagain"></action>
-		<!-- 黑名单查询 -->
-		<action name="blackListQuery" class="com.runzhixing.action.BlackListQueryAction"
-			method="blackListQuery"></action>
-		<!-- CNG质量查询 -->
-		<action name="CNGQualityQuery" class="com.runzhixing.action.CNGQualityQueryAction"
-			method="CNGQualityQuery"></action>
-		<!-- 充装数据查询 -->
-		<action name="fillingDataQuery" class="com.runzhixing.action.FillingDataQueryAction"
-			method="fillingDataQuery"></action>
-		<!-- 改装数据查询 -->
-		<action name="modifiedDataQuery" class="com.runzhixing.action.ModifiedDataQueryAction"
-			method="modifiedDataQuery"></action>
-
-
-		<!-- 系统告警日志 -->
-		<action name="systemWarninglog" class="com.runzhixing.action.SystemWarninglogAction"
-			method="systemWarninglog"></action>
-
-
-
-		<!-- 改装数据查询 -->
-		<action name="province" class="com.runzhixing.action.ProvinceAction"
-			method="province"></action>
-
-
-		<!-- 改装数据查询 -->
-		<action name="AdvanceSystemwarninglog" class="com.runzhixing.action.SystemWarninglogAction"
-			method="AdvanceSystemwarninglog">
-			<result name="success">/jsp/rzx/log/Systemwarninglog.jsp</result>
-		</action>
-
-		<action name="makeChart" class="com.runzhixing.action.Test"
-			method="makeChart">
-		</action>
-
-		<action name="hiddenspeStation" class="com.runzhixing.action.SpeStationAction"
-			method="speStationQuery">
-		</action>
-		<action name="hiddenspeStation1" class="com.runzhixing.action.SpeStationAction"
-			method="speStationQuery1">
-		</action>
-
-		<action name="hiddencheckStation" class="com.runzhixing.action.CheckStationAction"
-			method="checkStationQuery">
-		</action>
-		<action name="hiddenoperatorNo" class="com.runzhixing.action.JQJStationAction"
-			method="operatorNoQuery">
-		</action>
-		<action name="hiddenjqj" class="com.runzhixing.action.JQJStationAction"
-			method="jqjQuery">
-		</action>
-		<action name="hiddenCNGStation" class="com.runzhixing.action.CNGStationAction"
-			method="cngstationQuery">
-		</action>
-		<action name="hiddenStation" class="com.runzhixing.action.StationAction"
-			method="stationQuery">
-		</action>
-		<action name="hiddenUnit" class="com.runzhixing.action.UnitAction"
-			method="unitQuery">
-		</action>
-		<action name="hiddenCity" class="com.runzhixing.action.HiddenCityAction"
-			method="hiddenCity">
-		</action>
-		<action name="hiddenjiangaun" class="com.runzhixing.action.HiddenCityAction"
-			method="hiddenjiangaun">
-		</action>
-		<action name="hiddenxuncha" class="com.runzhixing.action.HiddenCityAction"
-			method="hiddenxuncha">
-		</action>
-		<action name="hiddenCountry" class="com.runzhixing.action.HiddenCityAction"
-			method="hiddenCountry">
-		</action>
-		<action name="getstationdetail" class="com.runzhixing.action.HiddenCityAction"
-			method="getstationdetail">
-		</action>
-		<action name="getstationdetailreset" class="com.runzhixing.action.HiddenCityAction"
-			method="getstationdetailreset">
-		</action>
-
-		<action name="operatorDetail" class="com.runzhixing.action.OperatorDetailAction"
-			method="operatorDetail">
-		</action>
-		<action name="machineDetail" class="com.runzhixing.action.MachineDetailActionagain"
-			method="machineDetailAgain">
-		</action>
-		<!-- 数据统计 -->
-		<!-- 充装数据统计 -->
-		<action name="FillingDataStatistics" class="com.runzhixing.action.FillingDataStatisticAction"
-			method="fillingDataStatistic">
-		</action>
-
-		<!-- 气瓶数据统计 -->
-		<action name="CylinderDataStatistics"
-			class="com.runzhixing.action.CylinderDataStatisticsAction" method="cylinderDataStatistics">
-		</action>
-		<!-- 车辆数据统计 -->
-		<action name="CarDataStatistics" class="com.runzhixing.action.CarDataStatisticsAction"
-			method="CarDataStatistics">
-		</action>
-		<!-- 车辆气瓶数量统计 -->
-		<action name="CarCyNumStatistics" class="com.runzhixing.action.CarDataStatisticsAction"
-			method="CarCyNumStatistics">
-		</action>
-		<action name="relogin" class="com.runzhixing.action.MachineDetailAction"
-			method="relogin">
-			<result name="success">
-				/jsp/login/loginType.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/500.jsp
-			</result>
-		</action>
-		<!-- 气瓶追踪 -->
-		<action name="cylinderFollow" class="com.runzhixing.action.CylinderFollowAction"
-			method="ajaxCylinderFollow">
-		</action>
-
-
-		<action name="downloadExcel" class="com.runzhixing.action.DownloadExcelAction"
-			method="downloadExcel">
-		</action>
-		<action name="checkValidity" class="com.runzhixing.action.CylinderFollowAction"
-			method="CheckValidity1">
-		</action>
-
-		<action name="exportTestingData" class="com.runzhixing.action.ExportData"
-			method="exportTestingData">
-		</action>
-		<action name="spdataList" class="com.runzhixing.action.ExportData"
-			method="spdataList">
-		</action>
-	</package>
-
-	<!-- Add packages here -->
-	<package name="default" namespace="/" extends="struts-default"
-		strict-method-invocation="false">
-		
-		
-		
-		<action name="safeExit" class="com.runzhixing.action.AlterPasswordAction"
-			method="safeExit">
-			<result name="success">
-				/jsp/login/loginre.jsp
-			</result>
-			<result name="error">
-				/jsp/login/loginre.jsp
-			</result>
-		</action>
-		<action name="wxLogin" class="com.runzhixing.action.AlterPasswordAction"
-			method="wxLogin">
-			<result name="success">
-				/jsp/applyRegister.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/500.jsp
-			</result>
-		</action>
-		<action name="getValveHistory" class="com.runzhixing.action.MachineDetailAction"
-			method="getValveHistory">
-			<result name="success">
-				/jsp/rzx/dataQuery/ValveHistory.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-		<action name="getLatelyFill" class="com.runzhixing.action.MachineDetailAction"
-			method="getLatelyFill">
-			<result name="success">
-				/jsp/rzx/dataQuery/LatelyFill.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-		
-		<action name="getQualificationPicture" class="com.runzhixing.action.MachineDetailAction"
-			method="getQualificationPicture">
-			<result name="success">
-				/jsp/rzx/dataQuery/CylinderImg.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-
-		<action name="loginCng" class="com.runzhixing.action.CylinderFollowAction"
-			method="loginCng">
-			<result name="success">
-				/jsp/rzx/dataQuery/CylinderFollow.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-
-		<action name="downloadExcel" class="com.runzhixing.action.DownloadExcelAction"
-			method="downloadExcel">
-		</action>
-		<action name="CylinderFollow" class="com.runzhixing.action.CylinderFollowAction"
-			method="cylinderFollow">
-			<result name="success">
-				/jsp/rzx/dataQuery/CylinderFollow.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-
-
-		<action name="machineDetail" class="com.runzhixing.action.MachineDetailAction"
-			method="machineDetail">
-			<result name="success">
-				/jsp/rzx/filling/CylinderdataQuery.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-
-
-
-		<action name="CheckValidity" class="com.runzhixing.action.CylinderFollowAction"
-			method="CheckValidity">
-			<result name="success">
-				/jsp/rzx/dataQuery/CheckValidity.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-
-
-		<action name="machineDetailfill" class="com.runzhixing.action.MachineDetailAction"
-			method="machineDetail1">
-			<result name="success">
-				/jsp/rzx/filling/CylinderdataQuery.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-		<action name="carpublic" class="com.runzhixing.action.MachineDetailAction"
-			method="carpublic">
-			<result name="success">
-				/jsp/carpublic.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-		<action name="carAudit" class="com.runzhixing.action.CarAuditAction"
-			method="carAudit">
-			<result name="success">
-				/jsp/rzx/dataQuery/carDuit.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-		<action name="getCarChange" class="com.runzhixing.action.CarAuditAction"
-			method="getCarChange">
-			<result name="success">
-				/jsp/rzx/dataQuery/CarChange.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-		<action name="carAuditdo" class="com.runzhixing.action.CarAuditAction"
-			method="carAuditdo">
-			<result name="success">
-				/jsp/rzx/dataQuery/carDuit.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-
-		<action name="CylinderMonitorListdo" class="com.runzhixing.action.CylinderGuidAction"
-			method="CylinderMonitorListdo">
-			<result name="success">
-				/jsp/rzx/dataQuery/CylinderMonitorListdo.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-		<action name="tagQuerydo" class="com.runzhixing.action.CylinderGuidAction"
-			method="tagQuerydo">
-			<result name="success">
-				/jsp/rzx/dataQuery/tagQuerydo.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-		<action name="cylinderGuiddo" class="com.runzhixing.action.CylinderGuidAction"
-			method="cylinderGuiddo">
-			<result name="success">
-				/jsp/rzx/dataQuery/carCylinderGuiddo.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-		<action name="cylinderGuid" class="com.runzhixing.action.CylinderGuidAction"
-			method="cylinderGuid">
-			<result name="success">
-				/jsp/rzx/dataQuery/carCylinderGuid.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-
-		<action name="relogin" class="com.runzhixing.action.MachineDetailAction"
-			method="relogin">
-			<result name="success">
-				/jsp/login/loginType.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/500.jsp
-			</result>
-		</action>
-		<action name="Detailbyid" class="com.runzhixing.action.CheckAnnounformmentAction"
-			method="detailbyID">
-			<result name="success">
-				/jsp/rzx/infoMan/detailbyid.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-
-		<action name="safeexit" class="com.runzhixing.action.SafeexitAction"
-			method="safeexit">
-			<result name="success">
-				/jsp/login/loginType.jsp
-			</result>
-			<result name="error">
-				/jsp/fail/nodata.jsp
-			</result>
-		</action>
-
-	</package>
-
-</struts>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE struts PUBLIC
+    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
+    "http://struts.apache.org/dtds/struts-2.5.dtd">
+
+<struts>
+
+	<!--<constant name="struts.enable.DynamicMethodInvocation" value="false" 
+		/> <constant name="struts.devMode" value="false" /> <include file="example.xml"/> -->
+	<constant name="struts.enable.DynamicMethodInvocation" value="true" />
+	<!-- 为修复struts2 s2-016、s2-017漏洞,重写DefaultActionMapper -->
+	<bean type="org.apache.struts2.dispatcher.mapper.ActionMapper"
+		name="myDefaultActionMapper" class="com.runzhixing.tool.MyDefaultActionMapper" />
+	<constant name="struts.mapper.class" value="myDefaultActionMapper" />
+	<constant name="struts.custom.i18n.resources" value="global" />
+	<constant name="struts.multipart.maxSize" value="100000000" />
+
+
+	<package name="login" namespace="/" extends="struts-default"
+		strict-method-invocation="false">
+		<action name="validateLogin" class="com.runzhixing.action.LoginAction"
+			method="validateLogin">
+			<result name="success">/jsp/rzx/bgman.jsp</result>
+			<result name="fail">/jsp/fail/loginfail.jsp</result>
+		</action>
+	</package>
+	<package name="wxCert" namespace="/" extends="struts-default"
+		strict-method-invocation="false">
+		<action name="useCert" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="useCert">
+			<result name="success">
+				/wxUseCert.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/500.jsp
+			</result>
+		</action>
+		<action name="electronicsCert" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="electronicsCert">
+			<result name="success">
+				/wxElectronicsCert.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/500.jsp
+			</result>
+		</action>
+
+	</package>
+	<package name="/" namespace="/" extends="json-default"
+		strict-method-invocation="false">
+		<action name="nxlogin" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="nxlogin"></action>
+	</package>
+	<package name="wx" namespace="/" extends="json-default"
+		strict-method-invocation="false">
+		<action name="checkSignature" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="checkSignature"></action>
+		<action name="crud_single_cylinder_info" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="crud_single_cylinder_info"></action>
+		<action name="query_car_info" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="query_car_info"></action>
+		<action name="use_Cert" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="use_Cert"></action>
+		<action name="wx_Login" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="wx_Login"></action>
+		<action name="wx_register" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="wx_register"></action>
+		<action name="city_country_inifo" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="city_country_inifo"></action>
+		<action name="cert_install_Info" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="cert_install_Info"></action>
+		<action name="base_info" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="base_info"></action>
+		<action name="crud_car_info" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="crud_car_info"></action>
+		<action name="car_info_by_user" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="car_info_by_user"></action>
+		<action name="crud_cylinder_info" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="crud_cylinder_info">
+		</action>
+		<action name="cylinder_info_by_car" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="cylinder_info_by_car"></action>
+		<action name="upload_img" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="upload_img">
+			<interceptor-ref name="fileUpload">
+				<param name="allowedTypes">image/bmp,image/jpg,image/jpeg,image/png,image/gif,image/pjepg</param>
+				<param name="maximumSize">10485760</param>
+			</interceptor-ref>
+			<interceptor-ref name="defaultStack" />
+		</action>
+
+		<action name="upload_more_img" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="upload_more_img">
+			<interceptor-ref name="fileUpload">
+				<param name="allowedTypes">image/bmp,image/jpg,image/jpeg,image/png,image/gif,image/pjepg</param>
+				<param name="maximumSize">10485760</param>
+			</interceptor-ref>
+			<interceptor-ref name="defaultStack" />
+		</action>
+
+		<action name="get_car_cylinder_cert_info" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="get_car_cylinder_cert_info"></action>
+		<action name="city_Info" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="city_Info"></action>
+		<action name="clear_Cookie" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="clear_Cookie"></action>
+		<action name="getSwiperList" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="getSwiperList"></action>
+		<action name="getFunctionList" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="getFunctionList"></action>
+		<action name="lately_fill_info" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="lately_fill_info"></action>
+		<action name="getReportFormData" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="getReportFormData"></action>
+		<action name="chart1SaveAsImage" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="chart1SaveAsImage"></action>
+		<action name="generatetPDF" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="generatetPDF"></action>
+		<action name="get_cert_by_carguid" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="get_cert_by_carguid"></action>
+		<action name="remove_img" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="remove_img"></action>
+		<action name="bind_existed_car_cylinder" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="bind_existed_car_cylinder"></action>
+		<action name="unbind_car" class="com.runzhixing.action.ThirdInterfaceAction"
+			method="unbind_car"></action>
+
+	</package>
+
+	<package name="nx" namespace="/" extends="json-default" strict-method-invocation="false">
+		<action name="city_country_inifo" class="com.runzhixing.action.NxAppCarAction" method="city_country_inifo"></action>
+		<action name="cert_install_Info" class="com.runzhixing.action.NxAppCarAction" method="cert_install_Info"></action>
+		<action name="crud_car_info" class="com.runzhixing.action.NxAppCarAction" method="crud_car_info"></action>
+		<action name="upload_img" class="com.runzhixing.action.NxAppCarAction" method="upload_img">
+			<interceptor-ref name="fileUpload">
+				<param name="allowedTypes">image/bmp,image/jpg,image/jpeg,image/png,image/gif,image/pjepg</param>
+				<param name="maximumSize">10485760</param>
+			</interceptor-ref>
+			<interceptor-ref name="defaultStack" />
+		</action>
+		<action name="remove_img" class="com.runzhixing.action.NxAppCarAction" method="remove_img"></action>
+		<action name="get_car_cylinder_cert_info" class="com.runzhixing.action.NxAppCarAction" method="get_car_cylinder_cert_info"></action>
+		<action name="crud_single_cylinder_info" class="com.runzhixing.action.NxAppCarAction" method="crud_single_cylinder_info"></action>
+		
+	</package>
+
+
+	<!-- <include file="struts-login.xml"/> -->
+	<package name="ajax" namespace="/" extends="json-default"
+		strict-method-invocation="false">
+		
+		
+		<action name="getStation2" class="com.runzhixing.action.TodayModifyAction"
+			method="getStation2"></action>
+		<action name="updateMachine" class="com.runzhixing.action.TodayModifyAction"
+			method="updateMachine"></action>
+		<action name="updateFillCheckOper" class="com.runzhixing.action.TodayModifyAction"
+			method="updateFillCheckOper"></action>
+		<action name="updateFillCheck2" class="com.runzhixing.action.TodayModifyAction"
+			method="updateFillCheck2"></action>
+		<action name="getRegister" class="com.runzhixing.action.AlterPasswordAction"
+			method="getRegister"></action>
+		<action name="examineAll" class="com.runzhixing.action.AlterPasswordAction"
+			method="examineAll"></action>
+		<action name="getInstallLocInfo" class="com.runzhixing.action.AlterPasswordAction"
+			method="getInstallLocInfo"></action>
+		<action name="getInstallTypeInfo" class="com.runzhixing.action.AlterPasswordAction"
+			method="getInstallTypeInfo"></action>
+		<action name="getProductInfo" class="com.runzhixing.action.AlterPasswordAction"
+			method="getProductInfo"></action>
+		<action name="CRUDCarInfo" class="com.runzhixing.action.AlterPasswordAction"
+			method="CRUDCarInfo"></action>
+		<action name="getCarInfo_1" class="com.runzhixing.action.AlterPasswordAction"
+			method="getCarInfo_1"></action>
+		<action name="getCarTypeInfo" class="com.runzhixing.action.AlterPasswordAction"
+			method="getCarTypeInfo"></action>
+		<action name="getCarPlateColorInfo" class="com.runzhixing.action.AlterPasswordAction"
+			method="getCarPlateColorInfo"></action>
+		<action name="getUnitInfo" class="com.runzhixing.action.AlterPasswordAction"
+			method="getUnitInfo"></action>
+		<action name="getCountryInfo" class="com.runzhixing.action.AlterPasswordAction"
+			method="getCountryInfo"></action>
+		<action name="getCityInfo" class="com.runzhixing.action.AlterPasswordAction"
+			method="getCityInfo"></action>
+		<action name="getAppTypeInfo" class="com.runzhixing.action.AlterPasswordAction"
+			method="getAppTypeInfo"></action>
+		<action name="insertWXID" class="com.runzhixing.action.AlterPasswordAction"
+			method="insertWXID"></action>
+		<action name="updateNickName" class="com.runzhixing.action.AlterPasswordAction"
+			method="updateNickName"></action>
+
+		<action name="latelyFill" class="com.runzhixing.action.AlterPasswordAction"
+			method="latelyFill"></action>
+		<action name="getPreCarNo" class="com.runzhixing.action.AlterPasswordAction"
+			method="getPreCarNo"></action>
+		<action name="register" class="com.runzhixing.action.AlterPasswordAction"
+			method="register"></action>
+		<action name="examineCylinder" class="com.runzhixing.action.AlterPasswordAction"
+			method="examineCylinder"></action>
+		<action name="replaceRegNo" class="com.runzhixing.action.AlterPasswordAction"
+			method="replaceRegNo"></action>
+		<action name="examineSingleCylinder" class="com.runzhixing.action.AlterPasswordAction"
+			method="examineSingleCylinder"></action>
+		<action name="examineCar" class="com.runzhixing.action.AlterPasswordAction"
+			method="examineCar"></action>
+		<action name="uploadCert" class="com.runzhixing.action.AlterPasswordAction"
+			method="uploadCert">
+			<interceptor-ref name="fileUpload">
+				<param name="allowedTypes">image/bmp,image/jpg,image/jpeg,image/png,image/gif,image/pjepg</param>
+				<!-- <param name="maximumSize">5242880*2</param> -->
+				<param name="maximumSize">15242880</param>
+			</interceptor-ref>
+			<interceptor-ref name="defaultStack" />
+		</action>
+		<action name="getCylinderProduct" class="com.runzhixing.action.AlterPasswordAction"
+			method="getCylinderProduct"></action>
+		<action name="getCylinderInfo" class="com.runzhixing.action.AlterPasswordAction"
+			method="getCylinderInfo"></action>
+		<action name="getCarInfo" class="com.runzhixing.action.AlterPasswordAction"
+			method="getCarInfo"></action>
+		<action name="deleteCarCylinder" class="com.runzhixing.action.AlterPasswordAction"
+			method="deleteCarCylinder"></action>
+		<action name="getcarcylinderbyuser" class="com.runzhixing.action.AlterPasswordAction"
+			method="getcarcylinderbyuser"></action>
+		<action name="insertCylinderInfo" class="com.runzhixing.action.AlterPasswordAction"
+			method="insertCylinderInfo"></action>
+		<action name="insertCarInfo" class="com.runzhixing.action.AlterPasswordAction"
+			method="insertCarInfo"></action>
+		<action name="insertCarCylinder" class="com.runzhixing.action.AlterPasswordAction"
+			method="insertCarCylinder">
+
+
+		</action>
+		<action name="getRedirect" class="com.runzhixing.action.AlterPasswordAction"
+			method="getRedirect"></action>
+		<action name="getPhoneCode" class="com.runzhixing.action.AlterPasswordAction"
+			method="getPhoneCode"></action>
+		<action name="getVCode" class="com.runzhixing.action.AlterPasswordAction"
+			method="getVCode"></action>
+		<action name="testVCode" class="com.runzhixing.action.AlterPasswordAction"
+			method="testVCode"></action>
+		<action name="getCity" class="com.runzhixing.action.AlterPasswordAction"
+			method="getCity"></action>
+		<action name="getCity123" class="com.runzhixing.action.AlterPasswordAction"
+			method="getCity123"></action>
+		<action name="getCounty123" class="com.runzhixing.action.AlterPasswordAction"
+			method="getCounty123"></action>
+		<action name="getUnit123" class="com.runzhixing.action.AlterPasswordAction"
+			method="getUnit123"></action>
+		<action name="getCountry" class="com.runzhixing.action.AlterPasswordAction"
+			method="getCountry"></action>
+		<action name="getUnit" class="com.runzhixing.action.AlterPasswordAction"
+			method="getUnit"></action>
+		<action name="getCarCylinderInfo" class="com.runzhixing.action.AlterPasswordAction"
+			method="getCarCylinderInfo"></action>
+
+		<action name="modifyWorkPersonInfoCheck"
+			class="com.runzhixing.action.ModifyWorkPersonInfoCheckAction" method="modifyWorkPersonInfoCheck"></action>
+		<action name="modifyStationInfoCheck"
+			class="com.runzhixing.action.ModifyStationInfoCheckAction" method="modifyStationInfoCheck"></action>
+		<action name="testingStationInfoCheck"
+			class="com.runzhixing.action.TestingStationInfoCheckAction" method="testingStationInfoCheck"></action>
+		<action name="modifyCompanyform" class="com.runzhixing.action.ModifyCompanyformAction"
+			method="modifyCompanyform"></action>
+		<action name="todayModify" class="com.runzhixing.action.TodayModifyAction"
+			method="todayModify"></action>
+		<action name="todayModify123" class="com.runzhixing.action.TodayModifyAction"
+			method="todayModify123"></action>
+		<action name="testingworkPersonInfo" class="com.runzhixing.action.WorkPersonInfoAction"
+			method="testingworkPersonInfo"></action>
+		<action name="TagdataStatis" class="com.runzhixing.action.TagdataStatisAction"
+			method="TagdataStatis"></action>
+		<action name="tagIssuingfrom" class="com.runzhixing.action.TagIssuingfromAction"
+			method="tagIssuingfrom"></action>
+		<action name="tagIssuingStatistics" class="com.runzhixing.action.TagIssuingfromAction"
+			method="tagIssuingStatistics"></action>
+		<action name="checkSeedataform" class="com.runzhixing.action.CheckSeedataQueryAction"
+			method="checkSeedataQuery"></action>
+		<action name="workPersonInfo" class="com.runzhixing.action.WorkPersonInfoAction"
+			method="workPersonInfo"></action>
+		<action name="fillingMachineInfo" class="com.runzhixing.action.FillingMachineInfoAction"
+			method="fillingMachineInfo"></action>
+		<action name="checkStationInfo" class="com.runzhixing.action.CheckStationInfoAction"
+			method="checkStationInfo"></action>
+		<action name="kaoqinDateStatist" class="com.runzhixing.action.KaoqinDateStatistAction"
+			method="kaoqinDateStatist"></action>
+
+		<action name="CNGQualityInto" class="com.runzhixing.action.CNGQualityIntoAction"
+			method="CNGQualityInto"></action>
+		<action name="specialInto" class="com.runzhixing.action.SpecialIntoAction"
+			method="specialInto"></action>
+		<action name="nonlocalQuery" class="com.runzhixing.action.NonlocalQueryAction"
+			method="nonlocalQuery"></action>
+		<action name="kaoqingQuery" class="com.runzhixing.action.KaoqingQueryAction"
+			method="kaoqingQuery"></action>
+		<action name="releaseAnnformform" class="com.runzhixing.action.CheckAnnounformmentAction"
+			method="releaseAnn"></action>
+		<action name="checkAnnounformment" class="com.runzhixing.action.CheckAnnounformmentAction"
+			method="checkAnnoun"></action>
+		<!-- 修改密码 -->
+		<action name="alterpassword" class="com.runzhixing.action.AlterPasswordAction"
+			method="alterpassword"></action>
+
+		<action name="infoview" class="com.runzhixing.action.InfoviewAction"
+			method="infoview"></action>
+		<!-- 查看网络情况 -->
+		<action name="getCNGStationTranInfoList" class="com.runzhixing.action.CNGStationTranInfoAction"
+			method="getCNGStationTranInfoList"></action>
+		<!-- 监察人员管理 -->
+		<action name="Supervisormanagement" class="com.runzhixing.action.SupervisormanagementAction"
+			method="supervisormanagement"></action>
+		<!-- 场所管理 -->
+		<action name="Placemanagement" class="com.runzhixing.action.PlacemanagementAction"
+			method="placemanagement"></action>
+		<!-- 得到原先的告警参数 -->
+		<action name="getoldwarningparam" class="com.runzhixing.action.WarningparasetAction"
+			method="getoldwarningparam"></action>
+		<!-- 设置新的告警参数 -->
+		<action name="warningparaset" class="com.runzhixing.action.WarningparasetAction"
+			method="warningparaset"></action>
+		<!-- 加气机运行状态 -->
+		<action name="aeratedmachinerunningstate"
+			class="com.runzhixing.action.AeratedmachinerunningstateAction"
+			method="aeratedmachinerunningstate"></action>
+		<!-- 人员巡查情况查询 -->
+		<action name="personnelInspection" class="com.runzhixing.action.PersonnelInspectionAction"
+			method="personnelInspection"></action>
+		<!-- 人员巡查情况查询 -->
+		<action name="personnelInspection1" class="com.runzhixing.action.PersonnelInspectionAction"
+			method="personnelInspection1"></action>
+		<!-- 巡查数据查询 -->
+		<action name="inspectiondataQuery" class="com.runzhixing.action.InspectiondataQueryAction"
+			method="inspectiondataQuery"></action>
+
+		<!-- 特种设备数据查询 -->
+		<action name="specialequipmentdataQuery"
+			class="com.runzhixing.action.SpecialequipmentdataQueryAction" method="specialequipmentdataQuery"></action>
+		<!-- 气瓶数据查询 -->
+		<action name="cylinderDataQuery" class="com.runzhixing.action.CylinderDataQueryAction"
+			method="cylinderDataQuery11"></action>
+		<action name="cylinderDataQuery12" class="com.runzhixing.action.CylinderDataQueryAction"
+			method="cylinderDataQuery12"></action>
+		<action name="cylinderDataQuery13" class="com.runzhixing.action.CylinderDataQueryAction"
+			method="cylinderDataQuery13"></action>
+		<action name="cylinderDataQuery14" class="com.runzhixing.action.CylinderDataQueryAction"
+			method="cylinderDataQuery14"></action>
+		<!-- 气瓶数据查询 -->
+		<action name="cylinderDataQuery1" class="com.runzhixing.action.CylinderDataQueryAction"
+			method="cylinderDataQuery1"></action>
+		<!-- 气瓶将要检测数量查询 -->
+		<action name="cylinderDataQueryagain"
+			class="com.runzhixing.action.CylinderDataQueryagainAction" method="cylinderDataQueryagain"></action>
+		<!-- 当天检验情况 -->
+		<action name="todattestingdataQuery" class="com.runzhixing.action.TestingdataQueryAction"
+			method="todaytestingdataQuery"></action>
+		<!-- 检验数据查询 -->
+		<action name="testingdataQuery" class="com.runzhixing.action.TestingdataQueryAction"
+			method="testingdataQuery"></action>
+		<!-- 车辆数据查询 -->
+		<action name="carsDataQuery" class="com.runzhixing.action.CarsDataQueryAction"
+			method="carsDataQuery"></action>
+			<!-- 车辆数据查询 -->
+		<action name="getCarsDataQuery" class="com.runzhixing.action.CarsDataQueryAction"
+			method="getCarsDataQuery"></action>
+		<!-- 车辆数据查询 -->
+		<action name="carsDataQueryagain" class="com.runzhixing.action.CarsDataQueryAction"
+			method="carsDataQueryagain"></action>
+		<!-- 黑名单查询 -->
+		<action name="blackListQuery" class="com.runzhixing.action.BlackListQueryAction"
+			method="blackListQuery"></action>
+		<!-- CNG质量查询 -->
+		<action name="CNGQualityQuery" class="com.runzhixing.action.CNGQualityQueryAction"
+			method="CNGQualityQuery"></action>
+		<!-- 充装数据查询 -->
+		<action name="fillingDataQuery" class="com.runzhixing.action.FillingDataQueryAction"
+			method="fillingDataQuery"></action>
+		<!-- 改装数据查询 -->
+		<action name="modifiedDataQuery" class="com.runzhixing.action.ModifiedDataQueryAction"
+			method="modifiedDataQuery"></action>
+
+
+		<!-- 系统告警日志 -->
+		<action name="systemWarninglog" class="com.runzhixing.action.SystemWarninglogAction"
+			method="systemWarninglog"></action>
+
+
+
+		<!-- 改装数据查询 -->
+		<action name="province" class="com.runzhixing.action.ProvinceAction"
+			method="province"></action>
+
+
+		<!-- 改装数据查询 -->
+		<action name="AdvanceSystemwarninglog" class="com.runzhixing.action.SystemWarninglogAction"
+			method="AdvanceSystemwarninglog">
+			<result name="success">/jsp/rzx/log/Systemwarninglog.jsp</result>
+		</action>
+
+		<action name="makeChart" class="com.runzhixing.action.Test"
+			method="makeChart">
+		</action>
+
+		<action name="hiddenspeStation" class="com.runzhixing.action.SpeStationAction"
+			method="speStationQuery">
+		</action>
+		<action name="hiddenspeStation1" class="com.runzhixing.action.SpeStationAction"
+			method="speStationQuery1">
+		</action>
+
+		<action name="hiddencheckStation" class="com.runzhixing.action.CheckStationAction"
+			method="checkStationQuery">
+		</action>
+		<action name="hiddenoperatorNo" class="com.runzhixing.action.JQJStationAction"
+			method="operatorNoQuery">
+		</action>
+		<action name="hiddenjqj" class="com.runzhixing.action.JQJStationAction"
+			method="jqjQuery">
+		</action>
+		<action name="hiddenCNGStation" class="com.runzhixing.action.CNGStationAction"
+			method="cngstationQuery">
+		</action>
+		<action name="hiddenStation" class="com.runzhixing.action.StationAction"
+			method="stationQuery">
+		</action>
+		<action name="hiddenUnit" class="com.runzhixing.action.UnitAction"
+			method="unitQuery">
+		</action>
+		<action name="hiddenCity" class="com.runzhixing.action.HiddenCityAction"
+			method="hiddenCity">
+		</action>
+		<action name="hiddenjiangaun" class="com.runzhixing.action.HiddenCityAction"
+			method="hiddenjiangaun">
+		</action>
+		<action name="hiddenxuncha" class="com.runzhixing.action.HiddenCityAction"
+			method="hiddenxuncha">
+		</action>
+		<action name="hiddenCountry" class="com.runzhixing.action.HiddenCityAction"
+			method="hiddenCountry">
+		</action>
+		<action name="getstationdetail" class="com.runzhixing.action.HiddenCityAction"
+			method="getstationdetail">
+		</action>
+		<action name="getstationdetailreset" class="com.runzhixing.action.HiddenCityAction"
+			method="getstationdetailreset">
+		</action>
+
+		<action name="operatorDetail" class="com.runzhixing.action.OperatorDetailAction"
+			method="operatorDetail">
+		</action>
+		<action name="machineDetail" class="com.runzhixing.action.MachineDetailActionagain"
+			method="machineDetailAgain">
+		</action>
+		<!-- 数据统计 -->
+		<!-- 充装数据统计 -->
+		<action name="FillingDataStatistics" class="com.runzhixing.action.FillingDataStatisticAction"
+			method="fillingDataStatistic">
+		</action>
+
+		<!-- 气瓶数据统计 -->
+		<action name="CylinderDataStatistics"
+			class="com.runzhixing.action.CylinderDataStatisticsAction" method="cylinderDataStatistics">
+		</action>
+		<!-- 车辆数据统计 -->
+		<action name="CarDataStatistics" class="com.runzhixing.action.CarDataStatisticsAction"
+			method="CarDataStatistics">
+		</action>
+		<!-- 车辆气瓶数量统计 -->
+		<action name="CarCyNumStatistics" class="com.runzhixing.action.CarDataStatisticsAction"
+			method="CarCyNumStatistics">
+		</action>
+		<action name="relogin" class="com.runzhixing.action.MachineDetailAction"
+			method="relogin">
+			<result name="success">
+				/jsp/login/loginType.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/500.jsp
+			</result>
+		</action>
+		<!-- 气瓶追踪 -->
+		<action name="cylinderFollow" class="com.runzhixing.action.CylinderFollowAction"
+			method="ajaxCylinderFollow">
+		</action>
+
+
+		<action name="downloadExcel" class="com.runzhixing.action.DownloadExcelAction"
+			method="downloadExcel">
+		</action>
+		<action name="checkValidity" class="com.runzhixing.action.CylinderFollowAction"
+			method="CheckValidity1">
+		</action>
+
+		<action name="exportTestingData" class="com.runzhixing.action.ExportData"
+			method="exportTestingData">
+		</action>
+		<action name="spdataList" class="com.runzhixing.action.ExportData"
+			method="spdataList">
+		</action>
+	</package>
+
+	<!-- Add packages here -->
+	<package name="default" namespace="/" extends="struts-default"
+		strict-method-invocation="false">
+		
+		
+		
+		<action name="safeExit" class="com.runzhixing.action.AlterPasswordAction"
+			method="safeExit">
+			<result name="success">
+				/jsp/login/loginre.jsp
+			</result>
+			<result name="error">
+				/jsp/login/loginre.jsp
+			</result>
+		</action>
+		<action name="wxLogin" class="com.runzhixing.action.AlterPasswordAction"
+			method="wxLogin">
+			<result name="success">
+				/jsp/applyRegister.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/500.jsp
+			</result>
+		</action>
+		<action name="getValveHistory" class="com.runzhixing.action.MachineDetailAction"
+			method="getValveHistory">
+			<result name="success">
+				/jsp/rzx/dataQuery/ValveHistory.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+		<action name="getLatelyFill" class="com.runzhixing.action.MachineDetailAction"
+			method="getLatelyFill">
+			<result name="success">
+				/jsp/rzx/dataQuery/LatelyFill.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+		
+		<action name="getQualificationPicture" class="com.runzhixing.action.MachineDetailAction"
+			method="getQualificationPicture">
+			<result name="success">
+				/jsp/rzx/dataQuery/CylinderImg.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+
+		<action name="loginCng" class="com.runzhixing.action.CylinderFollowAction"
+			method="loginCng">
+			<result name="success">
+				/jsp/rzx/dataQuery/CylinderFollow.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+
+		<action name="downloadExcel" class="com.runzhixing.action.DownloadExcelAction"
+			method="downloadExcel">
+		</action>
+		<action name="CylinderFollow" class="com.runzhixing.action.CylinderFollowAction"
+			method="cylinderFollow">
+			<result name="success">
+				/jsp/rzx/dataQuery/CylinderFollow.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+
+
+		<action name="machineDetail" class="com.runzhixing.action.MachineDetailAction"
+			method="machineDetail">
+			<result name="success">
+				/jsp/rzx/filling/CylinderdataQuery.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+
+
+
+		<action name="CheckValidity" class="com.runzhixing.action.CylinderFollowAction"
+			method="CheckValidity">
+			<result name="success">
+				/jsp/rzx/dataQuery/CheckValidity.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+
+
+		<action name="machineDetailfill" class="com.runzhixing.action.MachineDetailAction"
+			method="machineDetail1">
+			<result name="success">
+				/jsp/rzx/filling/CylinderdataQuery.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+		<action name="carpublic" class="com.runzhixing.action.MachineDetailAction"
+			method="carpublic">
+			<result name="success">
+				/jsp/carpublic.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+		<action name="carAudit" class="com.runzhixing.action.CarAuditAction"
+			method="carAudit">
+			<result name="success">
+				/jsp/rzx/dataQuery/carDuit.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+		<action name="getCarChange" class="com.runzhixing.action.CarAuditAction"
+			method="getCarChange">
+			<result name="success">
+				/jsp/rzx/dataQuery/CarChange.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+		<action name="carAuditdo" class="com.runzhixing.action.CarAuditAction"
+			method="carAuditdo">
+			<result name="success">
+				/jsp/rzx/dataQuery/carDuit.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+
+		<action name="CylinderMonitorListdo" class="com.runzhixing.action.CylinderGuidAction"
+			method="CylinderMonitorListdo">
+			<result name="success">
+				/jsp/rzx/dataQuery/CylinderMonitorListdo.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+		<action name="tagQuerydo" class="com.runzhixing.action.CylinderGuidAction"
+			method="tagQuerydo">
+			<result name="success">
+				/jsp/rzx/dataQuery/tagQuerydo.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+		<action name="cylinderGuiddo" class="com.runzhixing.action.CylinderGuidAction"
+			method="cylinderGuiddo">
+			<result name="success">
+				/jsp/rzx/dataQuery/carCylinderGuiddo.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+		<action name="cylinderGuid" class="com.runzhixing.action.CylinderGuidAction"
+			method="cylinderGuid">
+			<result name="success">
+				/jsp/rzx/dataQuery/carCylinderGuid.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+
+		<action name="relogin" class="com.runzhixing.action.MachineDetailAction"
+			method="relogin">
+			<result name="success">
+				/jsp/login/loginType.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/500.jsp
+			</result>
+		</action>
+		<action name="Detailbyid" class="com.runzhixing.action.CheckAnnounformmentAction"
+			method="detailbyID">
+			<result name="success">
+				/jsp/rzx/infoMan/detailbyid.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+
+		<action name="safeexit" class="com.runzhixing.action.SafeexitAction"
+			method="safeexit">
+			<result name="success">
+				/jsp/login/loginType.jsp
+			</result>
+			<result name="error">
+				/jsp/fail/nodata.jsp
+			</result>
+		</action>
+
+	</package>
+
+</struts>