package com.cabletech.business.workflow.wmaintain.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.wmaintain.model.WMaintainPlan; import com.cabletech.common.base.SysConstant; import com.cabletech.common.util.Page; /** * 查询条件生成器基类 * * @author 杨隽 2012-04-12 创建 * @author 杨隽 2012-04-23 添加putWplanQueryCondition()方法 * @author 杨隽 2012-04-26 添加getBusinessTableDataInCondition()方法 * @author 杨隽 2012-04-27 添加putUserCondition()方法 * @author 杨隽 2012-04-27 修改putQueryCondition()方法(修改“创建人”为模糊查询) * */ public abstract class BaseConditionGenerate implements ConditionGenerate { // 主体业务数据查询条件缓冲区 protected StringBuffer businessDataCondition = new StringBuffer(""); // 级联基础表数据查询条件缓冲区 protected StringBuffer joinDataCondition = new StringBuffer(""); // 内部业务数据查询条件缓冲区 protected StringBuffer innerDataCondition = 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("wp"); parameter.setColumnName("CREATER"); parameter.setValue(user.getPersonId()); return ConditionGenerateUtils .getConditionEqualByAndLogicOperator(parameter); } /** * 获取业务表单查询条件sql语句 * * @return String 业务表单查询条件sql语句 */ @Override public String getBusinessTableDataCondition() { // TODO Auto-generated method stub return businessDataCondition.toString(); } /** * 获取业务表单内联查询条件sql语句 * * @return String 业务表单内联查询条件sql语句 */ public String getBusinessTableDataInCondition() { StringBuffer conditionBuffer = new StringBuffer(""); conditionBuffer.append(" AND NOT EXISTS ( "); conditionBuffer.append(" SELECT wr.PATROLRECORD_ID "); conditionBuffer.append(" FROM WMAINTAIN_RESULT wr "); conditionBuffer .append(" JOIN WMAINTAIN_SITE ws ON wr.MAINTAIN_ID=ws.ID "); conditionBuffer.append(" JOIN WMAINTAIN_PLAN wp ON wp.ID=ws.PLAN_ID "); conditionBuffer.append(" WHERE wpr.ID=wr.PATROLRECORD_ID "); conditionBuffer.append(innerDataCondition); conditionBuffer.append(" ) "); return conditionBuffer.toString(); } @Override @SuppressWarnings("rawtypes") public Page getPage() { // TODO Auto-generated method stub return page; } @Override @SuppressWarnings("rawtypes") public void setPage(Page page) { this.page = page; } /** * 将公用的维修作业计划查询条件存放到查询条件中 * * @param parameter * QueryParameter 查询条件参数 */ protected void putQueryCondition(QueryParameter parameter) { WMaintainPlan plan = (WMaintainPlan) parameter.getEntity(); if (!QueryParameter.isNull(plan)) { parameter.setAlias("vu"); parameter.setColumnName("username"); parameter.setValue(plan.getCreater()); businessDataCondition.append(ConditionGenerateUtils .getConditionLikeByAndLogicOperator(parameter)); putPlanCondition(parameter); putDateCondition(parameter); putRegionCondition(parameter); putUserCondition(parameter); } } /** * 获取无线资源计划查询条件sql存放到缓冲区 * * @param parameter * QueryParameter 查询条件参数 */ protected void putWplanQueryCondition(QueryParameter parameter) { WMaintainPlan plan = (WMaintainPlan) parameter.getEntity(); parameter.setColumnName("start_time"); parameter.setValue(plan.getCreateDateMin()); parameter.setOperator(ConditionGenerateUtils.GE_OPERATOR); businessDataCondition.append(ConditionGenerateUtils .getConditionDateByAndLogicOperator(parameter)); parameter.setValue(plan.getCreateDateMax()); parameter.setOperator(ConditionGenerateUtils.LT_OPERATOR); businessDataCondition.append(ConditionGenerateUtils .getConditionNextDateByAndLogicOperator(parameter)); parameter.setColumnName("plan_id"); parameter.setValue(plan.getWplanId()); businessDataCondition.append(ConditionGenerateUtils .getConditionEqualByAndLogicOperator(parameter)); parameter.setColumnName("patrol_group_id"); parameter.setValue(plan.getPatrolGroup()); businessDataCondition.append(ConditionGenerateUtils .getConditionEqualByAndLogicOperator(parameter)); parameter.setColumnName("business_type"); parameter.setValue(plan.getBusinessType()); businessDataCondition.append(ConditionGenerateUtils .getConditionEqualByAndLogicOperator(parameter)); } /** * 将计划状态查询条件放到查询条件缓冲区中 * * @param value * String 计划状态值 * @param isEqual * boolean 是否进行等于判断 */ protected void putPlanStateCondition(String value, boolean isEqual) { QueryParameter parameter = new QueryParameter(); parameter.setAlias("wp"); parameter.setColumnName("PLAN_STATE"); parameter.setValue(value); if (isEqual) { businessDataCondition.append(ConditionGenerateUtils .getConditionEqualByAndLogicOperator(parameter)); } else { businessDataCondition.append(ConditionGenerateUtils .getConditionNotEqualByAndLogicOperator(parameter)); } } /** * 将计划查询条件放到查询条件缓冲区中 * * @param parameter * QueryParameter 查询条件参数 */ private void putPlanCondition(QueryParameter parameter) { WMaintainPlan plan = (WMaintainPlan) parameter.getEntity(); parameter.setAlias("wp"); parameter.setColumnName("business_type"); parameter.setValue(plan.getBusinessType()); businessDataCondition.append(ConditionGenerateUtils .getConditionEqualByAndLogicOperator(parameter)); businessDataCondition.append(BusinessConditionUtils .getBusinessTypeCondition(parameter)); parameter.setColumnName("plan_name"); parameter.setValue(plan.getPlanName()); businessDataCondition.append(ConditionGenerateUtils .getConditionLikeByAndLogicOperator(parameter)); parameter.setColumnName("plan_state"); parameter.setValue(plan.getPlanState()); businessDataCondition.append(ConditionGenerateUtils .getConditionEqualByAndLogicOperator(parameter)); } /** * 将区域查询条件放到查询条件缓冲区中 * * @param parameter * QueryParameter 查询参数 */ private void putRegionCondition(QueryParameter parameter) { WMaintainPlan plan = (WMaintainPlan) parameter.getEntity(); parameter.setAlias("vp"); parameter.setColumnName("regionid"); parameter.setValue(plan.getRegionId()); businessDataCondition.append(BusinessConditionUtils .getRegionCondition(parameter)); } /** * 将当前登录用户查询条件放到查询条件缓冲区中 * * @param parameter * QueryParameter 查询参数 */ private void putUserCondition(QueryParameter parameter) { UserInfo userInfo = parameter.getUser(); if (QueryParameter.isNull(userInfo)) { return; } if (userInfo.isCityContractor()) { parameter.setAlias("vp"); parameter.setColumnName("parentid"); parameter.setValue(userInfo.getOrgId()); businessDataCondition.append(BusinessConditionUtils .getOrgCondition(parameter)); } if (userInfo.isCityMobile()) { parameter.setAlias("vp"); parameter.setColumnName("regionid"); parameter.setValue(userInfo.getRegionId()); businessDataCondition.append(BusinessConditionUtils .getRegionCondition(parameter)); } } /** * 将日期查询条件放到查询条件缓冲区中 * * @param parameter * QueryParameter 查询条件参数 */ private void putDateCondition(QueryParameter parameter) { WMaintainPlan plan = (WMaintainPlan) parameter.getEntity(); parameter.setColumnName("create_date"); parameter.setValue(plan.getCreateDateMin()); parameter.setOperator(ConditionGenerateUtils.GE_OPERATOR); businessDataCondition.append(ConditionGenerateUtils .getConditionDateByAndLogicOperator(parameter)); parameter.setColumnName("create_date"); parameter.setValue(plan.getCreateDateMax()); parameter.setOperator(ConditionGenerateUtils.LT_OPERATOR); businessDataCondition.append(ConditionGenerateUtils .getConditionNextDateByAndLogicOperator(parameter)); } }