def put_psn(client, sn): info = json_post(client, host_graphdbget(), { "n": "task", "obj": "uid,sn", "opt": { "and": [{ "eq": "sn", "v": sn }] } }) uid = info[0]["uid"] result = json_post(client, host_graphdb(), { "a": [{ "v": [[{ "k": "sn", "v": sn }]], "u": uid, "n": "pcode" }] }) if result == "Success": return result else: return "Error"
def get_bzd(client, tab, cfg, x, y): st = None if y in cfg: st = cfg[y] if st is None: info = json_post(client, host_timedb(), { "n": tab, "obj": "*", "opt": { "limit": 1 } }) else: info = json_post(client, host_timedb(), { "n": tab, "obj": "*", "opt": { "and": [{ "gt": "time", "v": st }], "limit": 1 } }) if info is not None: data1 = info[tab] if "start" in data1 and "end" in data1 and "data" in data1: print(data1["start"]) print(data1["end"]) print(data1["data"]) if x == 1: cfg[y] = data1["end"] return data1["data"][0] return None
def get_data(client, tab, cfg): st = None if tab in cfg: st = cfg[tab] if st is None: info = json_post(client, host_timedb(), { "n": tab, "obj": "*", "opt": { "limit": 1 } }) else: info = json_post( client, host_timedb(), { "n": tab, "obj": "*", "opt": { "and": [{ "ge": "time", "v": st }], "limit": 20 } }) if info is not None: if isinstance(info, str): print("str") elif isinstance(info, list): print("list") for i in range(len(info)): data1 = info[i][tab] if "start" in data1 and "end" in data1 and "data" in data1: print(data1["start"]) print(data1["end"]) print(data1["data"]) cfg[tab] = data1["end"] for data in data1["data"]: return data elif isinstance(info, dict): print("dict") data1 = info[tab] if "start" in data1 and "end" in data1 and "data" in data1: print(data1["start"]) print(data1["end"]) print(data1["data"]) cfg[tab] = data1["end"] for data in data1["data"]: return data return None
def get_plan(client): data = mq_get(client, "MES.MEB.ASSEMBLE.PLAN.SEND") if data is None: return start = datetime.datetime.strptime(data["PT"], "%Y%m%d%H%M%S") diff = datetime.timedelta(minutes=15) pstart = start.strftime("%Y-%m-%dT%H:%M:%S") pend = (start + diff).strftime("%Y-%m-%dT%H:%M:%S") sn = data["CID"] ret = json_post(client, host_real_task(), { "sn": sn, "tsn": data["TSN"], "pstart": str(pstart), "pend": str(pend), "pnum": 1, "info": [ {"k": "ig2", "v": data["1G2"]}, {"k": "288", "v": data["288"]}, {"k": "gbt", "v": data["GBT"]}, {"k": "sqr", "v": data["SQR"]}, {"k": "prn", "v": data["PRN"]}, {"k": "tsn", "v": data["TSN"]} ] }) if ret != "Success": return ret = json_post(client, host_graphdbget(), { "n": "task", "obj": "uid,sn", "opt": { "and": [{"eq": "sn", "v": sn}] } }) if ret is None: return uid = ret[0]["uid"] ret = json_post(client, host_graphdb(), { "a": [{ "u": uid, "n": "pcode", "v": [[{"k": "sn", "v": sn}]] }] }) if ret != "Success": return ret = json2xml(client, "ack", "") mq_put("MES.MEB.ASSEMBLE.PLAN.ACK", ret)
def get_data(client, tab, cfg): st = None if tab in cfg: st = cfg[tab] if st is None: info = json_post(client, host_timedb(), { "cmd": "get/first", "data": { "tab": tab, "orig": "true", "obj": "*" } }) else: info = json_post(client, host_timedb(), { "cmd": "get/start", "data": { "tab": tab, "limit": 20, "start": st, "orig": "true", "nostart": "true", "obj": "*" } }) if info is not None: if isinstance(info, str): print("str") elif isinstance(info, list): print("list") for i in range(len(info)): data1 = info[i][tab] if "start" in data1 and "end" in data1 and "data" in data1: print(data1["start"]) print(data1["end"]) print(data1["data"]) cfg[tab] = data1["end"] return data1["data"] elif isinstance(info, dict): print("dict") data1 = info[tab] if "start" in data1 and "end" in data1 and "data" in data1: print(data1["start"]) print(data1["end"]) print(data1["data"]) cfg[tab] = data1["end"] return data1["data"] return None
def put_fin(client, cfg): st = None if "snfinsh" in cfg: st = cfg["snfinsh"] if st is None: info = json_post( client, host_timedb(), { "n": "stnstatus", "obj": "*", "opt": { "limit": 1, "and": [{ "eq": "wsn", "v": "af450" }] } }) else: info = json_post( client, host_timedb(), { "n": "stnstatus", "obj": "*", "opt": { "limit": 1, "and": [{ "eq": "wsn", "v": "af450" }, { "gt": "time", "v": st }] } }) if info is None: return data = info["stnstatus"] cfg["snfinsh"] = data[u'end'] data = data[u'data'][0] ret = json2xml(client, "fin", { "psn": data["psn"], "in": data["in"], "out": data["out"] }) mq_put("MES.MEB.ASSEMBLE.START", ret) time.sleep(5) mq_put("MES.MEB.ASSEMBLE.FINISH", ret)
def get_taskinfo(client, tab, cfg, x): status = get_item(x, u"STATUS") sn = get_item(x, u"CID") tele = get_item(x, u"TELE") errtele = get_item(x, u"ERRTELE") info = json_post(client, host_timedb(), { "n": "task", "obj": "*", "opt": { "and": [ { "eq": "task", "v": sn }, { "eq": "line", "v": "line-one" } ] } }) data = info["task"]["data"][0] if data["task"]: if sn == data["task"]: data.pop("task") else: print("ERROR: no such CID") return if data["line"]: data.pop("line") data["tele"] = tele data["errtele"] = errtele data["status"] = status result = json_post(client, host_timedbput(), { "cmd": "put", "data": { "tab": "task", "tags": { "line": "line-one", "task": sn }, "fields": data } }) return result
def get_printcode(client): qret = mq_get(client, "MES.MEB.ASSEMBLE.CERTIFICATE.SEND") if qret is None: return status = get_item(qret, u"STATUS") sn = get_item(qret, u"CID") tele = get_item(qret, u"TELE") errtele = get_item(qret, u"ERRTELE") data = json_post( client, host_timedb(), { "n": "task", "obj": "*", "opt": { "desc": True, "limit": 1, "and": [{ "eq": "task", "v": sn }, { "eq": "line", "v": "line-one" }] } }) if data is None: return data = data["task"]["data"][0] data.pop("task") data.pop("line") data["tele"] = tele data["errtele"] = errtele data["status"] = status json_post( client, host_timedbput(), { "cmd": "put", "data": { "tab": "task", "tags": { "line": "line-one", "task": sn }, "fields": data } })
def post_snstatus(client,cfg): info = json_post(client,host_graphdbget(),{ # info = json_post(client, "http://47.96.151.120/graphdb/get/line-two", { "n": "task", "obj": "sn,uid,state", "opt": { "has":"sn" } }) print(info) for i in info: sn = get_item(i, "sn") state = get_item(i ,"state") snstatus = cfg["snstatus"] if i in range(len(snstatus)): if sn == snstatus[i]["sn"] and state == snstatus[i]["state"]: continue else: now_time = datetime.datetime.now() Tim = datetime.datetime.strftime(now_time, '%Y-%m-%d %H:%M:%S') info = json_requests_post("http://10.106.11.42:8049/restful/prod-plan/work-order-service/sync/status",[{ "workOrderNo":sn, "prodLineCode":"PL02", "status":state, "siteCode":"3310", "userNo":"AMES", "time":Tim }]) if info["result"]: print(info) snstatus[i]["state"] = state
def xml2json(client, xml): if xml is None: return None ret = json_post(client, host_xmljson(), { "cmd": "xmljson", "data": str(xml) }) if ret == "Fail" or ret is None: return None env = ret["env:Envelope"] body = env["Body"] data = body["Data"] raw = data["Raw"] detail = raw["Detail"] ret = {} for d in detail: ret[d["Key"]] = d["Value"] return ret
def post_packstation(client, cfg): data = get_data(client, "stnstatus", cfg) if data is None: return prodLineCode = "PL02" workOrderNo = get_item(data, u"sn") partNo = "" serialNumber = get_item(data, u"psn") stationCode = get_item(data, u"wsn") stationPassType = get_item(data, u"qa") userNo = get_item(data, u"usn") time = get_item(data, u"time") info = json_post( client, "http://10.106.11.42:8049/restful/prod-exec/station-pass-pull/insert/ames", [{ # info = json_post(client, "http://10.40.9.8/send/server/test", [{ "prodLineCode": prodLineCode, "workOrderNo": workOrderNo, "partNo": partNo, "serialNumber": serialNumber, "stationCode": stationCode, "stationPassType": stationPassType, "userNo": userNo, "time": time }]) if info["result"] == True: print("stnstatus success") else: print("stnstatus error")
def put_print(client, cfg): st = None if "emergency" in cfg: st = cfg["emergency"] if st is None: ret = json_post( client, host_timedb(), { "n": "stnstatus", "obj": "*", "opt": { "desc": True, "limit": 1, "and": [{ "eq": "wsn", "v": "af450" }] } }) else: ret = json_post( client, host_timedb(), { "n": "stnstatus", "obj": "*", "opt": { "desc": True, "limit": 1, "and": [{ "eq": "wsn", "v": "af450" }, { "gt": "time", "v": st }] } }) if ret is None: return data = ret["stnstatus"] cfg["emergency"] = data[u'end'] data = data[u'data'][0] ret = json2xml(client, "print", {"psn": data["psn"]}) mq_put("MES.MEB.ASSEMBLE.CERTIFICATE.FAST.REQUEST", ret)
def post_tight(client,cfg): data = get_data(client,"atlas",cfg) if data is None: return psn = get_item(data,u"psn") sn = get_item(data,u"sn") wsn = get_item(data,u"wsn") stepnum = get_item(data,u"stepnum") sleeve = get_item(data,u"sleeve") device = get_item(data,u"deviceid") contorl = get_item(data,u"contorlid") pset = get_item(data,u"pset") fintorque = get_item(data,u"finaltorque") finangle = get_item(data, u"finalangle") maxAngle = get_item(data, u"maxangle") maxtoeque = get_item(data, u"maxtorque") minangle = get_item(data, u"minangle") mintorque = get_item(data, u"mintorque") resultinfo = get_item(data,"result") if resultinfo == "pass": result = 1 else: result = 0 Tim1 = get_item(data,"time") Tim = Tim1[0:19] tim = str(datetime.datetime.strptime(Tim,"%Y-%m-%dT%H:%M:%S")) info = json_post(client,"http://10.106.11.42:8049/restful/prod-exec/product-torque-detail-service/insert/ames",[{ "serialNumber":psn, "workOrderNo":sn, "partNo":"", "prodLineCode":"PL02", "stationCode":wsn, "stepNo":stepnum, "sleeve":sleeve, "deviceID":device, "contorlID":contorl, "pSET":pset, "finalTorque":fintorque, "finalAngle":finangle, "maxTorque":maxtoeque, "minTorque":mintorque, "maxAngle":maxAngle, "minAngle":minangle, "resultMsg":result, "siteCode":"3310", "userNo":"AMES", "time":tim }]) print(info) if info["result"]: print("torque post success") cfg["atlas"] = data["time"] else: print("torque post fail")
def get_data(client, tab, cfg): st = None if tab in cfg: st = cfg[tab] if st is None: info = json_post(client, host_timedb(), { "n": tab, "obj": "*", "opt": { "limit": 1 } }) else: info = json_post( client, host_timedb(), { "n": tab, "obj": "*", "opt": { "and": [{ "ge": "time", "v": st }], "limit": 20 } }) if info is not None: data1 = info["stnstatus"] if "start" in data1 and "end" in data1 and "data" in data1: print(data1["start"]) print(data1["end"]) print(data1["data"]) cfg[tab] = data1["end"] for data in data1["data"]: return data return None
def get_data(client, tab, cfg): st = None if tab in cfg: st = cfg[tab] if st is None: data = json_post(client, host_timedb(), { "cmd": "get/first", "data": { "tab": tab, "orig": "true", "obj": "*" } }) else: data = json_post( client, host_timedb(), { "cmd": "get/start", "data": { "tab": tab, "limit": 20, "start": st, "orig": "true", "nostart": "true", "obj": "*" } }) if data is not None: if "start" in data and "end" in data and "data" in data: print(data["start"]) print(data["end"]) print(data["data"]) cfg[tab] = data["end"] return data["data"] return None
def post_airtight(client,cfg): data = get_data(client,"ateq",cfg) if data is None: return psn = get_item(data,u"psn") sn = get_item(data,u"sn") wsn = get_item(data,u"wsn") device = get_item(data,u"deviceid") testProID = get_item(data,u"testproid") testCount = get_item(data,u"testnum") testPressure = get_item(data,u"testpressure") testData = get_item(data, u"testrate") testRate = get_item(data, u"testrate") resultinfo = get_item(data,"result") if resultinfo == "pass": result = 1 else: result = 0 Tim = get_item(data,"time") pt1 = Tim[0:19] pstar = datetime.datetime.strptime(pt1, "%Y-%m-%dT%H:%M:%S") nedtime = datetime.timedelta(seconds=int(get_item(data,u"stepbeat"))) pen = (pstar + nedtime).strftime("%Y-%m-%d %H:%M:%S") startim = str(pstar.strftime("%Y-%m-%d %H:%M:%S")) endtim = str(pen) info = json_post(client,"http://10.106.11.42:8049/restful/prod-battery/divulge-data/insert/ames",[{ "serialNumber":psn, "workOrderNo":sn, "partNo":"", "prodLineCode":"PL02", "stationCode":wsn, "deviceID":device, "testProID":testProID, "testCount":testCount, "testPressure":testPressure, "testData":testData, "testRate":testRate, "resultMsg":result, "siteCode":"3310", "userNo":"AMES", "startTime":startim, "endTime":endtim }]) print(info) if info["result"]: print("airtight post success") cfg["atlas"] = data["time"] else: print("airtight post fail")
def get_emergency(client, cfg): st = None if "emergency" in cfg: st = cfg["emergency"] if st is None: info = json_post(client, host_timedb(), { "n": "stnstatus", "obj": "*", "opt": { "limit": 1, "and": [ {"eq": "wsn", "v": "af450" }] } }) else: info = json_post(client, host_timedb(), { "n": "stnstatus", "obj": "*", "opt": { "limit": 1, "and": [ {"eq": "wsn", "v": "af450" }, {"gt": "time", "v": st }] } }) print(info) if info is not None: data1 = info["stnstatus"] if "start" in data1 and "end" in data1 and "data" in data1: cfg["emergency"] = data1["end"] return data1["data"][0] return None
def json2xml(client, k, v): if v is None: return None ret = json_post(client, host_xmljson(), { "cmd": "jsonxml", "data": { "k": k, "v": v } }) if ret == "Fail" or ret is None: return None return ret["v"]
def get_plan(client, tab, cfg, rec): st = None if tab in cfg: st = cfg[tab] tsn = rec["TSN"] sn = rec["CID"] pt = rec["PT"] big2 = rec["1G2"] b288 = rec["288"] gbt = rec["GBT"] sqr = rec["SQR"] prn = rec["PRN"] pstar = datetime.datetime.strptime(pt, "%Y%m%d%H%M%S") nedtime = datetime.timedelta(minutes=15) pen = (pstar + nedtime).strftime("%Y-%m-%dT%H:%M:%S") pstart = str(pstar.strftime("%Y-%m-%dT%H:%M:%S")) pend = str(pen) if st is None: info = json_post(client, host_real_task(), { "sn": sn, "tsn": tsn, "pstart": pstart, "pend": pstart, "pnum": 1, "info": [ {"k": "ig2", "v": big2}, {"k": "288", "v": b288}, {"k": "gbt", "v": gbt}, {"k": "sqr", "v": sqr}, {"k": "prn", "v": prn}, {"k": "tsn", "v": tsn}, ] }) if info == "Success": result = put_psn(client, sn) if result == "Success": return info
def post_pipmsn(client,cfg): data = get_data(client,"msn",cfg) if data is None: return psn = get_item(data,u"psn") sn = get_item(data,u"sn") wsn = get_item(data,u"wsn") stepnum = get_item(data,u"stepnum") msn = get_item(data,u"msn") msnpart = msn[0:10] resultinfo = get_item(data,"result") if resultinfo == "pass": result = 1 else: result = 0 Tim1 = get_item(data,"time") Tim = Tim1[0:19] tim = str(datetime.datetime.strptime(Tim,"%Y-%m-%dT%H:%M:%S")) info = json_post(client,"http://10.106.11.42:8049/restful/prod-exec/sn-bind-detail-service/insert/ames",[{ "serialNumber":psn, "workOrderNo":sn, "partNo":"", "prodLineCode":"PL02", "stationCode":wsn, "stepNo":stepnum, "componentPartNo":msnpart, "componentSN":msn, "resultMsg":result, "siteCode":"3310", "userNo":"AMES", "time":tim }]) print(info) if info["result"]: print("pipmsn post success") cfg["msn"] = data["time"] else: print("pipmsn post fail")
def post_creatsn(client, cfg): # info1 = json_post(client, host_graphdbget(), { info1 = json_post(client, "http://10.106.160.10/graphdb/get/line-one", { "n": "task", "obj": "sn,uid,state,pstart,pend", "opt": { "has": "sn" } }) print(info1) tabname = None if "creatsn" in cfg: tabname = cfg["creatsn"] for i in info1: sn = get_item(i, "sn") state = get_item(i, "state") qty = "1" starttime = get_item(i, "pstart") endtime = get_item(i, "pend") snstatus = tabname if state == "open": if snstatus == None: info = json_requests_post("http://10.106.11.42:8049/restful/prod-plan/work-order-service/insert/ames", [{ "workOrderNo": sn, "prodLineCode": "PL02", "partNo": "", "qty":qty, "siteCode": "3310", "userNo": "AMES", "startTime": starttime, "endTime": endtime }]) print(info) if info["result"]: snstatus[i]["sn"] = sn print("creatsn post success") return else: print("creatsn post error") return else: snlen = len(snstatus) if i in range(snlen): if sn == snstatus[i]["sn"] and state == snstatus[i]["state"]: continue else: info = json_requests_post("http://10.106.11.42:8049/restful/prod-plan/work-order-service/insert/ames", [{ "workOrderNo": sn, "prodLineCode": "PL02", "partNo": "", "qty":qty, "siteCode": "3310", "userNo": "AMES", "startTime": starttime, "endTime": endtime }]) print(info) if info["result"]: print("creatsn post success") snstatus[i]["state"] = state return else: print("creatsn post error") return else: break
def do_post_cmd(cmd, n): client = tornado.httpclient.HTTPClient() cfg = read_cfg() if cfg is None: cfg = {} if cmd == "packstation": post_packstation(client, cfg) if cmd == "snstatus": post_snstatus(client, cfg) client.close() write_cfg(cfg) def do_task(): do_post_cmd("packstation", None) do_post_cmd("snstatus", None) cfg_host = host = "http://dockerhost/cfg" http_client = tornado.httpclient.HTTPClient() model = json_post(http_client, cfg_host, {"cmd": "get", "key": "client"}) http_client.close() do_task()
def get_plan(client, tab, cfg, rec): st = None if tab in cfg: st = cfg[tab] #tsn = rec["tsn"] tsn = "11G 915 911" sn = rec["CID"] pt = rec["PT"] ig2 = rec["1G2"] b288 = rec["288"] gbt = rec["GBT"] pstar = datetime.datetime.strptime(pt, "%Y%m%d%H%M%S") nedtime = datetime.timedelta(minutes=15) pen = (pstar + nedtime).strftime("%Y-%m-%dT%H:%M:%S") pstart = str(pstar.strftime("%Y-%m-%dT%H:%M:%S")) pend = str(pen) if st is None: uidinfo = json_post(client, host_graphdbget(), { "n": "tech", "obj": "uid,sn", "opt": { "and": [{ "eq": "sn", "v": tsn }] } }) uid = uidinfo[0]["uid"] info = json_post( client, host_graphdb(), { "a": [{ "u": "line-one", "n": "task", "v": [[{ "k": "sn", "v": sn }, { "k": "tech", "u": uid }, { "k": "pstart", "v": pstart }, { "k": "pend", "v": pend }, { "k": "pnum", "v": "1" }, { "k": "state", "v": "open" }, { "k": "ig2", "v": ig2 }, { "k": "288", "v": b288 }, { "k": "gbt", "v": gbt }]] }] }) if info == "Success": return info