⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 appealdao.java

📁 电信的网厅的整站代码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
	}

	/**
	 * @param pageNo
	 *            查询第N页记录
	 * @param sql
	 *            查询sql
	 * @return
	 */
	DataTable getAppealList(int pageNo, String sql) {
		DataTable dataTable = null;

		try {
			dataTable = _dac.executeQuery(sql);
		} catch (Exception e) {
			FileLogger.getLogger().debug(e.getMessage());
		}
		return dataTable;
	}

	/**
	 * @param proState
	 *            订单处理状态
	 * @param appealMode
	 *            业务类型 1、故障2、投诉3、建议
	 * @return 返回记录数
	 */
	public int getAppealListSize(String proState, String appealMode,
			String cityCodes) {
		if (cityCodes == null || cityCodes.equals("0590")) {
			cityCodes = "0591,0592,0593,0594,0595,0596,0597,0598,0599";
		}
		DataTable dataTable = null;
		StringBuffer sql = new StringBuffer();
		sql.append( "select count(APPEALID) as count from tf_appeal a" +
				    " join td_appealtype b on a.appealtypeid =b.appealtypeid " +
				    " where a.UPAPPEALID=0 and instr(?,a.citycode)>0" );


		if (appealMode.equals(""))
			sql.append(" and a.APPEALMODE in('2','3')");
		else
			sql.append(" and a.APPEALMODE='1'");

		if(proState.equals("unlock"))
			sql.append(" and a.LOCKSTAFFID is null ");
		else if(proState.startsWith("lock")){
			String[] value = proState.split("~");
			sql.append(" and a.LOCKSTAFFID="+value[1]);
		}else if (!proState.equals("all"))
			sql.append(" and a.PROGRESSSTATE='" + proState + "'");

		Object[] value = new Object[1];
		value[0] = cityCodes;
		//System.out.println("sql: "+sql.toString());
		try {
			dataTable = _dac.executeQuery("select * from(" + sql.toString() + ")", value);

		} catch (Exception e) {
			FileLogger.getLogger().debug(e.getMessage());
			return 0;
		}
		return dataTable.getRow(0).getInt("count");
	}

	public int getCustomServiceOrderSizeByState(String proState,
			String cityCodes) {
		return getAppealListSize(proState, "", cityCodes);
	}

	public int getAppealOrderSizeByState(String proState, String cityCodes) {
		return getAppealListSize(proState, "1", cityCodes);
	}

	/**
	 * 权限认证
	 * @param prodorderID
	 * @param sStaffCode
	 * @return
	 */
	public String getValidataOrder(String appealid,String staffId) {

	     try {
	    	String newId = "";
	    	DataTable dataTable = null;//PRODORDERID
			String sql1
			       = "select count(t.LOCKSTAFFID) as LOCKSTAFFID from tf_appeal t where "+
			         "t.APPEALID=to_number(?) and t.upappealid=0";

			Object[] value = new Object[1];
			value[0] = appealid;

			dataTable = _dac.executeQuery(sql1,value);
			int row = dataTable.getRows().getCount();
			if(row > 0)
				row = dataTable.getRow(0).getInt("LOCKSTAFFID");
			else
				row = 0;

			String lockId = "";
			if(dataTable != null){
				switch(row){
				  case 0:
					  boolean flag = false;
					  String  bakss = appealid;
					  try{
					  if(setAppealLock(appealid,staffId)){
						  //查出被锁定的原定单
						  String finalID = this.getProdHistoryPId(appealid);
						  if(finalID != null && !finalID.equals("")){
							  appealid = finalID;
						  }

						  AppealDAO _pp = getUserLockOrder(appealid,staffId);
					      if(_pp != null){
					    	  _pp.setUpappealid(bakss);
					    	  //生成自己的历史记录单
					    	  if(addLockProdOrder(_pp)){
					    		 newId = getProdHistoryPId(bakss);
					    		 if(newId == null || newId.equals("")){
						    		  _pp = null;
						    		  flag = true;
					    			 return "3";
					    		 }
					    		 return newId;
					    	  }
					    	  else{
					    		  flag = true;
					    		  _pp = null;
						    	  return "2";
					    	  }
					      }else{
					    	  flag = true;
					    	  return "1";
					      }
					   }else{
						   return "0";
					   }
					  }catch(RuntimeException rux){
						  _logger.warn(rux.getMessage(),rux);
						  throw rux;
					  }finally{
						  if(flag){
						     setAppealUnLock(bakss);
						  }

					  }

				  case 1:
					   try{
					     //锁定,是否被自己锁定
					   sql1
				           = "select to_char(t.LOCKSTAFFID) locks from tf_appeal t where "+
				       		 "t.APPEALID=to_number(?) and t.upappealid=0";
					    value = null;
					    value = new Object[1];
						value[0] = appealid;
						dataTable = _dac.executeQuery(sql1,value);
						if(dataTable != null && dataTable.getRows().getCount() > 0)
						    lockId = dataTable.getRow(0).getString("locks");

					    if(lockId != null && lockId.equals(staffId)){
					        newId = getProdHistoryPId(appealid);
					        
					        if(newId == null || newId.equals("")){
				    			 setAppealUnLock(appealid);
				    			 return "3";
				    		 }
					    	return newId;
					    }else{
					    	lockId = getLockMan(lockId);
					    	return "4~"+lockId;
					    }
					   }catch(RuntimeException rux){
						   _logger.warn(rux.getMessage(),rux);
						   throw rux;
					   }

				  default:
					     return "-1";
				}

			}
			  return "-2";
			} catch (Exception e) {
				_logger.warn(e.getCause(),e);
			}
			return "-3";
		}

	 /**
	  * <code>
	  *   获取一张原工单的最新子单
	  *   输入原工单id,跟据id查询到此工单的流水号,
	  *   然后按流水号的降序,取最大时间的子单。
	  * </code>
	  * @param id
	  * @return
	  */
	 public String getProdHistoryPId(String id){
		  try{
			  String sql = "select appealid from "+
			          "(select appealid from tf_appeal "+
					  "where weborder="+
					  "(select weborder from tf_appeal where appealid=?) "+
					  "order by createtime desc) "+
					  "where rownum = 1";
			   DataTable dataTable = _dac.executeQuery(sql,new Object[] {id});
		       if(dataTable!=null && dataTable.getRows().getCount() > 0){
		    	   String ids = dataTable.getRow(0).getString("appealid");
		    	   return ids;
		       }

		    }catch(Exception e){
		    	_logger.warn(e.getMessage(),e);
		    }
		    return "";
		}

	/**
	 * 显示一张用户锁定的受理单详细资料(不跨表)
	 * @param prodorderID
	 * @return
	 */
	public AppealDAO getUserLockOrder(String prodorderID,String lockid){
		try{
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
			DataTable dataTable = null;
			Object[] _object = new Object[1];
			_object[0] = prodorderID;

			String sql = "select APPEALID,UPAPPEALID,USERID,APPEALTYPEID,CITYCODE,ACCOUNTNO,"
					+"SEX,EMAIL,to_char(REQURESTTIME,'yyyy-MM-dd') REQURESTTIME,RELATIONTEL,"
					+"FAILURETEL,APPEALTITLE,APPEACONTENT,APPEALMODE,PROGRESSSTATE,"
					+"OTHERORDER,IMPORTANCEDEGREE,to_char(CREATETIME,'yyyy-mm-dd hh24:mm:ss')"
					+" CREATETIME,to_char(LOCKSTAFFID) LOCKSTAFFID,OUTDATE,BOSOMPROGRESSSTATE,"
					+"FAULTTYPE,CUSTTYPE,WEBORDER,APPEALORDERNUM from tf_appeal  where APPEALID=?";

			dataTable = _dac.executeQuery(sql,_object);
			if(dataTable != null && dataTable.getRows().getCount() >0){
				AppealDAO _prod = new AppealDAO();
				_prod.setAppealid(String.valueOf(dataTable.getRow(0).getInt("APPEALID")));
				_prod.setUpappealid(String.valueOf(dataTable.getRow(0).getInt("UPAPPEALID")));
				_prod.setUserid(dataTable.getRow(0).getString("USERID"));
				_prod.setAppealtypeid(dataTable.getRow(0).getString("APPEALTYPEID"));
				_prod.setCitycode(dataTable.getRow(0).getString("CITYCODE"));
				_prod.setAccountno(dataTable.getRow(0).getString("ACCOUNTNO"));
				_prod.setSex(dataTable.getRow(0).getString("SEX"));
				_prod.setEmail(dataTable.getRow(0).getString("EMAIL"));
				_prod.setRequresttime(dataTable.getRow(0).getString("REQURESTTIME"));
				_prod.setRelationtel(dataTable.getRow(0).getString("RELATIONTEL"));
				_prod.setFailuretel(dataTable.getRow(0).getString("FAILURETEL"));
				_prod.setAppealtitle(dataTable.getRow(0).getString("APPEALTITLE"));
				_prod.setAppeacontent(dataTable.getRow(0).getString("APPEACONTENT"));
				_prod.setAppealmode(dataTable.getRow(0).getString("APPEALMODE"));
				_prod.setProgressstate(dataTable.getRow(0).getString("PROGRESSSTATE"));
				_prod.setOtherorder(dataTable.getRow(0).getString("OTHERORDER"));
				_prod.setImportancedegree(dataTable.getRow(0).getString("IMPORTANCEDEGREE"));
				_prod.setCreatetime(dataTable.getRow(0).getString("CREATETIME"));
				_prod.setLOCKSTAFFID(dataTable.getRow(0).getString("LOCKSTAFFID"));
				_prod.setOutdate(df.format(dataTable.getRow(0).getDate("OUTDATE")));
				_prod.setBOSOMPROGRESSSTATE(dataTable.getRow(0).getString("BOSOMPROGRESSSTATE"));
				_prod.setFAULTTYPE(dataTable.getRow(0).getString("FAULTTYPE"));
				_prod.setCUSTTYPE(dataTable.getRow(0).getString("CUSTTYPE"));
				_prod.setWEBORDER(dataTable.getRow(0).getString("WEBORDER"));
				_prod.setAPPEALORDERNUM(dataTable.getRow(0).getString("APPEALORDERNUM"));

			  return _prod;
			}
		}catch(RuntimeException rux){
			_logger.warn(rux.getMessage(),rux);
			//throw rux;
		}catch(Exception e){
			_logger.warn(e.getMessage(),e);
		}
		return null;
	}

	public String getPerentID(String appealid){
		try{
			String sql = "select t.upappealid from tf_appeal t " +
					    "where t.appealid=?";

			Object[] _object = new Object[1];
			_object[0] = appealid;

			DataTable dataTable = _dac.executeQuery(sql,_object);
			if(dataTable != null && dataTable.getRows().getCount() > 0)
			{
				String upid = dataTable.getRow(0).getString("upappealid");
				return (upid == null || upid.equals("0")) ? appealid : upid;
			}

		}catch(Exception ex){
			_logger.warn(ex.getMessage(),ex);
		}
		return "";
	}

	/**
	 * 添加一条历史记录
	 * @param _prod
	 * @return productid
	 */
	public boolean addLockProdOrder(AppealDAO _prod){
		try{

		  StringBuffer sql = new StringBuffer();
		  sql.append("insert into tf_appeal(APPEALID,UPAPPEALID,USERID,APPEALTYPEID");
		  sql.append(",CITYCODE,ACCOUNTNO,SEX,EMAIL,REQURESTTIME,RELATIONTEL,FAILURETEL,");
		  sql.append("APPEALTITLE,APPEACONTENT,APPEALMODE,PROGRESSSTATE,OTHERORDER,");
		  sql.append("IMPORTANCEDEGREE,CREATETIME,LOCKSTAFFID,OUTDATE,");
		  sql.append("BOSOMPROGRESSSTATE,FAULTTYPE,CUSTTYPE,WEBORDER,APPEALORDERNUM) ");
		  sql.append("values(seq_appealid.nextval,to_number(?),?,to_number(?),?,?,?,?,");
		  sql.append("to_date(?,'yyyy-mm-dd'),?,?,?,?,?,?,?,?,");
		  sql.append("sysdate,to_number(?),to_date(?,'yyyy-mm-dd hh24:mi'),?,?,?,?,?)");

			Object[] _object = new Object[23];
			_object[0]=_prod.getUpappealid();
			_object[1]=_prod.getUserid();
			_object[2]=_prod.getAppealtypeid();
			_object[3]=_prod.getCitycode();
			_object[4]=_prod.getAccountno();
			_object[5]=_prod.getSex();
			_object[6]=_prod.getEmail();
			_object[7]=_prod.getRequresttime();
			_object[8]=_prod.getRelationtel();
			_object[9]=_prod.getFailuretel();
			_object[10]=_prod.getAppealtitle();
			_object[11]=_prod.getAppeacontent();
			_object[12]=_prod.getAppealmode();
			_object[13]=_prod.getProgressstate();
			_object[14]=_prod.getOtherorder();
			_object[15]=_prod.getImportancedegree();
			_object[16]=_prod.getLOCKSTAFFID();
			_object[17]=_prod.getOutdate();
			_object[18]=_prod.getBOSOMPROGRESSSTATE();
			_object[19]=_prod.getFAULTTYPE();
			_object[20]=_prod.getCUSTTYPE();
			_object[21]=_prod.getWEBORDER();
			_object[22]=_prod.getAPPEALORDERNUM();
			
			int i = _dac.executeUpdate(sql.toString(),1000,_object);
			if(i > 0)
			   return true;
			    
		}catch(Exception e){
			_logger.warn(e.getMessage(),e);
		}
	
		return false;
	}

	/**
	 * wull 2007-1-29修改。工单Email地址改为取tf_appeal表 
	 * 受理单详细信息
	 *
	 * @param APPEALID
	 *            受理单ID
	 * @return
	 */
	public DataTable getAppealDeail(String appealid) {
		StringBuffer _sb = new StringBuffer();
       
		_sb.append("SELECT APPEALID,APPEALTYPENAME,a.USERID,f.NAME,");
		_sb.append("a.APPEALTYPEID,a.CITYCODE,a.ACCOUNTNO,a.APPEALMODE,");
		_sb.append("to_char(a.REQURESTTIME,'yyyymmdd hh24:mi:ss') REQURESTTIME,a.RELATIONTEL,a.FAILURETEL,a.appealtitle,");
		_sb.append("decode(a.PROGRESSSTATE,'1','等待处理','2','处理中',3,'处理结束','待处理') PROGRESSSTATE,");
		_sb.append("a.APPEACONTENT,a.OTHERORDER,a.LOCKSTAFFID,a.IMPORTANCEDEGREE,a.CREATETIME,");
		_sb.append("to_char(a.OUTDATE,'yyyy-MM-dd') OUTDATE,");
		_sb.append("decode(a.BOSOMPROGRESSSTATE,'1','待处理','2','转派','3','暂存','8','作废',9,'完成','待处理') BOSOMPROGRESSSTATE,");
		_sb.append("a.FAULTTYPE,a.CUSTTYPE,a.WEBORDER,a.APPEALORDERNUM,a.SEX ,a.EMAIL,f.AREACODE,b.CITYNAME ");
		_sb.append(" FROM  tf_custinfoweb f,tf_appeal a,td_appealtype c,td_city b ");
		_sb.append(" where a.userid       = f.userid");
		_sb.append(" and   a.appealtypeid = c.appealtypeid");
		_sb.append(" and   a.citycode     = b.citycode");
		_sb.append(" and   a.APPEALID = ?");
		
		try{
		return _dac.executeQuery(_sb.toString(),new Object[]{appealid});
		}catch(java.sql.SQLException sqlx){
			_logger.warn("获取故障,建议,投诉单详细信息异常:" + sqlx.getMessage());
		}
		return null;
	
	}

	public static boolean setAppealLock(String APPEALID, String staffID) {
		String sql = "update tf_appeal t set t.lockstaffid=to_number(?) where "
                     +"t.appealid=to_number(?) and  t.lockstaffid is null and t.upappealid=0";
		Object[] value = new Object[2];
		value[0] = staffID;
		value[1] = APPEALID;
		try {
			_dac.executeUpdate(sql, 10000, value);

			return true;
		} catch (Exception e) {
			_logger.warn("Appeal 锁定失败 " + e.getMessage());
		}
        return false;
	}

	/**
	 * <code>解锁单张工单</code>
	 * @param APPEALID
	 * @return
	 */
	public static boolean setAppealUnLock(String APPEALID){
		String sql = "update tf_appeal t set LOCKSTAFFID=null where APPEALID =to_number(?) " +
				     "and UPAPPEALID=0";
		Object[] value = new Object[1];
		value[0] = APPEALID;
		try {
			_dac.executeUpdate(sql, 10000, value);

			return true;
		} catch (Exception e) {
			_logger.warn("Appeal 解锁失败 " + e.getMessage());
		}
		return false;
	}
	
	/**
	 * <code>解锁这工号锁定的所有工单</code>
	 * @param staffid
	 * @return
	 */
	public static boolean setAppealUnlockAll(String staffid){
		String sql = "update tf_appeal t set t.LOCKSTAFFID=null where t.LOCKSTAFFID=? and t.upappealid=0";
		Object[] value = new Object[1];
		value[0] = staffid;
		try {
			int i = _dac.executeUpdate(sql, 20000, value);
			if (i > 0) 
				return true;
			
		} catch (Exception e) {
			_logger.warn("Appeal 解锁失败 " + e.getMessage());
		}

		return false;
	}
	
	/**
	 * <p>故障单归档</p>
	 *

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -