package com.shlanbao.tzsc.pms.equ.overhaul.service.impl; import java.lang.reflect.InvocationTargetException; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.UUID; import com.alibaba.fastjson.JSON; import com.shlanbao.tzsc.base.dao.*; import com.shlanbao.tzsc.base.mapping.*; import com.shlanbao.tzsc.base.model.*; import com.shlanbao.tzsc.pms.equ.sbglplan.beans.EquipmentsBean; import com.shlanbao.tzsc.pms.md.shift.beans.ShiftBean; import com.shlanbao.tzsc.pms.md.team.beans.TeamBean; import com.shlanbao.tzsc.pms.sch.calendar.beans.CalendarBean; import com.shlanbao.tzsc.pms.sch.workorder.beans.TransmitterWorkOrderBean; import com.shlanbao.tzsc.pms.sys.user.beans.LoginBean; import com.shlanbao.tzsc.utils.tools.*; import net.sf.json.groovy.GJson; import org.jboss.netty.channel.Channel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.shlanbao.tzsc.base.interceptor.WorkOrderStatChangeInterceptor; import com.shlanbao.tzsc.base.service.BaseService; import com.shlanbao.tzsc.pms.cos.spare.beans.CosSparePartsBean; import com.shlanbao.tzsc.pms.equ.overhaul.beans.EqmCallServiceBean; import com.shlanbao.tzsc.pms.equ.overhaul.beans.EqmMaintainBean; import com.shlanbao.tzsc.pms.equ.overhaul.beans.EqmServiceSparePartBean; import com.shlanbao.tzsc.pms.equ.overhaul.service.EqmMaintainServiceI; import org.springframework.util.ObjectUtils; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; @Service public class EqmMaintainServiceImpl extends BaseService implements EqmMaintainServiceI{ @Autowired protected EqmMaintainDaoI eqmMaintainDao; @Autowired protected EqpRequestRecordDaoI eqpRequestRecordDao; @Autowired private HttpServletRequest request; @Autowired private MdShiftDaoI mdShiftDao; @Autowired private MdTeamDaoI mdTeamDao; @Autowired private EqmipmentsDaoI equipmentsDao; @Autowired private SchWorkorderDaoI schWorkorderDao; @Autowired private SysMaintenanceStaffDaoI sysMaintenanceStaffDao; @Autowired private SchCalendarDaoI schCalendarDao; @Autowired private TransmitterWorkOrderDaoI transmitterWorkOrderDao; @Override public void addEqmMaintain(EqmMaintainBean eqmMaintain) throws Exception { EqmMaintain bean =new EqmMaintain(); beanConvertor.copyProperties(eqmMaintain, bean); //设备编号 /*if(StringUtil.notNull(eqmMaintain.getEqp_id())){ bean.setEqp(new MdEquipment(eqmMaintain.getEqp_id())); } //实际完成人 if(StringUtil.notNull(eqmMaintain.getReal_usr_id())){ bean.setReal_usr(eqmMaintain.getReal_usr_id()+","); } //计划负责人 if(StringUtil.notNull(eqmMaintain.getBlame_usr_id())){ bean.setBlame_usr(new SysUser(eqmMaintain.getBlame_usr_id())); } //计划执行日期 if(StringUtil.notNull(eqmMaintain.getDate_plans())){ bean.setDate_plan(DateUtil.formatStringToDate(eqmMaintain.getDate_plans(), "yyyy-MM-dd")); } bean.setDel("0");*/ eqmMaintainDao.saveOrUpdate(bean); } @Override public void editEqmMaintain(EqmMaintainBean eqmMaintain) throws Exception { EqmMaintain bean =eqmMaintainDao.findById(EqmMaintain.class, eqmMaintain.getId()); beanConvertor.copyProperties(eqmMaintain, bean); /*if(StringUtil.notNull(eqmMaintain.getEqp_id())){ bean.setEqp(new MdEquipment(eqmMaintain.getEqp_id())); } if(StringUtil.notNull(eqmMaintain.getReal_usr_id())){ bean.setReal_usr(eqmMaintain.getReal_usr_id()+","); } if(StringUtil.notNull(eqmMaintain.getBlame_usr_id())){ bean.setBlame_usr(new SysUser(eqmMaintain.getBlame_usr_id())); } if(StringUtil.notNull(eqmMaintain.getDate_plans())){ bean.setDate_plan(DateUtil.formatStringToDate(eqmMaintain.getDate_plans(), "yyyy-MM-dd")); } bean.setDel("0");*/ eqmMaintainDao.saveOrUpdate(bean); } @Override public void deleteEqmMaintainById(String id) throws Exception { EqmMaintain bean=eqmMaintainDao.findById(EqmMaintain.class, id); //bean.setDel("1"); eqmMaintainDao.saveOrUpdate(bean); } @Override public DataGrid queryEqmMaintain(EqmMaintainBean eqmMaintain,PageParams pageParams) throws Exception { //、查询计划负责人name和id封装成map String sql="SELECT id,name from SYS_USER"; List l=eqmMaintainDao.queryBySql(sql); Map userMap=new HashMap(); for (int i = 0; i < l.size(); i++) { Object[] o=(Object[]) l.get(i); userMap.put(String.valueOf(o[0]), String.valueOf(o[1])); } String hql="from EqmMaintain o where o.del=0 "; String params=""; //设备id /*if(StringUtil.notNull(eqmMaintain.getEqp_id())){ params+= " and o.eqp.id = '" +eqmMaintain.getEqp_id()+ "'"; } //设备名称 if(StringUtil.notNull(eqmMaintain.getEqp_name())){ params+= " and o.eqp.equipmentName like '%" +eqmMaintain.getEqp_name()+ "%'"; } //设备名称 if(StringUtil.notNull(eqmMaintain.getBlame_usr_name())){ params+= " and o.blame_usr.name like '%" +eqmMaintain.getBlame_usr_name()+ "%'"; } //计划执行日期 if(StringUtil.notNull(eqmMaintain.getStartTime())){ params+= " and to_char(o.date_plan,'yyyy-MM-dd') >= '" +eqmMaintain.getStartTime()+ "' "; } //计划执行日期 if(StringUtil.notNull(eqmMaintain.getEndTime())){ params+= " and to_char(o.date_plan,'yyyy-MM-dd') <= '" +eqmMaintain.getEndTime()+ "' "; } //计划执行日期 if(StringUtil.notNull(eqmMaintain.getBlame_usr_id())){ params+= " and o.blame_usr.id like '" +eqmMaintain.getBlame_usr_id()+ "'"; }*/ List eqmMaintains = eqmMaintainDao.queryByPage(hql.concat(params)+" order by o.date_plan desc ,o.eqp.equipmentCode ", pageParams); List beans = new ArrayList(); for (EqmMaintain mt : eqmMaintains) { EqmMaintainBean bean = beanConvertor.copyProperties(mt, EqmMaintainBean.class); /*if(mt.getDate_plan()!=null){ bean.setDate_plans(DateUtil.formatDateToString(mt.getDate_plan(), "yyyy-MM-dd")); } if(mt.getReal_time()!=null){ bean.setReal_times(DateUtil.formatDateToString(mt.getReal_time(), "yyyy-MM-dd")); } if(mt.getReal_usr()!=null){ String sys=mt.getReal_usr();//可能是多个 String[] usersIds=sys.split(","); bean.setReal_usr_id(sys); StringBuffer sb=new StringBuffer(); for (int i = 0; i < usersIds.length; i++) { String name=userMap.get(usersIds[i]); if(name==null){ name="未知用户"; } sb.append(name); sb.append(","); } bean.setReal_usr_name(sb.toString().replace(",", " ")); } if(mt.getBlame_usr()!=null){ SysUser sys=mt.getBlame_usr(); bean.setBlame_usr_id(sys.getId()); bean.setBlame_usr_name(sys.getName()); } if(mt.getEqp()!=null){ bean.setEqp_id(mt.getEqp().getId()); bean.setEqp_name(mt.getEqp().getEquipmentName()); }*/ beans.add(bean); } //查询总条数 hql="select count(*) " + hql; long total=eqmMaintainDao.queryTotal(hql.concat(params)); return new DataGrid(beans, total); } @Override public EqmMaintainBean getEqmMaintainById(String id) throws Exception { //、查询计划负责人name和id封装成map String sql="SELECT id,name from SYS_USER"; List l=eqmMaintainDao.queryBySql(sql); Map userMap=new HashMap(); for (int i = 0; i < l.size(); i++) { Object[] o=(Object[]) l.get(i); userMap.put(String.valueOf(o[0]), String.valueOf(o[1])); } EqmMaintain mt=eqmMaintainDao.findById(EqmMaintain.class, id); EqmMaintainBean bean=BeanConvertor.copyProperties(mt, EqmMaintainBean.class) ; /*if(mt.getDate_plan()!=null){ bean.setDate_plans(DateUtil.formatDateToString(mt.getDate_plan(), "yyyy-MM-dd")); } if(mt.getReal_time()!=null){ bean.setReal_times(DateUtil.formatDateToString(mt.getReal_time(), "yyyy-MM-dd")); } if(mt.getReal_usr()!=null){ String sys=mt.getReal_usr(); bean.setReal_usr_id(sys); StringBuffer sb=new StringBuffer(); String[] uIds=sys.split(","); for (int i = 0; i < uIds.length; i++) { sb.append(userMap.get(uIds[i])); sb.append(","); } bean.setReal_usr_name(sb.toString()); } if(mt.getBlame_usr()!=null){ SysUser sys=mt.getBlame_usr(); bean.setBlame_usr_id(sys.getId()); bean.setBlame_usr_name(sys.getName()); } if(mt.getEqp()!=null){ bean.setEqp_id(mt.getEqp().getId()); bean.setEqp_name(mt.getEqp().getEquipmentName()); bean.setEqp_type(mt.getEqp().getMdEqpType().getName()); }*/ return bean; } /** * 导入excel设备检修历史 * shisihai * 2015-10-9 * @throws Exception */ @Override public void inputExeclAndReadWrite(List list) throws Exception { //去掉list里面关键字段相同的对象 HashSet h = new HashSet(list); list.clear(); list.addAll(h); //、查询计划负责人name和id封装成map String sql="SELECT name,id from SYS_USER"; List l=eqmMaintainDao.queryBySql(sql); Map userMap=new HashMap(); for (int i = 0; i < l.size(); i++) { Object[] o=(Object[]) l.get(i); userMap.put(String.valueOf(o[0]), String.valueOf(o[1])); } for(int i=0;i0 ){ continue; }else{ beanConvertor.copyProperties(eqmb, eqm); /*if(StringUtil.notNull(eqmb.getDate_plans())){ eqm.setDate_plan(new SimpleDateFormat("yyyy-MM-dd").parse(eqmb.getDate_plans())); } if(StringUtil.notNull(eqmb.getReal_times())){ eqm.setReal_time(new SimpleDateFormat("yyyy-MM-dd").parse(eqmb.getReal_times())); } //设备 if(StringUtil.notNull(eqmb.getEqp_id())){ MdEquipment e=new MdEquipment(); e.setId(eqmb.getEqp_id()); eqm.setEqp(e); } //负责人 if(StringUtil.notNull(eqmb.getBlame_usr_id())){ SysUser s=new SysUser(eqmb.getBlame_usr_id()); eqm.setBlame_usr(s); } //完成人 if(StringUtil.notNull(eqmb.getReal_usr_id())){ eqm.setReal_usr(eqmb.getReal_usr_id()); } //计划开始时间 if(StringUtil.notNull(eqmb.getDate_plans())){ eqm.setDate_plan(new SimpleDateFormat("yyyy-MM-dd").parse(eqmb.getDate_plans())); } //计划完成时间 if(StringUtil.notNull(eqmb.getReal_times())){ eqm.setDate_plan(new SimpleDateFormat("yyyy-MM-dd").parse(eqmb.getReal_times())); } */ eqmMaintainDao.saveOrUpdate(eqm); } } } @Override public void updateSpareParts(String ids, String use_num,String all_num) { //当总数为0时,存在使用数量不为零情况,这时只对备件更换纪录表操作,备件表数量不改变 try { String[] id=ids.split(","); String[] useNum=use_num.split(","); String[] allNum=all_num.split(","); Integer n=0;//库存数量 Integer n2=0;//使用数量 Integer n3=0;//修改后数量 for (int i = 0; i < allNum.length; i++) { if(useNum[i].trim().equals("0")||allNum[i].trim().equals("0")||allNum[i].trim().equals("")|| useNum[i].trim().equals("")||useNum[i]==null||allNum[i]==null){ continue; } n=Integer.parseInt(allNum[i]); n2=Integer.parseInt(useNum[i]); n3=n-n2; //数量不足时设置库存为0 if(n3<0){ n3=0; } String sql="UPDATE COS_SPARE_PARTS SET attr2="+n3+" where id='"+id[i]+"'"; eqmMaintainDao.updateInfo(sql, null); } } catch (Exception e) { e.printStackTrace(); } } /** * 查询设备code和NAME * 2015.9.13-张璐 * */ @Override public Object[] loadToRhBuWeiCode(String equipmentId) { String sql = "SELECT me.EQUIPMENT_CODE,m.NAME FROM MD_EQUIPMENT me LEFT JOIN MD_EQP_TYPE m ON me.EQP_TYPE_ID = m.id WHERE me.id ='"+equipmentId+"'"; Object[] o=(Object[]) eqmMaintainDao.queryBySql(sql, null).get(0); return o; } /** * 设备维修呼叫记录查询 */ @Override public DataGrid queryRepairCallInfo(String stim, String etim, PageParams pageParams) { String hql=getQueryRepairCallInfoSql(1,stim,etim);//查询总条数 Long totals=eqpRequestRecordDao.queryTotal(hql); List records= new ArrayList<>(); if(totals>0){ hql=getQueryRepairCallInfoSql(2,stim,etim);//查询详细 records=eqpRequestRecordDao.queryByPage(hql, pageParams); for (EqpRequestRecord object : records) { object.setEqpId(object.getEqp().getId()); object.setEqpName(object.getEqp().getEquipmentName()); object.setEqp(null); object.setTeamId(object.getTeam().getId()); object.setTeamName(object.getTeam().getName()); object.setTeam(null); object.setShiftId(object.getShift().getId()); object.setShiftName(object.getShift().getName()); object.setShift(null); object.setActionTime_(DateUtil.datetoStr(object.getActionTime(),"yyyy-MM-dd HH:mm:ss")); object.setActualDate_(DateUtil.datetoStr(object.getActualDate(),"yyyy-MM-dd HH:mm:ss")); object.setRepairDate_(DateUtil.datetoStr(object.getRepairDate(),"yyyy-MM-dd HH:mm:ss")); object.setRequestTime_(DateUtil.datetoStr(object.getRequestTime(),"yyyy-MM-dd HH:mm:ss")); object.setHandleStartTime_(DateUtil.datetoStr(object.getHandleStartTime(),"yyyy-MM-dd HH:mm:ss")); object.setHandleEndTime_(DateUtil.datetoStr(object.getHandleEndTime(),"yyyy-MM-dd HH:mm:ss")); object.setRealEndTime_(DateUtil.datetoStr(object.getRealEndTime(),"yyyy-MM-dd HH:mm:ss")); } } return new DataGrid(records, totals); } @Override public DataGrid queryRepairCallInfoByEquId(String equId, String stim, String etim, PageParams pageParams) { String hql=getQueryRepairCallInfoSql(equId,1,stim,etim);//查询总条数 Long totals=eqpRequestRecordDao.queryTotal(hql); List records= new ArrayList<>(); if(totals>0){ hql=getQueryRepairCallInfoSql(equId,2,stim,etim);//查询详细 records=eqpRequestRecordDao.queryByPage(hql, pageParams); for (EqpRequestRecord object : records) { object.setEqpId(object.getEqp().getId()); object.setEqpName(object.getEqp().getEquipmentName()); object.setEqp(null); object.setTeamId(object.getTeam().getId()); object.setTeamName(object.getTeam().getName()); object.setTeam(null); object.setShiftId(object.getShift().getId()); object.setShiftName(object.getShift().getName()); object.setShift(null); } } return new DataGrid(records, totals); } /** * 获取查询设备维修呼叫记录 * @param type * @return */ private String getQueryRepairCallInfoSql(int type,String stim,String etim){ StringBuffer sb=new StringBuffer(); //查询总条数 if(type==1){ sb.append("SELECT COUNT(1)"); } sb.append(" from EqpRequestRecord where 1=1 "); //条件添加 if(StringUtil.notEmpty(stim)){ sb.append(" and to_char(requestTime,'yyyy-mm-dd')>='"+stim+"'"); } if(StringUtil.notEmpty(etim)){ sb.append(" and to_char(requestTime,'yyyy-mm-dd')<='"+etim+"'"); } return sb.toString(); } /** * 获取查询设备维修呼叫记录 * @param type * @return */ private String getQueryRepairCallInfoSql(String equid,int type,String stim,String etim){ StringBuffer sb=new StringBuffer(); //查询总条数 if(type==1){ sb.append("SELECT COUNT(1)"); } sb.append(" from EqpRequestRecord where 1=1 "); //条件添加 if(StringUtil.notEmpty(stim)){ sb.append(" and to_char(requestTime,'yyyy-mm-dd')>='"+stim+"'"); } if(StringUtil.notEmpty(etim)){ sb.append(" and to_char(requestTime,'yyyy-mm-dd')<='"+etim+"'"); } if(StringUtil.notEmpty(equid)){ sb.append(" and eqp ='"+equid+"'"); } return sb.toString(); } @Override public DataGrid queryRepairChangeSparepartInfo(String id) { StringBuffer sb=new StringBuffer(); sb.append("SELECT a.*,b.name,c.equipment_name "); sb.append(" from EQP_SPARE_PARTS a "); sb.append(" LEFT join md_shift b on a.shift_id = b.id "); sb.append(" left join md_equipment c on a.eqp_id = c.id "); sb.append(" where a.eqp_rr_id=?"); List datas=eqmMaintainDao.queryBySql(sb.toString(), id); List beans=new ArrayList<>(); EqpSparePartsBean bean=null; Object[] obj=null; for (Object object : datas) { obj=(Object[]) object; bean=new EqpSparePartsBean(); bean.setId( StringUtil.convertObjToString(obj[0])); bean.setShiftId( StringUtil.convertObjToString(obj[1])); bean.setEqpId(StringUtil.convertObjToString(obj[2])); bean.setMaintaiinName( StringUtil.convertObjToString(obj[3])); bean.setSparePartsCode( StringUtil.convertObjToString(obj[4])); bean.setSparePartsName( StringUtil.convertObjToString(obj[5])); bean.setSparePartsNum( StringUtil.convert2Integer( obj[6])); bean.setEqpRrId( StringUtil.convertObjToString(obj[7])); bean.setCosSpId( StringUtil.convertObjToString(obj[8])); bean.setCreateTime( DateUtil.formatStringToDate(StringUtil.convertObjToString(obj[9]),"yyyy-MM-dd HH:mm:ss")); bean.setRepairDate( DateUtil.formatStringToDate(StringUtil.convertObjToString(obj[10]),"yyyy-MM-dd HH:mm:ss")); bean.setEwcpId( StringUtil.convertObjToString(obj[11])); bean.setShiftName( StringUtil.convertObjToString(obj[12])); bean.setEqpName( StringUtil.convertObjToString(obj[13])); beans.add(bean); } Long rows=(long) beans.size(); return new DataGrid(beans,rows); } /** * 反馈维修记录 */ @Override public void dasSendEquipmentWorkOrderResult(String id) { String[] ids=id.split(","); for (String str : ids) { String sql=getCallServiceSql(str); List datas=eqmMaintainDao.queryBySql(sql); Object[] obj=null; EqmCallServiceBean bean=null; List beans=new ArrayList<>(); EqmServiceSparePartBean sparePart=null; List spareParts=null; for (Object object : datas) { obj=(Object[]) object; bean=new EqmCallServiceBean(); //故障id String tid=StringUtil.convertObjToString(obj[0]); bean.setId(tid); bean.setRepairDate(StringUtil.convertObjToString(obj[1])); bean.setShift(StringUtil.convertObjToString(obj[2])); bean.setGroup(StringUtil.convertObjToString(obj[3])); bean.setEquipmentCode(StringUtil.convertObjToString(obj[4])); bean.setRepairType(StringUtil.convertObjToString(obj[5])); bean.setShutdownType(StringUtil.convertObjToString(obj[6]));//故障大类 bean.setFaultType(StringUtil.convertObjToString(obj[7]));//故障类型 bean.setDescription(StringUtil.convertObjToString(obj[8]));//故障现象 bean.setFaultReason(StringUtil.convertObjToString(obj[9]));//故障原因 bean.setSolution(StringUtil.convertObjToString(obj[10]));//处理措施 bean.setRepairer(StringUtil.convertObjToString(obj[11])); bean.setDuration(StringUtil.convertObjToString(obj[12]));//维修时长 bean.setShutdownTime(StringUtil.convertObjToString(obj[13]));//停机时长 bean.setComment(StringUtil.convertObjToString(obj[14]));//评价默认5 //添加备件更换信息 sql=getSparePartsql(tid); List SpartParts=eqmMaintainDao.queryBySql(sql); spareParts=bean.getParts(); for (Object object2 : SpartParts) { obj=(Object[]) object2; sparePart=new EqmServiceSparePartBean(); sparePart.setPartCode(StringUtil.convertObjToString(obj[0])); sparePart.setPartName(StringUtil.convertObjToString(obj[1])); sparePart.setQuantity(StringUtil.convertObjToString(obj[2])); sparePart.setUnit(StringUtil.convertObjToString(obj[3]));//汉子,MES就是接受汉子的 spareParts.add(sparePart); } beans.add(bean); } //发送信息 for (EqmCallServiceBean bean0 : beans) { WorkOrderStatChangeInterceptor.getInstance().dasSendEquipmentRepairRecord(bean0); } } } /** * 获取故障信息sql * @param id * @return */ private String getCallServiceSql(String id) { StringBuffer sb=new StringBuffer(); sb.append("SELECT "); sb.append(" b.id,to_char(a.DESIGNATED_PERSON_TIME,'yyyy-mm-dd') as RepairDate,"); sb.append(" a.SHIFT_ID,a.TEAM_ID,c.mes_eqpcode,b.repair_type,"); sb.append(" b.SHUTDOWN_TYPE as gz_dl,b.DESCRIPTION as gz_Type,b.SHUTDOWN_NAME as gz_xx,b.FAULT_REASON as gz_yy,b.SOLUTION as gz_cs,"); sb.append(" a.DESIGNATED_PERSON_NAME,"); sb.append(" round(to_number(a.UPDATE_USER_TIME-a.DESIGNATED_PERSON_TIME)*24,2) as wxsc,"); sb.append(" round(to_number(a.UPDATE_USER_TIME-a.CREATE_USER_TIME)*24,2) as tjsc,"); sb.append(" b.COMMENTS"); sb.append(" from "); sb.append(" SYS_SERVICE_INFO a LEFT JOIN EQM_TROUBLE b on a.id=b.SOURCE_ID"); sb.append(" LEFT JOIN MD_EQUIPMENT c on c.id=a.eqp_id"); sb.append(" WHERE a.id='"+id+"'"); return sb.toString(); } /** * 查询故障更换备件信息 * @param id * @return */ private String getSparePartsql(String id){ StringBuffer sb=new StringBuffer(); sb.append(" SELECT b.ATTR2,b.NAME,a.SPARE_PARTS_NUM,c.name as name2"); sb.append(" from EQM_FIX_REC a LEFT JOIN COS_SPARE_PARTS b on a.SPARE_PARTS_ID=b.id"); sb.append(" LEFT JOIN MD_UNIT c on c.id=b.unit"); sb.append(" WHERE a.eqmtrouble_id='"+id+"'"); return sb.toString(); } /** * 受理维修请求 */ @Override public Json acceptRequest(String id) { Json json=new Json(); try { StringBuffer sb=new StringBuffer(); List params=new ArrayList<>(); params.add(new Date()); params.add("1"); params.add(id); sb.append(" UPDATE SYS_SERVICE_INFO SET designated_person_time=?,status=? where id=? "); eqmMaintainDao.updateBySql(sb.toString(),params); json.setSuccess(true); json.setMsg("受理维修请求成功!"); } catch (Exception e) { e.printStackTrace(); json.setMsg("受理维修请求失败!"); } return json; } /** * 完成维修请求 */ @Override public Json finishRequest(String id) { Json json=new Json(); try { List params=new ArrayList<>(); //1修改维修工状态 StringBuffer sql=new StringBuffer(); params.add("0"); params.add(id); sql.append(" update SYS_MAINTENANCE_STAFF set status=? where user_id=(SELECT DESIGNATED_PERSON_ID from SYS_SERVICE_INFO a where a.id=?)"); eqmMaintainDao.updateBySql(sql.toString(), params); //2结束维修请求 params.clear(); params.add(new Date()); params.add("2"); params.add(id); sql.setLength(0); sql.append(" UPDATE SYS_SERVICE_INFO SET update_user_time=?,status=? where id=?"); eqmMaintainDao.updateBySql(sql.toString(), params); //3更新故障维修时长 params.clear(); params.add(id); sql.setLength(0); sql.append(" UPDATE EQM_TROUBLE SET SL_TIME=(SELECT DESIGNATED_PERSON_TIME from SYS_SERVICE_INFO where id=SOURCE_ID),UPDATE_TIME=SYSDATE,"); sql.append(" DURATION=ROUND(to_number(SYSDATE-(SELECT DESIGNATED_PERSON_TIME from SYS_SERVICE_INFO where id=SOURCE_ID))*24*60),STATUS=1"); sql.append(" WHERE SOURCE_ID=?"); eqmMaintainDao.updateBySql(sql.toString(), params); json.setSuccess(true); json.setMsg("完成维修成功!"); } catch (Exception e) { e.printStackTrace(); json.setMsg("完成维修失败!"); } return json; } /** * 加载故障数信息 */ @Override public List loadTroubleTree(String id) { List taoubles=new ArrayList<>(); Tree tree=null; Object[] obj=null; StringBuffer sb=new StringBuffer(); sb.append("SELECT id,DESCRIPTION,type,PARENT_ID from EQM_TROUBLE_INFO "); if(StringUtil.notEmpty(id)){ sb.append(" where PARENT_ID='"+id+"'"); }else{ sb.append(" where PARENT_ID IS NULL"); } List ls=eqmMaintainDao.queryBySql(sb.toString()); if(ls!=null && ls.size()>0){ for (Object object : ls) { obj=(Object[]) object; tree=new Tree(); tree.setId(StringUtil.convertObjToString(obj[0])); tree.setText(StringUtil.convertObjToString(obj[1])); tree.setState("closed"); //对接点等级判断,添加其图标 int type=StringUtil.convert2Integer(obj[2]); addIconForTree(type,tree); tree.setPid(StringUtil.convertObjToString(obj[3])); tree.setSeq((long)type); taoubles.add(tree); } } return taoubles ; } /** * 根据故障数等级添加接点图标 * @param type * @param tree */ private void addIconForTree(int type,Tree tree){ switch(type){ case 1: tree.setIconCls("icon-tip"); break; case 2: tree.setIconCls("icon-tip"); break; case 3: tree.setIconCls("icon-tip"); break; case 4: tree.setIconCls("icon-tip"); break; case 5: tree.setIconCls("icon-tip"); tree.setState("open"); break; } } /** * 添加故障信息 */ @Override public Json addTroubleInfo(String id, String mes_id, String nodeId) { Json json=new Json(); try { List params=new ArrayList<>(); //1.根据来源查询班次、机台相关信息 StringBuffer sb=new StringBuffer(); sb.append(" SELECT a.SHIFT_ID,(SELECT b.name from md_shift b where b.id = a.SHIFT_ID)as shiftName,"); sb.append(" a.TEAM_ID,(select c.name from md_team c where c.id=a.TEAM_ID) as teamName,"); sb.append(" a.EQP_ID,a.EQP_NAME,a.DESIGNATED_PERSON_ID,a.DESIGNATED_PERSON_NAME,"); sb.append(" a.TYPE_NAME,a.CREATE_USER_ID,a.CREATE_USER_NAME,a.MES_ID "); sb.append(" from SYS_SERVICE_INFO a where id='"+id+"'"); List ls=eqmMaintainDao.queryBySql(sb.toString()); Object[] obj=null; if(ls!=null && ls.size()>0){ obj=(Object[]) ls.get(0); String shiftId=StringUtil.convertObjToString(obj[0]); String shiftName=StringUtil.convertObjToString(obj[1]); String teamId=StringUtil.convertObjToString(obj[2]); String teamName=StringUtil.convertObjToString(obj[3]); String eqpId=StringUtil.convertObjToString(obj[4]); String eqpName=StringUtil.convertObjToString(obj[5]); String repairUserId=StringUtil.convertObjToString(obj[6]); String repairUserName=StringUtil.convertObjToString(obj[7]); String typeName=StringUtil.convertObjToString(obj[8]); String mesId=StringUtil.convertObjToString(obj[11]); String comments="5";//评分(对维修结果打分) String repairNo=UUID.randomUUID().toString();//维修流水号 String repairDate=DateUtil.formatDateToString(new Date(), "yyyy-MM-dd");//维修日期 Integer status=0;//处理状态 0默认 1完成 2上抛给高级维修工 4已反馈MES int repair_type=3;// 1计划检修 2巡检维修 3故障维修 0其他维修 Date create_time=new Date(); //创建时间 String shutdown_type="1";//维修类型 //1机械 2电气 3网络 0未知 if(!typeName.equals("1") && !typeName.equals("2")){ shutdown_type="0"; } params.add(UUID.randomUUID().toString()); params.add(shiftId); params.add(shiftName); params.add(teamId); params.add(teamName); params.add(eqpId); params.add(eqpName); params.add(repairNo); params.add(repairDate); params.add(status); params.add(repairUserId); params.add(repairUserName); params.add(repair_type); params.add(repairUserId); params.add(repairUserName); params.add(create_time); params.add(shutdown_type); params.add(comments);////评分(对维修结果打分) params.add(id);//呼叫id params.add(mesId);//维保计划id //故障信息 4级数据 //nodeId 为5级接点id String[] resultArr=getTopNodeText(nodeId,5); String pid=""; String node5=resultArr[0]; params.add(node5); //4级 pid=resultArr[1]; resultArr=getTopNodeText(pid,4); String node4=resultArr[0]; params.add(node4); //3级 pid=resultArr[1]; resultArr=getTopNodeText(pid,3); String node3=resultArr[0]; params.add(node3); //2级 pid=resultArr[1]; resultArr=getTopNodeText(pid,2); String node2=resultArr[0]; params.add(node2); sb.setLength(0); sb.append(" INSERT INTO EQM_TROUBLE ("); sb.append("ID,SHIFT_ID,SHIFT_NAME,TEAM_ID,TEAM_NAME,"); sb.append("EQU_ID,EQU_NAME,REPAIR_NO,REPAIR_DATE,STATUS,"); sb.append("UPDATE_USER_ID,UPDATE_USER_NAME,REPAIR_TYPE,CREATE_USER_ID,CREATE_USER_NAME,"); sb.append("CREATE_TIME,SHUTDOWN_TYPE,COMMENTS,SOURCE_ID,EMWORK_ORDER_CODE,"); sb.append("SOLUTION,FAULT_REASON,SHUTDOWN_NAME,DESCRIPTION) "); sb.append(" VALUES(?,?,?,?,?,"); sb.append("?,?,?,?,?,"); sb.append("?,?,?,?,?,"); sb.append("?,?,?,?,?,"); sb.append("?,?,?,?)"); eqmMaintainDao.updateBySql(sb.toString(), params); json.setSuccess(true); json.setMsg("添加故障信息成功!"); }else{ json.setMsg("没有查询到呼叫的班次等信息!添加故障信息失败"); } } catch (Exception e) { e.printStackTrace(); json.setMsg("添加故障信息失败!"); } return json; } public String[] getTopNodeText(String id,int type){ String text[]=new String[2]; String sql="SELECT DESCRIPTION,PARENT_ID from EQM_TROUBLE_INFO where id='"+id+"' and type="+type; List ls=eqmMaintainDao.queryBySql(sql); Object[] obj=null; if(ls!=null && ls.size()>0){ obj=(Object[]) ls.get(0); text[0]=StringUtil.convertObjToString(obj[0]); text[1]=StringUtil.convertObjToString(obj[1]); } return text; } /** * 新增故障数节点 * id为选中的节点id * text为新增的故障树节点描述 * * 现在修改为 id为父节点id,点击父节点,添加的是子节点 */ @LogAnno(operateType = "新增故障数节点") @Override public Json addTroubleTreeNode(String id, String text) { Json json=new Json(); try { SessionInfo sessionInfo = (SessionInfo) request.getSession().getAttribute("sessionInfo"); String createUserName = sessionInfo.getUser().getName(); String updateUserName = createUserName; StringBuffer sb=new StringBuffer(); sb.append(" INSERT INTO EQM_TROUBLE_INFO (ID,code,DESCRIPTION,TYPE,CREATE_DATE,PARENT_ID,CREATE_USER_TIME,CREATE_USER_NAME,UPDATE_USER_NAME,UPDATE_USER_TIME) "); sb.append(" SELECT '"+UUID.randomUUID().toString()+"','"+UUID.randomUUID().toString()+"',"); sb.append("'"+text+"',a.type+1,sysdate,'"+id+"',sysdate,'"+createUserName+"','"+updateUserName+"',sysdate"); sb.append(" FROM EQM_TROUBLE_INFO A WHERE a.ID='"+id+"'"); eqmMaintainDao.updateBySql(sb.toString(),null); json.setSuccess(true); json.setMsg("新增故障节点成功!"); } catch (Exception e) { e.printStackTrace(); json.setMsg("新增故障节点失败!"); } return json; } /** * 编辑故障树节点 */ @LogAnno(operateType = "编辑故障树节点") @Override public Json editTroubleTreeNode(String id, String text) { Json json=new Json(); try { SessionInfo sessionInfo = (SessionInfo) request.getSession().getAttribute("sessionInfo"); String updateUserName = sessionInfo.getUser().getName(); StringBuffer sb=new StringBuffer(); sb.append("UPDATE EQM_TROUBLE_INFO SET DESCRIPTION ='"+text+"',UPDATE_USER_NAME = '"+updateUserName+"',UPDATE_USER_TIME = sysdate where id ='"+id+"'"); eqmMaintainDao.updateBySql(sb.toString(), null); json.setSuccess(true); json.setMsg("修改节点成功!"); } catch (Exception e) { e.printStackTrace(); json.setMsg("修改节点失败!"); } return json; } /** * 删除故障树节点 */ @LogAnno(operateType = "删除故障树节点") @Override public Json deleteTroubleTreeNode(String id) { Json json=new Json(); try { StringBuffer sb=new StringBuffer(); sb.append(" DELETE EQM_TROUBLE_INFO where id='"+id+"'"); eqmMaintainDao.updateBySql(sb.toString(), null); json.setSuccess(true); json.setMsg("删除节点成功!"); } catch (Exception e) { e.printStackTrace(); json.setMsg("删除节点失败!"); } return json; } /** * 根据id查询故障描述 */ @Override public String goToEditTroubleTreeNodeJSP(String id) { String sql="SELECT DESCRIPTION from EQM_TROUBLE_INFO where id='"+id+"'"; List ls=eqmMaintainDao.queryBySql(sql); return StringUtil.convertObjToString(ls.get(0)); } /** * 查询备品备件 */ @Override public DataGrid chooseSparePart(String desc, PageParams pageParam) { List beans=new ArrayList<>(); int pageNum=pageParam.getPage(); int pageRows=pageParam.getRows(); StringBuffer sb=new StringBuffer(); sb.append(" SELECT queryFiled from("); sb.append(" SELECT rownum as rNum,id,name,attr1 as num,type from COS_SPARE_PARTS WHERE 1=1 "); if(StringUtil.notEmpty(desc)){ sb.append("and name like'%"+desc+"%'"); } sb.append(" and del=0)"); List ls=eqmMaintainDao.queryBySql(sb.toString().replaceAll("queryFiled", "COUNT(*)")); long total=StringUtil.converObj2Long(ls.get(0)); if(total>0){ sb.append(" where rNum>"+(pageNum-1)*pageRows); sb.append(" and rNum<="+pageNum*pageRows); ls=eqmMaintainDao.queryBySql(sb.toString().replaceAll("queryFiled", "*")); Object[] obj=null; CosSparePartsBean bean=null; for (Object object : ls) { obj=(Object[]) object; bean=new CosSparePartsBean(); bean.setId(StringUtil.convertObjToString(obj[1])); bean.setName(StringUtil.convertObjToString(obj[2])); bean.setNumber(StringUtil.convertObjToString(obj[3])); bean.setType(StringUtil.convertObjToString(obj[4])); bean.setSell_num("0"); beans.add(bean); } } return new DataGrid(beans, total); } /** * 保存备品备件更换信息 */ @Override public Json saveChooseSparePart(String callId,String id,float num) { Json json=new Json(); StringBuffer sb=new StringBuffer(); sb.append(" SELECT a.SHIFT_ID,CREATE_USER_TIME,"); sb.append(" a.EQP_ID,a.DESIGNATED_PERSON_ID,a.DESIGNATED_PERSON_NAME,"); sb.append(" a.TYPE_NAME,a.CREATE_USER_ID,a.MES_ID "); sb.append(" from SYS_SERVICE_INFO a where id='"+callId+"'"); List ls=eqmMaintainDao.queryBySql(sb.toString()); Object[] obj=null; if(ls!=null && ls.size()>0){ obj=(Object[]) ls.get(0); List params=new ArrayList<>(); String shiftId=StringUtil.convertObjToString(obj[0]);//班次id String eqpId=StringUtil.convertObjToString(obj[2]);//设备id String repairUserId=StringUtil.convertObjToString(obj[3]);//维修人 String repairUserName=StringUtil.convertObjToString(obj[4]); String callUserId=StringUtil.convertObjToString(obj[6]);//呼叫人 Date createTime=DateUtil.formatStringToDate(StringUtil.convertObjToString(obj[1]), "yyyy-MM-dd HH:mm:ss");//呼叫时间 String repairType=StringUtil.convertObjToString(obj[5]);//维修类型 1机型 2电气 String source="4";//来源 维修呼叫 //根据维修呼叫id查询之前添加的故障id,按创建时间最新的为当前故障 params.add(UUID.randomUUID().toString()); params.add(shiftId); params.add(eqpId); params.add(repairUserId); params.add(callUserId); params.add(repairUserName); params.add(repairType); params.add(0); params.add(source); params.add(createTime); //查询故障id sb.setLength(0); sb.append("SELECT s_id AS s_id FROM (SELECT ID AS s_id FROM EQM_TROUBLE WHERE SOURCE_ID ='"+callId+"' ORDER BY CREATE_TIME DESC )"); sb.append(" WHERE ROWNUM = 1"); ls=eqmMaintainDao.queryBySql(sb.toString()); if(ls==null || ls.size()==0){ json.setMsg("没有查询到当前维修呼叫添加的故障信息。保存备件更换信息失败!"); return json; } params.add(StringUtil.convertObjToString(ls.get(0))); params.add(repairUserId); params.add(repairUserName); params.add(id); params.add(num); sb.setLength(0); sb.append("INSERT INTO EQM_FIX_REC ("); sb.append("ID,SHIFT_ID,EQP_ID,MAINTAIIN_ID,ASK_USERID,"); sb.append("MAINTAIIN_NAME,MAINTAIIN_TYPE,STATUS,SOURCE,ASK_DATE,"); sb.append("EQMTROUBLE_ID,CREATE_USER_ID,CREATE_USER_NAME,SPARE_PARTS_ID,SPARE_PARTS_NUM)"); sb.append("VALUES(?,?,?,?,?,"); sb.append("?,?,?,?,?,"); sb.append("?,?,?,?,?)"); try { eqmMaintainDao.updateBySql(sb.toString(), params); } catch (Exception e) { json.setMsg("保存备件更换记录失败!"); return json; } //更新备件库存 sb.setLength(0); sb.append("UPDATE COS_SPARE_PARTS SET attr1=attr1-"+num+" WHERE id='"+id+"'"); try { eqmMaintainDao.updateBySql(sb.toString(), null); } catch (Exception e) { json.setMsg("更新备件库存失败!更换备件记录保存成功!"); return json; } json.setSuccess(true); json.setMsg("保存备件更换记录"); }else{ json.setMsg("没有查询到该维修呼叫的信息!"); } return json; } @Override public EqpRequestRecord getCallInfoById(String id) { return eqpRequestRecordDao.findById(EqpRequestRecord.class, id); } @LogAnno(operateType = "修改维修呼叫记录") @Override public void editCallInfo(EqpRequestRecord requestRecord){ EqpRequestRecord record = null; if (requestRecord.getId()!=null && !"".equals(requestRecord.getId())) { record = eqpRequestRecordDao.findById(EqpRequestRecord.class, requestRecord.getId()); }else { record = new EqpRequestRecord(); } CopyUtils.copyProperties(requestRecord,record); if (requestRecord.getEqpId() != null && !"".equals( requestRecord.getEqpId())) { record.setEqp(new MdEquipment(requestRecord.getEqpId())); } if (requestRecord.getShiftId() != null && !"".equals( requestRecord.getShiftId())) { record.setShift(new MdShift(requestRecord.getShiftId())); } if (requestRecord.getTeamId() != null && !"".equals( requestRecord.getTeamId())) { record.setTeam(new MdTeam(requestRecord.getTeamId())); } if (requestRecord.getHandleEndTime_() != null && !"".equals( requestRecord.getHandleEndTime_())) { record.setHandleEndTime(DateUtil.strToDate(record.getHandleEndTime_(),"yyyy-MM-dd HH:mm:ss")); } if (requestRecord.getHandleStartTime_() != null && !"".equals( requestRecord.getHandleStartTime_())) { record.setHandleStartTime(DateUtil.strToDate(record.getHandleStartTime_(),"yyyy-MM-dd HH:mm:ss")); } if (requestRecord.getRequestTime_() != null && !"".equals( requestRecord.getRequestTime_())) { record.setRequestTime(DateUtil.strToDate(record.getRequestTime_(),"yyyy-MM-dd HH:mm:ss")); } if (requestRecord.getRepairDate_() != null && !"".equals( requestRecord.getRepairDate_())) { record.setRepairDate(DateUtil.strToDate(record.getRepairDate_(),"yyyy-MM-dd HH:mm:ss")); } if (requestRecord.getActualDate_() != null && !"".equals( requestRecord.getActualDate_())) { record.setActualDate(DateUtil.strToDate(record.getActualDate_(),"yyyy-MM-dd HH:mm:ss")); } if (requestRecord.getActionTime_() != null && !"".equals( requestRecord.getActionTime_())) { record.setActionTime(DateUtil.strToDate(record.getActionTime_(),"yyyy-MM-dd HH:mm:ss")); } // if((record.getRealEndTime()!=null||record.getHandleEndTime()!=null)&&!(record.getHandleStartTime()==null)){ // //计算维修时长 // DecimalFormat df=new DecimalFormat("0.00"); // long time = record.getRealEndTime()!=null?record.getRealEndTime().getTime():record.getHandleEndTime().getTime(); // long time1 = record.getHandleStartTime().getTime(); // long times = (time - time1); // record.setDuration(Double.parseDouble(df.format((double)times/(1000*60*60)))); // } FillUserInfoUtil.fillUpdateUserInfo(record,request); //eqpRequestRecordDao.update(record); eqpRequestRecordDao.saveOrUpdate(record); } /** * 获得所有班次 */ @Override public List getAllShifts() throws Exception{ return BeanConvertor.copyList(mdShiftDao.query("from MdShift o where o.del='0'"), ShiftBean.class); } /** * 获得所有班组 */ @Override public List getAllTeams() throws Exception{ return BeanConvertor.copyList(mdTeamDao.query("from MdTeam o where o.del='0'"), TeamBean.class); } /** * 获得所有设备 */ @Override public List getAllEqus() throws Exception { return BeanConvertor.copyList(equipmentsDao.query("from MdEquipment o where o.del='0'"), EquipmentsBean.class); } /** * 获得所有维修工 */ @Override public List getAllStaff(String eqpName) throws Exception { String eqpType="-1"; String workshop="-1"; if(eqpName.contains("卷接")){ eqpType="1"; workshop="1"; }else if(eqpName.contains("包装")){ eqpType="2"; workshop="1"; }else if(eqpName.contains("封箱")){ eqpType="4"; workshop="1"; }else if(eqpName.contains("成型")){ eqpType="3"; workshop="2"; }else if(eqpName.contains("发射")){ eqpType="5"; workshop="2"; } List calendars = schCalendarDao.query("from SchCalendar where ( ? between stim and etim) and mdWorkshop.id = ?", new Date(), workshop); if(calendars.size()<1){ throw new Exception("该机种在当前时段没有排班信息,请重新选择机种!"); } SchCalendar calendar = calendars.get(0); System.out.println("该机器在当前时段的班组:"+calendar.getMdTeam().getId()); return sysMaintenanceStaffDao.query("from SysMaintenanceStaff o where o.status='0' and o.team_id="+calendar.getMdTeam().getId()+" and o.eqp_type="+eqpType); } /** * @Description: 获得该故障详细类型的所有故障描述(故障描述按照出现次数倒叙排列) * @Param: [faultTypeDetail 故障详细类型] * @return: java.lang.String * @Author: sunzhen * @Date: 2019/10/29 */ @Override public String getDescription(String faultTypeDetail) { List query = eqpRequestRecordDao.query("select description,count(description) from EqpRequestRecord where faultTypeDetail=? group by description order by count(description) desc",faultTypeDetail); String str = JSON.toJSONString(query); return str; } /** * 新增维修呼叫记录 * @author sunzhen * @create 2019年9月26日上午9:19:48 * @param eqpRequestRecord * @return */ @LogAnno(operateType = "新增维修呼叫记录") @Override public void addRepairCall(EqpRequestRecord eqpRequestRecord) throws Exception { /*计算维修时长(新增暂时没用上) DecimalFormat df=new DecimalFormat("0.00"); long times = (eqpRequestRecord.getHandleEndTime().getTime()-eqpRequestRecord.getHandleStartTime().getTime()); eqpRequestRecord.setDuration(Double.parseDouble(df.format((double)times/(1000*60*60))));*/ if(eqpRequestRecord.getEqpName().contains("发射")){ //发射机保存维修呼叫 addRepairCallByTransmitterWorkOrder(eqpRequestRecord); }else{ //卷包封箱成型保存维修呼叫 addRepairCallBySchWorkorder(eqpRequestRecord); } } /** * @Description: 通过发射机工单创建维修呼叫记录 * @Param: [eqpRequestRecord] * @return: void * @Author: sunzhen * @Date: 2019/11/1 */ private void addRepairCallByTransmitterWorkOrder(EqpRequestRecord eqpRequestRecord) throws Exception { //向数据库查询当前时间段该发射机是否有工单存在 List workorders = transmitterWorkOrderDao.query("from TransmitterWorkOrderBean where ( ? between stim and etim) and eqpId = ?", new Date(), eqpRequestRecord.getEqpId()); //没有工单报异常 if(workorders==null||workorders.size()<1) { throw new Exception("该设备在当前时段没有工单,无法添加维修呼叫!"); } //没有选择维修工报异常(也可能是前端没查到维修工相关信息无法选择) if("".equals(eqpRequestRecord.getRequestUserName())||eqpRequestRecord.getRequestUserName()==null){ throw new Exception("没有选择维修工信息,无法添加维修呼叫!"); } TransmitterWorkOrderBean workorder = workorders.get(0); //取得发射机工单对象 //根据选择的维修工查询其维修的类型名称存入bean中 String[] split = eqpRequestRecord.getRequestUserName().split(","); String requestType=""; for(int i=0;i staffs = sysMaintenanceStaffDao.query("from SysMaintenanceStaff o where o.user_name = ?",split[i]); if(staffs!=null&&staffs.size()!=0){ if(i==split.length-1){ requestType+=staffs.get(0).getType_name(); }else{ requestType+=staffs.get(0).getType_name()+","; } } } eqpRequestRecord.setRequestType(requestType); //通过登录用户ID过滤 SessionInfo loginBean = (SessionInfo) request.getSession().getAttribute("sessionInfo"); if(loginBean!=null){ eqpRequestRecord.setSumitter(loginBean.getUser().getName());//建立维修呼叫的人 }else{ throw new Exception("登录信息有误!"); } eqpRequestRecord.setOid_(workorder.getId()); eqpRequestRecord.setWorkShop("2"); eqpRequestRecord.setId(UUID.randomUUID().toString()); eqpRequestRecord.setMaintenamceType("0"); //0:默认,手动 1. 轮保 2 润滑 3 停产检修 4 周期性保养 5 点检 eqpRequestRecord.setRequestTime(new Date()); eqpRequestRecord.setActionTime(eqpRequestRecord.getRequestTime()); eqpRequestRecord.setActionTime(eqpRequestRecord.getRequestTime()); eqpRequestRecord.setActualDate(eqpRequestRecord.getRequestTime()); //工单日期 eqpRequestRecord.setSts("0"); //初始化为“未处理”状态 eqpRequestRecord.setRepairDate(eqpRequestRecord.getActualDate()); //维修日期 eqpRequestRecord.setRequestTime_(DateUtil.getNowDateTime("yyyy-MM-dd HH:mm:ss")); //得到字符串日期 eqpRequestRecord.setActionTime_(eqpRequestRecord.getRequestTime_()); eqpRequestRecord.setActionTime_(eqpRequestRecord.getRequestTime_()); eqpRequestRecord.setActualDate_(eqpRequestRecord.getRequestTime_()); //工单日期 eqpRequestRecord.setRepairDate_(eqpRequestRecord.getActualDate_()); //维修日期 eqpRequestRecord.setDuration(0D); eqpRequestRecord.setEqp(new MdEquipment(eqpRequestRecord.getEqpId())); eqpRequestRecord.setTeamId(workorder.getTeam()); eqpRequestRecord.setShiftId(workorder.getShift()); eqpRequestRecord.setTeam(new MdTeam(eqpRequestRecord.getTeamId())); eqpRequestRecord.setShift(new MdShift(eqpRequestRecord.getShiftId())); FillUserInfoUtil.fillCreateUserInfo(eqpRequestRecord, request); //保存 eqpRequestRecordDao.save(eqpRequestRecord); } /** * @Description: 通过工单(卷包,成型,封箱)创建维修呼叫记录 * @Param: [eqpRequestRecord] * @return: void * @Author: sunzhen * @Date: 2019/11/1 */ private void addRepairCallBySchWorkorder(EqpRequestRecord eqpRequestRecord) throws Exception { //向数据库查询当前时间段该机器是否有工单存在 List workorders = schWorkorderDao.query("from SchWorkorder where ( ? between stim and etim) and eqp = ?", new Date(), eqpRequestRecord.getEqpId()); //没有工单报异常 if(workorders==null||workorders.size()<1) { throw new Exception("该设备在当前时段没有工单,无法添加维修呼叫!"); } //没有选择维修工报异常(也可能是前端没查到维修工相关信息无法选择) if("".equals(eqpRequestRecord.getRequestUserName())||eqpRequestRecord.getRequestUserName()==null){ throw new Exception("没有选择维修工信息,无法添加维修呼叫!"); } SchWorkorder workorder = workorders.get(0); //取得工单对象 //根据选择的维修工查询其维修的类型名称存入bean中 String[] split = eqpRequestRecord.getRequestUserName().split(","); String requestType=""; for(int i=0;i staffs = sysMaintenanceStaffDao.query("from SysMaintenanceStaff o where o.user_name = ?",split[i]); if(staffs!=null&&staffs.size()!=0){ if(i==split.length-1){ requestType+=staffs.get(0).getType_name(); }else{ requestType+=staffs.get(0).getType_name()+","; } } } eqpRequestRecord.setRequestType(requestType); //通过登录用户ID过滤 SessionInfo loginBean = (SessionInfo) request.getSession().getAttribute("sessionInfo"); if(loginBean!=null){ eqpRequestRecord.setSumitter(loginBean.getUser().getName());//建立维修呼叫的人 }else{ throw new Exception("登录信息有误!"); } eqpRequestRecord.setOid_(workorder.getId()); eqpRequestRecord.setType(workorder.getType().intValue()); //设置设备类型 1:卷烟机 2:包装机 3:装箱机 4:成型机 5:发射机 //设置车间 if (workorder.getType()==1||workorder.getType()==2 || workorder.getType()==3) { eqpRequestRecord.setWorkShop("1"); }else { eqpRequestRecord.setWorkShop("2"); } eqpRequestRecord.setId(UUID.randomUUID().toString()); eqpRequestRecord.setMaintenamceType("0"); //0:默认,手动 1. 轮保 2 润滑 3 停产检修 4 周期性保养 5 点检 eqpRequestRecord.setRequestTime(new Date()); eqpRequestRecord.setActionTime(eqpRequestRecord.getRequestTime()); eqpRequestRecord.setActionTime(eqpRequestRecord.getRequestTime()); eqpRequestRecord.setActualDate(eqpRequestRecord.getRequestTime()); //工单日期 eqpRequestRecord.setSts("0"); //初始化为“未处理”状态 eqpRequestRecord.setRepairDate(eqpRequestRecord.getActualDate()); //维修日期 eqpRequestRecord.setRequestTime_(DateUtil.getNowDateTime("yyyy-MM-dd HH:mm:ss")); //得到字符串日期 eqpRequestRecord.setActionTime_(eqpRequestRecord.getRequestTime_()); eqpRequestRecord.setActionTime_(eqpRequestRecord.getRequestTime_()); eqpRequestRecord.setActualDate_(eqpRequestRecord.getRequestTime_()); //工单日期 eqpRequestRecord.setRepairDate_(eqpRequestRecord.getActualDate_()); //维修日期 eqpRequestRecord.setDuration(0D); eqpRequestRecord.setEqp(new MdEquipment(eqpRequestRecord.getEqpId())); eqpRequestRecord.setTeamId(workorder.getMdTeam().getId()); eqpRequestRecord.setShiftId(workorder.getMdShift().getId()); eqpRequestRecord.setTeam(workorder.getMdTeam()); eqpRequestRecord.setShift(workorder.getMdShift()); FillUserInfoUtil.fillCreateUserInfo(eqpRequestRecord, request); //保存 eqpRequestRecordDao.save(eqpRequestRecord); /*String eqpRequestRecordStr = JSON.toJSONString(eqpRequestRecord); nettyChannel.write(eqpRequestRecordStr);*/ } /** * 删除维修呼叫记录 * @author sunzhen * @create 2019年9月26日上午21:58:48 * @param id * @return */ @LogAnno(operateType = "删除维修呼叫记录") @Override public void deleteRepairCall(String id) { this.beatchDeleteRepairCall(id); } /** * 批量删除维修呼叫记录 * @author sunzhen * @create 2019年9月26日上午21:58:48 * @param ids * @return */ @LogAnno(operateType = "批量删除维修呼叫记录") @Override public void beatchDeleteRepairCall(String ids) { String[] split = ids.split(","); try { for (String id : split) { //根据id获得维修呼叫记录信息 List eqpRequestRecords = eqpRequestRecordDao.query("from EqpRequestRecord where id = ?", id); EqpRequestRecord eqpRequestRecord = eqpRequestRecords.get(0); String repairer = eqpRequestRecord.getRepairer();//得到受理维修工姓名 eqpRequestRecordDao.deleteById(id,EqpRequestRecord.class); //删除维修呼叫记录 if(!(null==repairer||"".equals(repairer))){ //当维修呼叫没有受理人的情况 List sysMaintenanceStaffs = sysMaintenanceStaffDao.query("from SysMaintenanceStaff where user_name = ?", repairer); //根据受理维修工姓名获得职员信息 //遍历所有该职员的信息将其的工作状态重置为空闲状态 for (SysMaintenanceStaff staff : sysMaintenanceStaffs){ staff.setStatus("0"); sysMaintenanceStaffDao.update(staff); } } } }catch (Exception e){ e.printStackTrace(); } } @Override public void addSparePart(EqpSparePartsBean sparePartsBean) { List param = new ArrayList<>(); String sql = "insert into EQP_SPARE_PARTS(id,SPARE_PARTS_CODE,SPARE_PARTS_NUM,EQP_RR_ID) values(?,?,?,?)"; param.add(UUID.randomUUID().toString().replace("-","")); param.add(sparePartsBean.getSparePartsCode()); param.add(sparePartsBean.getSparePartsNum()); param.add(sparePartsBean.getEqpRrId()); eqmMaintainDao.updateBySql(sql,param); } }