def callEmergency(self,inputData): ret = {} stationID = inputData["stationID"] queueID = inputData["queueID"] workerID = inputData["id"] visitorID = inputData["visitorID"] #修改队列最后在线医生 queue = {} queue["id"] = queueID queue["stationID"] = stationID queue["workerOnline"] = workerID queueInfo.QueueInfoInterface().edit(queue) #修改队列进行中人员 且医生为当前医生的 为已完成 doingList = DB.DBLocal.where('visitor_local_data', stationID=inputData["stationID"] ,queueID = inputData["queueID"]\ ,status = "doing", workerOnline = workerID) lastOne = {"id": "","stationID":stationID, "name": "", "status": "finish"} for item in doingList: lastOne["id"] = item["id"] lastOne["name"] = item["name"] lastOne["workEndTime"] = self.getCurrentTime() VisitorLocalInterface(stationID).edit(lastOne) # 修改呼叫人员状态改为Doing 呼叫医生改为当前医生 selectOne = VisitorLocalInterface(stationID).getInfo({"id": visitorID}) if selectOne["locked"] != 1: nextOne = {"id": visitorID, "stationID" :stationID} nextOne["status"] = "doing" nextOne["workerOnline"] = workerID nextOne["workStartTime"] = self.getCurrentTime() VisitorLocalInterface(stationID).edit(nextOne) nextOne["name"] = selectOne["name"] lastOne = parpareOne = {} self.publish(inputData,lastOne,nextOne,parpareOne,ret) return ret
def sigVisitorFinished(self, name, vID): vList = self.db.where("visitor_local_data", name=name, id=vID) if len(vList) != 0: v = vList.first() vUpdate = { "id": vID, "stationID": v["stationID"], "status": "finish" } VisitorLocalInterface.edit(vUpdate)
def visitorActiveSet(self, inputData): stationID = inputData["stationID"] queueID = inputData["queueID"] visitor = {} visitor["id"] = inputData["id"] visitor["stationID"] = stationID if inputData["active"]: activeTime = datetime.datetime.now() visitor["activeLocal"] = 1 visitor["activeLocalTime"] = activeTime queueInfo = QueueInfoInterface().getInfo({ "stationID": stationID, "id": queueID }) sceneID = queueInfo["sceneID"] scene = SceneInterface().getSceneInfo({"sceneID": sceneID}) if scene["delayTime"] == 0: visitor["status"] = "waiting" else: visitor["status"] = "unactivewaiting" else: visitor["activeLocal"] = 0 visitor["status"] = "unactive" VisitorLocalInterface(stationID).edit(visitor) return
def visitorFinishSet(self, inputData): id = inputData["id"] stationID = inputData["stationID"] visitorList = DB.DBLocal.select( "visitor_local_data", where="stationID=$stationID and id=$id", vars={ "stationID": stationID, "id": id }) if len(visitorList) != 0: visitor = visitorList[0] else: raise Exception("[ERR]: visitor not exists.id:" + id) if inputData["finish"]: # 判断访客当前的状态 if visitor["status"] == "finish": return # 设置访客完成的情况 visitor["status"] = "finish" else: # 访客复诊的情况 if visitor["status"] == "finish": visitor["status"] = "waiting" visitor["prior"] = 1 self.setVisitorStatus(visitor, action="review") # 访客过号的情况 elif visitor["status"] == "pass": visitor["status"] = "waiting" visitor["prior"] = 2 self.setVisitorStatus(visitor, action="pass") else: visitor["status"] = "waiting" VisitorLocalInterface(stationID).edit(visitor) return
def backupOld(self): queueList = self.queueInfo.getList({"stationID": self.stationID}) LogOut.info("station %d backupOld" % self.stationID) #遍历分诊台的队列 for queue in queueList: #得到策略的工作时间 workDays, dateStr = QueueInfoInterface().getWorkDays( self.stationID, queue["id"]) joinView = "(select id, queueID, status as localStatus,workStartTime,workEndTime from visitor_local_data where stationID = %d and queueID = %d) as joinView" \ %(self.stationID , queue["id"]) joinSql = "select * from visitor_source_data a inner join %s on a.id=joinView.id where registDate < %s" % ( joinView, dateStr) print("backupView sql: " + joinSql) # find the visitors outof date backupList = self.DBLocal.query(joinSql) for item in backupList: print "find backup item name: " + item[ "name"] + " registDate: " + str( item["registDate"]) + " workEndTime: " + str( item["workEndTime"]) BackupTableInterface(self.stationID).add(item) VisitorSourceInterface(self.stationID).delete(item) VisitorLocalInterface(self.stationID).delete(item) """
def backupOld(self): stationList = StationInterface().getList() for station in stationList: stationID = station["id"] queueList = self.queueInfo.getList({"stationID": stationID}) LogOut.info("station %d backupOld" % stationID) #遍历分诊台的队列 for queue in queueList: #得到策略的工作时间 workDays, dateStr = QueueInfoInterface().getWorkDays( stationID, queue["id"]) joinSql = "select * from visitor_view_data where queueID = %d and registDate < %s" % ( queue["id"], dateStr) print("backupView sql: " + joinSql) # find the visitors outof date backupList = self.db.query(joinSql) for item in backupList: print "find backup item name: " + item[ "name"] + " registDate: " + str( item["registDate"]) + " workEndTime: " + str( item["workEndTime"]) item.pop("lid") BackupTableInterface(stationID).add(item) VisitorSourceInterface().delete(item) VisitorLocalInterface(stationID).delete(item)
def setVisitorStatus(self, inputData, action=None): stationID = inputData.get("stationID", None) if stationID is None: raise Exception("[ERR]: stationID required") queueID = inputData.get("queueID", None) if queueID is None: raise Exception("[ERR]: queueID required") workerID = inputData.get("id", None) if workerID is None: raise Exception("[ERR]: workerID required") # 修改队列最后登录医生 queueInfo.QueueInfoInterface().edit({"stationID": stationID, "id": queueID, "workerOnline": workerID}) where = {"stationID": stationID, "queueID": queueID, "workerOnline": workerID, "status": "doing"} doingList = DB.DBLocal.select("visitor_local_data", where=where) doing = doingList[0] if action == "delay": # 为当前需要设置延后的访客重新设置originScore、finalScore doing["prior"] = 3 doing = mainStation.StationMainController().setVisitorStatus(doing, action=action) # 修改需要设置延后的访客状态为"延后" doing["status"] = "waiting" elif action == "pass": doing["prior"] = 2 doing = mainStation.StationMainController().setVisitorStatus(doing, action=action) doing["status"] = "pass" doing["workEndTime"] = self.getCurrentTime() VisitorLocalInterface(stationID).edit(doing)
def callNext(self,inputData,passed = 0): ret = {} stationID = inputData["stationID"] queueID = inputData["queueID"] workerID = inputData["id"] #修改队列最后在线医生 queue = {} queue["id"] = queueID queue["stationID"] = stationID queue["workerOnline"] = workerID queueInfo.QueueInfoInterface().edit(queue) #修改队列进行中人员 且医生为当前医生的 为已完成 doingList = DB.DBLocal.where('visitor_local_data', stationID=inputData["stationID"] ,queueID = inputData["queueID"]\ ,status = "doing", workerOnline = workerID) lastOne = {"id": "","stationID":stationID, "queueID": queueID, "name": "", "status": "finish"} # if passed == 1: # lastOne["status"] = "pass" for item in doingList: lastOne["id"] = item["id"] if passed == 1: lastOne["status"] = "pass" lastOne["name"] = item["name"] lastOne["workEndTime"] = self.getCurrentTime() VisitorLocalInterface(stationID).edit(lastOne) #修改呼叫人员状态改为Doing 呼叫医生改为当前医生 waitList = QueueDataController().getQueueVisitor(inputData) nextOne = parpareOne = {} for item in waitList: if item["locked"] != 1: nextOne = item nextOne["status"] = "doing" nextOne["workerOnline"] = workerID nextOne["workStartTime"] = self.getCurrentTime() VisitorLocalInterface(stationID).edit(nextOne) try: parpareOne = iter(waitList).next() except: parpareOne = {} self.publish(inputData,lastOne,nextOne,parpareOne,ret) break return ret
def visitorLockSet(self, inputData): stationID = inputData["stationID"] queueID = inputData["queueID"] visitor = {} visitor["id"] = inputData["id"] visitor["stationID"] = stationID if inputData["locked"]: visitor["locked"] = 1 else: visitor["locked"] = 0 VisitorLocalInterface(stationID).edit(visitor) return
def visitorProirSet(self, inputData): stationID = inputData["stationID"] queueID = inputData["queueID"] visitor = {} visitor["id"] = inputData["id"] visitor["prior"] = inputData["prior"] # if inputData["prior"]: # visitor["prior"] = 1 # else: # visitor["prior"] = 0 VisitorLocalInterface(stationID).edit(visitor) return
def callVisitor(self,inputData): ret = {} stationID = inputData["stationID"] queueID = inputData["queueID"] workerID = inputData["id"] visitorID = inputData["visitorID"] # 修改队列最后在线医生 queue = {} queue["id"] = queueID queue["stationID"] = stationID queue["workerOnline"] = workerID queueInfo.QueueInfoInterface().edit(queue) # 修改呼叫人员状态改为Doing 呼叫医生改为当前医生 selectOne = VisitorLocalInterface(stationID).getInfo({"id": visitorID}) if selectOne["locked"] != 1: nextOne = {"id": visitorID, "stationID" :stationID} nextOne["status"] = "doing" nextOne["workerOnline"] = workerID nextOne["workStartTime"] = self.getCurrentTime() VisitorLocalInterface(stationID).edit(nextOne) nextOne["name"] = selectOne["name"] lastOne = parpareOne = {} self.publish(inputData,lastOne,nextOne,parpareOne,ret) return ret