package com.cabletech.business.workflow.fault.condition;
import com.cabletech.baseinfo.business.entity.UserInfo;
import com.cabletech.business.base.condition.BusinessConditionUtils;
import com.cabletech.business.base.condition.ConditionGenerate;
import com.cabletech.business.base.condition.ConditionGenerateUtils;
import com.cabletech.business.base.condition.QueryParameter;
import com.cabletech.business.workflow.fault.condition.parameter.FaultQueryParameter;
import com.cabletech.common.base.SysConstant;
import com.cabletech.common.util.Page;
/**
* 故障派单查询条件生成器接口基类
*
* @author 杨隽 2012-02-08 创建
* @author 杨隽 2012-02-09 添加getConditionSqlByParameter()方法
* @author 杨隽 2012-04-26 添加getBusinessTableDataInCondition()方法
*
*/
public abstract class BaseConditionGenerate implements ConditionGenerate {
// 业务数据sql查询条件缓冲区
protected StringBuffer businessDataCondition = new StringBuffer("");
// 缺省页面分页参数
@SuppressWarnings("rawtypes")
protected Page page = new Page(SysConstant.DEFAULT_PAGE_SIZE);
/**
* 获取当前用户创建的查询条件sql
*
* @param user
* UserInfo 当前用户信息
* @return String 当前用户创建的查询条件sql
*/
public String getSelfCreatedCondition(UserInfo user) {
QueryParameter parameter = new QueryParameter();
parameter.setAlias("t");
parameter.setColumnName("CREATER");
parameter.setValue(user.getPersonId());
return ConditionGenerateUtils
.getConditionEqualByAndLogicOperator(parameter);
}
/**
* 获取业务表单查询条件sql语句
*
* @return String 业务表单查询条件sql语句
*/
@Override
public String getBusinessTableDataCondition() {
// TODO Auto-generated method stub
StringBuffer conditionBuffer = new StringBuffer("");
conditionBuffer.append(businessDataCondition.toString());
return conditionBuffer.toString();
}
/**
* 获取业务表单内联查询条件sql语句
*
* @return String 业务表单内联查询条件sql语句
*/
public String getBusinessTableDataInCondition() {
return "";
}
/**
* 获取分页信息数据
*
* @return Page 分页信息数据
*/
@Override
@SuppressWarnings("rawtypes")
public Page getPage() {
// TODO Auto-generated method stub
return page;
}
/**
* 设置分页信息数据
*
* @param page
* Page 分页信息数据
*/
@Override
@SuppressWarnings("rawtypes")
public void setPage(Page page) {
this.page = page;
}
/**
* 根据查询条件参数生成查询条件的条件sql
*
* @param parameter
* FaultQueryParameter 查询条件参数
* @param queryCondition
* StringBuffer 查询条件sql存放缓冲区
*/
public void getConditionSqlByParameter(FaultQueryParameter parameter,
StringBuffer queryCondition) {
parameter.setColumnName("BUSINESS_TYPE");
parameter.setValue(parameter.getBusinessType());
queryCondition.append(ConditionGenerateUtils
.getConditionEqualByAndLogicOperator(parameter));
queryCondition.append(BusinessConditionUtils
.getBusinessTypeCondition(parameter));
parameter.setColumnName("TROUBLE_TITLE");
parameter.setValue(parameter.getTroubleTitle());
queryCondition.append(ConditionGenerateUtils
.getConditionLikeByAndLogicOperator(parameter));
parameter.setColumnName("EOMS_ID");
parameter.setValue(parameter.getEomsId());
queryCondition.append(ConditionGenerateUtils
.getConditionLikeByAndLogicOperator(parameter));
parameter.setColumnName("ADDRESS");
parameter.setValue(parameter.getAddress());
queryCondition.append(ConditionGenerateUtils
.getConditionLikeByAndLogicOperator(parameter));
parameter.setColumnName("STATION_ID");
parameter.setValue(parameter.getStationId());
queryCondition.append(ConditionGenerateUtils
.getConditionEqualByAndLogicOperator(parameter));
parameter.setColumnName("IS_INSTANCY");
parameter.setValue(parameter.getIsInstancy());
queryCondition.append(ConditionGenerateUtils
.getConditionEqualByAndLogicOperator(parameter));
parameter.setColumnName("FIND_TYPE");
parameter.setValue(parameter.getFindType());
queryCondition.append(ConditionGenerateUtils
.getConditionEqualByAndLogicOperator(parameter));
putDateCondition(parameter, queryCondition);
putRegionCondition(parameter, queryCondition);
parameter.setAlias("rr");
parameter.setColumnName("NAME");
parameter.setValue(parameter.getResourceName());
queryCondition.append(ConditionGenerateUtils
.getConditionLikeByAndLogicOperator(parameter));
}
/**
* 将区域查询条件放到查询条件sql存放缓冲区
*
* @param parameter
* FaultQueryParameter 查询条件参数
* @param queryCondition
* StringBuffer 查询条件sql存放缓冲区
*/
private void putRegionCondition(FaultQueryParameter parameter,
StringBuffer queryCondition) {
if (!QueryParameter.isNull(parameter.getUser())) {
String regionId = parameter.getUser().getRegionId();
parameter.setAlias("rr");
parameter.setColumnName("REGIONID");
parameter.setValue(regionId);
queryCondition.append(BusinessConditionUtils
.getRegionCondition(parameter));
}
}
/**
* 将日期查询条件放到查询条件sql存放缓冲区
*
* @param parameter
* FaultQueryParameter 查询条件参数
* @param queryCondition
* StringBuffer 查询条件sql存放缓冲区
*/
private void putDateCondition(FaultQueryParameter parameter,
StringBuffer queryCondition) {
parameter.setColumnName("TROUBLE_TIME");
parameter.setValue(parameter.getTroubleTimeStart());
parameter.setOperator(ConditionGenerateUtils.GE_OPERATOR);
queryCondition.append(ConditionGenerateUtils
.getConditionDateByAndLogicOperator(parameter));
parameter.setColumnName("TROUBLE_TIME");
parameter.setValue(parameter.getTroubleTimeEnd());
parameter.setOperator(ConditionGenerateUtils.LT_OPERATOR);
queryCondition.append(ConditionGenerateUtils
.getConditionNextDateByAndLogicOperator(parameter));
}
/**
* 传入参数判断
*
* @param parameter
* QueryParameter 传入的参数
* @return boolean 传入参数是否为空
*/
protected boolean preSetParameter(QueryParameter parameter) {
if (QueryParameter.isNull(parameter)) {
return false;
}
if (!QueryParameter.IS_QUERY_PARAMETER.equals(parameter.getIsQuery())) {
parameter.clear();
}
return true;
}
}