package com.norteksoft.wf.engine.dao; import java.util.List; import org.springframework.stereotype.Repository; import com.norteksoft.product.orm.hibernate.HibernateDao; import com.norteksoft.task.base.enumeration.TaskProcessingMode; import com.norteksoft.wf.engine.entity.HistoryOpinion; @Repository public class HistoryOpinionDao extends HibernateDao<HistoryOpinion, Long>{ public List<HistoryOpinion> getOpinions(Long taskId, Long companyId) { StringBuilder hql = new StringBuilder("from HistoryOpinion o where o.taskId=? and o.companyId=? order by o.createdTime"); return find(hql.toString(), taskId,companyId); } public List<HistoryOpinion> getOpinionsByInstanceId(String workflowId , Long companyId) { return find("from HistoryOpinion o where o.workflowId=? and o.companyId=? order by o.createdTime", workflowId,companyId); } public void deleteAllHistoryOpinionsByWorkflowInstanceId(String workflowId,Long companyId){ createQuery("delete from HistoryOpinion o where o.workflowId = ? and o.companyId = ? ", workflowId,companyId).executeUpdate(); } public List<HistoryOpinion> getHistoryOpinionsBytaskId(Long taskId, String loginName) { return find("from HistoryOpinion o where o.taskId=? and o.creator=? order by o.createdTime", taskId,loginName); } public List<HistoryOpinion> getHistoryOpinionsByInstanceId(String workflowId, Long companyId) { return find("from HistoryOpinion o where o.workflowId=? and o.companyId=? order by o.createdTime", workflowId,companyId); } public List<HistoryOpinion> getHistroyOpinions(String workflowId, Long companyId, TaskProcessingMode taskMode) { StringBuilder hql = new StringBuilder("from HistoryOpinion o where o.workflowId=? and o.companyId=? and o.taskMode=? order by o.createdTime"); return find(hql.toString(), workflowId,companyId,taskMode); } public List<HistoryOpinion> getHistoryOpinionsExceptTaskMode( String workflowId, Long companyId, TaskProcessingMode taskMode) { StringBuilder hql = new StringBuilder("from HistoryOpinion o where o.workflowId=? and o.companyId=? and o.taskMode<>? order by o.createdTime"); return find(hql.toString(), workflowId,companyId,taskMode); } public List<HistoryOpinion> getHistoryOpinions(String workflowId, Long companyId, String taskName) { StringBuilder hql = new StringBuilder("from HistoryOpinion o where o.workflowId=? and o.companyId=? and o.taskName=? order by o.createdTime"); return find(hql.toString(), workflowId,companyId,taskName); } public List<HistoryOpinion> getHistoryOpinions(String workflowId, Long companyId, List<String> taskNames) { StringBuilder hql = new StringBuilder("from HistoryOpinion o where o.workflowId=? and o.companyId=?"); Object[] objs = new Object[taskNames.size()+2]; if(taskNames.size()>0)hql.append(" and ("); boolean isFirst=true; objs[0]=workflowId; objs[1]=companyId; for(int i=0;i<taskNames.size();i++){ if(!isFirst) hql.append(" or "); hql.append(" o.taskName=?" ); isFirst=false; objs[i+2]=taskNames.get(i); } if(taskNames.size()>0)hql.append(")"); hql.append(" order by o.createdTime"); return find(hql.toString(),objs); } public List<HistoryOpinion> getHistoryOpinionsExceptTaskName( String workflowId, Long companyId, List<String> taskNames) { StringBuilder hql = new StringBuilder("from HistoryOpinion o where o.workflowId=? and o.companyId=? "); Object[] objs = new Object[taskNames.size()+2]; if(taskNames.size()>0)hql.append(" and ("); boolean isFirst=true; objs[0]=workflowId; objs[1]=companyId; for(int i=0;i<taskNames.size();i++){ if(!isFirst) hql.append(" and "); hql.append(" o.taskName!=?" ); isFirst=false; objs[i+2]=taskNames.get(i); } if(taskNames.size()>0)hql.append(")"); hql.append(" order by o.createdTime"); return find(hql.toString(),objs); } public List<HistoryOpinion> getHistoryOpinionsByCustomField( String workflowId, String customField) { String hql = "from HistoryOpinion d where d.workflowId=? and d.customField=? order by d.createdTime desc"; return this.find(hql, workflowId,customField); } public List<HistoryOpinion> getHistoryOpinionsExceptCustomField( String workflowId, String customField) { String hql = "from Opinion d where HistoryOpinion=? and (d.customField<>? or d.customField is null) order by d.createdTime desc"; return this.find(hql, workflowId,customField); } public HistoryOpinion getHistoryOpinionsById(Long opinionId) { return findUnique("from HistoryOpinion o where o.id=?", opinionId); } public List<HistoryOpinion> getHistoryOpinionsByTacheCode( String workflowId, Long companyId, List<String> tacheCodes) { StringBuilder hql = new StringBuilder("from HistoryOpinion o where o.workflowId=? and o.companyId=?"); Object[] objs = new Object[tacheCodes.size()+2]; objs[0]=workflowId; objs[1]=companyId; if(tacheCodes.size()>0)hql.append(" and ("); boolean isFirst=true; int i=2; for(String tacheCode:tacheCodes){ if(!isFirst) hql.append(" or "); hql.append(" o.taskCode=?" ); isFirst=false; objs[i++]=tacheCode; } if(tacheCodes.size()>0)hql.append(")"); hql.append(" order by o.createdTime"); return find(hql.toString(),objs); } public List<HistoryOpinion> getHistoryOpinionsByTaskName(String workflowId, Long companyId, List<String> taskNames) { StringBuilder hql = new StringBuilder("from HistoryOpinion o where o.workflowId=? and o.companyId=?"); Object[] objs = new Object[taskNames.size()+2]; objs[0]=workflowId; objs[1]=companyId; if(taskNames.size()>0)hql.append(" and ("); boolean isFirst=true; int i=2; for(String tacheCode:taskNames){ if(!isFirst) hql.append(" or "); hql.append(" o.taskName=?" ); isFirst=false; objs[i++]=tacheCode; } if(taskNames.size()>0)hql.append(")"); hql.append(" and o.taskCode=null order by o.createdTime"); return find(hql.toString(),objs); } }