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<String, String> userMap=new HashMap<String, String>();
|
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<EqmMaintain> eqmMaintains = eqmMaintainDao.queryByPage(hql.concat(params)+" order by o.date_plan desc ,o.eqp.equipmentCode ", pageParams);
|
List<EqmMaintainBean> beans = new ArrayList<EqmMaintainBean>();
|
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<String, String> userMap=new HashMap<String, String>();
|
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<EqmMaintainBean> list) throws Exception {
|
//去掉list里面关键字段相同的对象
|
HashSet<EqmMaintainBean> h = new HashSet<EqmMaintainBean>(list);
|
list.clear();
|
list.addAll(h);
|
//、查询计划负责人name和id封装成map
|
String sql="SELECT name,id from SYS_USER";
|
List l=eqmMaintainDao.queryBySql(sql);
|
Map<String, String> userMap=new HashMap<String, String>();
|
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;i<list.size();i++){
|
EqmMaintain eqm=new EqmMaintain();
|
//eqm.setDel("0");
|
EqmMaintainBean eqmb=list.get(i);
|
/*if(eqmb==null||eqmb.getEqp_id()==null||eqmb.getDate_plans()==null){
|
continue;
|
}
|
//将责任人name转id
|
if(StringUtil.notNull(eqmb.getBlame_usr_id())){
|
String name=eqmb.getBlame_usr_id().trim();
|
String id=userMap.get(name);
|
eqmb.setBlame_usr_id(id);
|
}
|
if(StringUtil.notNull(eqmb.getReal_usr_id())){
|
String[] ids=eqmb.getReal_usr_id().split("、");
|
StringBuffer sb=new StringBuffer();
|
for (int j = 0; j < ids.length; j++) {
|
sb.append(userMap.get(ids[j]));
|
sb.append(",");
|
}
|
eqmb.setReal_usr_id(sb.toString());
|
}*/
|
// //判断是否已经存在 机台、部位、日期
|
String sql2=null;//"SELECT id from EQM_MAINTAIN where del=0 and equ_id='"+eqmb.getEqp_id()+"' AND date_plan='"+eqmb.getDate_plans()+"' AND place='"+eqmb.getPlace()+"' and contents='"+eqmb.getContents()+"'";
|
List lt=eqmMaintainDao.queryBySql(sql2);
|
if(lt!=null&<.size()>0 ){
|
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<EqpRequestRecord> 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<EqpRequestRecord> 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<EqpSparePartsBean> 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<EqmCallServiceBean> beans=new ArrayList<>();
|
EqmServiceSparePartBean sparePart=null;
|
List<EqmServiceSparePartBean> 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<Object> 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<Object> 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<Tree> loadTroubleTree(String id) {
|
List<Tree> 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<Object> 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<CosSparePartsBean> 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<Object> 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<ShiftBean> getAllShifts() throws Exception{
|
return BeanConvertor.copyList(mdShiftDao.query("from MdShift o where o.del='0'"), ShiftBean.class);
|
}
|
|
/**
|
* 获得所有班组
|
*/
|
@Override
|
public List<TeamBean> getAllTeams() throws Exception{
|
return BeanConvertor.copyList(mdTeamDao.query("from MdTeam o where o.del='0'"), TeamBean.class);
|
}
|
|
/**
|
* 获得所有设备
|
*/
|
@Override
|
public List<EquipmentsBean> getAllEqus() throws Exception {
|
return BeanConvertor.copyList(equipmentsDao.query("from MdEquipment o where o.del='0'"), EquipmentsBean.class);
|
}
|
|
/**
|
* 获得所有维修工
|
*/
|
@Override
|
public List<SysMaintenanceStaff> 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<SchCalendar> 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<EqpRequestRecord> 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<TransmitterWorkOrderBean> 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<split.length;i++){
|
List<SysMaintenanceStaff> 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<SchWorkorder> 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<split.length;i++){
|
List<SysMaintenanceStaff> 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<EqpRequestRecord> 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<SysMaintenanceStaff> 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<Object> 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);
|
|
}
|
}
|