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
Exemple #2
0
 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)
Exemple #3
0
 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
Exemple #4
0
 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
Exemple #5
0
    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)
        """
Exemple #6
0
    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)
Exemple #7
0
    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
Exemple #9
0
 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
Exemple #10
0
 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