zhuguifei
2026-03-10 58402bd5e762361363a0f7d7907153c77dbb819f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package com.shlanbao.tzsc.pms.sch.workorder.service.impl;
 
import java.util.ArrayList;
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.model.DataGrid;
import com.shlanbao.tzsc.base.model.PageParams;
import com.shlanbao.tzsc.base.service.BaseService;
import com.shlanbao.tzsc.pms.sch.workorder.beans.FaultWkBean;
import com.shlanbao.tzsc.pms.sch.workorder.service.FaultWkServiceI;
import com.shlanbao.tzsc.utils.tools.MathUtil;
import com.shlanbao.tzsc.utils.tools.StringUtil;
/**
 *
* @ClassName: FaultWkServiceI
* @Description: 设备运行故障信息
* @author luo
* @date 2015年10月10日 上午10:05:39
*
 */
@Service
public class FaultWkServiceImpl extends BaseService implements FaultWkServiceI{
    @Autowired
    private BaseDaoI<Object> baseDao;
 
    @Override
    public DataGrid queryFaultWkGrid(FaultWkBean bean,PageParams pageParams) {
        String sql=getFaultWkSql(bean,"");
        List<FaultWkBean> faultWkList=new ArrayList<FaultWkBean>();
        List<?> faultWkObj = baseDao.queryBySql(sql);
        for(int i=(pageParams.getPage()-1)*pageParams.getRows();i<pageParams.getPage()*pageParams.getRows()&&i<faultWkObj.size();i++){
            Object o=faultWkObj.get(i);
            //设备名称,工单code,生产日期,班组名称,班次名称,生产牌号,故障名称,故障发生时长,故障发生次数,生产时长
            Object[] arr=(Object[]) o;
            FaultWkBean b=new FaultWkBean();
            b.setEqp_name(StringUtil.convertObjToString(arr[0]));
            b.setWk_code(StringUtil.convertObjToString(arr[1]));
            b.setDate(StringUtil.convertObjToString(arr[2]));
            b.setTeam_name(StringUtil.convertObjToString(arr[3]));
            b.setShift_name(StringUtil.convertObjToString(arr[4]));
            b.setMat_name(StringUtil.convertObjToString(arr[5]));
            b.setFault_name(StringUtil.convertObjToString(arr[6]));
            String time=StringUtil.convertObjToString(arr[7]);
            if(StringUtil.isDouble(time)){
                double tim=MathUtil.roundHalfUp(Double.parseDouble(time), 2);
                b.setTime(String.valueOf(tim));
            }else{
                b.setTime(StringUtil.convertObjToString(arr[7]));
            }
 
            b.setTimes(StringUtil.convertObjToString(arr[8]));
            b.setRuntime(StringUtil.convertObjToString(arr[9]));
            faultWkList.add(b);
        }
        return new DataGrid(faultWkList,Long.parseLong(faultWkObj.size()+""));
    }
    @Override
    public List<FaultWkBean> exportFaultWkList(FaultWkBean bean,String param){
        String sql=getFaultWkSql(bean,param);
        List<FaultWkBean> faultWkList=new ArrayList<FaultWkBean>();
        List<?> faultWkObj = baseDao.queryBySql(sql);
        for(Object o:faultWkObj){
            //设备名称,工单code,生产日期,班组名称,班次名称,生产牌号,故障名称,故障发生时长,故障发生次数,生产时长
            Object[] arr=(Object[]) o;
            FaultWkBean b=new FaultWkBean();
            if(!"time".equals(param) && !"times".equals(param)){//统计信息只有三个字段
                b.setEqp_name(StringUtil.convertObjToString(arr[0]));
                b.setWk_code(StringUtil.convertObjToString(arr[1]));
                b.setDate(StringUtil.convertObjToString(arr[2]));
                b.setTeam_name(StringUtil.convertObjToString(arr[3]));
                b.setShift_name(StringUtil.convertObjToString(arr[4]));
                b.setMat_name(StringUtil.convertObjToString(arr[5]));
                b.setFault_name(StringUtil.convertObjToString(arr[6]));
                b.setTime(StringUtil.convertObjToString(arr[7]));
                b.setTimes(StringUtil.convertObjToString(arr[8]));
                b.setRuntime(StringUtil.convertObjToString(arr[9]));
            }else{
                b.setTime(StringUtil.convertObjToString(arr[0]));
                b.setTimes(StringUtil.convertObjToString(arr[1]));
                b.setFault_name(StringUtil.convertObjToString(arr[2]));
            }
            faultWkList.add(b);
        }
        return faultWkList;
    }
 
 
    private String getFaultWkSql(FaultWkBean bean ,String param){
        StringBuffer sqlBuffer=new StringBuffer();
        if("time".equals(param) || "times".equals(param)){//统计图查询
            sqlBuffer.append("  SELECT * from (select sum(o.TIME) time,sum(o.TIMES) times, o.faultName from ( ");
        }
        //设备名称,工单code,生产日期,班组名称,班次名称,生产牌号,故障名称,故障发生时长,故障发生次数,生产时长
        sqlBuffer.append(" SELECT     e.EQUIPMENT_NAME, wo.CODE,  to_char(wo.date_,'yyyy-MM-dd') as date_, ");
        sqlBuffer.append(" team.NAME AS teamName, shift.NAME AS shiftName, mat.NAME AS matName, ");
        sqlBuffer.append(" fault.NAME AS faultName, fault. TIME, fault.TIMES, sso.RUN_TIME ");
        /*sqlBuffer.append(" FROM SCH_WORKORDER wo ");
        sqlBuffer.append("sso.RUN_TIME   ");*/
        sqlBuffer.append("from SCH_WORKORDER wo left join SCH_STAT_OUTPUT sso on wo.ID=sso.OID  ");
        sqlBuffer.append("left join SCH_STAT_FAULT fault on sso.ID=fault.OID ");
        sqlBuffer.append("left join MD_EQUIPMENT e on wo.EQP=e.ID   ");
        sqlBuffer.append("left join MD_EQP_TYPE etype on e.EQP_TYPE_ID=etype.ID ");
        sqlBuffer.append("left join MD_EQP_CATEGORY cate on cate.ID=etype.CID ");
        sqlBuffer.append("left join MD_TEAM team on wo.TEAM=team.ID  ");
        sqlBuffer.append("left join MD_SHIFT shift on wo.SHIFT=shift.ID   ");
        sqlBuffer.append("left join MD_MAT mat on wo.MAT=mat.ID  ");
        sqlBuffer.append("where fault.NAME is not null and fault.status = 0  ");
        if(StringUtil.notNull(bean.getWorkShop_id())){
            sqlBuffer.append("and e.WORK_SHOP='"+bean.getWorkShop_id()+"' ");
        }
        if(StringUtil.notNull(bean.getEqp_type_cate_id())){
            sqlBuffer.append("and cate.code='"+bean.getEqp_type_cate_id()+"' ");
        }
        if(StringUtil.notNull(bean.getStartDate())){
            sqlBuffer.append("and to_char(wo.DATE_,'yyyy-MM-dd')>='"+bean.getStartDate()+"' ");
        }
        if(StringUtil.notNull(bean.getEndDate())){
            sqlBuffer.append("and to_char(wo.DATE_,'yyyy-MM-dd')<='"+bean.getEndDate()+"' ");
        }
        if(StringUtil.notNull(bean.getEqp_type_id())){
            sqlBuffer.append("and e.EQP_TYPE_ID='"+bean.getEqp_type_id()+"' ");
        }
        if(StringUtil.notNull(bean.getEqp_id())){
            sqlBuffer.append("and wo.EQP='"+bean.getEqp_id()+"' ");
        }
        if(StringUtil.notNull(bean.getShift_id())){
            sqlBuffer.append("and wo.SHIFT='"+bean.getShift_id()+"' ");
        }
        sqlBuffer.append(" ORDER BY wo.CODE,to_char(wo.date_,'yyyy-MM-dd'),fault.TIME DESC ");
        if("time".equals(param)){
            sqlBuffer.append(" )o GROUP BY o.faultName ) ORDER BY time desc ");
        }
        if("times".equals(param)){
            sqlBuffer.append(" )o GROUP BY o.faultName ) ORDER BY times desc ");
        }
        return sqlBuffer.toString();
    }
}