package com.example.expense.product.dao; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.stereotype.Repository; import com.example.expense.entity.EmsProduct; import com.norteksoft.acs.base.enumeration.LogicOperator; import com.norteksoft.product.api.ApiFactory; import com.norteksoft.product.orm.Page; import com.norteksoft.product.orm.hibernate.HibernateDao; import com.norteksoft.product.util.ContextUtils; import com.norteksoft.product.util.PropUtils; @Repository public class EmsProductDao extends HibernateDao<EmsProduct, Long> { public Page<EmsProduct> list(Page<EmsProduct> page){ return findPage(page, "from EmsProduct p"); } public Page<EmsProduct> listWidgets(Page<EmsProduct> page){ return findPage(page, "from EmsProduct p where p.creator=?",ContextUtils.getLoginName()); } public List<EmsProduct> getAllProduct(){ return find("from EmsProduct p order by productNumber asc"); } public Page<EmsProduct> search(Page<EmsProduct> page) { return searchPageByHql(page, "from EmsProduct p "); } public void decreaseIndex(Integer start, Integer end) { createQuery("update EmsProduct formView set formView.displayIndex=formView.displayIndex-1 where formView.displayIndex>? and formView.displayIndex<=?", start,end).executeUpdate(); } public void increaseIndex(Integer start, Integer end) { createQuery("update EmsProduct formView set formView.displayIndex=formView.displayIndex+1 where formView.displayIndex>=? and formView.displayIndex<?", start,end).executeUpdate(); } public void updateIndex(Integer originalIndex, Integer newIndex) { createQuery("update EmsProduct formView set formView.displayIndex=? where formView.displayIndex=?", newIndex,originalIndex).executeUpdate(); } public Map<String,Object> getAmountTotal(List<String> names) { StringBuilder sql=new StringBuilder(); sql.append("select "); for(int i=0;i<names.size();i++){ if(i>0){ sql.append(","); } sql.append("sum(p."); sql.append(names.get(i)); sql.append(")"); } sql.append(" from EmsProduct p "); Object[] values=findUnique(sql.toString()); Map<String,Object> totalValues=new HashMap<String, Object>(); for(int i=0;i<names.size();i++){ totalValues.put(names.get(i), values[i]); } return totalValues; } public Integer getMaxIndex() { return findUnique("select Max(o.displayIndex) from EmsProduct o "); } public void decreaseIndex(Integer displayIndex) { createQuery("update EmsProduct o set o.displayIndex=o.displayIndex-1 where o.displayIndex>? ", displayIndex).executeUpdate(); } public Page<EmsProduct> searchDataRuleList(Page<EmsProduct> page) { List<String> codes = new ArrayList<String>(); codes.add("PRODUCT_RULE1"); codes.add("PRODUCT_RULE2"); String hql = "from EmsProduct o where o.companyId=? "; if("AND".endsWith(PropUtils.getProp("product.data.rule.link"))){ ApiFactory.getDataRuleService().getConditionResult(hql, codes, LogicOperator.AND, ContextUtils.getCompanyId()); }else{ ApiFactory.getDataRuleService().getConditionResult(hql, codes, LogicOperator.OR, ContextUtils.getCompanyId()); } return searchPageByHql(page,hql); } }