def solve_room_card_a(self, entity): room = entity['room'][0] room_name = room if room.find("_") != -1: room_name = room.split("_")[2] res = Neo4jPrepare.get_property(room) ans = "\n" if res['card'] != '': ans += "进" + room_name + "需要满足的条件为:\n" if res['card'].find(",") != -1: card_arr = res['card'].split(",") for c in card_arr: #print("==============================c",c) c_res = Neo4jPrepare.get_property(c) ans += "年龄" + c_res['age'] + "的读者可以持" + c_res[ 'office_name'] + "进入" + room_name + "\n" else: c_res = Neo4jPrepare.get_property(res['card']) ans += "年龄" + c_res['age'] + "的读者可以持" + c_res[ 'office_name'] + "进入" + room_name + "\n" else: ans += "进入该馆室无需证件\n" return ans
def solve_restype_describe(self, entity): restype = entity['restype'][0] res = Neo4jPrepare.get_reverse_relation(restype, '资源') res_arr = [] yes_room = [] no_room = [] describe = [] ans = "\n" for r in res: #print(r) sub_res = Neo4jPrepare.get_property(r['office_name']) res_arr.append(sub_res['office_name']) if sub_res['describe'] != '': yes_room.append(sub_res['office_name']) describe.append(sub_res['describe']) else: no_room.append(sub_res['office_name']) ans += restype + "包括" for r in res_arr[:-1]: ans += r + "," ans += res_arr[-1] #ans+=res_arr[-1]+"\n很抱歉,没有" for y in range(len(yes_room)): ans += yes_room[y] + ":" + describe[y] + "\n" return ans
def solve_res_floor(self, entity): resource = entity['res'][0] floor = entity['floor'][0] res = Neo4jPrepare.get_relation(resource,'馆室') room_name = res[0]['office_name'] if room_name.find("_")!=-1: room_name = res[0]['office_name'].split("_")[2] des_floor = Neo4jPrepare.get_relation(res[0]['office_name'],'楼层') ans = "\n" if floor == des_floor[0]['office_name']: ans += resource+"存放在"+floor else: ans += resource+"不存放在"+floor+"\n"+resource+"存放在"+des_floor[0]['office_name']+"的"+room_name return ans
def solve_count_floor(self, entity): area = entity['area'][0] res = Neo4jPrepare.get_reverse_relation(area,'楼层') #print(res) l = len(res) ans = "\n"+area+"一共有"+str(l)+"层\n" return ans
def solve_library_describe(self): res = Neo4jPrepare.get_entity("国家图书馆") #print(res) ans = "\n" + res[0]['describe'] return ans
def solve_service_describe(self, entity): service = entity['service'][0] #print(service) res = Neo4jPrepare.get_property(service) #print(res.keys()) ans = '' if res['discribe'] != '': ans = "\n" + service + "指" + res['discribe'] else: room_res = Neo4jPrepare.get_relation(service, '馆室') for r in room_res: if r['describe'] != '': ans += "\n" + r['office_name'] + r['describe'] if ans == '': ans = "很抱歉,暂时没有" + service + "的描述信息\n" return ans
def solve_room_res_a(self, entity): room = entity['room'][0] room_name = room if room.find("_")!=-1: room_name = room.split("_")[2] res = Neo4jPrepare.get_reverse_relation(room,'资源') res_dict = {} for r in res: res_dict[r['belong']]=[] res_type = list(res_dict.keys()) #print(res_type) if res_type == []: return room_name+"不存放任何资源\n" ans = "\n" ans += room_name + "存放的资源类型包括:" for t in res_type[:-1]: ans += t+"," ans += res_type[-1]+"\n" for r in res: res_dict[r['belong']].append(r['office_name']) for t in res_type: ans += t+":" for r in res_dict[t][:-1]: ans += r+"," ans += res_dict[t][-1] +"\n" return ans
def solve_res_time(self, entity): resource = entity['res'][0] #print(Neo4jPrepare.get_property(resource)) room = Neo4jPrepare.get_property(resource)['room'] res = Neo4jPrepare.get_property(room) workday_time = res['monday_borrow'] weekend_time = res['sunday_borrow'] if workday_time == '' and weekend_time == '': return "很抱歉," + room + "的资源材料不提供借阅\n" #ans = "\n" + resource + "的借阅时间为:\n工作日:" + workday_time + "\n周未:" + weekend_time + "\n" ans = "\n" + resource + "存放在" + room + "," ans += room + "的借阅时间为:" if workday_time != '': ans += "\n工作日:" + workday_time if weekend_time != '': ans += "\n周未:" + weekend_time return ans + "\n"
def solve_floor_count_room(self, entity): #print("<<<") floor = entity['floor'][0] res = Neo4jPrepare.get_reverse_relation(floor, '馆室') # print(res) l = len(res) ans = "\n" + floor + "一共有" + str(l) + "间馆室\n" return ans
def solve_library_area(self): res = Neo4jPrepare.get_relation("国家图书馆","馆区") print(res) ans = "\n国家图书馆包括" for r in res[:-1]: ans += r['office_name']+"," ans += res[-1]['office_name']+"\n" return ans
def solve_res_res_a(self, entity): restype = entity['restype'][0] res = Neo4jPrepare.get_reverse_relation(restype,'资源') ans = "\n"+restype+"包含的资源有:\n" for r in res[:-1]: ans += r['office_name']+"," ans += res[-1]['office_name'] + "\n" return ans
def solve_count_res(self, entity): resource = entity['res'][0] res = Neo4jPrepare.get_property(resource) ans = "\n" if res['count']!='': ans += resource+"的数量是:"+str(res['count'])+"本(份)\n" else: ans += "很抱歉,"+resource+"暂时没有数据信息\n" return ans
def solve_res_floor_a(self, entity): floor = entity['floor'][0] res = Neo4jPrepare.get_reverse_relation(floor,'馆室') resource_arr = [] for r in res: res_arr = Neo4jPrepare.get_reverse_relation(r['office_name'],'资源') for sub_r in res_arr: resource_arr.append(sub_r['belong']) resource_arr = np.unique(resource_arr) ans = "\n" ans += floor+"存放有" for sub_r in resource_arr[:-1]: ans += sub_r+"," ans += resource_arr[-1]+"等类型的资源\n" return ans
def solve_card_describe(self): res = Neo4jPrepare.get_entity("证件") #print(res) ans = "\n" num = len(res) ans += "一共有" + str(num - 1) + "种读者卡\n" for r in res: if r['office_name'] == '第二代身份证': continue ans += '年龄' + r['age'] + '可以办理和使用' + r['office_name'] + "\n" return ans
def solve_count_restype(self, entity): restype = entity['restype'][0] #res = Neo4jPrepare.get_property(restype) ans = "\n" describe = "" num = 0 type = Neo4jPrepare.get_reverse_relation(restype,'资源类型') #print(type) for t in type: type_num = 0 res_r = Neo4jPrepare.get_reverse_relation(t['office_name'],'资源') for r in res_r: if r['count'] =='': continue type_num += int(r['count']) num += int(r['count']) if type_num != 0: describe = "其中包括:\n"+t['office_name'] + str(type_num) + "份\n" res_res = Neo4jPrepare.get_reverse_relation(restype, '资源') #print(res_res) other_num = 0 for r in res_res: if r['count'] == '': continue num += int(r['count']) other_num += int(r['count']) if other_num != 0 and describe != '': describe += "以及其他" + restype + str(other_num) + "份\n" # print(num) if num!=0: ans += restype+"的数量是:"+str(num)+"本(份)\n" ans += describe else: ans += "很抱歉,"+restype+"暂时没有数据信息\n" return ans
def solve_room_phone(self, entity): room = entity['room'][0] room_name = room if room.find("_") != -1: room_name = room.split("_")[2] res = Neo4jPrepare.get_property(room) #print(res) ans = "\n" if res['phone'] != '': ans += room_name + "的联系电话为:" + res['phone'] + "\n" else: ans += "很抱歉," + room_name + "暂无联系电话\n" return ans
def solve_res_res_h(self, entity): restype = entity['restype'][0] resource = entity['res'][0] res_arr = [] res = Neo4jPrepare.get_reverse_relation(restype,'资源') ans = "\n" for r in res[:-1]: res_arr.append(r['office_name']) if resource in res_arr: ans += "是的,"+resource + "属于"+restype+"\n" else: ans += "很抱歉," + resource + "不属于" + restype + "\n" return ans
def solve_room_describe(self, entity): room = entity['room'][0] room_name = room if room.find("_") != -1: room_name = room.split("_")[2] res = Neo4jPrepare.get_property(room) #print(res) ans = "\n" if res['describe'] != '': ans += room_name + ":" + res['describe'] else: ans += "对不起,暂时没有" + room_name + "的描述信息\n" return ans
def solve_room_floor(self,entity): floor = entity['floor'][0] room = entity['room'][0] res = Neo4jPrepare.get_relation(room,'楼层') ans = "\n" room_name = room if room.find("_")!=-1: room_name = room.split("_")[2] #print(res['office_name']) #print(res[0]['office_name'],floor) if res[0]['office_name'] == floor: ans += room_name+"在"+floor else: ans += room_name+"不在"+floor+"\n"+room_name+"在"+res[0]['office_name']+"\n" return ans
def solve_room_time(self, entity): room = entity['room'][0] res = Neo4jPrepare.get_property(room) #print(res) open_day = res['open_date'] ans = "\n" + room + "开放日为:" + open_day + "\n" workday_time = res['monday_open'] weekend_time = res['sunday_open'] if workday_time != '': ans += "工作日开放时间为:" + workday_time + "\n" if weekend_time != '': ans += "周末开放时间为:" + weekend_time + "\n" return ans
def solve_floor_room_a(self,entity): floor = entity['floor'][0] res = Neo4jPrepare.get_reverse_relation(floor,'馆室') ans = "\n"+floor+"有馆室" for r in res[:-1]: room_name = r['office_name'] if room_name.find("_")!=-1: room_name = room_name.split("_")[2] ans += room_name+"," room_name = res[-1]['office_name'] if room_name.find("_") != -1: room_name = room_name.split("_")[2] ans += room_name + "\n" #print(ans) return ans
def solve_room_res_time(self, entity): room = entity['room'][0] #print(entity) res = Neo4jPrepare.get_property(room) #print("================================",res) workday_time = res['monday_borrow'] weekend_time = res['sunday_borrow'] if workday_time == '' and weekend_time == '': return "很抱歉," + room + "的资源材料不提供借阅\n" ans = "\n" + room + "的书籍材料借阅时间为:" if workday_time != '': ans += "\n工作日:" + workday_time if weekend_time != '': ans += "\n周未:" + weekend_time return ans + "\n"