def getTopTenPCode(self, req): vendor = req.vendor reimburseTag = req.reimburseTag bg = req.bg site = req.site plant = req.plant startdate = req.startdate enddate = req.enddate organization = Organization(bg, site, plant) key_list = organization.get_redis_format() if ServiceUtils.isMoreThanOneYear(startdate, enddate): logger.info("超過一年內查詢區間 DB") # TODO(Christine) 撈取DB資料 else: ## go to redis logger.info("一年內查詢區間 redis") '''redis''' service = RedisGetPCodeTop10BarService( key_list, startdate, enddate, vendor, reimburseTag) # 1598889600 ~ 1609171200 json_data = service.serialize() if json_data is not None: dataJsonArray = json.loads(json_data) # JSON字串轉Python dict result = ApiResponse.emitSuccessOutput( dataJsonArray, msg="get data successfully.") else: result = ApiResponse.emitErrorOutput(E_QUERY_FAIL, "查無資料", "no data") return result
def postPaymentTermDistribution(self, req): vendor = req.vendor reimburseTag = req.reimburseTag bg = req.bg site = req.site plan = req.plant startdate = req.startdate enddate = req.enddate if ServiceUtils.isMoreThanOneYear(startdate, enddate): service = DatabasePaymentTermService(req) return service.serialize() else: organization = Organization(bg, site, plan) key_list = organization.get_redis_format() service = RedisGetPaymentTermDistributionService( key_list, startdate, enddate, vendor, reimburseTag) json_data = service.serialize() if json_data is not None: dataJsonArray = json.loads(json_data) # JSON字串轉Python dict result = ApiResponse.emitSuccessOutput( dataJsonArray, msg="get data successfully.") else: result = ApiResponse.emitErrorOutput(E_QUERY_FAIL, "查無資料", "no data") return result
def getVendorPurchase(self, vendor, reimburseTag, bg, site, plant, startdate, enddate, vendorName): # vendor = self.vendor # reimburseTag = self.reimburseTag # bg = self.bg # site = self.site # plant = self.plant # startdate = self.startdate # enddate = self.enddate organization = Organization(bg, site, plant) bg = organization.bg site = organization.site plant = organization.plant key_list = organization.get_redis_format() logger.info("超過一年內查詢區間 pass") # TODO() 撈取DB資料 service = DatabaseGetVendorPurchaseListService( bg, site, plant, startdate, enddate, vendor, reimburseTag, vendorName) # 1598889600 ~ 1609171200 json_data = service.serialize() if json_data is not None: dataJsonArray = json.loads(json_data) # JSON字串轉Python dict result = ApiResponse.emitSuccessOutput( dataJsonArray, msg="get data successfully.") else: result = ApiResponse.emitErrorOutput(E_QUERY_FAIL, "查無資料", "no data") return result
def getTopTenVendorChart(self, req): vendor = req.vendor reimburseTag = req.reimburseTag bg = req.bg site = req.site plant = req.plant startdate = req.startdate enddate = req.enddate organization = Organization(bg, site, plant) bg = organization.bg site = organization.site plant = organization.plant key_list = organization.get_redis_format() if ServiceUtils.isMoreThanOneYear(startdate, enddate): logger.info("超過一年內查詢區間 DB") # TODO() 撈取DB資料 service = DatabaseGetTopTenVendorChartService( bg, site, plant, startdate, enddate, vendor, reimburseTag) # 1598889600 ~ 1609171200 json_data = service.serialize() if json_data is not None: dataJsonArray = json.loads(json_data) # JSON字串轉Python dict resultArray = [] dataJsonArray.sort(key=itemgetter('site')) groupArray = groupby(dataJsonArray, itemgetter('site')) for key, group in groupArray: vendorList = [] for g in group: vendorList.append(g) resultDic = {"site": key, "vendorList": vendorList} resultArray.append(resultDic) result = ApiResponse.emitSuccessOutput( resultArray, msg="get data successfully.") else: result = ApiResponse.emitErrorOutput(E_QUERY_FAIL, "查無資料", "no data") return result else: ## go to redis logger.info("一年內查詢區間 redis") '''redis''' service = RedisGetVendorTop10Service( key_list, startdate, enddate, vendor, reimburseTag) # 1598889600 ~ 1609171200 json_data = service.serialize() if json_data is not None: dataJsonArray = json.loads(json_data) # JSON字串轉Python dict result = ApiResponse.emitSuccessOutput( dataJsonArray, msg="get data successfully.") else: result = ApiResponse.emitErrorOutput(E_QUERY_FAIL, "查無資料", "no data") return result
def getTopTenVendor(self, req): vendor = req.vendor reimburseTag = req.reimburseTag bg = req.bg site = req.site plan = req.plant startdate = req.startdate enddate = req.enddate datetime_start = datetime.fromtimestamp(startdate) datetime_end = datetime.fromtimestamp(enddate) dtStartStr = datetime_start.strftime('%Y-%m-%d') dtEndStr = datetime_end.strftime('%Y-%m-%d') if ServiceUtils.isMoreThanOneYear(startdate, enddate): ## go to sql '''sql''' sqlquery = '''select po.vendor_code as vandercode, po.vendor_name as vendername, sum(po.po_amount) as amount from public."PURCHASE_ORDER" po where po.vendor_code in (select vendor_code from public."PURCHASE_ORDER" group by vendor_code order by sum(po_amount) desc limit 10) group by po.vendor_code ,po.vendor_name order by po.vendor_code''' data = GetDataService.getwistrondata(self, sqlquery) result = ApiResponse.emitSuccessOutput( data, msg="get data successfully.") return result else: ## go to redis '''redis''' organization = Organization(bg, site, plan) key_list = organization.get_redis_format() service = RedisGetVendorTop10Service(key_list, startdate, enddate, vendor, reimburseTag) json_data = service.serialize() if json_data is not None: dataJsonArray = json.loads(json_data) # JSON字串轉Python dict result = ApiResponse.emitSuccessOutput( dataJsonArray, msg="get data successfully.") else: result = ApiResponse.emitErrorOutput(E_QUERY_FAIL, "查無資料", "no data") return result testdata = [] site = ['wks', 'wmy', 'wih', 'wmx', 'wok', 'wtz'] testdata = [] for sitename in site: vendorList = [] for i in range(1, 11): vendorList.append({ "vendorCode": "vendorCode" + str(i), "vendorName": "vendorName" + str(i), "amount": random.randint(100, 2000) }) testdata.append({"site": sitename, "vendorList": vendorList}) result = json.dumps(testdata) result = ApiResponse.emitSuccessOutput(json.loads(result)) return result
def get8Cate(self, req): vendor = req.vendor reimburseTag = req.reimburseTag bg = req.bg site = req.site plan = req.plant startdate = req.startdate enddate = req.enddate datetime_start = datetime.fromtimestamp(startdate) datetime_end = datetime.fromtimestamp(enddate) dtStartStr = datetime_start.strftime('%Y-%m-%d') dtEndStr = datetime_end.strftime('%Y-%m-%d') #if False: if ServiceUtils.isMoreThanOneYear(startdate, enddate): sqlquery = '''SELECT paym as category ,sum(amnt) as amount FROM public.mmp_impc_wks GROUP BY paym order by sum(amnt) desc''' data = GetDataService.getwistrondata(self, sqlquery) print(data) if data is None: return ApiResponse.emitErrorOutput(E_QUERY_FAIL, "查無資料", "no data") result = [] column = ('category', 'amount') for row in data: print(row) result.append(dict(zip(column, row))) print(result) result = json.dumps(result) json_data = json.loads(result) return ApiResponse.emitSuccessOutput(json_data) else: organization = Organization(bg, site, plan) key_list = organization.get_redis_format() service = RedisGet8CategorysDistributionService( key_list, startdate, enddate, vendor, reimburseTag) json_data = service.serialize() if json_data is not None: dataJsonArray = json.loads(json_data) result = ApiResponse.emitSuccessOutput( dataJsonArray, msg="get data successfully.") else: result = ApiResponse.emitErrorOutput(E_QUERY_FAIL, "查無資料", "no data") return result
def postVenderTopTen(self, req): vendor = req.vendor reimburseTag = req.reimburseTag bg = req.bg site = req.site plan = req.plant startdate = req.startdate enddate = req.enddate if ServiceUtils.isMoreThanOneYear(startdate, enddate): service = DatabaseVenderTop10Service(req) return service.serialize() else: ## go to redis '''redis''' organization = Organization(bg, site, plan) key_list = organization.get_redis_format() service = RedisGetVendorTop10Service(key_list, startdate, enddate, vendor, reimburseTag) json_data = service.serialize() if json_data is not None: dataJsonArray = json.loads(json_data) # JSON字串轉Python dict result = ApiResponse.emitSuccessOutput( dataJsonArray, msg="get data successfully.") else: result = ApiResponse.emitErrorOutput(E_QUERY_FAIL, "查無資料", "no data") return result testdata = [] site = ['wks', 'wmy', 'wih', 'wmx', 'wok', 'wtz'] testdata = [] for sitename in site: vendorList = [] for i in range(1, 11): vendorList.append({ "vendorCode": "vendorCode" + str(i), "vendorName": "vendorName" + str(i), "amount": random.randint(100, 2000) }) testdata.append({"site": sitename, "vendorList": vendorList}) result = json.dumps(testdata) result = ApiResponse.emitSuccessOutput(json.loads(result)) return result
def getTopTenPO(self, req): vendor = req.vendor reimburseTag = req.reimburseTag bg = req.bg site = req.site plan = req.plant startdate = req.startdate enddate = req.enddate datetime_start = datetime.fromtimestamp(startdate) datetime_end = datetime.fromtimestamp(enddate) dtStartStr = datetime_start.strftime('%Y-%m-%d') dtEndStr = datetime_end.strftime('%Y-%m-%d') if ServiceUtils.isMoreThanOneYear(startdate, enddate): sqlquery = ''' select po.vendor_code as vandercode, po.vendor_name as vendername, sum(po.po_amount) as amount from public."PURCHASE_ORDER" po where po.vendor_code in (select vendor_code from public."PURCHASE_ORDER" group by vendor_code order by sum(po_amount) desc limit 10) group by po.vendor_code ,po.vendor_name order by po.vendor_code ''' data = GetDataService.getwistrondata(self, sqlquery) if data is None or data == []: return ApiResponse.emitErrorOutput(E_QUERY_FAIL, "查無資料", "no data") result = [] format_string = '' column = ('poNo', 'poAmount', 'PCodeOrDeptCode', 'vendorName', 'prRemark') for row in data: result.append(dict(zip(column, row))) count = 1 for amountdata in result: print(type(amountdata)) if amountdata.get('prRemark') is None: amountdata['prRemark'] = '' format_string = format_string + '\"' + str( count) + '\":' + str(amountdata) + ',' count += 1 format_string = format_string[:-1] format_string = format_string.replace("\'", "\"") format_string = '{' + format_string + '}' print(format_string) json_data = json.loads(format_string) return ApiResponse.emitSuccessOutput(json_data) else: organization = Organization(bg, site, plan) key_list = organization.get_redis_format() service = RedisGetPOTop10Service(key_list, startdate, enddate, vendor, reimburseTag) json_data = service.serialize() if json_data is not None: dataJsonArray = json.loads(json_data) # JSON字串轉Python dict result = ApiResponse.emitSuccessOutput( dataJsonArray, msg="get data successfully.") else: result = ApiResponse.emitErrorOutput(E_QUERY_FAIL, "查無資料", "no data") return result