package com.cabletech.business.satisfy.condition;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
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.satisfy.model.Satisfaction;
import com.cabletech.common.base.SysConstant;
import com.cabletech.common.util.Page;
/**
* 客户满意度评价查询条件生成器接口实现
*
* @author 杨隽 2012-04-21 创建
* @author 杨隽 2012-04-26 添加getBusinessTableDataInCondition()方法
*
*/
@Component
public class SatisfactionConditionGenerateImpl implements ConditionGenerate {
// 页面分页器属性
@SuppressWarnings("rawtypes")
private Page page = new Page(SysConstant.DEFAULT_PAGE_SIZE);
// 业务数据表查询条件存放缓冲区
private StringBuffer businessDataCondition;
/**
* 根据查询参数来设置查询的sql条件语句
*
* @param parameter
* QueryParameter 查询参数
*/
@Override
public void setQuerySql(QueryParameter parameter) {
businessDataCondition = new StringBuffer("");
putQueryCondition(parameter);
}
/**
* 获取排序条件sql语句
*
* @return String 排序条件sql语句
*/
@Override
public String getOrder() {
// TODO Auto-generated method stub
return " ORDER BY business_table.REPLYTIME DESC,business_table.ID DESC ";
}
/**
* 获取变动连接表单数据信息的sql语句
*
* @return String 变动连接表单数据信息的sql语句
*/
@Override
public String getJoinTableSql() {
// TODO Auto-generated method stub
return "";
}
/**
* 获取业务表单查询条件sql语句
*
* @return String 业务表单查询条件sql语句
*/
@Override
public String getBusinessTableDataCondition() {
// TODO Auto-generated method stub
return businessDataCondition.toString();
}
/**
* 获取业务表单内联查询条件sql语句
*
* @return String 业务表单内联查询条件sql语句
*/
public String getBusinessTableDataInCondition() {
return "";
}
@SuppressWarnings("rawtypes")
@Override
public Page getPage() {
// TODO Auto-generated method stub
return page;
}
@SuppressWarnings("rawtypes")
@Override
public void setPage(Page page) {
// TODO Auto-generated method stub
this.page = page;
}
/**
* 根据页面查询条件获取业务数据表查询条件组成sql
*
* @param parameter
* QueryParameter 页面查询条件
*/
private void putQueryCondition(QueryParameter parameter) {
// TODO Auto-generated method stub
Satisfaction satisfaction = (Satisfaction) parameter.getEntity();
UserInfo user = parameter.getUser();
parameter.setAlias("ws");
parameter.setColumnName("TASK_TYPE");
parameter.setValue(satisfaction.getTaskType());
businessDataCondition.append(ConditionGenerateUtils
.getConditionEqualByAndLogicOperator(parameter));
parameter.setColumnName("SATISFACTION");
parameter.setValue(satisfaction.getSatisfaction());
businessDataCondition.append(ConditionGenerateUtils
.getConditionEqualByAndLogicOperator(parameter));
putDateCondition(satisfaction);
putRegionCondition(satisfaction, user);
putOrgCondition(satisfaction, user);
}
/**
* 根据页面中的日期查询条件生成业务数据表的日期查询条件sql
*
* @param satisfaction
* Satisfaction 页面查询条件
*/
private void putDateCondition(Satisfaction satisfaction) {
QueryParameter parameter = new QueryParameter();
parameter.setAlias("ws");
parameter.setColumnName("SENDTIME");
parameter.setValue(satisfaction.getReplyTimeStart());
parameter.setOperator(ConditionGenerateUtils.GE_OPERATOR);
businessDataCondition.append(ConditionGenerateUtils
.getConditionDateByAndLogicOperator(parameter));
parameter.setValue(satisfaction.getReplyTimeEnd());
parameter.setOperator(ConditionGenerateUtils.LT_OPERATOR);
businessDataCondition.append(ConditionGenerateUtils
.getConditionNextDateByAndLogicOperator(parameter));
}
/**
* 根据页面中的区域查询条件生成业务数据表的区域查询条件sql
*
* @param satisfaction
* Satisfaction 页面查询条件
* @param user
* UserInfo 当前登录用户信息
*/
private void putRegionCondition(Satisfaction satisfaction, UserInfo user) {
QueryParameter parameter = new QueryParameter();
String regionId = "";
if (!QueryParameter.isNull(user)) {
regionId = user.getRegionId();
}
if (StringUtils.isNotBlank(satisfaction.getRegionId())) {
regionId = satisfaction.getRegionId();
}
parameter.setAlias("vr");
parameter.setColumnName("REGIONID");
parameter.setValue(regionId);
businessDataCondition.append(BusinessConditionUtils
.getRegionCondition(parameter));
}
/**
* 根据页面中的组织查询条件生成业务数据表的组织查询条件sql
*
* @param satisfaction
* Satisfaction 页面查询条件
* @param user
* UserInfo 当前登录用户信息
*/
private void putOrgCondition(Satisfaction satisfaction, UserInfo user) {
QueryParameter parameter = new QueryParameter();
String orgId = "";
if (!QueryParameter.isNull(user) && user.isContractor()) {
orgId = user.getOrgId();
}
if (StringUtils.isNotBlank(satisfaction.getOrgId())) {
orgId = satisfaction.getOrgId();
}
parameter.setAlias("vp");
parameter.setColumnName("ORGID");
parameter.setValue(orgId);
businessDataCondition.append(BusinessConditionUtils
.getOrgCondition(parameter));
}
}