package com.shlanbao.tzsc.pms.equ.runtime.service.impl; import java.util.ArrayList; import java.util.Hashtable; import java.util.Iterator; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.shlanbao.tzsc.base.dao.BaseDaoI; import com.shlanbao.tzsc.base.mapping.SchStatOutput; import com.shlanbao.tzsc.base.model.DataGrid; import com.shlanbao.tzsc.base.model.PageParams; import com.shlanbao.tzsc.base.service.BaseService; import com.shlanbao.tzsc.pms.equ.effective.beans.EffectiveGraphBean; import com.shlanbao.tzsc.pms.equ.runtime.beans.EqpRunTimeBean; import com.shlanbao.tzsc.pms.equ.runtime.service.EqpRunTimeServiceI; import com.shlanbao.tzsc.utils.tools.DateUtil; import com.shlanbao.tzsc.utils.tools.MathUtil; import com.shlanbao.tzsc.utils.tools.StringUtil; /** * * @ClassName: EqpRunTimeServiceImpl * @Description: 设备运行统计service实现类 * @author luo * @date 2015年3月5日 下午3:44:56 * */ @Service public class EqpRunTimeServiceImpl extends BaseService implements EqpRunTimeServiceI{ @Autowired private BaseDaoI baseDao; /*@Autowired private BaseDaoI baseDaoI;*/ /** * 设备运行统计查询方法 */ @Override public DataGrid queryEqpRunTimeByBean(EqpRunTimeBean bean, PageParams pageParams) { String hql = "from SchStatOutput o where 1=1 and o.del=0 "; StringBuffer params = new StringBuffer(); if(StringUtil.notNull(bean.getEqpName())){ params.append(" and o.schWorkorder.mdEquipment.equipmentName like '%"+ bean.getEqpName() +"%'"); } if(StringUtil.notNull(bean.getEqpType())){ params.append(" and o.schWorkorder.mdEquipment.mdEqpType.id ='"+ bean.getEqpType() +"'"); } if(StringUtil.notNull(bean.getTeamName())){ params.append(" and o.schWorkorder.mdTeam.id='"+ bean.getTeamName() +"'"); } if(StringUtil.notNull(bean.getShiftName())){ params.append(" and o.schWorkorder.mdShift.id='"+ bean.getShiftName() +"'"); } if(bean.getRunDate()!=null&&StringUtil.notNull(bean.getRunDate().toString().trim())){ params.append(" and CONVERT(varchar(100),o.schWorkorder.date, 23)>='"+ bean.getRunDate() +"'"); } if(bean.getRunDate2()!=null&&StringUtil.notNull(bean.getRunDate2().toString().trim())){ params.append(" and CONVERT(varchar(100),o.schWorkorder.date, 23)<='"+ bean.getRunDate2() +"'"); } String param = params.toString(); /*hql = hql.concat(StringUtil.fmtDateBetweenParams("o.schWorkorder.stim", bean.getRunDate(), bean.getRunDate2()));*/ List eqmTrouble = baseDao.queryByPage(hql.concat(param).concat(" order by o.schWorkorder.date, o.schWorkorder.mdEquipment.equipmentName, o.schWorkorder.mdShift.id"), pageParams); List list = new ArrayList(); for(Object o : eqmTrouble){ SchStatOutput et = (SchStatOutput) o; EqpRunTimeBean tb = new EqpRunTimeBean(); tb.setEqpName(et.getSchWorkorder().getMdEquipment().getEquipmentName()); tb.setEqpType(et.getSchWorkorder().getMdEquipment().getMdEqpType().getName()); tb.setShiftName(et.getSchWorkorder().getMdShift().getName()); tb.setTeamName(et.getSchWorkorder().getMdTeam().getName()); tb.setRunTime(et.getRunTime()); tb.setTime(DateUtil.formatDateToString(et.getSchWorkorder().getDate(),"yyyy-MM-dd")); list.add(tb); } hql = "select count(*) from SchStatOutput o where 1=1 and o.del=0 "; long total = baseDao.queryTotal(hql.concat(param)); return new DataGrid(list,total); } //查询运行效率图表数据源 public EffectiveGraphBean queryEqpRunTimeChart(EqpRunTimeBean bean, PageParams pageParams){ String hql = "select o.schWorkorder.date" + ",o.schWorkorder.mdEquipment.equipmentName" + ",o.schWorkorder.mdShift.name" // + ",o.schWorkorder.mdEquipment.mdEqpType.code" + ",o.schWorkorder.mdTeam.name" + ",o.runTime from SchStatOutput o where 1=1 and o.del=0 "; StringBuffer params = new StringBuffer(); if(StringUtil.notNull(bean.getEqpName())){ params.append(" and o.schWorkorder.mdEquipment.equipmentName like '%"+ bean.getEqpName() +"%'"); } if(StringUtil.notNull(bean.getEqpType())){ params.append(" and o.schWorkorder.mdEquipment.mdEqpType.id='"+ bean.getEqpType() +"'"); } if(StringUtil.notNull(bean.getTeamName())){ params.append(" and o.schWorkorder.mdTeam.id='"+ bean.getTeamName() +"'"); } if(StringUtil.notNull(bean.getShiftName())){ params.append(" and o.schWorkorder.mdShift.id='"+ bean.getShiftName() +"'"); } if(bean.getRunDate()!=null&&StringUtil.notNull(bean.getRunDate().toString().trim())){ params.append(" and CONVERT(varchar(100),o.schWorkorder.date, 23)>='"+ bean.getRunDate() +"'"); } if(bean.getRunDate2()!=null&&StringUtil.notNull(bean.getRunDate2().toString().trim())){ params.append(" and CONVERT(varchar(100),o.schWorkorder.date, 23)<='"+ bean.getRunDate2() +"'"); } String param = params.toString(); List list = baseDao.queryByPage(hql.concat(param).concat(" order by o.schWorkorder.date, o.schWorkorder.mdEquipment.equipmentName, o.schWorkorder.mdShift.id"), pageParams); Hashtable ht1=new Hashtable(); Hashtable ht2=new Hashtable(); Hashtable ht3=new Hashtable(); int xlength=0; int ylength=0; List sortList=new ArrayList(); for(Object o:list){ Object[] temp=(Object[])o; String date=temp[0].toString(); date=date.substring(5,10); //获取日期+设备名称 if(ht1.get(temp[1].toString()+date)==null){ //DateUtil.formatDateToString((Date)temp[0],"yyyy-MM-dd"); ht1.put(temp[1].toString()+date, temp[1].toString()+date); sortList.add(temp[1].toString()+date); xlength++; } //获取班次名称 if(ht2.get(temp[2].toString())==null){ ht2.put(temp[2].toString(), temp[2].toString()); ylength++; } // if(ht3.get(temp[1].toString()+date+temp[2].toString())==null){ ht3.put(temp[1].toString()+date+temp[2].toString(), temp); } } //Iterator i1=ht1.keySet().iterator(); Iterator i2=ht2.keySet().iterator(); //X轴值类型 String[] xValue=new String[xlength]; //Y轴值类型 String[] yvalueType=new String[ylength]; //Y轴值 double[][] yValue=new double[ylength][xlength]; int i=0; int j; //循环设备 for(int index=0;index