package com.uas.eis.serviceImpl; import com.uas.eis.core.config.SpObserver; import com.uas.eis.dao.BaseDao; import com.uas.eis.dao.SqlRowList; import com.uas.eis.entity.*; import com.uas.eis.exception.ApiSystemException; import com.uas.eis.sdk.entity.ApiResult; import com.uas.eis.service.MESDataService; import com.uas.eis.service.MESHelperService; import com.uas.eis.utils.*; import flexjson.JSON; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import org.apache.commons.lang.StringUtils; import org.dom4j.DocumentException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.jackson.JsonObjectDeserializer; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RequestBody; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import sun.awt.TimedWindowEvent; import java.io.IOException; import java.sql.Timestamp; import java.util.*; import org.dom4j.DocumentHelper; import javax.print.DocFlavor; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.xml.sax.InputSource; import java.io.StringReader; @Service public class MESHelperServiceImpl implements MESHelperService { @Autowired private BaseDao baseDao; @Value("${spring.datasource.username}") private String username; @Override public Map Radium(String data) { Map map=null; Map rmap = new HashMap(); String oErrMessage=""; String UserName=""; try{ map =BaseUtil.convertJsonToMap(data); }catch (Exception e){ System.out.printf(e.getMessage()) ; } if(map.get("SN")==null){ rmap.put("code",-1); rmap.put("message","SN号不能为空"); return rmap; } if(map.get("MO")==null){ rmap.put("code",-1); rmap.put("message","工单号不能为空"); return rmap; } if(map.get("SpecificationName")==null){ rmap.put("code",-1); rmap.put("message","工序不能为空"); return rmap; } if(map.get("UserName")==null){ rmap.put("code",-1); rmap.put("message","用户不能为空"); return rmap; } String specificationName=map.get("SpecificationName").toString(); String MO=map.get("MO").toString(); Map map1=BaseUtil.parseFormStoreToMap(map.get("SN").toString()); for (Map.Entry entry : map1.entrySet()) { Object key = entry.getKey(); Object value = entry.getValue(); SqlRowList rs=baseDao.queryForRowSet("select 1 from makesnlist where msl_sncode='"+value.toString().toUpperCase()+"'" + " and msl_makecode='"+MO+"' and msl_Radium=-1"); if(rs.next()){ oErrMessage+="序列号"+value.toString().toUpperCase()+"已镭雕,"; }else { baseDao.execute("update makesnlist set msl_Radium=-1,msl_zone='"+StringUtil.nvl(key,"").replace("sn","").replace("SN","")+"' where msl_sncode='"+value.toString().toUpperCase()+"' and " + "msl_makecode='"+MO+"'"); } //启用过站 if(baseDao.getFieldDataByCondition("configs","data","caller='MESSetting' and code='Radium'").toString().equals("1")){ oErrMessage+=GoMo(value.toString().toUpperCase(),MO, specificationName); if(oErrMessage.equals("null")){ oErrMessage=""; }else{ rmap.put("code",-1); rmap.put("message",oErrMessage); return rmap; } oErrMessage+=CheckRoutePassed(value.toString().toUpperCase(),specificationName); if(oErrMessage.equals("null")){ oErrMessage=""; }else{ rmap.put("code",-1); rmap.put("message",oErrMessage); return rmap; } oErrMessage+=SetPcbaData(value.toString().toUpperCase(),specificationName,UserName,"OK"); if(oErrMessage.equals("null")){ oErrMessage=""; }else{ rmap.put("code",-1); rmap.put("message",oErrMessage); return rmap; } } } if(oErrMessage.equals("")||oErrMessage==null){ rmap.put("code",0); rmap.put("message","镭射识别绑定成功"); return rmap; }else{ rmap.put("code",-1); rmap.put("message",oErrMessage); return rmap; } } @Override public Map SPI(String data) { Map rmap = new HashMap(); try{ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); try { try{ Element root; NodeList books; Document document = builder.parse(new InputSource(new StringReader(data))); root = document.getDocumentElement(); books = root.getChildNodes(); String Username=""; String Shiftname=""; String MachineNO=""; String LineNO=""; String procedure=""; String Moname=""; String Lotsn=""; String Side=""; String Result=""; String Defect=""; String elementQTY=""; String TestQTY=""; String Time=""; for (Node node = books.item(1).getFirstChild(); node != null; node = node.getNextSibling()) { { if (node.getNodeName().equals("UpdAOISPIRecord")) { NodeList books1 = node.getChildNodes(); for (int i = 0; i < books1.getLength(); i++) { Node node1 = books1.item(i); if(!node1.getNodeName().equals("#text")){ switch (node1.getNodeName()){ case "Username":{ Username=node1.getTextContent(); break; } case "Shiftname":{ Shiftname=node1.getTextContent(); break; } case "MachineNO":{ MachineNO=node1.getTextContent(); break; } case "LineNO":{ LineNO=node1.getTextContent(); break; } case "procedure": procedure=node1.getTextContent(); break; case "Moname": Moname=node1.getTextContent(); break; case "Lotsn": Lotsn=node1.getTextContent(); break; case "Side": Side=node1.getTextContent(); break; case "Result": Result=node1.getTextContent(); break; case "Defect": Defect=node1.getTextContent(); break; case "elementQTY": elementQTY=node1.getTextContent(); break; case "TestQTY": TestQTY=node1.getTextContent(); break; case "Time": Time=node1.getTextContent(); break; default: break; } //System.out.printf("名称:"+node1.getNodeName()); //System.out.printf("值:"+node1.getTextContent()); //System.out.printf("类型:"+node1.getNodeType()); } } } } } Time=Time.substring(0,19).replaceAll("T"," "); baseDao.execute("insert into devicetestinfo(DTI_ID, DTI_SNCODE, DTI_USERNAME, DTI_MACHINE, DTI_LINECODE, DTI_RESULT, DTI_MAKECODE, DTI_SHIFTNAME, DTI_PROGRAM, DTI_DEFECT, " + "DTI_TESTQTY, DTI_MACHINETYPE, DTI_TYPE, DTI_TIME, DTI_SOURCECONTENT,dti_elementQTY)values(devicetestinfo_seq.nextval,'"+Lotsn+"','"+Username+"','"+MachineNO+"','"+LineNO+"','"+Result+"'" + ",'"+Moname+"','"+Shiftname+"','"+procedure+"','"+Defect+"','"+TestQTY+"','SPI','SPI',to_date('"+Time+"','yyyy-mm-dd hh24:mi:ss'),'','"+elementQTY+"')"); }catch (IOException e){ System.out.printf(e.getMessage()); } } catch (SAXException e){ } }catch (ParserConfigurationException e){ } return rmap; } @Override public String AOI(String Username,String Shiftname, String MachineNO, String LineNO, String procedure,String Moname, String Lotsn,String Side,String Result,String Defect,String elementQTY,String TestQTY,String Type,String Time) { baseDao.execute("insert into devicetestinfo(DTI_ID, DTI_SNCODE, DTI_USERNAME, DTI_MACHINE, DTI_LINECODE, DTI_RESULT, DTI_MAKECODE, DTI_SHIFTNAME, DTI_PROGRAM, DTI_DEFECT, " + "DTI_TESTQTY, DTI_MACHINETYPE, DTI_TYPE, DTI_TIME, DTI_SOURCECONTENT,dti_elementQTY)values(devicetestinfo_seq.nextval,'"+Lotsn+"','"+Username+"','"+MachineNO+"','"+LineNO+"','"+Result+"'" + ",'"+Moname+"','"+Shiftname+"','"+procedure+"','"+Defect+"','"+TestQTY+"','"+Type+"','AOI',to_date('"+Time+"','yyyy-mm-dd hh24:mi:ss'),'','"+elementQTY+"')"); return ""; } @Override public String UploadSteel(String SteelMeshCode,String scraperCode, String SteelMeshCount, String scraperCount, String datatime) { String err = CheckSteel(SteelMeshCode); //判断钢网编号 if(SteelMeshCode!=null&&!"".equals(SteelMeshCode)){ baseDao.execute("insert into devicetestinfo(DTI_ID, DTI_SNCODE,DTI_TESTQTY, DTI_MACHINETYPE, DTI_TYPE, DTI_TIME, DTI_SOURCECONTENT)values(devicetestinfo_seq.nextval,'"+scraperCode+"','"+scraperCount+"','钢网','钢网',to_date('"+datatime+"','yyyy-mm-dd hh24:mi:ss'),'')"); baseDao.execute("update stencil set st_usecount=nvl(st_usecount,0)+"+scraperCount +" where st_code='"+SteelMeshCode+"'"); } //判断刮刀编号 if(scraperCode!=null&&!"".equals(scraperCode)){ baseDao.execute("insert into devicetestinfo(DTI_ID, DTI_SNCODE,DTI_TESTQTY, DTI_MACHINETYPE, DTI_TYPE, DTI_TIME, DTI_SOURCECONTENT)values(devicetestinfo_seq.nextval,'"+scraperCode+"','"+scraperCount+"','刮刀','刮刀',to_date('"+datatime+"','yyyy-mm-dd hh24:mi:ss'),'')"); baseDao.execute("update stencil set st_usecount=nvl(st_usecount,0)+"+scraperCount +" where st_code='"+scraperCode+"'"); } return err; } @Override public String CheckSteel(String SteelMeshCode) { Map rmap = new HashMap(); SqlRowList rs=baseDao.queryForRowSet("select st_kind,nvl(st_usecount,0)st_usecount,nvl(st_maxusecount,0)st_maxusecount from stencil where st_code='"+SteelMeshCode+"'"); if(rs.next()){ String st_usecount=rs.getString("st_usecount"); String st_maxusecount=rs.getString("st_maxusecount"); String st_kind=rs.getString("st_kind"); if(Integer.parseInt(st_usecount)>=Integer.parseInt(st_maxusecount)){ return rs.getString("st_kind")+"已使用"+st_usecount+",超出最大使用次数"+st_maxusecount; } }else{ return "编号不存在"; } return ""; } @Override public Map SetupResultDataInterface(String data) { Map rmap = new HashMap(); JSONObject object = JSONObject.fromObject(data); Object object1 = object.get("data"); JSONObject obj = JSONObject.fromObject(object1); JSONObject SetupResultDetail=obj.getJSONObject("SetupResultDetail"); if(SetupResultDetail!=null){ String ActionType=SetupResultDetail.get("ActionType").toString(); String MessageSendTime=Time(SetupResultDetail.getString("MessageSendTime")); String LineName=SetupResultDetail.get("LineName").toString(); String MachineName=SetupResultDetail.get("MachineName").toString(); String OrderNumber=SetupResultDetail.get("OrderNumber").toString(); String DockingStationID=SetupResultDetail.get("DockingStationID").toString(); String Operator=SetupResultDetail.get("Operator").toString(); String TableLocation=SetupResultDetail.get("TableLocation").toString(); String TableId=SetupResultDetail.get("TableId").toString(); String Track=SetupResultDetail.get("Track").toString(); String FeederTypeName=SetupResultDetail.get("FeederTypeName").toString(); String FeederID=SetupResultDetail.get("FeederID").toString(); JSONObject PackagingUnitDetail=SetupResultDetail.getJSONObject("PackagingUnit"); if(PackagingUnitDetail!=null){ String PUID=PackagingUnitDetail.getString("PUID"); String ComponentBarcode=PackagingUnitDetail.getString("ComponentBarcode"); String OriginalQuantity=PackagingUnitDetail.getString("OriginalQuantity"); String Quantity=PackagingUnitDetail.getString("Quantity"); String CreateDate=Time(PackagingUnitDetail.getString("CreateDate")); String DateCode=PackagingUnitDetail.getString("DateCode"); String BatchId=PackagingUnitDetail.getString("BatchId"); String MsdLevel=PackagingUnitDetail.getString("MsdLevel"); JSONObject LockInfoList=null; try{ LockInfoList=PackagingUnitDetail.getJSONObject("LockInfoList"); }catch (Exception e){ } JSONObject SplicedPackagingUnitList=null; try{ SplicedPackagingUnitList=PackagingUnitDetail.getJSONObject("SplicedPackagingUnitList"); }catch (Exception e){ } int sr_id=baseDao.getSeqId("SETUPRESULTDETAIL_seq"); baseDao.execute("insert into SETUPRESULTDETAIL(sr_id,ACTIONTYPE,LINENAME,ORDERNUMBER,MACHINENAME," + "TABLEID,DOCKINGSTATIONID,OPERATOR,TableLocation,FeederTypeName,FeederID,MessageSendTime)values('"+sr_id+"'," + "'"+ActionType+"','"+LineName+"','"+OrderNumber+"','"+MachineName+"','"+TableId+"','"+DockingStationID+"'," + "'"+Operator+"','"+TableLocation+"','"+FeederTypeName+"','"+FeederID+"',to_date('"+MessageSendTime+"','yyyy-mm-dd hh24:mi:ss'))"); int pu_id=baseDao.getSeqId("PACKAGINGUNIT_seq"); baseDao.execute("insert into PACKAGINGUNIT(PU_ID,PU_SRID,ComponentBarcode,OriginalQuantity,Quantity,CreateDate," + "DateCode,BatchId,MsdLevel)values('"+pu_id+"','"+sr_id+"','"+ComponentBarcode+"','"+OriginalQuantity+"','"+Quantity+"',to_date('"+CreateDate+"','yyyy-mm-dd hh24:mi:ss')," + "'"+DateCode+"','"+BatchId+"','"+MsdLevel+"')"); if(LockInfoList!=null){ JSONArray LockInfoItem=LockInfoList.getJSONArray("LockInfoItem"); for(int i=0;i StateEventDetail(String data) { Map rmap = new HashMap(); JSONObject object = JSONObject.fromObject(data); Object object1 = object.get("data"); JSONObject obj = JSONObject.fromObject(object1); JSONObject StateEventDetail=obj.getJSONObject("StateEventDetail"); if(StateEventDetail!=null){ int st_id=baseDao.getSeqId("StateEventDetail_seq"); String MessageSendTime=Time(StateEventDetail.getString("MessageSendTime")); String CompletionStatusType=StateEventDetail.getString("CompletionStatusType"); String LineFullPath=StateEventDetail.getString("LineFullPath"); String LineName=StateEventDetail.getString("LineName"); String MachineFullPath=StateEventDetail.getString("MachineFullPath"); String MachineName=StateEventDetail.getString("MachineName"); String JobFullPath=StateEventDetail.getString("JobFullPath"); String JobName=StateEventDetail.getString("JobName"); String RecipeFullPath=StateEventDetail.getString("RecipeFullPath"); String RecipeName=StateEventDetail.getString("RecipeName"); String SetupFullPath=StateEventDetail.getString("SetupFullPath"); String SetupName=StateEventDetail.getString("SetupName"); String BoardFullPath=StateEventDetail.getString("BoardFullPath"); String BoardName=StateEventDetail.getString("BoardName"); String OrderNumber=StateEventDetail.getString("OrderNumber"); String ConveyorMode=StateEventDetail.getString("ConveyorMode"); String DownloadMode=StateEventDetail.getString("DownloadMode"); String FactoryLayoutPath=StateEventDetail.getString("FactoryLayoutPath"); String MachineId=StateEventDetail.getString("MachineId"); String MachineType=StateEventDetail.getString("MachineType"); String TypeName=StateEventDetail.getString("TypeName"); String ProcessingAreaCount=StateEventDetail.getString("ProcessingAreaCount"); String StationSoftwareVersion=StateEventDetail.getString("StationSoftwareVersion"); String MonitoringServiceVersion=StateEventDetail.getString("MonitoringServiceVersion"); String ComputerAddress=StateEventDetail.getString("ComputerAddress"); baseDao.execute("insert into StateEventDetail(ST_ID, MESSAGESENDTIME, COMPLETIONSTATUSTYPE, LINEFULLPATH, LINENAME, MACHINEFULLPATH, MACHINENAME, JOBFULLPATH, JOBNAME, RECIPEFULLPATH, RECIPENAME, SETUPFULLPATH, SETUPNAME, BOARDFULLPATH, BOARDNAME, ORDERNUMBER, CONVEYORMODE, DOWNLOADMODE, FACTORYLAYOUTPATH, MACHINEID, MACHINETYPE, TYPENAME, PROCESSINGAREACOUNT, STATIONSOFTWAREVERSION, MONITORINGSERVICEVERSION, COMPUTERADDRESS)" + "values("+st_id+", to_date('"+MessageSendTime+"','yyyy-mm-dd hh24:mi:ss'), '"+CompletionStatusType+"', '"+LineFullPath+"', '"+LineName+"', '"+MachineFullPath+"', '"+MachineName+"', '"+JobFullPath+"', '"+JobName+"', '"+RecipeFullPath+"', '"+RecipeName+"', '"+SetupFullPath+"', '"+SetupName+"', '"+BoardFullPath+"', '"+BoardName+"', '"+OrderNumber+"', '"+ConveyorMode+"', '"+DownloadMode+"', '"+FactoryLayoutPath+"', '"+MachineId+"', '"+MachineType+"', '"+TypeName+"', '"+ProcessingAreaCount+"', '"+StationSoftwareVersion+"', '"+MonitoringServiceVersion+"', '"+ComputerAddress+"')"); JSONArray ProcessingAreaStateList=StateEventDetail.getJSONArray("ProcessingAreaStateList"); for (int i=0;i SendPlaceData(String data) { Map rmap = new HashMap(); JSONObject object = JSONObject.fromObject(data); Object object1 = object.get("data"); JSONObject obj = JSONObject.fromObject(object1); JSONObject PlacedDataDetail=obj.getJSONObject("PlacedDataDetail"); if(PlacedDataDetail!=null){ int pd_id=baseDao.getSeqId("PlacedDataDetail_seq"); String MESSAGESENDTIME=Time(PlacedDataDetail.getString("MessageSendTime")); String COMPLETIONSTATUSTYPE=PlacedDataDetail.getString("CompletionStatusType"); String LINEFULLPATH=PlacedDataDetail.getString("LineFullPath"); String MACHINEFULLPATH=PlacedDataDetail.getString("MachineFullPath"); String RECIPEFULLPATH=PlacedDataDetail.getString("RecipeFullPath"); String RECIPENAME=PlacedDataDetail.getString("RecipeName"); String SETUPFULLPATH=PlacedDataDetail.getString("SetupName"); String BOARDFULLPATH=PlacedDataDetail.getString("BoardFullPath"); String FACTORYLAYOUTPATH=PlacedDataDetail.getString("FactoryLayoutPath"); String MACHINEID=PlacedDataDetail.getString("MachineId"); String MACHINETYPE=PlacedDataDetail.getString("MachineType"); String STATIONSOFTWAREVERSION=PlacedDataDetail.getString("StationSoftwareVersion"); String MONITORINGSERVICEVERSION=PlacedDataDetail.getString("MonitoringServiceVersion"); String COMPUTERADDRESS=PlacedDataDetail.getString("ComputerAddress"); baseDao.execute("insert into PlacedDataDetail(pd_id,MessageSendTime,CompletionStatusType,LineFullPath,MachineFullPath,RecipeFullPath," + "RecipeName,SETUPFULLPATH,BoardFullPath,FactoryLayoutPath,MachineId,MachineType,StationSoftwareVersion,MonitoringServiceVersion," + "ComputerAddress)values('"+pd_id+"',to_date('"+MESSAGESENDTIME+"','yyyy-mm-dd hh24:mi:ss'),'"+COMPLETIONSTATUSTYPE+"'," + "'"+LINEFULLPATH+"','"+MACHINEFULLPATH+"','"+RECIPEFULLPATH+"','"+RECIPENAME+"','"+SETUPFULLPATH+"','"+BOARDFULLPATH+"'," + "'"+FACTORYLAYOUTPATH+"','"+MACHINEID+"','"+MACHINETYPE+"','"+STATIONSOFTWAREVERSION+"','"+MONITORINGSERVICEVERSION+"','"+COMPUTERADDRESS+"')"); JSONArray PanelList=PlacedDataDetail.getJSONArray("PlacedComponentList"); for (int i=0;i TraceabilityDataInterface(String data) { Integer td_id=baseDao.getSeqId("TRACEDATA_seq"); Map rmap = new HashMap(); JSONObject object = JSONObject.fromObject(data); Object object1 = object.get("data"); JSONObject obj = JSONObject.fromObject(object1); JSONObject TraceabilityDataDetail=obj.getJSONObject("TraceabilityDataDetail"); if(TraceabilityDataDetail!=null){ String DateBegin=Time(TraceabilityDataDetail.get("DateBegin").toString()); String DateCompleted=Time(TraceabilityDataDetail.get("DateCompleted").toString()); String LineName=TraceabilityDataDetail.get("LineName").toString(); String MachineName=TraceabilityDataDetail.get("MachineName").toString(); String BoardName=TraceabilityDataDetail.get("BoardName").toString(); String MachineID=TraceabilityDataDetail.get("MachineID").toString(); String BoardSide=TraceabilityDataDetail.get("BoardSide").toString(); String OrderNumber=TraceabilityDataDetail.get("OrderNumber").toString(); String PCBBarcode=TraceabilityDataDetail.get("PCBBarcode").toString(); baseDao.execute("insert into TRACEDATA(TD_ID,DateBegin,DateCompleted,LineName,MachineName,BoardName,MachineID,BoardSide,OrderNumber,PCBBarcode,TD_INDATE)" + "values("+td_id+",to_date('"+DateBegin+"','yyyy-mm-dd hh24:mi:ss'),to_date('"+DateCompleted+"','yyyy-mm-dd hh24:mi:ss')," + "'"+LineName+"','"+MachineName+"','"+BoardName+"','"+MachineID+"','"+BoardSide+"','"+OrderNumber+"','"+PCBBarcode+"',sysdate)"); JSONObject MaterialTraceabilityDetail=null; try{ MaterialTraceabilityDetail=TraceabilityDataDetail.getJSONObject("MaterialTraceabilityDetail"); }catch (Exception e){ } JSONObject MaterialConsumptionDetail=null; try{ MaterialConsumptionDetail=TraceabilityDataDetail.getJSONObject("MaterialConsumptionDetail"); }catch (Exception e){ } //上料信息 if(MaterialTraceabilityDetail!=null){ JSONArray PanelList=MaterialTraceabilityDetail.getJSONArray("PanelList"); for (int i=0;i XrayTestDataSave(String data){ Map rmap = new HashMap(); Map map=null; JSONObject object = JSONObject.fromObject(data); Object object1 = object.get("data"); JSONObject obj = JSONObject.fromObject(object1); JSONArray object2=obj.getJSONArray("NonconformData"); Object Barcode=obj.get("Barcode"); Object EquipmentEncode=obj.get("EquipmentEncode"); Object ModelType=obj.get("ModelType"); Object CheckNumber=obj.get("CheckNumber"); Object NcmNumber=obj.get("NcmNumber"); Object NonconformNumber=obj.get("NonconformNumber"); Object CheckDate=obj.get("CheckDate"); Object ShiftName=obj.get("ShiftName"); Object LineBody=obj.get("LineBody"); Object Inspector=obj.get("Inspector"); int XT_ID = baseDao.getSeqId("xraytest_seq"); baseDao.execute("insert into xraytest(XT_ID, BARCODE, EQUIPMENTENCODE, MODELTYPE, CHECKNUMBER, NCMNUMBER, NONCONFORMNUMBER, CHECKDATE, SHIFTNAME, LINEBODY, INSPECTOR)" + "values("+XT_ID+",'"+Barcode+"','"+EquipmentEncode+"','"+ModelType+"','"+CheckNumber+"','"+NcmNumber+"','"+NonconformNumber+"',to_date('"+CheckDate+"','yyyy-mm-dd hh24:mi:ss')" + ",'"+ShiftName+"','"+LineBody+"','"+Inspector+"')"); for (int i=0;i SPITestInfo(String data){ Map rmap = new HashMap(); JSONObject object = JSONObject.fromObject(data); String MachineID=object.get("MachineID").toString(); String MachineName=object.get("MachineName").toString(); String Operator=object.get("Operator").toString(); String Side=object.get("Side").toString(); String JobName=object.get("JobName").toString(); String LineName=object.get("LineName").toString(); String WorkStation=object.get("WorkStation").toString(); String WorkNo=object.get("WorkNo").toString(); String BoardBarCode=object.get("BoardBarCode").toString(); String BoardStatus=object.get("BoardStatus").toString(); String DateTime=object.get("DateTime").toString(); JSONArray Array = object.getJSONArray("Array"); int ID=baseDao.getSeqId("machine_seq"); baseDao.execute("insert into machine(MACHINEID, MACHINENAME, OPERATOR, SIDE, JOBNAME, LINENAME, WORKSTATION, WORKNO, BOARDBARCODE, BOARDSTATUS, DATETIME)" + "values('"+ID+"','"+MachineName+"','"+Operator+"','"+Side+"','"+JobName+"','"+LineName+"','"+WorkStation+"','"+WorkNo+"','"+BoardBarCode+"','"+BoardStatus+"',to_date('"+DateTime+"','yyyy-mm-dd hh24:mi:ss'))"); if(Array!=null){ for (int i=0;i PrintInfo(String data){ Map rmap = new HashMap(); JSONObject object = JSONObject.fromObject(data); JSONObject obj1=object.getJSONObject("Header"); JSONObject obj2=object.getJSONObject("Body"); if(obj1!=null){ String Command=obj1.get("Command").toString(); String SessionID=obj1.get("SessionID").toString(); String TimeStamp=obj1.get("TimeStamp").toString(); String Direction=obj1.get("Direction").toString(); String Vendor=obj1.get("Vendor").toString(); String Line=obj1.get("Line").toString(); String MachineSN=obj1.get("MachineSN").toString(); String MachineType=obj1.get("MachineType").toString(); String WorkOrder=""; String RecipeName=""; if(obj2!=null){ WorkOrder=obj2.get("WorkOrder").toString(); RecipeName=obj2.get("RecipeName").toString(); } JSONArray BarcodeList = obj2.getJSONArray("BarcodeList"); for (int i=0;i rmap1 = new HashMap(); rmap1.put("Command","ProductionInfo"); rmap1.put("SessionID",SessionID); rmap1.put("TimeStamp",TimeStamp); rmap1.put("Direction","Response"); Map rmap2 = new HashMap(); rmap2.put("Code",200); rmap2.put("Message","成功"); rmap.put("Header",rmap1); rmap.put("Body",rmap2); } return rmap; } @Override public Map PrintCheck(String data) { Map rmap = new HashMap(); JSONObject object = JSONObject.fromObject(data); JSONObject obj1=object.getJSONObject("Header"); JSONObject obj2=object.getJSONObject("Body"); if(obj1!=null){ String Command=obj1.get("Command").toString(); String SessionID=obj1.get("SessionID").toString(); String TimeStamp=obj1.get("TimeStamp").toString(); String Direction=obj1.get("Direction").toString(); String Vendor=obj1.get("Vendor").toString(); String Line=obj1.get("Line").toString(); String MachineSN=obj1.get("MachineSN").toString(); String MachineType=obj1.get("MachineType").toString(); String FrontSqueegeeSN=""; String RearSqueegeeSN=""; String StencilSN=""; String PasteSN=""; if(obj2!=null){ FrontSqueegeeSN=obj2.get("FrontSqueegeeSN").toString(); RearSqueegeeSN=obj2.get("RearSqueegeeSN").toString(); StencilSN=obj2.get("StencilSN").toString(); PasteSN=obj2.get("PasteSN").toString(); } int code = 200; String returnmessage = ""; if(!baseDao.checkIf("Stencil","nvl(st_usestatus,'') = '在线' and st_code = '"+FrontSqueegeeSN+"'")) { code = 222; returnmessage = returnmessage + "刮刀:"+FrontSqueegeeSN+"未在线,校验失败.\n"; } if(!baseDao.checkIf("Stencil","nvl(st_usestatus,'') = '在线' and st_code = '"+RearSqueegeeSN+"'")) { code = 222; returnmessage = returnmessage + "刮刀:"+RearSqueegeeSN+"未在线,校验失败.\n"; } if(!baseDao.checkIf("Stencil","nvl(st_usestatus,'') = '在线' and st_code = '"+StencilSN+"'")) { code = 222; returnmessage = returnmessage + "钢网:"+StencilSN+"未在线,校验失败.\n"; } if(!baseDao.checkIf("SPMBARCODE","nvl(SPB_STATUS,'') = '已开封' and SPB_BARCODE = '"+PasteSN+"'")) { code = 222; returnmessage = returnmessage + "锡膏:"+FrontSqueegeeSN+"未开封,校验失败.\n"; } Map rmap1 = new HashMap(); rmap1.put("Command","ProductionInfo"); rmap1.put("SessionID",SessionID); rmap1.put("TimeStamp",TimeStamp); rmap1.put("Direction","Response"); Map rmap2 = new HashMap(); rmap2.put("Code",code); rmap2.put("Message",returnmessage); rmap.put("Header",rmap1); rmap.put("Body",rmap2); } return rmap; } @Override public Map PrintOnOffline(String data) { Map rmap = new HashMap(); JSONObject object = JSONObject.fromObject(data); JSONObject obj1=object.getJSONObject("Header"); JSONObject obj2=object.getJSONObject("Body"); if(obj1!=null){ String Command=obj1.get("Command").toString(); String SessionID=obj1.get("SessionID").toString(); String TimeStamp=obj1.get("TimeStamp").toString(); String Direction=obj1.get("Direction").toString(); String Vendor=obj1.get("Vendor").toString(); String Line=obj1.get("Line").toString(); String MachineSN=obj1.get("MachineSN").toString(); String MachineType=obj1.get("MachineType").toString(); String Action=""; String MaterialType=""; String MaterialSN=""; if(obj2!=null){ Action=obj2.get("Action").toString(); MaterialType=obj2.get("MaterialType").toString(); MaterialSN=obj2.get("MaterialSN").toString(); } if(Action.equals("Online")&&!baseDao.checkIf("GKGINTO","GI_MATERIALTYPE = '"+MaterialType+"' and GI_MATERIALSN = '"+MaterialSN+"' and GI_LINE = '"+Line+"' and GI_OFFDATE is null")) { int GKGINTOID = baseDao.getSeqId("GKGINTO_seq"); baseDao.execute("insert into GKGINTO(GI_ID,GI_COMMAND,GI_SESSIONID,GI_ONDATE,GI_DIRECTION,GI_VENDOR," + "GI_LINE,GI_MACHINESN,GI_MACHINETYPE,GI_MATERIALTYPE,GI_MATERIALSN)" + "values('" + GKGINTOID + "','" + Command + "','" + SessionID + "',to_date(substr('" + TimeStamp + "',0,19),'yyyy-mm-dd hh24:mi:ss')" + ",'" + Direction + "','" + Vendor + "','" + Line + "','" + MachineSN + "','" + MachineType + "','" + MaterialType + "','" + MaterialSN + "'" + ")"); } else if (Action.equals("OffLine")&&baseDao.checkIf("GKGINTO","GI_MATERIALTYPE = '"+MaterialType+"' and GI_MATERIALSN = '"+MaterialSN+"' and GI_LINE = '"+Line+"' and GI_OFFDATE is null")) { int outqty = baseDao.getCountByCondition("PRODUCTIONINFO"," LINE = '"+Line+"' AND TIMESTAMP BETWEEN " + " (SELECT MAX(GI_ONDATE) FROM GKGINTO WHERE GI_MATERIALTYPE = '"+MaterialType+"' and GI_MATERIALSN = '"+MaterialSN+"' and GI_LINE = '"+Line+"' and GI_OFFDATE is null ) and to_date(substr('" + TimeStamp + "',0,19),'yyyy-mm-dd hh24:mi:ss') "); baseDao.updateByCondition("GKGINTO","GI_OFFDATE = to_date(substr('" + TimeStamp + "',0,19),'yyyy-mm-dd hh24:mi:ss'),GI_OUTPUT = '"+outqty+"'","GI_MATERIALTYPE = '"+MaterialType+"' and GI_MATERIALSN = '"+MaterialSN+"' and GI_LINE = '"+Line+"' and GI_OFFDATE is null"); } Map rmap1 = new HashMap(); rmap1.put("Command","ProductionInfo"); rmap1.put("SessionID",SessionID); rmap1.put("TimeStamp",TimeStamp); rmap1.put("Direction","Response"); Map rmap2 = new HashMap(); rmap2.put("Code",200); rmap2.put("Message","成功"); rmap.put("Header",rmap1); rmap.put("Body",rmap2); } return rmap; } public String Time(String time){ return time.replaceAll("T"," ").substring(0,19); } @Override public Map UploadReelInfo(String data) { Map rmap = new HashMap(); String oErrMessage=""; String ReelId=""; String Quantity=""; Map map=null; try{ map =BaseUtil.convertJsonToMap(data); }catch (Exception e){ System.out.printf(e.getMessage()) ; } if(map.get("ReelId")==null){ rmap.put("Status","NG"); rmap.put("Meassage","料盘ID不能为空"); return rmap; } if(map.get("Quantity")==null){ rmap.put("Status","NG"); rmap.put("Meassage","数量不能为空"); return rmap; } ReelId=map.get("ReelId").toString(); Quantity=map.get("Quantity").toString(); SqlRowList rs=baseDao.queryForRowSet("select bar_id,bar_prodcode,bar_remain,pr_spec,to_char(nvl(bar_madedate,sysdate),'yyyy-mm-dd')bar_madedate from barcode@ERP left join product on bar_prodcode = pr_code where bar_code=?",ReelId); if(rs.next()){ baseDao.execute("update barcode@ERP set bar_remain=?,bar_status = 2 where bar_id=?",Quantity,rs.getString("bar_id")); baseDao.execute("insert into barcodechange@ERP(BC_ID,BC_INDATE, BC_REASON, BC_QTY, BC_BARCODE, BC_PRODCODE, BC_NEWQTY)" + "values(barcodechange_seq.nextval@ERP,sysdate,'点料机更新条码数量',?,?,?,?)",rs.getString("bar_remain"),ReelId,rs.getString("bar_prodcode"),Quantity); baseDao.execute("update barcode set bar_remain=?,bar_status = 1,bar_outno = '' where bar_code=?",Quantity,ReelId); baseDao.execute("insert into barcodechange(BC_ID,BC_INDATE, BC_REASON, BC_QTY, BC_BARCODE, BC_PRODCODE, BC_NEWQTY)" + "values(barcodechange_seq.nextval,sysdate,'点料机更新条码数量',?,?,?,?)",rs.getString("bar_remain"),ReelId,rs.getString("bar_prodcode"),Quantity); rmap.put("Status","OK"); rmap.put("Meassage","通过"); rmap.put("PN",rs.getString("bar_prodcode")); rmap.put("MPN",rs.getString("pr_spec")); rmap.put("DataCode",rs.getString("bar_madedate")); }else { rmap.put("Status","NG"); rmap.put("Meassage","条码不存在"); return rmap; } return rmap; } @Override public Map Weigh(String data) { Map rmap = new HashMap(); String oErrMessage=""; String lotSN=""; String specificationName=""; String weight=""; String moName=""; String workcenterName=""; Map map=null; try{ map =BaseUtil.convertJsonToMap(data); }catch (Exception e){ System.out.printf(e.getMessage()) ; } if(map.get("lotSN")==null){ oErrMessage = "SN不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } if(map.get("lotSN")==null){ oErrMessage = "SN不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } if(map.get("specificationName")==null){ oErrMessage = "工序不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } if(map.get("weight")==null){ oErrMessage = "重量不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } lotSN=map.get("lotSN").toString(); SqlRowList rs=baseDao.queryForRowSet("select ms_sncode from makeserial where ms_imei1='"+lotSN+"' or ms_imei2='"+lotSN+"' or ms_imei3='"+lotSN+"'"); if(rs.next()){ lotSN=rs.getString("ms_sncode"); }else{ rs=baseDao.queryForRowSet("select mil_sncode from makeimeilist where mil_imei1='"+lotSN+"' or mil_imei2='"+lotSN+"' or mil_imei3='"+lotSN+"'"); if(rs.next()){ lotSN=rs.getString("mil_sncode"); } } specificationName=map.get("specificationName").toString(); weight=map.get("weight").toString().replaceAll("KG",""); oErrMessage=CheckRoutePassed(lotSN,specificationName); if(oErrMessage!=null){ rmap.put("code",-1); rmap.put("message",oErrMessage); Map rmap1 = new HashMap(); rmap1.put("minWeight",""); rmap1.put("maxWeightc",""); rmap1.put("machineModel",""); rmap.put("dataInfo",rmap1); return rmap; } Object[] obj = baseDao.getFieldsDataByCondition("makeserial left join product on pr_code=ms_prodcode","pr_colorboxminw,pr_colorboxmaxw","ms_id =(select max(ms_id) from makeserial where ms_sncode='"+lotSN+"')"); if(obj[0]!=null&&obj[1]!=null){ //不在设置的重量范围内 if(Double.parseDouble(weight)Double.parseDouble(obj[1].toString())){ rmap.put("code",-1); rmap.put("message","SN["+lotSN+"]重量为"+weight+",不符合重量范围"+obj[0]+"-"+obj[1]); Map rmap1 = new HashMap(); rmap1.put("minWeight",obj[0].toString()); rmap1.put("maxWeight",obj[1].toString()); rmap1.put("machineModel",""); rmap.put("dataInfo",rmap1); return rmap; } Object oErr=SetPcbaData(lotSN,specificationName,specificationName,"OK"); if(oErr==null){ rmap.put("code",0); rmap.put("message","SN["+lotSN+"]重量为"+weight+",符合重量范围"+obj[0]+"-"+obj[1]+",称重通过"); Object ms_id=baseDao.getFieldDataByCondition("makeserial","max(ms_id)","ms_sncode='"+lotSN+"'"); baseDao.execute("update makeserial set ms_grossw ='"+weight+"' where ms_id="+ms_id); }else{ rmap.put("code",-1); rmap.put("message",oErr); } Map rmap1 = new HashMap(); rmap1.put("minWeight",obj[0].toString()); rmap1.put("maxWeight",obj[1].toString()); rmap1.put("machineModel",""); rmap.put("dataInfo",rmap1); return rmap; } return rmap; } @Override public Map DLLMain(String accessKey, String requestId, String data) { String AE_MASTER = "N_MES"; SpObserver.putSp(AE_MASTER); Map map = BaseUtil.parseFormStoreToMap(data); //解析map if(!StringUtil.hasText(map.get("type"))){ throw new ApiSystemException(new ApiResult(ErrorMessage.BUSINESS_TYPENULL,requestId)); } if(!StringUtil.hasText(map.get("detail"))){ throw new ApiSystemException(new ApiResult(ErrorMessage.BUSINESS_DATAILLEGAL,requestId)); } String type = map.get("type").toString(); JSONObject json = JSONObject.fromObject(map.get("detail")); HelperType helperType = HelperType.getTypeByCode(type); if(null == helperType){ throw new ApiSystemException(new ApiResult(ErrorMessage.BUSINESS_TYPEILLEGAL,requestId)); } int err = 0; //返回值 Map remap = new HashMap(); switch(helperType){ case CheckRoutePassed: remap = CheckRoutePassed(json); break; case CheckUserAndResourcePassed: remap = CheckUserAndResourcePassed(json); break; case GetAddressRangeByMO: remap = GetAddressRangeByMO(json); break; case GetMEIOrNetCodeRange: remap = GetMEIOrNetCodeRange(json); break; case GetRcardMOInfo: remap = GetRcardMOInfo(json); break; case GetMobileAllInfo: remap = GetMobileAllInfo(json); break; case SetAddressInfo: remap = SetAddressInfo(json); break; case GetMaster: remap = GetMaster(json); break; case SetMobileData: remap = SetMobileData(json); break; case SetIMEIInfo: remap = SetIMEIInfo(json); break; case SetTestDetail: remap = SetTestDetail(json); break; case SetPcbaData: remap = SetPcbaData(json); break; case GetInfoByMaterial: remap = GetInfoByMaterial(json); break; case GoMo: remap = GoMo(json); break; case GetMakeInfoBySN: remap = GetMakeInfoBySN(json); break; case SetBpMaterial: remap = SetBpMaterial(json); break; case GetSnRepm: remap = GetSnRepm(json); break; default: err = -1; break; } if(err == -1){ throw new ApiSystemException(new ApiResult(ErrorMessage.BUSINESS_TYPEILLEGAL,requestId)); } SpObserver.putSp(username); return remap; } private Map GoMo(JSONObject map){ Map rmap = new HashMap(); String iSN=null; String iResCode=null; String iMo=null; String oErrMessage=null; if(map.get("iMo")==null){ oErrMessage = "工单号不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } if(map.get("iResCode")==null){ oErrMessage = "岗位资源不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } if(map.get("iSN")==null){ oErrMessage = "SN不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } iSN=map.get("iSN").toString(); iResCode=map.get("iResCode").toString(); iMo=map.get("iMo").toString(); List list = new ArrayList(); list = baseDao.callProcedureWithOut("CS_CHECKSTEPSNANDMACODE", new Object[]{ String.valueOf(iMo), String.valueOf(iResCode), String.valueOf(iSN), String.valueOf("") }, new Integer[]{1, 2, 3, 4}, new Integer[]{5, 6, 7}); oErrMessage=list.get(2); SqlRowList rs = baseDao.queryForRowSet("select ms_status,ms_stepcode,ms_nextstepcode from makeserial where ms_id=( select max(ms_id) from makeserial where ms_sncode in ( select '" + iSN + "' from dual union select sn from makesnrelation where beforesn='" + iSN + "' and sn<>' ' union select beforesn from makesnrelation where sn='" + iSN + "' and beforesn<>' '))"); String ms_status = ""; String ms_stepcode = ""; String ms_nextstepcode = ""; if(rs.next()){ ms_status= rs.getGeneralString("ms_status"); ms_stepcode=rs.getGeneralString("ms_stepcode"); ms_nextstepcode=rs.getGeneralString("ms_nextstepcode"); } String stepcode = GetStepCodeBySource(iResCode); if ( oErrMessage == null || (ms_status .equals("3")&& ms_stepcode.equals(stepcode) )) { if (ms_status.equals("3")) { oErrMessage = null; } } rmap.put("oErrMessage",oErrMessage); return rmap; } private String GoMo(String iSN,String iMo,String iResCode){ Map rmap = new HashMap(); String oErrMessage=null; List list = new ArrayList(); list = baseDao.callProcedureWithOut("CS_CHECKSTEPSNANDMACODE", new Object[]{ String.valueOf(iMo), String.valueOf(iResCode), String.valueOf(iSN), String.valueOf("") }, new Integer[]{1, 2, 3, 4}, new Integer[]{5, 6, 7}); oErrMessage=list.get(2); SqlRowList rs = baseDao.queryForRowSet("select ms_status,ms_stepcode,ms_nextstepcode from makeserial where ms_id=( select max(ms_id) from makeserial where ms_sncode in ( select '" + iSN + "' from dual union select sn from makesnrelation where beforesn='" + iSN + "' and sn<>' ' union select beforesn from makesnrelation where sn='" + iSN + "' and beforesn<>' '))"); String ms_status = ""; String ms_stepcode = ""; String ms_nextstepcode = ""; if(rs.next()){ ms_status= rs.getString("ms_status"); ms_stepcode=rs.getString("ms_stepcode"); ms_nextstepcode=rs.getString("ms_nextstepcode"); } String stepcode = GetStepCodeBySource(iResCode); if ( oErrMessage == null || (ms_status == "3" && ms_stepcode == stepcode)) { if (ms_status == "3") { oErrMessage = null; } } return oErrMessage; } private Map GetInfoByMaterial(JSONObject map){ Map rmap = new HashMap(); String iPCBA=null; String oErrMessage=null; if(map.get("iPCBA")==null){ oErrMessage = "主板SN不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } iPCBA=map.get("iPCBA").toString(); SqlRowList rs=baseDao.queryForRowSet("select nvl(max(ms_id),0)ms_id from CRAFTMATERIAL left join makeserial on ms_firstsn=cm_firstsn where cm_barcode='"+iPCBA+"' and nvl(cm_status,0)<>-1 order by cm_id desc"); if(rs.next()){ if(!rs.getString("ms_id").equals("0")){ rs=baseDao.queryForRowSet("select ma_bios,ma_ec,ms_sncode,ma_hardware from makeserial left join make on ms_makecode=ma_code where ms_id='"+rs.getString("ms_id")+"'"); if (rs.next()){ rmap.put("oSN",rs.getString("ms_sncode")); rmap.put("oBIOS",rs.getString("ma_bios")); rmap.put("oEC",rs.getString("ma_ec")); rmap.put("oHardWare",rs.getString("ma_hardware")); } }else{ oErrMessage = "主板SN未查询到关联信息"; rmap.put("oErrMessage",oErrMessage); return rmap; } } return rmap; } private Map CheckRoutePassed(JSONObject map){ //实际业务数据 Map rmap = new HashMap<>(); String iSN=map.get("iSN").toString(); String iResCode=map.get("iResCode").toString(); String oErrMessage=""; if (iSN ==null) { oErrMessage = "SN不能为空"; } List list = new ArrayList(); list = baseDao.callProcedureWithOut("CS_CHECKSTEPSNANDMACODE", new Object[]{ String.valueOf(""), String.valueOf(iResCode), String.valueOf(iSN), String.valueOf("") }, new Integer[]{1, 2, 3, 4}, new Integer[]{5, 6, 7}); oErrMessage=list.get(2); SqlRowList rs = baseDao.queryForRowSet("select ms_status,ms_stepcode,ms_nextstepcode from makeserial where ms_id=( select max(ms_id) from makeserial where ms_sncode in ( select '" + iSN + "' from dual union select sn from makesnrelation where beforesn='" + iSN + "' and sn<>' ' union select beforesn from makesnrelation where sn='" + iSN + "' and beforesn<>' '))"); String ms_status = ""; String ms_stepcode = ""; String ms_nextstepcode = ""; if(rs.next()){ ms_status= rs.getGeneralString("ms_status"); ms_stepcode=rs.getGeneralString("ms_stepcode"); ms_nextstepcode=rs.getGeneralString("ms_nextstepcode"); } String stepcode = GetStepCodeBySource(iResCode); if (!ms_nextstepcode.equals("")&& !ms_nextstepcode.equals(stepcode)&& !ms_stepcode.equals(stepcode)) { oErrMessage = "当前序列号下一工序" + ms_nextstepcode; } if ( oErrMessage == null || (ms_status .equals("3")&& ms_stepcode.equals(stepcode) )) { if (ms_status.equals("3")) { oErrMessage = null; } } rmap.put("oErrMessage",oErrMessage); return rmap; } private String CheckRoutePassed(String iSN,String iResCode){ //实际业务数据 Map rmap = new HashMap<>(); String oErrMessage; if (iSN ==null) { oErrMessage = "SN不能为空"; } List list = new ArrayList(); list = baseDao.callProcedureWithOut("CS_CHECKSTEPSNANDMACODE", new Object[]{ String.valueOf(""), String.valueOf(iResCode), String.valueOf(iSN), String.valueOf("") }, new Integer[]{1, 2, 3, 4}, new Integer[]{5, 6, 7}); oErrMessage=list.get(2); if(oErrMessage!=null){ return oErrMessage; } SqlRowList rs = baseDao.queryForRowSet("select ms_status,ms_stepcode,ms_nextstepcode from makeserial where ms_id=( select max(ms_id) from makeserial where ms_sncode in ( select '" + iSN + "' from dual union select sn from makesnrelation where beforesn='" + iSN + "' and sn<>' ' union select beforesn from makesnrelation where sn='" + iSN + "' and beforesn<>' '))"); String ms_status = ""; String ms_stepcode = ""; String ms_nextstepcode = ""; if(rs.next()){ ms_status= rs.getString("ms_status"); ms_stepcode=rs.getString("ms_stepcode"); ms_nextstepcode=rs.getString("ms_nextstepcode"); } String stepcode = GetStepCodeBySource(iResCode); if (ms_nextstepcode != "" && !ms_nextstepcode.equals(stepcode)&& !ms_stepcode.equals(stepcode)) { oErrMessage = "当前序列号"+iSN+"下一工序" + ms_nextstepcode; } return oErrMessage; } private Map CheckUserAndResourcePassed(JSONObject map){ //实际业务数据 Map rmap = new HashMap<>(); String oErrMessage = null; if (map.get("iUserCode") == null || map.get("iResCode") == null || map.get("iPassWord") == null) { oErrMessage = "用户名,密码,岗位资源必须填写"; rmap.put("oErrMessage",oErrMessage); return rmap; } String iUserCode=map.get("iUserCode").toString(); String iPassWord=map.get("iPassWord").toString(); String iResCode=map.get("iResCode").toString(); if (CheckUserLogin(iUserCode, iPassWord)) { String SQL = "select em_code,em_type,em_name from employee where em_code=? "; SqlRowList rs = baseDao.queryForRowSet(SQL, iUserCode); if (rs.next()) { String em_name = rs.getString("em_name"); String em_type = rs.getString("em_type"); if (iResCode ==null) { oErrMessage = "岗位资源不允许为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } if (em_type.equals("admin")) { if (!baseDao.checkIf("Source", "sc_code='" + iResCode + "' and sc_statuscode='AUDITED'")) { oErrMessage = "岗位资源编号错误或者未审核!"; } } else { SqlRowList rs1=baseDao.queryForRowSet("select ur_resourcecode from cs$empgroup left join cs$userresource on ur_groupcode=eg_groupcode left join source on ur_resourcecode=sc_code where eg_emcode = '"+ iUserCode + "' and sc_statuscode='AUDITED'"); //如果存在该编号 if (rs1.next()) { //判断如果多个岗位资源存在,用户输入的只要在其中就行 while (rs.next()) { if (!rs.getString("ur_resourcecode").equals("iResCode")){ oErrMessage = "用户不处于当前资源所属分组!"; }else { oErrMessage=null; continue; } } } else oErrMessage = "岗位资源编号错误或者未审核!"; } } else oErrMessage = "用户不存在!"; }else{ oErrMessage = "用户名密码不正确!"; } rmap.put("oErrMessage",oErrMessage); return rmap; } private Map GetAddressRangeByMO(JSONObject map){ //实际业务数据 Map rmap = new HashMap<>(); String iSN=""; String oErrMessage = null; String oWIFI = ""; String oBT = ""; String oCode1 = ""; String oCode2 = ""; String oCode3 = ""; if(map.get("iSN")==null){ oErrMessage = "SN不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } iSN=map.get("iSN").toString(); //判断工单是否归属 JSONObject map3=new JSONObject(); map3.put("iSN",iSN); Map map2=GetRcardMOInfo(map3); if(map2.get("oErrMessage")!=null){ oErrMessage=map2.get("oErrMessage").toString(); rmap.put("oErrMessage",oErrMessage); return rmap; } List list = new ArrayList(); list = baseDao.callProcedureWithOut("CS_GETADDRESSBYMAKECODE", new Object[]{ String.valueOf(iSN), String.valueOf(map2.get("oMoCode").toString()), }, new Integer[]{1,2}, new Integer[]{3,4,5,6,7,8}); oWIFI = list.get(0); oBT = list.get(1); oCode1 = list.get(2); oCode2 = list.get(3); oCode3 = list.get(4); oErrMessage= list.get(5); if (oErrMessage == "" || oErrMessage == null || oErrMessage == "null"){ rmap.put("oWIFI",oWIFI); rmap.put("oBT",oBT); rmap.put("oCode1",oCode1); rmap.put("oCode2",oCode2); rmap.put("oCode3",oCode3); } else rmap.put("oErrMessage",oErrMessage); return rmap; } private Map GetMEIOrNetCodeRange(JSONObject map){ //实际业务数据 Map rmap = new HashMap<>(); String iSN=""; String oErrMessage = null; String oIMEI1 = ""; String oIMEI2 = ""; String oMEID = ""; String oNetCode = ""; String oPSN = ""; String oID1 = ""; String oID2 = ""; String oID3 = ""; String oID4 = ""; String oID5 = ""; if(map.get("iSN")==null){ oErrMessage = "SN不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } if(map.get("iIMEI1")!=null){ oIMEI1=map.get("iIMEI1").toString(); } if(map.get("iNetCode")!=null){ oNetCode=map.get("iNetCode").toString(); } iSN=map.get("iSN").toString(); List list = new ArrayList(); list = baseDao.callProcedureWithOut("CS_GETIMEIORNETCODERANGE", new Object[]{ String.valueOf(iSN), String.valueOf(""), String.valueOf(oIMEI1), String.valueOf(oNetCode), }, new Integer[]{1,2,3,4}, new Integer[]{5,6,7,8,9,10,11,12,13,14}); oIMEI1 = list.get(0); oIMEI2 = list.get(1); oMEID = list.get(2); oNetCode = list.get(3); oID1 = list.get(4); oID2 = list.get(5); oID3 = list.get(6); oID4 = list.get(7); oID5 = list.get(8); oErrMessage= list.get(9); if (oErrMessage == "" || oErrMessage == null || oErrMessage == "null"){ rmap.put("oIMEI1",oIMEI1); rmap.put("oIMEI2",oIMEI2); rmap.put("oMEID",oMEID); rmap.put("oNetCode",oNetCode); rmap.put("oPSN",oPSN); rmap.put("oID1",oID1); rmap.put("oID2",oID2); rmap.put("oID3",oID3); rmap.put("oID4",oID4); rmap.put("oID5",oID5); } else rmap.put("oErrMessage",oErrMessage); return rmap; } private Map GetRcardMOInfo(JSONObject map){ //实际业务数据 Map rmap = new HashMap<>(); //取MakeProcess表中的执行记录ID最大的一个工单的号码 String oErrMessage = null; if(map.get("iSN")==null){ oErrMessage = "SN不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } String iSN=map.get("iSN").toString(); StringBuffer sql=new StringBuffer(); sql.append("select max(ms_id)ms_id from makeserial where ms_sncode in (select '" + iSN + "' from dual union select sn from "); sql.append("makesnrelation where beforesn='" + iSN + "' and sn<>' ' union select beforesn from makesnrelation where sn='" + iSN + "' and beforesn<>' ')"); SqlRowList rs = baseDao.queryForRowSet(sql.toString()); String ms_id=""; if(rs.next()){ if(rs.getString("ms_id")==null){ oErrMessage = "序列号:" + iSN + " 未归属工单"; rmap.put("oErrMessage",oErrMessage); return rmap; } else{ ms_id= rs.getString("ms_id"); } } Object oMoCode = baseDao.getFieldDataByCondition("MakeSerial", "ms_makecode", "ms_id='" + ms_id + "'"); if (oMoCode != null){ rmap.put("oMoCode",oMoCode); oErrMessage= null; } else { oErrMessage = "序列号:" + iSN + " 未归属工单"; } rmap.put("oErrMessage",oErrMessage); return rmap; } private Map GetMobileAllInfo(JSONObject map){ //实际业务数据 Map rmap = new HashMap<>(); String iSN=""; String oErrMessage = null; String oIMEI1 = ""; String oIMEI2 = ""; String oMEID = ""; String oNetCode = ""; String oPSN = ""; String oID1 = ""; String oID2 = ""; String oID3 = ""; String oID4 = ""; String oID5 = ""; String oWIFI = ""; String oBT = ""; String oCode1 = ""; String oCode2 = ""; String oCode3 = ""; if(map.get("iSN")==null){ oErrMessage = "SN不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } iSN=map.get("iSN").toString(); Object ms_id =baseDao.getFieldDataByCondition("makeserial", "max(ms_id)", "ms_sncode='" + iSN + "'"); if(ms_id!=null) { SqlRowList rs=baseDao.queryForRowSet("select ms_id, ms_mac, ms_bt, ms_meid, ms_netcode, ms_psn, ms_imei1, ms_imei2, ms_imei3, ms_othcode1, ms_othcode2, ms_othcode3, ms_othid1, ms_othid2, ms_othid3 from MakeSerial where ms_id="+ms_id.toString()); if(rs.next()){ oWIFI = rs.getString("ms_mac"); oBT = rs.getString("ms_bt"); oPSN = rs.getString("ms_psn"); oNetCode = rs.getString("ms_netcode"); oMEID = rs.getString("ms_meid"); oIMEI1 = rs.getString("ms_imei1"); oIMEI2 = rs.getString("ms_imei2"); oCode1 = rs.getString("ms_othcode1"); oCode2 = rs.getString("ms_othcode2"); oCode3 = rs.getString("ms_othcode3"); oID1 = rs.getString("ms_othid3"); oID2 = rs.getString("ms_othid3"); oID3 = rs.getString("ms_othid3"); } }else { oErrMessage = "序列号" + iSN + "不存在"; rmap.put("oErrMessage",oErrMessage); return rmap; } if (oErrMessage == "" || oErrMessage == null || oErrMessage == "null"){ rmap.put("oIMEI1",oIMEI1); rmap.put("oIMEI2",oIMEI2); rmap.put("oMEID",oMEID); rmap.put("oNetCode",oNetCode); rmap.put("oPSN",oPSN); rmap.put("oID1",oID1); rmap.put("oID2",oID2); rmap.put("oID3",oID3); rmap.put("oID4",oID4); rmap.put("oID5",oID5); rmap.put("oWIFI",oWIFI); rmap.put("oBT",oBT); rmap.put("oCode1",oCode1); rmap.put("oCode2",oCode2); rmap.put("oCode3",oCode3); } else rmap.put("oErrMessage",oErrMessage); return rmap; } private Map SetAddressInfo(JSONObject map){ //实际业务数据 Map rmap = new HashMap<>(); String oErrMessage = null; if(map.get("iSN")==null){ oErrMessage = "SN不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } String iSN=map.get("iSN").toString(); String iWIFI = null; String iBT = null; String iCode1 = null; String iCode2 = null; String iCode3 = null; if(map.get("iWIFI")!=null){ iWIFI=map.get("iWIFI").toString(); } if(map.get("iBT")!=null){ iBT=map.get("iBT").toString(); } if(map.get("iCode1")!=null){ iCode1=map.get("iCode1").toString(); } if(map.get("iCode2")!=null){ iCode2=map.get("iCode2").toString(); } if(map.get("iCode3")!=null){ iCode3=map.get("iCode3").toString(); } List list = new ArrayList(); list = baseDao.callProcedureWithOut("CS_SETADDRESSINFO", new Object[]{ String.valueOf(iSN), String.valueOf(iWIFI), String.valueOf(iBT), String.valueOf(iCode1), String.valueOf(iCode2), String.valueOf(iCode3) }, new Integer[]{1, 2, 3, 4, 5, 6}, new Integer[]{7}); oErrMessage = list.get(0); rmap.put("oErrMessage",oErrMessage); return rmap; } private Map GetMaster(JSONObject map){ //实际业务数据 Map rmap = new HashMap<>(); SqlRowList rs=baseDao.queryForRowSet("select ma_user from mes.master"); while(rs.next()) { rmap.put(rs.getString("ma_user"),rs.getString("ma_user")); } return rmap; } private Map SetMobileData(JSONObject map){ //实际业务数据 Map rmap = new HashMap<>(); String oErrMessage = null; if(map.get("iSN")==null||map.get("iTSN")==null){ oErrMessage = "SN不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } String iSN=map.get("iSN").toString(); String iTSN=map.get("iTSN").toString(); String iSourceCode = null; String iOperater = null; String iResult = null; String flag = null; String iErrCode = null; if(map.get("iResCode")!=null){ iSourceCode=map.get("iResCode").toString(); } if(map.get("iOperater")!=null){ iOperater=map.get("iOperater").toString(); } if(map.get("iResult")!=null){ iResult=map.get("iResult").toString(); } if(map.get("flag")!=null){ flag=map.get("flag").toString(); } if(map.get("iErrCode")!=null){ iErrCode=map.get("iErrCode").toString(); } List list = new ArrayList(); list = baseDao.callProcedureWithOut("CS_DLLSNCHANGE", new Object[]{ String.valueOf(iTSN), String.valueOf(iSN), String.valueOf(iSourceCode), String.valueOf(iOperater), String.valueOf(iResult), String.valueOf(iErrCode), }, new Integer[]{1, 2, 3, 4, 5, 6}, new Integer[]{7}); oErrMessage = list.get(0); rmap.put("oErrMessage",oErrMessage); return rmap; } private Map SetIMEIInfo(JSONObject map){ //实际业务数据 Map rmap = new HashMap<>(); String oErrMessage = null; if(map.get("iSN")==null){ oErrMessage = "SN不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } String iSN=map.get("iSN").toString(); String iIMEI1=null; String iIMEI2 = null; String iIMEI3 = null; String iMEID = null; String iNET = null; String iID1 = null; String iID2 = null; String iID3 = null; if(map.get("iIMEI1")!=null){ iIMEI1=map.get("iIMEI1").toString(); } if(map.get("iIMEI2")!=null){ iIMEI2=map.get("iIMEI2").toString(); } if(map.get("iIMEI3")!=null){ iIMEI3=map.get("iIMEI3").toString(); } if(map.get("iMEID")!=null){ iMEID=map.get("iMEID").toString(); } if(map.get("iNET")!=null){ iNET=map.get("iNET").toString(); } if(map.get("iID1")!=null){ iID1=map.get("iID1").toString(); } if(map.get("iID2")!=null){ iID2=map.get("iID2").toString(); } if(map.get("iID3")!=null){ iID3=map.get("iID3").toString(); } List list = new ArrayList(); list = baseDao.callProcedureWithOut("CS_SETIMEIINFO", new Object[]{ String.valueOf(iSN), String.valueOf(iIMEI1), String.valueOf(iIMEI2), String.valueOf(iIMEI3), String.valueOf(iMEID), String.valueOf(iNET), String.valueOf(""), String.valueOf(iID1), String.valueOf(iID2), String.valueOf(iID3), }, new Integer[]{1, 2, 3, 4, 5, 6,7,8,9,10}, new Integer[]{11}); oErrMessage = list.get(0); rmap.put("oErrMessage",oErrMessage); return rmap; } private Map SetTestDetail(JSONObject map){ //实际业务数据 Map rmap = new HashMap<>(); String oErrMessage=null; if(map.get("iSN")==null){ oErrMessage = "SN不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } String iSN=map.get("iSN").toString(); String iTestResult= ""; String iResCode= ""; String iClassName=""; String iTestDetail= ""; if(map.get("iTestResult")!=null){ iTestResult=map.get("iTestResult").toString(); } if(map.get("iClassName")!=null){ iClassName=map.get("iClassName").toString(); } if(map.get("iResCode")!=null){ iResCode=map.get("iResCode").toString(); } if(map.get("iTestDetail")!=null){ iTestDetail=map.get("iTestDetail").toString(); } JSONObject map3=new JSONObject(); map3.put("iSN",iSN); Map map2=GetRcardMOInfo(map3); String omakeCode = ""; StringBuffer sql=new StringBuffer(); String[] name=iClassName.split("\\|"); String[] result=iTestResult.split("\\|"); String[] value=iTestDetail.split("\\|"); if(name.length!=value.length||name.length!=result.length){ rmap.put("oErrMessage","测试项目名称和值的项次不一致"); return rmap; } for (int i=0;i SetPcbaData(JSONObject map){ //实际业务数据 Map rmap = new HashMap<>(); String oErrMessage = null; if(map.get("iSN")==null||map.get("iSN").toString().equals("")){ oErrMessage = "SN不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } if(map.get("iResCode")==null||map.get("iResCode").toString().equals("")){ oErrMessage = "岗位资源不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } String iSN=map.get("iSN").toString(); String iResCode = null; String iOperator = null; String iResult = null; String iErrCode = null; if(map.get("iResCode")!=null){ iResCode=map.get("iResCode").toString(); } if(map.get("iOperater")!=null){ iOperator=map.get("iOperater").toString(); } if(map.get("iResult")!=null){ iResult=map.get("iResult").toString(); } if(map.get("iErrCode")!=null){ iErrCode=map.get("iErrCode").toString(); } JSONObject map3=new JSONObject(); map3.put("iSN",iSN); Map map2=GetRcardMOInfo(map3); String oMoCode=null; if(map2.get("oMoCode")!=null){ oMoCode=map2.get("oMoCode").toString(); } if (map2.get("oErrMessage")==null) return SetStepFinish(oMoCode, iResCode, iSN, "", iResult, iOperator, iErrCode); return rmap; } private Object SetPcbaData(String iSN,String iResCode,String iOperator,String iResult){ //实际业务数据 Map rmap = new HashMap<>(); String iErrCode = null; if(iSN==null){ iErrCode = "SN不能为空"; return iErrCode; } JSONObject map3=new JSONObject(); map3.put("iSN",iSN); Map map2=GetRcardMOInfo(map3); String oMoCode=null; if(map2.get("oMoCode")!=null){ oMoCode=map2.get("oMoCode").toString(); } if (map2.get("oErrMessage")==null) map2= SetStepFinish(oMoCode, iResCode, iSN, "", iResult, iResCode, iErrCode); return map2.get("oErrMessage"); } /// /// 获取步骤代码 /// /// /// private String GetStepCodeBySource(String Source) { Object o=baseDao.getFieldDataByCondition("source", "sc_stepcode", "sc_code='" + Source + "'"); if(o!=null) return o.toString(); else return ""; } private Boolean CheckUserLogin(String iUserCode, String iPassWord) { SqlRowList rs =baseDao.queryForRowSet("select em_code from employee where em_code='"+iUserCode+"' and em_password =?",iPassWord); if (rs.next()) return true; else { return false; } } private Map GetMakeInfoBySN(JSONObject map) { Map rmap = new HashMap(); String iSN=null; String oErrMessage=null; if(map.get("iSN")==null){ oErrMessage = "SN不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } iSN=map.get("iSN").toString(); SqlRowList rs=baseDao.queryForRowSet("select ma_remark1,ma_remark2,ma_remark3,ma_remark4,ma_remark5,ma_remark6,ma_remark7,ma_remark8,ma_remark9,ma_remark10,ma_remark11,ma_remark12,ma_remark13,ma_remark14,ma_remark15,ma_remark16 from make " + "left join makeserial on ms_makecode=ma_code where ms_sncode='"+iSN+"'"); if(rs.next()){ rmap.put("oMaremark1",rs.getString("ma_remark1")); rmap.put("oMaremark2",rs.getString("ma_remark2")); rmap.put("oMaremark3",rs.getString("ma_remark3")); rmap.put("oMaremark4",rs.getString("ma_remark4")); rmap.put("oMaremark5",rs.getString("ma_remark5")); rmap.put("oMaremark6",rs.getString("ma_remark6")); rmap.put("oMaremark7",rs.getString("ma_remark7")); rmap.put("oMaremark8",rs.getString("ma_remark8")); rmap.put("oMaremark9",rs.getString("ma_remark9")); rmap.put("oMaremark10",rs.getString("ma_remark10")); rmap.put("oMaremark11",rs.getString("ma_remark11")); rmap.put("oMaremark12",rs.getString("ma_remark12")); rmap.put("oMaremark13",rs.getString("ma_remark13")); rmap.put("oMaremark14",rs.getString("ma_remark14")); rmap.put("oMaremark15",rs.getString("ma_remark15")); rmap.put("oMaremark16",rs.getString("ma_remark16")); return rmap; }else{ oErrMessage = "SN未查询到关联信息"; rmap.put("oErrMessage",oErrMessage); return rmap; } } public Map SetStepFinish(String iMakeCode, String iSourceCode, String iSN, String iMPKind, String iResult, String iUserCode, String iErrCode) { String oErrMessage = null; Object StepCode = baseDao.getFieldDataByCondition("Makeserial", "ms_stepcode", "ms_sncode='" + iSN + "' and ms_makecode='" + iMakeCode + "'"); String CurrentStep = GetStepCodeBySource(iSourceCode); Object BgCode = baseDao.getFieldDataByCondition("step", "nvl(st_badgroupcode,' ')", "st_code='" + CurrentStep + "'"); String mscode = baseDao.getFieldDataByCondition("Makeserial", "ms_code", "ms_sncode='" + iSN + "' and ms_makecode='" + iMakeCode + "'").toString(); Map rmap = new HashMap<>(); switch (iResult) { case "OK": break; case "NG": if (iErrCode == "") { oErrMessage = "测试结果为NG时必须传递不良代码"; rmap.put("oErrMessage",oErrMessage); return rmap; } else { String[] BadCode = iErrCode.split(","); Set uniqueStrings = new HashSet<>(); for (String str : BadCode) { uniqueStrings.add(str); } BadCode = uniqueStrings.toArray(new String[0]); if (!mscode.equals(iSN)) { List sqls = new ArrayList<>(); sqls.add("update makeserial set ms_sncode = '"+mscode+"',ms_beforesn = '' where ms_sncode='" + iSN + "' and ms_makecode='" + iMakeCode + "'"); sqls.add(" update makesnlist set msl_status = '' where msl_sncode = '"+iSN+"' and msl_makecode = '"+iMakeCode+"' "); sqls.add("delete makesnrelation where sn = '"+iSN+"'"); if (sqls!=null&&sqls.size()>0){ baseDao.execute(sqls); } iSN = mscode; } baseDao.updateByCondition("makebad", "mb_status=-1", "mb_sncode='" + iSN + "' and mb_makecode='" + iMakeCode + "' and mb_stepcode='" + CurrentStep + "' and mb_status=0"); StringBuffer sql=new StringBuffer(); for (int i = 0; i < BadCode.length; i++) { if(!baseDao.checkIf("badcode","bc_code='"+ BadCode[i].split(";")[0]+"'")){ oErrMessage = "不良代码"+BadCode[i].split(";")[0]+"不存在"; rmap.put("oErrMessage",oErrMessage); return rmap; } int mb_id = baseDao.getSeqId("makebad_seq"); String badlocation = null; try { badlocation = BadCode[i].split(";")[1]; }catch (Exception ex) { badlocation = ""; } BgCode = baseDao.getFieldDataByCondition("badcode","bc_groupcode","bc_code = '"+BadCode[i].split(";")[0]+"'").toString(); sql.setLength(0); sql.append("insert into makebad(mb_id,mb_makecode,mb_mscode,mb_sncode,mb_inman,mb_indate,mb_stepcode"); sql.append(",mb_sourcecode,mb_badremark,mb_badcode,mb_badtable,mb_bgcode,mb_soncode,mb_status) select '" + mb_id + "'"); sql.append(",ma_code,ms_code,ms_sncode,'" + iUserCode + "',sysdate,'" + CurrentStep + "','" + iSourceCode + "','"+badlocation+"','" + BadCode[i].split(";")[0] + "','',"); sql.append("'" + BgCode + "',sp_soncode,'0' from make left join makeSerial on ms_makecode=ma_code left join stepProduct on "); sql.append("sp_mothercode=ma_prodcode and sp_stepcode=ms_nextstepcode where ms_sncode='" + iSN + "' and ms_makecode='" + iMakeCode + "'"); baseDao.execute(sql.toString()); } //将不良的序列号的状态码设为3 baseDao.execute("update makeserial set ms_status='3',ms_mccode = '' where ms_sncode='" + iSN + "' and ms_makecode='" + iMakeCode + "'"); } break; default: oErrMessage = "测试结果必须为NG或者OK"; rmap.put("oErrMessage",oErrMessage); return rmap; } //不良采集为良品是更新 if (StepCode!=null &&StepCode.toString().equals(CurrentStep) && iResult.equals("OK")) { Object[] ob = baseDao.getFieldsDataByCondition("makeserial", "ms_status,ms_craftcode,ms_prodcode", "ms_sncode='" + iSN + "' and ms_makecode='" + iMakeCode + "'"); if (ob!=null) { String ms_status =ob[0].toString(); String ms_craftcode= ob[1].toString(); String ms_prodcode = ob[2].toString(); if (ms_status.equals("3")) { String nextstepcode =baseDao.getFieldDataByCondition("craft left join craftdetail on cr_id=cd_crid ", "cd_nextstepcode", "cr_code='" + ms_craftcode + "' and cr_prodcode='" + ms_prodcode + "' and cd_stepcode='" + CurrentStep + "'").toString(); baseDao.updateByCondition("makeserial", "ms_status=1,ms_nextstepcode='" + nextstepcode + "'", "ms_sncode='" + iSN + "' and ms_makecode='" + iMakeCode + "'"); baseDao.updateByCondition("makebad", "mb_status=-1", "mb_sncode='" + iSN + "' and mb_makecode='" + iMakeCode + "'"); } } } return CS_SetFinish(iMakeCode, iSourceCode, iSN, iUserCode, iResult); } private Map CS_SetFinish(String iMakeCode, String iSourceCode, String iSN, String iUserCode, String iResult) { Map rmap = new HashMap<>(); String oErrMessage=null; List list = new ArrayList(); list = baseDao.callProcedureWithOut("CS_SETSTEPRESULT", new Object[]{ String.valueOf(iMakeCode), String.valueOf(iSourceCode), String.valueOf(iSN), String.valueOf(iUserCode), String.valueOf(iResult), }, new Integer[]{1, 2, 3, 4, 5}, new Integer[]{6}); oErrMessage = list.get(0); rmap.put("oErrMessage",oErrMessage); return rmap; } private String checkAccessKey(String accessKey,String requestId){ Object accessSecret_O = baseDao.getFieldDataByCondition("APIEMPLOYEE", "AE_SECRET", "AE_KEY='" + accessKey + "'"); Object AE_MASTER = baseDao.getFieldDataByCondition("APIEMPLOYEE", "AE_MASTER", "AE_KEY='" + accessKey + "'"); String accessSecret = accessSecret_O == null ? "" : accessSecret_O.toString(); // 检查KEY是否合理 if (StringUtils.isEmpty(accessKey) || StringUtils.isEmpty(accessSecret) || AE_MASTER== null || "".equals(AE_MASTER.toString())) { ApiResult apiResult = new ApiResult(ErrorMessage.ACCESSKEY_ILLEGAL.getCode(),ErrorMessage.ACCESSKEY_ILLEGAL.getMessage(),requestId); throw new ApiSystemException(apiResult); } return AE_MASTER.toString(); } @Override public Map getMESSnCode(String data) { Map map=null; Map rmap = new HashMap(); try{ map =BaseUtil.convertJsonToMap(data); }catch (Exception e){ rmap.put("code",-1); rmap.put("message",e.getMessage()); System.out.printf(e.getMessage()) ; return rmap; } String macode = map.get("moid") == null ? "" : String.valueOf(map.get("moid")); if("".equals(macode)){ rmap.put("code",-1); rmap.put("message","工单不能为空"); return rmap; } if (!baseDao.checkIf("make","ma_code='"+macode+"'")){ rmap.put("code",-1); rmap.put("message","工单不存在"); return rmap; } if (baseDao.checkIf("make","nvl(ma_statuscode,' ')<>'STARTED' and ma_code='"+macode+"'")){ rmap.put("code",-1); rmap.put("message","工单不是已下放状态"); return rmap; } if (!baseDao.checkIf("MakeSnList","msl_makecode='"+macode+"'")){ rmap.put("code",-1); rmap.put("message","工单未维护SN"); return rmap; } double sncount = map.get("count") == null ? 0 : Double.parseDouble(map.get("count").toString()); if(sncount<=0){ rmap.put("code",-1); rmap.put("message","SN数量必须大于0"); return rmap; } int count = baseDao.getCountByCondition("MakeSnList", "msl_makecode='" + macode + "' and nvl(msl_status,0)=0"); if (count sqls = new ArrayList<>(); List> maps = new ArrayList<>(); Map snmap=null; SqlRowList rs = baseDao.queryForRowSet("select msl_sncode,msl_id from (select msl_sncode,msl_id from MakeSnList where msl_makecode='" + macode + "' and nvl(msl_status,0)=0 order by msl_sncode) where rownum<="+sncount +" order by msl_sncode "); String mainbarcode=""; String msl_id=""; while (rs.next()){ snmap=new HashMap(); snmap.put("serialNo",rs.getGeneralString("msl_sncode")); mainbarcode=rs.getGeneralString("msl_sncode"); maps.add(snmap); sqls.add("update MakeSnList set msl_signtime=sysdate,msl_status=-1 where msl_id="+rs.getGeneralInt("msl_id")); msl_id+=rs.getGeneralInt("msl_id")+","; } msl_id+="0"; baseDao.execute("update MakeSnList set msl_mainbarcode='"+mainbarcode+"' where msl_id in ("+msl_id+")"); if (sqls!=null&&sqls.size()>0){ baseDao.execute(sqls); } rmap.put("code",0); rmap.put("data",maps); return rmap; } @Override public Map getMakeSnCode(String data) { Map map=null; Map rmap = new HashMap(); try{ map =BaseUtil.convertJsonToMap(data); }catch (Exception e){ rmap.put("code",-1); rmap.put("message",e.getMessage()); System.out.printf(e.getMessage()) ; return rmap; } String macode = map.get("moid") == null ? "" : String.valueOf(map.get("moid")); if("".equals(macode)){ rmap.put("code",-1); rmap.put("message","工单不能为空"); return rmap; } if (!baseDao.checkIf("make","ma_code='"+macode+"'")){ rmap.put("code",-1); rmap.put("message","工单不存在"); return rmap; } if (baseDao.checkIf("make","nvl(ma_statuscode,' ')<>'STARTED' and ma_code='"+macode+"'")){ rmap.put("code",-1); rmap.put("message","工单不是已下放状态"); return rmap; } if (!baseDao.checkIf("MakeSnList","msl_makecode='"+macode+"'")){ rmap.put("code",-1); rmap.put("message","工单未维护SN"); return rmap; } double sncount = map.get("count") == null ? 1 : Double.parseDouble(map.get("count").toString()); if(sncount<=0){ rmap.put("code",-1); rmap.put("message","SN数量必须大于0"); return rmap; } String mType = map.get("mType") == null ? "" : String.valueOf(map.get("mType")); if("".equals(mType)){ rmap.put("code",-1); rmap.put("message","类型不能为空"); return rmap; } int count = baseDao.getCountByCondition("MakeSnList", "msl_makecode='" + macode + "' and nvl(msl_type,' ')='"+mType+"' and nvl(msl_status,0)=0"); if (count sqls = new ArrayList<>(); List> maps = new ArrayList<>(); Map snmap=null; SqlRowList rs = baseDao.queryForRowSet("select msl_sncode,msl_id from (select msl_sncode,msl_id from MakeSnList where msl_makecode='" + macode + "' and nvl(msl_type,' ')='"+mType+"' and nvl(msl_status,0)=0 order by msl_sncode) where rownum<="+sncount +" order by msl_sncode "); String mainbarcode=""; String msl_id=""; while (rs.next()){ snmap=new HashMap(); snmap.put("serialNo",rs.getGeneralString("msl_sncode")); mainbarcode=rs.getGeneralString("msl_sncode"); maps.add(snmap); sqls.add("update MakeSnList set msl_signtime=sysdate,msl_status=-1 where msl_id="+rs.getGeneralInt("msl_id")); msl_id+=rs.getGeneralInt("msl_id")+","; } msl_id+="0"; baseDao.execute("update MakeSnList set msl_mainbarcode='"+mainbarcode+"' where msl_id in ("+msl_id+")"); if (sqls!=null&&sqls.size()>0){ baseDao.execute(sqls); } rmap.put("code",0); rmap.put("data",maps); return rmap; } @Override public Map getMainAllSnCode(String data) { Map map=null; Map rmap = new HashMap(); try{ map =BaseUtil.convertJsonToMap(data); }catch (Exception e){ rmap.put("code",-1); rmap.put("message",e.getMessage()); System.out.printf(e.getMessage()) ; return rmap; } String sn = StringUtil.nvl(map.get("sn"),""); if("".equals(sn)){ rmap.put("code",-1); rmap.put("message","SN不能为空"); return rmap; } List> maps = baseDao.queryForList("select msl_sncode serialNo,msl_zone zone from MakeSnList where msl_mainbarcode=(select msl_mainbarcode from MakeSnList where msl_sncode='" + sn + "')"); rmap.put("code",0); rmap.put("data",maps); return rmap; } /** * 增加对接静电数据 * @param json * { * "dataList": [ * { * "id": 0, * "factoryName": "", * "lineName": "", * "seatNo": 0, * "seatDeviceName": "", * "seatDeviceMark": "", * "seatSort": 0, * "employee": "", * "jobNum": "", * "wristStrapNum": "", * "bodyTemperature": 0.0, * "staticState": 0, * "createTime": "2025-03-24 20:18:43" * } * ], * "timestamp": 1742818758248, * "sign": "F62A20ABA50F0E5D8095EAF7282CCF1F" * } * @return * * 接⼝秘钥secret R&XSMOQyRbDm2136sSTGWDRf ,⽤于下⾯接⼝加密签名 * "timestamp": 1742818758248, */ @Override public Map saveSeatDevice(String json) { Map da = BaseUtil.parseFormStoreToMap(json); Map rmap = new HashMap<>(); //校验时间戳 String err = checkTimeStamp(da); if(null != err){ rmap.put("success",false); rmap.put("code",500); rmap.put("message",err); rmap.put("data",null); rmap.put("exceptionClazz",null); return rmap; } if(!StringUtil.hasText(da.get("dataList"))){ rmap.put("success",false); rmap.put("code",500); rmap.put("message","静电数据集合dataList为空"); rmap.put("data",null); rmap.put("exceptionClazz",null); return rmap; } try { MainSeatDevice device = FlexJsonUtil.fromJson(json,MainSeatDevice.class); List sqls = new ArrayList<>(); List states = device.getDataList(); for(MainSeatDeviceState state : states){ //如果对应的ID数据已经存在则不插入 Integer cn = baseDao.getJdbcTemplate().queryForObject("select count(1) from MainSeatDeviceState where id=?",Integer.class,state.getId()); if(null ==cn || cn ==0) { sqls.add(state.toSqlString()); } } baseDao.execute(sqls); rmap.put("success",true); rmap.put("code",200); rmap.put("message","请求成功"); return rmap; }catch (Exception e){ e.printStackTrace(); rmap.put("success",false); rmap.put("code",500); rmap.put("message",e.getMessage().length()>1000?e.getMessage().substring(0,1000):e.getMessage() ); rmap.put("data",null); rmap.put("exceptionClazz",null); return rmap; } } /** *增加对接机器数据 * @param json * @return */ @Override public Map saveMachineDevice(String json) { Map da = BaseUtil.parseFormStoreToMap(json); Map rmap = new HashMap<>(); //校验时间戳 String err = checkTimeStamp(da); if(null != err){ rmap.put("success",false); rmap.put("code",500); rmap.put("message",err); rmap.put("data",null); rmap.put("exceptionClazz",null); return rmap; } if(!StringUtil.hasText(da.get("dataList"))){ rmap.put("success",false); rmap.put("code",500); rmap.put("message","机器数据集合dataList为空"); rmap.put("data",null); rmap.put("exceptionClazz",null); return rmap; } try { MainMachineDevice device = FlexJsonUtil.fromJson(json,MainMachineDevice.class); List sqls = new ArrayList<>(); List states = device.getDataList(); for(MainMachineDeviceState state : states){ //如果对应的ID数据已经存在则不插入 Integer cn = baseDao.getJdbcTemplate().queryForObject("select count(1) from MainMachineDeviceState where id=?",Integer.class,state.getId()); if(null ==cn || cn ==0) { sqls.add(state.toSqlString()); } } baseDao.execute(sqls); rmap.put("success",true); rmap.put("code",200); rmap.put("message","请求成功"); return rmap; }catch (Exception e){ e.printStackTrace(); rmap.put("success",false); rmap.put("code",500); rmap.put("message",e.getMessage().length()>1000?e.getMessage().substring(0,1000):e.getMessage() ); rmap.put("data",null); rmap.put("exceptionClazz",null); return rmap; } } /** * 增加对接台垫数据 * @param json * @return */ @Override public Map saveCushionDevice(String json) { Map da = BaseUtil.parseFormStoreToMap(json); Map rmap = new HashMap<>(); //校验时间戳 String err = checkTimeStamp(da); if(null != err){ rmap.put("success",false); rmap.put("code",500); rmap.put("message",err); rmap.put("data",null); rmap.put("exceptionClazz",null); return rmap; } if(!StringUtil.hasText(da.get("dataList"))){ rmap.put("success",false); rmap.put("code",500); rmap.put("message","台垫数据集合dataList为空"); rmap.put("data",null); rmap.put("exceptionClazz",null); return rmap; } try { MainCushionDevice device = FlexJsonUtil.fromJson(json,MainCushionDevice.class); List sqls = new ArrayList<>(); List states = device.getDataList(); for(MainCushionDeviceState state : states){ //如果对应的ID数据已经存在则不插入 Integer cn = baseDao.getJdbcTemplate().queryForObject("select count(1) from MainCushionDeviceState where id=?",Integer.class,state.getId()); if(null ==cn || cn ==0) { sqls.add(state.toSqlString()); } } baseDao.execute(sqls); rmap.put("success",true); rmap.put("code",200); rmap.put("message","请求成功"); return rmap; }catch (Exception e){ e.printStackTrace(); rmap.put("success",false); rmap.put("code",500); rmap.put("message",e.getMessage().length()>1000?e.getMessage().substring(0,1000):e.getMessage() ); rmap.put("data",null); rmap.put("exceptionClazz",null); return rmap; } } /** 接⼝秘钥secret R&XSMOQyRbDm2136sSTGWDRf ,⽤于下⾯接⼝加密签名 * "timestamp": 1742818758248, * 当前系统13位毫秒级时间戳,⽤于校验签名,5分钟有效期 * "sign": "F62A20ABA50F0E5D8095EAF7282CCF1F" * 接⼝签名: * 1. 拼接字符串:timestamp={毫秒级时间戳}&secret={接⼝秘钥} * 2. 将第1步拼接后的字符串,进⾏MD5 加密,⽣成32位的16进制MD5字符串 */ private String checkTimeStamp(Map da){ if(!StringUtil.hasText(da.get("timestamp"))){ return "时间戳timestamp值为空"; } if(!StringUtil.hasText(da.get("sign"))){ return "签名sign值为空"; } if(System.currentTimeMillis()-Long.parseLong(da.get("timestamp").toString())>5*60*1000){ return "时间戳已失效,上传失败"; } StringBuilder temp = new StringBuilder(); temp.append("timestamp=").append(da.get("timestamp")).append("&secret=").append("R&XSMOQyRbDm2136sSTGWDRf"); String sign = MD5Util.encrypt32Up(temp.toString()).toUpperCase(); System.out.println(sign); if(!sign.equals(da.get("sign"))){ return "签名错误,请检查"; } return null; } private Map GetSnRepm(JSONObject map) { Map rmap = new HashMap(); String iSN=null; String oErrMessage=null; String mbr_solutionname=null; if(map.get("iSN")==null){ oErrMessage = "SN不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } iSN=map.get("iSN").toString(); SqlRowList rs = baseDao.queryForRowSet("select mbr_solutionname from makebad left join MAKEBADREASON on mb_id = mbr_mbid where mb_sncode = ? order by mb_id desc",iSN); if (rs.next()) { mbr_solutionname = rs.getString("mbr_solutionname"); if ("更换屏幕".equals(mbr_solutionname)) { oErrMessage = "需要更换屏幕"; }else { oErrMessage = "不需要更换屏幕"; } rmap.put("oErrMessage",oErrMessage); return rmap; }else { oErrMessage = "SN"+iSN+"没有不良记录"; rmap.put("oErrMessage",oErrMessage); return rmap; } } private Map SetBpMaterial(JSONObject map) { Map rmap = new HashMap(); String iSN=null; String oErrMessage=null; String iZJ=null; String iResCode = null; String linecode = null; String stepcode = null; if(map.get("iSN")==null){ oErrMessage = "SN不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } if(map.get("iZJ")==null){ oErrMessage = "载具号不能为空"; rmap.put("oErrMessage",oErrMessage); return rmap; } iSN=map.get("iSN").toString(); iZJ=map.get("iZJ").toString(); iResCode=map.get("iResCode").toString(); linecode = GetlineCodeBySource(iResCode); stepcode = GetStepCodeBySource(iResCode); JSONObject map3=new JSONObject(); map3.put("iSN",iSN); Map map2=GetRcardMOInfo(map3); String oMoCode=null; if(map2.get("oMoCode")!=null){ oMoCode=map2.get("oMoCode").toString(); } // if(!baseDao.checkIf("BEFOREHANDPROCESS","bhp_maincode = '"+iZJ+"' and nvl(BHP_STATUS,0) = 0")) // { // oErrMessage = "载具号"+iZJ+"内无材料"; // rmap.put("oErrMessage",oErrMessage); // return rmap; // } baseDao.execute("update Craftmaterial set cm_status = -1 where cm_sncode = '"+iSN+"' and cm_makecode = '"+oMoCode+"'"); baseDao.execute("insert into Craftmaterial (cm_id ,cm_makecode,cm_maid,cm_maprodcode, cm_soncode, cm_mscode, cm_sncode, cm_stepcode, cm_stepname,cm_fsoncode," + " cm_craftcode,cm_craftname,cm_barcode,cm_inqty,cm_indate,cm_inman,cm_linecode,cm_wccode,cm_sourcecode,cm_spid,cm_status,cm_materialtype,cm_firstsn) " + " select Craftmaterial_seq.nextval,ma_code, ma_id, ma_prodcode,sp_soncode,ms_code,ms_sncode,mcd_stepcode,mcd_stepname,sp_fsoncode," + " ms_craftcode,ms_craftname,bhp_barcode,1,sysdate,'','" + linecode +"',ma_wccode,'" + iResCode + "',sp_id,0,1,ms_firstsn" + " from make left join makecraftdetail on mcd_macode=ma_code left join stepproduct on sp_stepcode=mcd_stepcode and sp_mothercode = ma_prodcode left join" + " makeserial on ms_makecode=ma_code and sp_craftcode=ms_craftcode left join (select * from " + " BEFOREHANDPROCESS where bhp_maincode='" + iZJ + "' and nvl(bhp_status,0) =0 ) on sp_fsoncode=bhp_prodcode" + " where ma_code='" + oMoCode + "' and mcd_stepcode = '" + stepcode + "' and ms_sncode='" + iSN + "' and bhp_barcode is not null "); baseDao.execute(" update BEFOREHANDPROCESS set bhp_status = -1 where bhp_maincode = '"+iZJ+"' and nvl(bhp_status,0) =0 "); return SetStepFinish(oMoCode, iResCode, iSN, "", "OK", "ADMIN", ""); } private String GetlineCodeBySource(String Source) { Object o=baseDao.getFieldDataByCondition("source", "sc_linecode", "sc_code='" + Source + "'"); if(o!=null) return o.toString(); else return ""; } }