package com.shlanbao.tzsc.pms.qm.self.service.impl; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import javax.servlet.http.HttpServletRequest; import com.shlanbao.tzsc.base.dao.SysLogDaoI; import com.shlanbao.tzsc.base.mapping.*; import com.shlanbao.tzsc.pms.qm.onlineCheck.service.impl.QmOnlineCheckServiceImpl; import com.shlanbao.tzsc.pms.sys.repairResquest.beans.RepairResquestBean; import com.shlanbao.tzsc.utils.tools.*; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.shlanbao.tzsc.base.dao.QmOutwardDaoI; import com.shlanbao.tzsc.base.dao.QmOutwardDetDaoI; import com.shlanbao.tzsc.base.interceptor.WorkOrderStatChangeInterceptor; import com.shlanbao.tzsc.base.model.DataGrid; import com.shlanbao.tzsc.base.model.PageParams; import com.shlanbao.tzsc.base.model.SessionInfo; import com.shlanbao.tzsc.base.service.BaseService; import com.shlanbao.tzsc.pms.qm.self.beans.QmAppearanceDataBean; import com.shlanbao.tzsc.pms.qm.self.beans.QmOutWandBean; import com.shlanbao.tzsc.pms.qm.self.beans.QmOutWardBatchMainInfo; import com.shlanbao.tzsc.pms.qm.self.beans.QmOutWardFaultInfo; import com.shlanbao.tzsc.pms.qm.self.beans.QmWardMainInfo; import com.shlanbao.tzsc.pms.qm.self.service.QmOutWandService; import com.shlanbao.tzsc.pms.sch.manualshift.beans.SchCalendarBean; /** * 外观质量检验记录实现类 * * @author luther.zhang * @create 2015-01-05 */ @Service public class QmOutWandServiceImpl extends BaseService implements QmOutWandService { @Autowired private QmOutwardDaoI dao; @Autowired private QmOutwardDetDaoI daoDet; @Autowired private HttpServletRequest request; @Autowired private SysLogDaoI logdao; @Override public DataGrid queryList(QmOutWandBean bean, PageParams pageParams) throws Exception { int pageIndex = pageParams.getPage(); int rows = pageParams.getRows(); int sRow = (pageIndex - 1) * rows + 1; int eRow = pageIndex * rows; StringBuffer sb = new StringBuffer(); List beans = new ArrayList<>(); //查询条数 sb.append(getQueryOutWardInfoSql(2, bean)); List rowNums = dao.queryBySql(sb.toString()); long total = StringUtil.converObj2Long(rowNums.get(0)); sb.setLength(0); //查询数据 if (total > 0) { sb.append(getQueryOutWardInfoSql(1, bean)); sb.append(" ) where rNum >=" + sRow + " AND rNum <=" + eRow + ""); List datas = dao.queryBySql(sb.toString()); Object[] obj = null; QmOutWandBean entity = null; for (Object object : datas) { obj = (Object[]) object; entity = new QmOutWandBean(); entity.setId(StringUtil.convertObjToString(obj[1])); entity.setuName(StringUtil.convertObjToString(obj[12])); entity.setEqp(StringUtil.convertObjToString(obj[2])); entity.setShift(StringUtil.convertObjToString(obj[3])); entity.setTeam(StringUtil.convertObjToString(obj[4])); entity.setMat(StringUtil.convertObjToString(obj[5])); entity.setcTime(StringUtil.convertObjToString(obj[6])); entity.setBatchNo(StringUtil.convertObjToString(obj[7])); entity.setoDate(StringUtil.convertObjToString(obj[8])); entity.setFirstLen(StringUtil.convertObjToString(obj[9])); entity.setTwoLen(StringUtil.convertObjToString(obj[10])); entity.setThreeLen(StringUtil.convertObjToString(obj[11])); entity.setSts(StringUtil.convertObjToString(obj[13])); entity.setSts2(StringUtil.convertObjToString(obj[14])); entity.setCreateUserName(StringUtil.convertObjToString(obj[15])); entity.setCreateUserTime(DateUtil.formatStringToDate(StringUtil.convertObjToString(obj[16]), "yyyy-MM-dd HH:mm:ss")); entity.setUpdateUserName(StringUtil.convertObjToString(obj[17])); entity.setUpdateUserTime(DateUtil.formatStringToDate(StringUtil.convertObjToString(obj[18]), "yyyy-MM-dd HH:mm:ss")); beans.add(entity); } } return new DataGrid(beans, total); } /** * 得到查询物流外观检主数据sql * * @param type * @param bean * @return */ private StringBuffer getQueryOutWardInfoSql(int type, QmOutWandBean bean) { StringBuffer sb = new StringBuffer(); if (type == 1) { sb.append("SELECT * from ( SELECT row_number() over(order by a.time desc) as rNum,a.id as id,"); sb.append("c.equipment_name as eqp,d.name as shift,e.name as team, "); sb.append(" f.name as mat,to_char(a.TIME,'yyyy-mm-dd hh24:mi:ss') as cTime,a.BATCH_NO as batchNO, "); sb.append(" to_char(b.DATE_,'yyyy-mm-dd') as oDate , a.FIRST_LEN,a.TWO_LEN,a.THREE_LEN, "); sb.append(" CASE WHEN A .eqp_name IS NOT NULL THEN A .eqp_name ELSE G . NAME END uName ,nvl(a.sts,0),nvl(a.sts2,0), "); sb.append(" a.CREATE_USER_NAME,a.CREATE_USER_TIME,a.UPDATE_USER_NAME,a.UPDATE_USER_TIME"); //sb.append(" nvl(a.CREATE_USER_NAME,''),nvl(a.CREATE_USER_TIME,''),nvl(a.UPDATE_USER_NAME,''),nvl(a.UPDATE_USER_TIME,'')"); } else { sb.append(" SELECT count(*) "); } sb.append(" from QM_OUTWARD a "); sb.append(" LEFT JOIN SCH_WORKORDER b on a.oid=b.id "); sb.append(" LEFT JOIN MD_EQUIPMENT c on c.id=b.eqp "); sb.append(" LEFT JOIN MD_SHIFT d on b.shift=d.id "); sb.append(" LEFT JOIN MD_TEAM e on b.team=e.id "); sb.append(" LEFT JOIN MD_MAT f on b.mat=f.id "); sb.append(" LEFT JOIN SYS_USER g on a.uid_=g.id "); sb.append(" WHERE 1=1 "); if (StringUtil.notEmpty(bean.getInspectionType())) { sb.append(" and a.instype in ( " + ("0".equals(bean.getInspectionType()) ? "0,1" : bean.getInspectionType()) + " )"); } if (StringUtil.notEmpty(bean.getShift())) { sb.append(" AND b.SHIFT='" + bean.getShift() + "'"); } if (StringUtil.notEmpty(bean.getTeam())) { sb.append(" AND b.TEAM='" + bean.getTeam() + "'"); } if (StringUtil.notEmpty(bean.getEqp())) { sb.append(" AND b.eqp='" + bean.getEqp() + "'"); } if (StringUtil.notEmpty(bean.getoDate())) { sb.append(" AND to_char(a.time,'yyyy-mm-dd')>='" + bean.getoDate() + "'"); } if (StringUtil.notEmpty(bean.getcTime())) { sb.append(" AND to_char(a.time,'yyyy-mm-dd')<='" + bean.getcTime() + "'"); } if (StringUtil.notEmpty(bean.getMat())) { sb.append(" AND b.mat='" + bean.getMat() + "'"); } //MES反馈状态 班长 if (StringUtil.notEmpty(bean.getStsMes()) && !",".equals(bean.getStsMes())) { sb.append(" AND a.sts='" + bean.getStsMes() + "'"); } //MES反馈状态 质检员 if (StringUtil.notEmpty(bean.getStsMes2())) { sb.append(" AND a.sts='" + bean.getStsMes2() + "'"); } //20支质量反馈状态 if (StringUtil.notEmpty(bean.getSts2())) { sb.append(" AND a.sts2='" + bean.getSts2() + "'"); sb.append(" and a.first_len not in (0) "); //过滤 } //设备类型 if (StringUtil.notEmpty(bean.getEqpType())) { sb.append(" AND b.type='" + bean.getEqpType() + "'"); } if ("0".equals(bean.getSts())) { //质检员查询 过滤用户,只能查询当前数据 sb.append(" and g.id='" + bean.getUid() + "'"); } else if ("1".equals(bean.getSts())) { //班长无需过滤用户,但只能查询状态为(1:班长 2:已反馈MES)的数据 sb.append("and a.sts in (1,2) "); } return sb; } /** * 查询物理外观检测详细 */ @Override public List queryDel(String id) { List datas = dao.queryBySql(getQueryOutWardDelInfoSql(id).toString()); List beans = new ArrayList<>(); Object[] obj = null; QmOutWandBean bean = null; for (Object object : datas) { obj = (Object[]) object; bean = new QmOutWandBean(); bean.setCode(StringUtil.convertObjToString(obj[0])); bean.setName(StringUtil.convertObjToString(obj[1])); bean.setType(StringUtil.convertObjToString(obj[2])); bean.setPos(StringUtil.convertObjToString(obj[3])); bean.setDes(StringUtil.convertObjToString(obj[4])); bean.setLvl(StringUtil.convertObjToString(obj[5])); bean.setMinusScore(StringUtil.convertObjToString(obj[6])); bean.setVal(StringUtil.convertObjToString(obj[7])); beans.add(bean); } return beans; } /** * 查询物理外观检测详细sql * * @param qqid * @return */ private StringBuffer getQueryOutWardDelInfoSql(String qqid) { StringBuffer sb = new StringBuffer(); sb.append(" SELECT b.code,b.name,b.type,b.pos,b.des,b.lvl,b.minusscore,a.val "); sb.append(" from QM_OUTWARD_DET a "); sb.append(" LEFT JOIN QM_OUTWARD_DEFECT_ITEM b on a.item=b.id "); sb.append(" WHERE a.QO_ID='" + qqid + "'"); return sb; } /** * 外观缺陷自检 * 1)由于定时器换班时前10分钟反馈 * 2)外观巡检手动反馈 */ // @LogAnno(operateType="外观反馈MES或20支质量反馈MES") @Override public void sendMsg(String id, String param) { try { /** * 0:默认数据 * 自检(1:自动已反馈) * 巡检( 1:手动反馈班长 2:手动已反馈) * */ String sts = "2"; if ("".equals(id)) { //只有自动反馈,id为空;通过当前日期查询当班数据 sts = "1"; id = this.queryIds(); } if ("".equals(id)) {//如果id为空说明无自检数据需要反馈 return; } List beans = new ArrayList<>(); if (StringUtil.notEmpty(id)) { id = StringUtil.arrayToStringBySqlin(id.split(",")); String sql = getSendMsgSql(id); List datas = dao.queryBySql(sql); List batchInfos = null; List faults = null; Map checkMap = new HashMap<>(); Object[] obj = null; QmWardMainInfo bean = null; //批次 QmOutWardBatchMainInfo wardBean = null; //详细项 QmOutWardFaultInfo faultBean = null; for (int i = 0; i < datas.size(); i++) { //释放对象 bean = null; wardBean = null; faultBean = null; obj = (Object[]) datas.get(i); String oid = StringUtil.convertObjToString(obj[0]); String btch = StringUtil.convertObjToString(obj[6]); bean = checkMap.get(oid); if (bean == null) { bean = new QmWardMainInfo(); bean.setMaterialCode(StringUtil.convertObjToString(obj[1]));//牌号 bean.setInspectionType(StringUtil.convertObjToString(obj[2]));//检测类型 bean.setOrderNumber(StringUtil.convertObjToString(obj[3]));//工单号 beans.add(bean); } //检测详细,以检测批次判断是否重复(或OutWard主键) String wardId = StringUtil.convertObjToString(obj[4]); batchInfos = bean.getBatchInfo(); //查找QmOutWardBatchMainInfo,没有则创建 wardBean = findBatchBeanById(batchInfos, wardId, wardBean); wardBean.setTimestamp(StringUtil.convertObjToString(obj[5])); wardBean.setSubBatchCode(btch); wardBean.setFaultType(StringUtil.convertObjToString(obj[7])); //检验人 wardBean.setCheckName(StringUtil.convertObjToString(obj[12])); wardBean.setSampleNumber(StringUtil.convertObjToString(obj[8]).equals("") ? "20" : StringUtil.convertObjToString(obj[8])); String faultId = StringUtil.convertObjToString(obj[9]); faults = wardBean.getFaults(); //查找QmOutWardBatchMainInfo,没有则创建 faultBean = findFaultBeanById(faults, faultId, faultBean); faultBean.setFaultCode(StringUtil.convertObjToString(obj[10])); faultBean.setFaultNumber(StringUtil.convertObjToString(obj[11])); //将封装好的对象放入map中 checkMap.put(oid, bean); } } try { WorkOrderStatChangeInterceptor.getInstance().DASSendOutWard(beans, param, id, sts); } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { System.out.println("外观缺陷自检数据自动反馈异常!!!"); e.printStackTrace(); } } /** * 根据id查找QmOutWardBatchMainInfo * * @param batchInfos * @param id * @return */ private QmOutWardBatchMainInfo findBatchBeanById(List batchInfos, String id, QmOutWardBatchMainInfo wardBean) { for (QmOutWardBatchMainInfo w : batchInfos) { if (w.getWardId().equals(id)) { wardBean = w; break; } } if (wardBean == null) { wardBean = new QmOutWardBatchMainInfo(); wardBean.setWardId(id); batchInfos.add(wardBean); } return wardBean; } /** * 根据id查找QmOutWardFaultInfo * * @param faults * @param id * @param faultBean * @return */ private QmOutWardFaultInfo findFaultBeanById(List faults, String id, QmOutWardFaultInfo faultBean) { for (QmOutWardFaultInfo w : faults) { if (w.getId().equals(id)) { faultBean = w; break; } } if (faultBean == null) { faultBean = new QmOutWardFaultInfo(); faultBean.setId(id); faults.add(faultBean); } return faultBean; } /** * 根据物理外观检测记录id查询数据 * * @param id mvl sts [过滤重复反馈] * @return */ private String getSendMsgSql(String id) { StringBuffer sb = new StringBuffer(); sb.append("select a.oid as oid,d.code as matCode,A.instype as inspectionType,c.code as orderCode,a.id as wardId,to_char(a.time,'yyyy-MM-dd hh24:mi:ss') as checkTime,"); sb.append(" a.BATCH_NO as batchNo,e.paramter_code as faultType, "); sb.append(" (select f.STD from sch_workorder_craft f where f.parameter_setrevision = c.parameter_set_revision and f.dcs_type ='ROL' and f.ord_code !=-1 and f.param_type =2 and ROWNUM =1) as sampleNum,"); sb.append(" b.id as defectItemId,e.code as faultCode,b.val as faultNum,"); sb.append(" CASE WHEN A .eqp_name IS NOT NULL THEN A .eqp_name ELSE G . NAME END uName "); sb.append(" from qm_outward a left join qm_outward_det b on a.id=b.qo_id "); sb.append(" left join sch_workorder c on c.id=a.oid "); sb.append(" left join md_mat d on c.mat=d.id "); sb.append(" left join qm_outward_defect_item e on e.id=b.item "); sb.append(" left join SYS_USER G on G.id=a.uid_ "); sb.append(" where a.id in(" + id + ") "); return sb.toString(); } /** * 根据机台编号查询工单信息 * Rengj */ public List queryOrderNumber(String eqp, SessionInfo info, HttpServletRequest request) { java.util.Date date = new java.util.Date(); /*SimpleDateFormat smp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String d = smp.format(date);*/ String sql = " select code,(select equipment_code from MD_EQUIPMENT " + " where id = '" + eqp + "' )as eqpCode,id,mat from SCH_WORKORDER where 1=1 and sts = 2 " + " and eqp= '" + eqp + "' and sysdate BETWEEN stim and etim "; List list = dao.queryBySql(sql); QmOutWandBean qm = new QmOutWandBean(); List qwbList = new ArrayList(); if (list.size() > 0) { Object[] obj = (Object[]) list.get(0); String min = ""; if (date.getMinutes() <= 9) min = "0" + date.getMinutes(); else min = String.valueOf(date.getMinutes()); qm.setOrderNumber(obj[0].toString()); qm.setBatchNo(genBatchNo(obj[1].toString())); qm.setCreateTime(date.getHours() + ":" + min); qm.setUserName(info.getUser().getName()); qm.setUid(info.getUser().getId()); qm.setOid(obj[2].toString()); qm.setMat(obj[3].toString()); request.getSession().setAttribute("itemOdn", obj[0].toString()); request.getSession().setAttribute("itemMat", obj[3].toString()); qwbList.add(qm); } return qwbList; } /** * 生成外观质量检测批次号 * Rengj */ private String genBatchNo(String eqpCode) { String batchNo = DateUtil.formatDateToString(new Date(), "yyyyMMddHHmm"); batchNo += eqpCode + MathUtil.getRandomInt(100, 1000); return batchNo; } /** * 查询缺陷信息 * Rengj */ @Override public DataGrid queryOutWandDes(QmOutWandBean bean, HttpServletRequest request, PageParams pageParams) { String orderNumber = (String) request.getSession().getAttribute("itemOdn"); String mat = (String) request.getSession().getAttribute("itemMat"); // request.getSession().removeAttribute("itemOdn"); bean.setOrderNumber(orderNumber); bean.setMat(mat); int pageIndex = pageParams.getPage(); int rows = pageParams.getRows(); int sRow = (pageIndex - 1) * rows; int eRow = pageIndex * rows; String sql = this.joinSqlCX(bean, "count"); List rowNums = dao.queryBySql(sql); long total = StringUtil.converObj2Long(rowNums.get(0)); List beans = new ArrayList<>(); if (total > 0) { sql = this.joinSqlCX(bean, ""); sql += "where rNum >" + sRow + " AND rNum <=" + eRow; List owdList = dao.queryBySql(sql); QmOutWandBean qowBean = null; Object[] obj = null; if (owdList.size() > 0) { for (Object object : owdList) { obj = (Object[]) object; qowBean = new QmOutWandBean(); qowBean.setCode(StringUtil.convertObjToString(obj[1])); qowBean.setDes(StringUtil.convertObjToString(obj[2])); qowBean.setId(StringUtil.convertObjToString(obj[3])); beans.add(qowBean); } } } return new DataGrid(beans, total); } /** * 保存外观质量数据 * Rengj */ @LogAnno(operateType = "保存外观质量数据") public void saveOutWandDes(QmAppearanceDataBean bean, HttpServletRequest request) { try { QmOutward qo = new QmOutward(); SchWorkorder scr = new SchWorkorder(); SysUser su = new SysUser(); su.setId(bean.getUid()); qo.setSysUser(su); scr.setId(bean.getOid()); qo.setSchWorkorder(scr); qo.setTime(new Date()); qo.setBatchNo(bean.getBatchNo()); qo.setInsType(3l); qo.setSts(0l); qo.setSts2(0l); FillUserInfoUtil.fillCreateUserInfo(qo, request); //20支质量判断 if (!"".equals(bean.getFirstLen()) && bean.getFirstLen() != null) { qo.setFirstLen(Float.parseFloat(bean.getFirstLen())); } if (!"".equals(bean.getTwoLen()) && bean.getTwoLen() != null) { qo.setTwoLen(Float.parseFloat(bean.getTwoLen())); } if (!"".equals(bean.getThreeLen()) && bean.getThreeLen() != null) { qo.setThreeLen(Float.parseFloat(bean.getThreeLen())); } String uuid = dao.saveBackKey(qo); List nums = new ArrayList(); List blameTest = new ArrayList(); if (!"".equals(bean.getBlameTestId()) && bean.getBlameTestId() != null && !"".equals(bean.getNum()) && bean.getNum() != null) { blameTest.add(bean.getBlameTestId()); nums.add(bean.getNum()); } if (!"".equals(bean.getBlameTestId2()) && bean.getBlameTestId2() != null && !"".equals(bean.getNum2()) && bean.getNum2() != null) { blameTest.add(bean.getBlameTestId2()); nums.add(bean.getNum2()); } if (!"".equals(bean.getBlameTestId3()) && bean.getBlameTestId3() != null && !"".equals(bean.getNum3()) && bean.getNum3() != null) { blameTest.add(bean.getBlameTestId3()); nums.add(bean.getNum3()); } if (!"".equals(bean.getBlameTestId4()) && bean.getBlameTestId4() != null && !"".equals(bean.getNum4()) && bean.getNum4() != null) { blameTest.add(bean.getBlameTestId4()); nums.add(bean.getNum4()); } if (!"".equals(bean.getBlameTestId5()) && bean.getBlameTestId5() != null && !"".equals(bean.getNum5()) && bean.getNum5() != null) { blameTest.add(bean.getBlameTestId5()); nums.add(bean.getNum5()); } if (blameTest.size() > 0) { QmOutwardDet qod; QmOutwardDefectItem qoditem; QmOutward qoward; for (int i = 0; i < blameTest.size(); i++) { qod = new QmOutwardDet(); qoditem = new QmOutwardDefectItem(); qoward = new QmOutward(); qod.setId(UUID.randomUUID().toString()); qoditem.setId(blameTest.get(i)); qod.setQmOutwardDefectItem(qoditem); qoward.setId(uuid); qod.setQmOutward(qoward); qod.setVal(Long.parseLong(nums.get(i))); daoDet.save(qod); } } request.getSession().removeAttribute("itemOdn"); request.getSession().removeAttribute("itemMat"); } catch (Exception e) { e.printStackTrace(); } } private String joinSqlCX(QmOutWandBean bean, String temp) { List orderTypelist = daoDet.queryBySql("select type from sch_workorder where code='" + bean.getOrderNumber() + "'"); if (orderTypelist != null && orderTypelist.size() != 0) { String orderType = orderTypelist.get(0).toString(); if ("1".equals(orderType)) {//卷烟机 bean.setDcsType("ROL"); } else if ("2".equals(orderType)) {//包装机 bean.setDcsType("PKG"); } else if ("3".equals(orderType)) {//封箱机 bean.setDcsType("PBOX"); } else { bean.setDcsType("FLT"); } } String sql = ""; if ("count".equals(temp)) { sql += " select count(*) from ( "; } else { sql += " select * from ( "; } sql += "select rownum as rNum,q1.code, q1.des,q1.id from qm_outward_defect_item q1,sch_workorder_craft s1,sch_workorder s2, md_mat c " + " where 1=1 and s1.parameter_setrevision = s2.parameter_set_revision " + " and q1.paramter_code = s1.parameter_code and c.id=s1.MATERIAL_CODE and c.code=( select code from md_mat where id='" + bean.getMat() + "' and rownum=1) "; if (bean.getName() != null && !"".equals(bean.getName())) { sql += " and q1.name like '%" + bean.getName() + "%'"; } if (bean.getDcsType() != null && !"".equals(bean.getDcsType())) { sql += " and s1.dcs_type = '" + bean.getDcsType() + "'"; } if (bean.getType() != null && !"".equals(bean.getType())) { sql += " and q1. type = '" + bean.getType() + "'"; } if (bean.getOrderNumber() != null && !"".equals(bean.getOrderNumber())) { sql += " and s2.code = '" + bean.getOrderNumber() + "' "; } sql += ")"; return sql; } /** * 拼接sql * Rengj */ private String joinSql(QmOutWandBean bean, String temp) { List orderTypelist = daoDet.queryBySql("select type from sch_workorder where code='" + bean.getOrderNumber() + "'"); if (orderTypelist != null && orderTypelist.size() != 0) { String orderType = orderTypelist.get(0).toString(); if ("1".equals(orderType)) {//卷烟机 bean.setDcsType("ROL"); } else if ("2".equals(orderType)) {//包装机 bean.setDcsType("PKG"); } else if ("3".equals(orderType)) {//封箱机 bean.setDcsType("PBOX"); } else {//成型机 bean.setDcsType("FTL"); } } String sql = ""; if ("count".equals(temp)) { sql += " select count(*) from ( "; } else { sql += " select * from ( "; } sql += "select rownum as rNum,q1.code, q1.des,q1.id from qm_outward_defect_item q1,sch_workorder_craft s1,sch_workorder s2 " + " where 1=1 and s1.parameter_setrevision = s2.parameter_set_revision and q1.status =1 " + " and q1.paramter_code = s1.parameter_code and s1.MATERIAL_CODE = '" + bean.getMat() + "'"; if (bean.getName() != null && !"".equals(bean.getName())) { sql += " and q1.name like '%" + bean.getName() + "%'"; } if (bean.getDcsType() != null && !"".equals(bean.getDcsType())) { sql += " and s1.dcs_type = '" + bean.getDcsType() + "'"; } if (bean.getType() != null && !"".equals(bean.getType())) { sql += " and q1. type = '" + bean.getType() + "'"; } if (bean.getOrderNumber() != null && !"".equals(bean.getOrderNumber())) { sql += " and s2.code = '" + bean.getOrderNumber() + "' "; } sql += ")"; return sql; } /** * 查询上一班次外观质检数据 * Rengj */ private String queryIds() { String ids = ""; try { /** * 1)获得当前系统时间 * 2)查询工厂日历,得到:开始日期,结束 日期,班次,班组信息 * 3)通过这些日期时间,查询工单表 * * */ //通过当前系统时间,得到工厂日期信息 StringBuffer sql = new StringBuffer(); sql.append(" select q1.id from QM_OUTWARD q1,SCH_WORKORDER s1 where 1=1 and q1.oid = s1.id "); sql.append(" and nvl(q1.sts,0)=0 and s1.sts in (2,4) "); sql.append(" and q1.instype in (0,1) and to_date('" + DateUtil.getNowDateTime("yyyy-MM-dd HH:mm:ss") + "','yyyy-MM-dd hh24:mi:ss') BETWEEN s1.STIM AND s1.ETIM"); //sql.append(" and to_char(s1.date_,'yyyy-MM-dd')='"+scbt.getDate()+"'" ); //sql.append(" and q1.instype = 0 and s1.shift='"+scbt.getMdShiftCode()+"' " ); List idsList = dao.queryBySql(sql.toString()); for (int i = 0; i < idsList.size(); i++) { Object obj = idsList.get(i); ids += obj + ","; } } catch (Exception e) { e.printStackTrace(); } return ids; } /** * 功能说明: * 反馈班长,修改状态 */ @LogAnno(operateType = "反馈班长或回退质检员") @Override public void updateQmOutWardByIds(String ids, String sts) { ids = ids.replaceAll(",", "','"); SessionInfo sessionInfo = (SessionInfo) request.getSession().getAttribute("sessionInfo"); String updateUserName = sessionInfo.getUser().getName(); if (ids != null && !"".equals(ids)) { dao.updateBySql("update QM_OUTWARD set sts='" + sts + "',UPDATE_USER_NAME='" + updateUserName + "',UPDATE_USER_TIME=sysdate where instype=3 and id in ('" + ids + "') ", null); } } @Override public String updateCheckTimes(String stim, String ids) { String result = ""; try { String sql = "update QM_OUTWARD set time = to_date('" + stim + "','yyyy-MM-dd hh24:mi:ss') where id='" + ids + "'"; dao.updateBySql(sql, null); result = "保存检测时间成功!"; } catch (Exception e) { result = "保存检测时间失败!"; } return result; } /** * 批量删除外观自检记录 * * @param id 需删除的id值 * @param request * @return 反馈信息 */ @LogAnno(operateType = "删除外观缺陷过程自检记录(可批量)") @Override public String beatchDeleteOutWand(String id, HttpServletRequest request) { String result = "删除失败!"; String[] ids = id.split(","); List qmIds; String sql; try { for (int i = 0; i < ids.length; i++) { qmIds = new ArrayList<>(); sql = "delete from QM_OUTWARD_DET where qo_id = ?"; qmIds.add(ids[i]); dao.updateBySql(sql, qmIds);//外观质量缺陷详细 sql = "delete from QM_OUTWARD where id = ?"; dao.updateBySql(sql, qmIds); } result = "删除成功"; } catch (Exception e) { e.printStackTrace(); } return result; } /** * 删除外观自检记录 * * @param id 需删除的id值 * @param request * @return 反馈信息 */ @Override public String deleteOutWand(String id, HttpServletRequest request) { return beatchDeleteOutWand(id, request); } @LogAnno(operateType = "编辑") @Override public String edit(QmOutWandBean qmOutWandBean) { String result = "操作成功!"; try { QmOutward outward = new QmOutward(); outward.setId(qmOutWandBean.getId()); if (!StringUtils.isEmpty(qmOutWandBean.getFirstLen())) { outward.setFirstLen(Float.parseFloat(qmOutWandBean.getFirstLen())); } if (!StringUtils.isEmpty(qmOutWandBean.getTwoLen())) { outward.setTwoLen(Float.parseFloat(qmOutWandBean.getTwoLen())); } if (!StringUtils.isEmpty(qmOutWandBean.getThreeLen())) { outward.setThreeLen(Float.parseFloat(qmOutWandBean.getThreeLen())); } dao.updateBySqlParam("update QM_OUTWARD set FIRST_LEN = ? , TWO_LEN = ? , THREE_LEN = ? where id = ? ", qmOutWandBean.getFirstLen(), qmOutWandBean.getTwoLen(), qmOutWandBean.getThreeLen(), qmOutWandBean.getId()); } catch (Exception e) { result = "操作失败!"; e.printStackTrace(); } return result; } @Override public QmOutWandBean queryById(String id) { List objects = dao.queryBySql("select id,FIRST_LEN,TWO_LEN,THREE_LEN from QM_OUTWARD where id = ?", id); QmOutWandBean bean = new QmOutWandBean(); try { Object[] obj = (Object[]) objects.get(0); bean.setId(StringUtil.convertObjToString(obj[0])); bean.setFirstLen(StringUtil.convertObjToString(obj[1])); bean.setTwoLen(StringUtil.convertObjToString(obj[2])); bean.setThreeLen(StringUtil.convertObjToString(obj[3])); } catch (Exception e) { e.printStackTrace(); } return bean; } }