From f783b86330f68d193a71535295a43bd80d0d84da Mon Sep 17 00:00:00 2001 From: P3ngSaM <61768364+P3ngSaM@users.noreply.github.com> Date: Thu, 15 Sep 2022 18:09:20 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E7=9B=91=E7=AE=A1=E9=A3=8E=E9=99=A9?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Company/Supervision/Abnormal/AbnormalImpl.py | 145 +++++++++++++--- Company/Supervision/Abnormal/AbnormalObj.py | 2 - Company/Supervision/Abnormal/AbnormalRoute.py | 16 +- .../Supervision/Penalties/PenaltiesImpl.py | 155 +++++++++++++++--- Company/Supervision/Penalties/PenaltiesObj.py | 1 - .../Supervision/Penalties/PenaltiesRoute.py | 16 +- .../Supervision/TaxArrears/TaxArrearsImpl.py | 146 ++++++++++++++--- .../Supervision/TaxArrears/TaxArrearsRoute.py | 16 +- .../TaxViolation/TaxViolationImpl.py | 155 +++++++++++++++--- .../TaxViolation/TaxViolationObj.py | 2 - .../TaxViolation/TaxViolationRoute.py | 16 +- .../Supervision/Violation/ViolationImpl.py | 147 ++++++++++++++--- Company/Supervision/Violation/ViolationObj.py | 2 - .../Supervision/Violation/ViolationRoute.py | 16 +- 14 files changed, 700 insertions(+), 135 deletions(-) diff --git a/Company/Supervision/Abnormal/AbnormalImpl.py b/Company/Supervision/Abnormal/AbnormalImpl.py index dc06c11..ef93935 100644 --- a/Company/Supervision/Abnormal/AbnormalImpl.py +++ b/Company/Supervision/Abnormal/AbnormalImpl.py @@ -1,6 +1,7 @@ +from bson import ObjectId +from datetime import datetime from Company.Basic.Business.BusinessImpl import BusinessImpl from Company.CompanyUtils import CompanyUtils -from Company.Operational.LandMortgage.LandMortgageObj import LandMortgageObj from Company.Supervision.Abnormal.AbnormalObj import AbnormalObj from DBHelper.MongoHelperInstance import DB_TYC, DB_TEST from Utils.CommonUtil import CommonUtils @@ -10,7 +11,34 @@ class AbnormalImpl(object): """动产抵押""" @staticmethod - def auto_update(**kwargs): + def verify_time(**kwargs): + """校验更新时间""" + + def calculate_jet_lag(begin_time): + """计算时差""" + end_time = CommonUtils.get_current_time() + time_1_struct = datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S") + time_2_struct = datetime.strptime(begin_time, "%Y-%m-%d %H:%M:%S") + seconds = (time_1_struct - time_2_struct).seconds + if seconds > 60: + return True + else: + return False + + condition = kwargs['condition'] + start_time = DB_TEST.find_all_data( + 'WR_DataBase_v2_test', + 'C11.1_经营异常', + condition, + ['更新时间'] + ) + if start_time: + res = calculate_jet_lag(start_time[-1]['更新时间']) + else: + res = True + return res + + def auto_update(self, **kwargs): """新增/更新(自动)""" condition = kwargs['condition'] @@ -31,7 +59,6 @@ class AbnormalImpl(object): for record_item in records_item: dict_data = dict() dict_data['企业ID'] = company_id - dict_data['异常ID'] = CompanyUtils.make_new_abnormal_id() dict_data['日期'] = record_item['putDate'] dict_data['机关'] = record_item['putDepartment'] dict_data['列入经营异常名录原因'] = record_item['putReason'] @@ -49,15 +76,17 @@ class AbnormalImpl(object): {'企业ID': cid}, '企业名称' ) + # 判断更新时间 + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' update = save_data(cname=cname, cid=cid) if update: - for item in update: - DB_TEST.update_single_data( - "WR_DataBase_v2_test", - "C11.1_经营异常", - {"企业ID": cid, "异常ID": item['异常ID']}, - item - ) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.1_经营异常", + update + ) return 'success' else: return 'update failed' @@ -80,32 +109,101 @@ class AbnormalImpl(object): ) else: return 'new failed' + # 判断更新时间 + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' insert = save_data(cname=cname, cid=cid) if insert: - for item in insert: - DB_TEST.upsert_single_data( - "WR_DataBase_v2_test", - "C11.1_经营异常", - {"企业ID": cid, "异常ID": item['异常ID']}, - item - ) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.1_经营异常", + insert + ) return 'success' else: return 'new failed' else: return 'parameter exception' + def manu_update(self, **kwargs): + """新增/更新(手动)""" + cid = kwargs['cid'] + cname = kwargs['cname'] + template = kwargs['template'] + data = CompanyUtils.excel_sheet_parser(file=template) + if len(cid): + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' + if data: + data_list = list() + for item in data: + abnormal = AbnormalObj() + abnormal.cid = cid + abnormal.date = CommonUtils.excel_time_stamp(item['日期']) + abnormal.department = item['机关'] + abnormal.reason = item['列入经营异常名录原因'] + abnormal.update_time = CommonUtils.get_current_time() + data_list.append(abnormal.fields_toggle()) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.1_经营异常", + data_list + ) + return 'success' + else: + return 'update failed' + elif len(cname): + cid = DB_TEST.find_single_column( + 'WR_DataBase_v2_test', + 'C3.1_工商信息', + {'企业名称': cname}, + '企业ID' + ) + if not cid: + res = BusinessImpl.auto_update(condition={"cname": cname, "cid": ""}) + if res == 'success': + cid = DB_TEST.find_single_column( + 'WR_DataBase_v2_test', + 'C3.1_工商信息', + {'企业名称': cname}, + '企业ID' + ) + else: + return 'new failed' + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' + if data: + data_list = list() + for item in data: + abnormal = AbnormalObj() + abnormal.cid = cid + abnormal.date = CommonUtils.excel_time_stamp(item['日期']) + abnormal.department = item['机关'] + abnormal.reason = item['列入经营异常名录原因'] + abnormal.update_time = CommonUtils.get_current_time() + data_list.append(abnormal.fields_toggle()) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.1_经营异常", + data_list + ) + return 'success' + else: + return 'parameter exception' + @staticmethod def delete(**kwargs): """删除""" param = kwargs['param'] - cid = param['cid'] - abnormal_id = param['abnormal_id'] + _id = param['_id'] res = DB_TEST.delete_single_data( "WR_DataBase_v2_test", "C11.1_经营异常", - {"企业ID": cid, "异常ID": abnormal_id}, + {"_id": ObjectId(_id)} ) if res: @@ -122,8 +220,7 @@ class AbnormalImpl(object): def edit(**kwargs): """编辑""" param = kwargs['param'] - cid = param['cid'] - abnormal_id = param['abnormal_id'] + _id = param['_id'] body = param['body'] try: abnormal = AbnormalObj() @@ -135,7 +232,7 @@ class AbnormalImpl(object): DB_TEST.update_single_data( "WR_DataBase_v2_test", "C11.1_经营异常", - {"企业ID": cid, "异常ID": abnormal_id}, + {"_id": ObjectId(_id)}, update_data ) return 'success' @@ -168,6 +265,8 @@ class AbnormalImpl(object): ) if record: + for rec in record: + rec['_id'] = str(rec['_id']) update_time = record[-1]['更新时间'] result = { "info": "success", diff --git a/Company/Supervision/Abnormal/AbnormalObj.py b/Company/Supervision/Abnormal/AbnormalObj.py index 5db78a3..cd90944 100644 --- a/Company/Supervision/Abnormal/AbnormalObj.py +++ b/Company/Supervision/Abnormal/AbnormalObj.py @@ -5,7 +5,6 @@ from Utils.ValidateUtil import ValidateAttr, Validate class AbnormalObj(SpecObject): """经营异常""" cid = ValidateAttr(field='cid', type=str, length=8) - abnormal_id = ValidateAttr(field='abnormal_id', type=str, length=8) date = ValidateAttr(field='date', func=Validate.date_format) department = ValidateAttr(field='department', type=str, default=None) reason = ValidateAttr(field='reason', type=str, default=None) @@ -13,7 +12,6 @@ class AbnormalObj(SpecObject): fields_map = { "cid": "企业ID", - "abnormal_id": "异常ID", "date": "日期", "department": "机关", "reason": "列入经营异常名录原因", diff --git a/Company/Supervision/Abnormal/AbnormalRoute.py b/Company/Supervision/Abnormal/AbnormalRoute.py index ed3bbf3..018d040 100644 --- a/Company/Supervision/Abnormal/AbnormalRoute.py +++ b/Company/Supervision/Abnormal/AbnormalRoute.py @@ -19,11 +19,23 @@ def auto_update_route(): return {"info": e.__str__()}, e.status_code +@abnormal_operation_route.route('/manu_update', methods=['POST']) +def manu_update_route(): + """新增/更新(手动)""" + try: + RouteParamsCheck(req=request.form, params=["cid", "cname"]).required() + impl = AbnormalImpl() + result = impl.manu_update(cid=request.form['cid'], cname=request.form['cname'], template=request.files['template']) + return {"info": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + @abnormal_operation_route.route('/delete', methods=['GET']) def delete_route(): """删除""" try: - RouteParamsCheck(req=request.args, params=["cid", "abnormal_id"]).required() + RouteParamsCheck(req=request.args, params=["_id"]).required() impl = AbnormalImpl() result = impl.delete(param=request.args) return result @@ -35,7 +47,7 @@ def delete_route(): def edit_route(): """编辑""" try: - RouteParamsCheck(req=request.json, params=["cid", "abnormal_id", "body"]).required() + RouteParamsCheck(req=request.json, params=["_id", "body"]).required() impl = AbnormalImpl() result = impl.edit(param=request.json) return {"info": result} diff --git a/Company/Supervision/Penalties/PenaltiesImpl.py b/Company/Supervision/Penalties/PenaltiesImpl.py index c00a624..b844772 100644 --- a/Company/Supervision/Penalties/PenaltiesImpl.py +++ b/Company/Supervision/Penalties/PenaltiesImpl.py @@ -1,6 +1,7 @@ +from bson import ObjectId +from datetime import datetime from Company.Basic.Business.BusinessImpl import BusinessImpl from Company.CompanyUtils import CompanyUtils -from Company.Supervision.Abnormal.AbnormalObj import AbnormalObj from Company.Supervision.Penalties.PenaltiesObj import PenaltiesObj from DBHelper.MongoHelperInstance import DB_TYC, DB_TEST from Utils.CommonUtil import CommonUtils @@ -10,7 +11,34 @@ class PenaltiesImpl(object): """行政处罚""" @staticmethod - def auto_update(**kwargs): + def verify_time(**kwargs): + """校验更新时间""" + + def calculate_jet_lag(begin_time): + """计算时差""" + end_time = CommonUtils.get_current_time() + time_1_struct = datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S") + time_2_struct = datetime.strptime(begin_time, "%Y-%m-%d %H:%M:%S") + seconds = (time_1_struct - time_2_struct).seconds + if seconds > 60: + return True + else: + return False + + condition = kwargs['condition'] + start_time = DB_TEST.find_all_data( + 'WR_DataBase_v2_test', + 'C11.2_行政处罚', + condition, + ['更新时间'] + ) + if start_time: + res = calculate_jet_lag(start_time[-1]['更新时间']) + else: + res = True + return res + + def auto_update(self, **kwargs): """新增/更新(自动)""" condition = kwargs['condition'] @@ -31,7 +59,6 @@ class PenaltiesImpl(object): for record_item in records_item: dict_data = dict() dict_data['企业ID'] = company_id - dict_data['处罚ID'] = CompanyUtils.make_new_penalties_id() dict_data['处罚日期'] = record_item['decisionDate'] dict_data['处罚类型'] = record_item['type'] dict_data['决定书文号'] = record_item['punishNumber'] @@ -54,15 +81,17 @@ class PenaltiesImpl(object): {'企业ID': cid}, '企业名称' ) + # 判断更新时间 + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' update = save_data(cname=cname, cid=cid) if update: - for item in update: - DB_TEST.update_single_data( - "WR_DataBase_v2_test", - "C11.2_行政处罚", - {"企业ID": cid, "处罚ID": item['处罚ID']}, - item - ) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.2_行政处罚", + update + ) return 'success' else: return 'update failed' @@ -85,32 +114,111 @@ class PenaltiesImpl(object): ) else: return 'new failed' + # 判断更新时间 + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' insert = save_data(cname=cname, cid=cid) if insert: - for item in insert: - DB_TEST.upsert_single_data( - "WR_DataBase_v2_test", - "C11.2_行政处罚", - {"企业ID": cid, "处罚ID": item['处罚ID']}, - item - ) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.2_行政处罚", + insert + ) return 'success' else: return 'new failed' else: return 'parameter exception' + def manu_update(self, **kwargs): + """新增/更新(手动)""" + cid = kwargs['cid'] + cname = kwargs['cname'] + template = kwargs['template'] + data = CompanyUtils.excel_sheet_parser(file=template) + if len(cid): + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' + if data: + data_list = list() + for item in data: + penalties = PenaltiesObj() + penalties.cid = cid + penalties.date = CommonUtils.excel_time_stamp(item['处罚日期']) + penalties.types = item['处罚类型'] + penalties.number = item['决定书文号'] + penalties.reason = item['处罚事由'] + penalties.result = item['处罚结果'] + penalties.amount = item['处罚金额(元)'] + penalties.department = item['处罚单位'] + penalties.source = item['数据来源'] + penalties.update_time = CommonUtils.get_current_time() + data_list.append(penalties.fields_toggle()) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.2_行政处罚", + data_list + ) + return 'success' + else: + return 'update failed' + elif len(cname): + cid = DB_TEST.find_single_column( + 'WR_DataBase_v2_test', + 'C3.1_工商信息', + {'企业名称': cname}, + '企业ID' + ) + if not cid: + res = BusinessImpl.auto_update(condition={"cname": cname, "cid": ""}) + if res == 'success': + cid = DB_TEST.find_single_column( + 'WR_DataBase_v2_test', + 'C3.1_工商信息', + {'企业名称': cname}, + '企业ID' + ) + else: + return 'new failed' + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' + if data: + data_list = list() + for item in data: + penalties = PenaltiesObj() + penalties.cid = cid + penalties.date = CommonUtils.excel_time_stamp(item['处罚日期']) + penalties.types = item['处罚类型'] + penalties.number = item['决定书文号'] + penalties.reason = item['处罚事由'] + penalties.result = item['处罚结果'] + penalties.amount = item['处罚金额(元)'] + penalties.department = item['处罚单位'] + penalties.source = item['数据来源'] + penalties.update_time = CommonUtils.get_current_time() + data_list.append(penalties.fields_toggle()) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.2_行政处罚", + data_list + ) + return 'success' + else: + return 'parameter exception' + @staticmethod def delete(**kwargs): """删除""" param = kwargs['param'] - cid = param['cid'] - penalties_id = param['penalties_id'] + _id = param['_id'] res = DB_TEST.delete_single_data( "WR_DataBase_v2_test", "C11.2_行政处罚", - {"企业ID": cid, "处罚ID": penalties_id}, + {"_id": ObjectId(_id)} ) if res: @@ -127,8 +235,7 @@ class PenaltiesImpl(object): def edit(**kwargs): """编辑""" param = kwargs['param'] - cid = param['cid'] - penalties_id = param['penalties_id'] + _id = param['_id'] body = param['body'] try: penalties = PenaltiesObj() @@ -145,7 +252,7 @@ class PenaltiesImpl(object): DB_TEST.update_single_data( "WR_DataBase_v2_test", "C11.2_行政处罚", - {"企业ID": cid, "处罚ID": penalties_id}, + {"_id": ObjectId(_id)}, update_data ) return 'success' @@ -178,6 +285,8 @@ class PenaltiesImpl(object): ) if record: + for rec in record: + rec['_id'] = str(rec['_id']) update_time = record[-1]['更新时间'] result = { "info": "success", diff --git a/Company/Supervision/Penalties/PenaltiesObj.py b/Company/Supervision/Penalties/PenaltiesObj.py index 9e8432d..f577858 100644 --- a/Company/Supervision/Penalties/PenaltiesObj.py +++ b/Company/Supervision/Penalties/PenaltiesObj.py @@ -18,7 +18,6 @@ class PenaltiesObj(SpecObject): fields_map = { "cid": "企业ID", - "penalties_id": "处罚ID", "date": "处罚日期", "types": "处罚类型", "number": "决定书文号", diff --git a/Company/Supervision/Penalties/PenaltiesRoute.py b/Company/Supervision/Penalties/PenaltiesRoute.py index b44094a..cc59db4 100644 --- a/Company/Supervision/Penalties/PenaltiesRoute.py +++ b/Company/Supervision/Penalties/PenaltiesRoute.py @@ -19,11 +19,23 @@ def auto_update_route(): return {"info": e.__str__()}, e.status_code +@administrative_penalties_route.route('/manu_update', methods=['POST']) +def manu_update_route(): + """新增/更新(手动)""" + try: + RouteParamsCheck(req=request.form, params=["cid", "cname"]).required() + impl = PenaltiesImpl() + result = impl.manu_update(cid=request.form['cid'], cname=request.form['cname'], template=request.files['template']) + return {"info": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + @administrative_penalties_route.route('/delete', methods=['GET']) def delete_route(): """删除""" try: - RouteParamsCheck(req=request.args, params=["cid", "penalties_id"]).required() + RouteParamsCheck(req=request.args, params=["_id"]).required() impl = PenaltiesImpl() result = impl.delete(param=request.args) return result @@ -35,7 +47,7 @@ def delete_route(): def edit_route(): """编辑""" try: - RouteParamsCheck(req=request.json, params=["cid", "penalties_id", "body"]).required() + RouteParamsCheck(req=request.json, params=["_id", "body"]).required() impl = PenaltiesImpl() result = impl.edit(param=request.json) return {"info": result} diff --git a/Company/Supervision/TaxArrears/TaxArrearsImpl.py b/Company/Supervision/TaxArrears/TaxArrearsImpl.py index e05d41f..fef0a9f 100644 --- a/Company/Supervision/TaxArrears/TaxArrearsImpl.py +++ b/Company/Supervision/TaxArrears/TaxArrearsImpl.py @@ -1,3 +1,5 @@ +from bson import ObjectId +from datetime import datetime from Company.Basic.Business.BusinessImpl import BusinessImpl from Company.CompanyUtils import CompanyUtils from Company.Supervision.TaxArrears.TaxArrearsObj import TaxArrearsObj @@ -9,7 +11,34 @@ class TaxArrearsImpl(object): """欠税公告""" @staticmethod - def auto_update(**kwargs): + def verify_time(**kwargs): + """校验更新时间""" + + def calculate_jet_lag(begin_time): + """计算时差""" + end_time = CommonUtils.get_current_time() + time_1_struct = datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S") + time_2_struct = datetime.strptime(begin_time, "%Y-%m-%d %H:%M:%S") + seconds = (time_1_struct - time_2_struct).seconds + if seconds > 60: + return True + else: + return False + + condition = kwargs['condition'] + start_time = DB_TEST.find_all_data( + 'WR_DataBase_v2_test', + 'C11.6_欠税公告', + condition, + ['更新时间'] + ) + if start_time: + res = calculate_jet_lag(start_time[-1]['更新时间']) + else: + res = True + return res + + def auto_update(self, **kwargs): """新增/更新(自动)""" condition = kwargs['condition'] @@ -30,7 +59,6 @@ class TaxArrearsImpl(object): for record_item in records_item: dict_data = dict() dict_data['企业ID'] = company_id - dict_data['欠税ID'] = CompanyUtils.make_new_arrears_id() dict_data['欠税税种'] = record_item['taxCategory'] dict_data['欠税余额'] = record_item['ownTaxBalance'] dict_data['发布单位'] = record_item['department'] @@ -49,15 +77,17 @@ class TaxArrearsImpl(object): {'企业ID': cid}, '企业名称' ) + # 判断更新时间 + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' update = save_data(cname=cname, cid=cid) if update: - for item in update: - DB_TEST.update_single_data( - "WR_DataBase_v2_test", - "C11.6_欠税公告", - {"企业ID": cid, "欠税ID": item['欠税ID']}, - item - ) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.6_欠税公告", + update + ) return 'success' else: return 'update failed' @@ -80,32 +110,103 @@ class TaxArrearsImpl(object): ) else: return 'new failed' + # 判断更新时间 + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' insert = save_data(cname=cname, cid=cid) if insert: - for item in insert: - DB_TEST.upsert_single_data( - "WR_DataBase_v2_test", - "C11.6_欠税公告", - {"企业ID": cid, "欠税ID": item['欠税ID']}, - item - ) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.6_欠税公告", + insert + ) return 'success' else: return 'new failed' else: return 'parameter exception' + def manu_update(self, **kwargs): + """新增/更新(手动)""" + cid = kwargs['cid'] + cname = kwargs['cname'] + template = kwargs['template'] + data = CompanyUtils.excel_sheet_parser(file=template) + if len(cid): + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' + if data: + data_list = list() + for item in data: + arrears = TaxArrearsObj() + arrears.cid = cid + arrears.types = item['欠税税种'] + arrears.tax_arrears = item['欠税余额'] + arrears.publish_unit = item['发布单位'] + arrears.date = CommonUtils.excel_time_stamp(item['发布日期']) + arrears.update_time = CommonUtils.get_current_time() + data_list.append(arrears.fields_toggle()) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.6_欠税公告", + data_list + ) + return 'success' + else: + return 'update failed' + elif len(cname): + cid = DB_TEST.find_single_column( + 'WR_DataBase_v2_test', + 'C3.1_工商信息', + {'企业名称': cname}, + '企业ID' + ) + if not cid: + res = BusinessImpl.auto_update(condition={"cname": cname, "cid": ""}) + if res == 'success': + cid = DB_TEST.find_single_column( + 'WR_DataBase_v2_test', + 'C3.1_工商信息', + {'企业名称': cname}, + '企业ID' + ) + else: + return 'new failed' + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' + if data: + data_list = list() + for item in data: + arrears = TaxArrearsObj() + arrears.cid = cid + arrears.types = item['欠税税种'] + arrears.tax_arrears = item['欠税余额'] + arrears.publish_unit = item['发布单位'] + arrears.date = CommonUtils.excel_time_stamp(item['发布日期']) + arrears.update_time = CommonUtils.get_current_time() + data_list.append(arrears.fields_toggle()) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.6_欠税公告", + data_list + ) + return 'success' + else: + return 'parameter exception' + @staticmethod def delete(**kwargs): """删除""" param = kwargs['param'] - cid = param['cid'] - arrears_id = param['arrears_id'] + _id = param['_id'] res = DB_TEST.delete_single_data( "WR_DataBase_v2_test", "C11.6_欠税公告", - {"企业ID": cid, "欠税ID": arrears_id} + {"_id": ObjectId(_id)} ) if res: @@ -122,8 +223,7 @@ class TaxArrearsImpl(object): def edit(**kwargs): """编辑""" param = kwargs['param'] - cid = param['cid'] - arrears_id = param['arrears_id'] + _id = param['_id'] body = param['body'] try: arrears = TaxArrearsObj() @@ -136,7 +236,7 @@ class TaxArrearsImpl(object): DB_TEST.update_single_data( "WR_DataBase_v2_test", "C11.6_欠税公告", - {"企业ID": cid, "欠税ID": arrears_id}, + {"_id": ObjectId(_id)}, update_data ) return 'success' @@ -169,6 +269,8 @@ class TaxArrearsImpl(object): ) if record: + for rec in record: + rec['_id'] = str(rec['_id']) update_time = record[-1]['更新时间'] result = { "info": "success", diff --git a/Company/Supervision/TaxArrears/TaxArrearsRoute.py b/Company/Supervision/TaxArrears/TaxArrearsRoute.py index 74d12f2..60b8cf9 100644 --- a/Company/Supervision/TaxArrears/TaxArrearsRoute.py +++ b/Company/Supervision/TaxArrears/TaxArrearsRoute.py @@ -19,11 +19,23 @@ def auto_update_route(): return {"info": e.__str__()}, e.status_code +@tax_arrears_announcement_route.route('/manu_update', methods=['POST']) +def manu_update_route(): + """新增/更新(手动)""" + try: + RouteParamsCheck(req=request.form, params=["cid", "cname"]).required() + impl = TaxArrearsImpl() + result = impl.manu_update(cid=request.form['cid'], cname=request.form['cname'], template=request.files['template']) + return {"info": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + @tax_arrears_announcement_route.route('/delete', methods=['GET']) def delete_route(): """删除""" try: - RouteParamsCheck(req=request.args, params=["cid", "arrears_id"]).required() + RouteParamsCheck(req=request.args, params=["_id"]).required() impl = TaxArrearsImpl() result = impl.delete(param=request.args) return result @@ -35,7 +47,7 @@ def delete_route(): def edit_route(): """编辑""" try: - RouteParamsCheck(req=request.json, params=["cid", "arrears_id", "body"]).required() + RouteParamsCheck(req=request.json, params=["_id", "body"]).required() impl = TaxArrearsImpl() result = impl.edit(param=request.json) return {"info": result} diff --git a/Company/Supervision/TaxViolation/TaxViolationImpl.py b/Company/Supervision/TaxViolation/TaxViolationImpl.py index cbb2a69..b265f9c 100644 --- a/Company/Supervision/TaxViolation/TaxViolationImpl.py +++ b/Company/Supervision/TaxViolation/TaxViolationImpl.py @@ -1,16 +1,44 @@ +from bson import ObjectId +from datetime import datetime from Company.Basic.Business.BusinessImpl import BusinessImpl from Company.CompanyUtils import CompanyUtils from Company.Supervision.TaxViolation.TaxViolationObj import TaxViolationObj -from Company.Supervision.Violation.ViolationObj import ViolationObj from DBHelper.MongoHelperInstance import DB_TYC, DB_TEST from Utils.CommonUtil import CommonUtils class TaxViolationImpl(object): - """行政处罚""" + """税收违法""" @staticmethod - def auto_update(**kwargs): + def verify_time(**kwargs): + """校验更新时间""" + + def calculate_jet_lag(begin_time): + """计算时差""" + end_time = CommonUtils.get_current_time() + time_1_struct = datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S") + time_2_struct = datetime.strptime(begin_time, "%Y-%m-%d %H:%M:%S") + seconds = (time_1_struct - time_2_struct).seconds + if seconds > 60: + return True + else: + return False + + condition = kwargs['condition'] + start_time = DB_TEST.find_all_data( + 'WR_DataBase_v2_test', + 'C11.4_税收违法', + condition, + ['更新时间'] + ) + if start_time: + res = calculate_jet_lag(start_time[-1]['更新时间']) + else: + res = True + return res + + def auto_update(self, **kwargs): """新增/更新(自动)""" condition = kwargs['condition'] @@ -31,7 +59,6 @@ class TaxViolationImpl(object): for record_item in records_item: dict_data = dict() dict_data['企业ID'] = company_id - dict_data['违法ID'] = CompanyUtils.make_new_tax_id() dict_data['发布日期'] = record_item['publish_time'] dict_data['税务机关'] = record_item['department'] dict_data['案件性质'] = record_item['case_type'] @@ -51,15 +78,17 @@ class TaxViolationImpl(object): {'企业ID': cid}, '企业名称' ) + # 判断更新时间 + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' update = save_data(cname=cname, cid=cid) if update: - for item in update: - DB_TEST.update_single_data( - "WR_DataBase_v2_test", - "C11.4_税收违法", - {"企业ID": cid, "违法ID": item['违法ID']}, - item - ) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.4_税收违法", + update + ) return 'success' else: return 'update failed' @@ -82,32 +111,105 @@ class TaxViolationImpl(object): ) else: return 'new failed' + # 判断更新时间 + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' insert = save_data(cname=cname, cid=cid) if insert: - for item in insert: - DB_TEST.upsert_single_data( - "WR_DataBase_v2_test", - "C11.4_税收违法", - {"企业ID": cid, "违法ID": item['违法ID']}, - item - ) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.4_税收违法", + insert + ) return 'success' else: return 'new failed' else: return 'parameter exception' + def manu_update(self, **kwargs): + """新增/更新(手动)""" + cid = kwargs['cid'] + cname = kwargs['cname'] + template = kwargs['template'] + data = CompanyUtils.excel_sheet_parser(file=template) + if len(cid): + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' + if data: + data_list = list() + for item in data: + violation = TaxViolationObj() + violation.cid = cid + violation.date = CommonUtils.excel_time_stamp(item['发布日期']) + violation.department = item['税务机关'] + violation.quality = item['案件性质'] + violation.illegal_facts = item['违法事实'] + violation.penalties = item['处罚情况'] + violation.update_time = CommonUtils.get_current_time() + data_list.append(violation.fields_toggle()) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.4_税收违法", + data_list + ) + return 'success' + else: + return 'update failed' + elif len(cname): + cid = DB_TEST.find_single_column( + 'WR_DataBase_v2_test', + 'C3.1_工商信息', + {'企业名称': cname}, + '企业ID' + ) + if not cid: + res = BusinessImpl.auto_update(condition={"cname": cname, "cid": ""}) + if res == 'success': + cid = DB_TEST.find_single_column( + 'WR_DataBase_v2_test', + 'C3.1_工商信息', + {'企业名称': cname}, + '企业ID' + ) + else: + return 'new failed' + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' + if data: + data_list = list() + for item in data: + violation = TaxViolationObj() + violation.cid = cid + violation.date = CommonUtils.excel_time_stamp(item['发布日期']) + violation.department = item['税务机关'] + violation.quality = item['案件性质'] + violation.illegal_facts = item['违法事实'] + violation.penalties = item['处罚情况'] + violation.update_time = CommonUtils.get_current_time() + data_list.append(violation.fields_toggle()) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.4_税收违法", + data_list + ) + return 'success' + else: + return 'parameter exception' + @staticmethod def delete(**kwargs): """删除""" param = kwargs['param'] - cid = param['cid'] - violation_id = param['violation_id'] + _id = param['_id'] res = DB_TEST.delete_single_data( "WR_DataBase_v2_test", "C11.4_税收违法", - {"企业ID": cid, "违法ID": violation_id} + {"_id": ObjectId(_id)} ) if res: @@ -124,22 +226,21 @@ class TaxViolationImpl(object): def edit(**kwargs): """编辑""" param = kwargs['param'] - cid = param['cid'] - violation_id = param['violation_id'] + _id = param['_id'] body = param['body'] try: violation = TaxViolationObj() violation.date = body['发布日期'] violation.department = body['税务机关'] violation.quality = body['案件性质'] - violation.illegal_facts = None - violation.penalties = None + violation.illegal_facts = body['违法事实'] + violation.penalties = body['处罚情况'] violation.update_time = CommonUtils.get_current_time() update_data = violation.fields_toggle() DB_TEST.update_single_data( "WR_DataBase_v2_test", "C11.4_税收违法", - {"企业ID": cid, "违法ID": violation_id}, + {"_id": ObjectId(_id)}, update_data ) return 'success' @@ -172,6 +273,8 @@ class TaxViolationImpl(object): ) if record: + for rec in record: + rec['_id'] = str(rec['_id']) update_time = record[-1]['更新时间'] result = { "info": "success", diff --git a/Company/Supervision/TaxViolation/TaxViolationObj.py b/Company/Supervision/TaxViolation/TaxViolationObj.py index 13c9740..0afd119 100644 --- a/Company/Supervision/TaxViolation/TaxViolationObj.py +++ b/Company/Supervision/TaxViolation/TaxViolationObj.py @@ -5,7 +5,6 @@ from Utils.ValidateUtil import ValidateAttr, Validate class TaxViolationObj(SpecObject): """行政处罚""" cid = ValidateAttr(field='cid', type=str, length=8) - violation_id = ValidateAttr(field='violation_id', type=str, length=8) date = ValidateAttr(field='date', func=Validate.date_format) department = ValidateAttr(field='department', type=str, default=None) quality = ValidateAttr(field='quality', type=str, default=None) @@ -15,7 +14,6 @@ class TaxViolationObj(SpecObject): fields_map = { "cid": "企业ID", - "violation_id": "违法ID", "date": "发布日期", "department": "税务机关", "quality": "案件性质", diff --git a/Company/Supervision/TaxViolation/TaxViolationRoute.py b/Company/Supervision/TaxViolation/TaxViolationRoute.py index 3e35bce..b7b0f65 100644 --- a/Company/Supervision/TaxViolation/TaxViolationRoute.py +++ b/Company/Supervision/TaxViolation/TaxViolationRoute.py @@ -19,11 +19,23 @@ def auto_update_route(): return {"info": e.__str__()}, e.status_code +@tax_violation_route.route('/manu_update', methods=['POST']) +def manu_update_route(): + """新增/更新(手动)""" + try: + RouteParamsCheck(req=request.form, params=["cid", "cname"]).required() + impl = TaxViolationImpl() + result = impl.manu_update(cid=request.form['cid'], cname=request.form['cname'], template=request.files['template']) + return {"info": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + @tax_violation_route.route('/delete', methods=['GET']) def delete_route(): """删除""" try: - RouteParamsCheck(req=request.args, params=["cid", "violation_id"]).required() + RouteParamsCheck(req=request.args, params=["_id"]).required() impl = TaxViolationImpl() result = impl.delete(param=request.args) return result @@ -35,7 +47,7 @@ def delete_route(): def edit_route(): """编辑""" try: - RouteParamsCheck(req=request.json, params=["cid", "violation_id", "body"]).required() + RouteParamsCheck(req=request.json, params=["_id", "body"]).required() impl = TaxViolationImpl() result = impl.edit(param=request.json) return {"info": result} diff --git a/Company/Supervision/Violation/ViolationImpl.py b/Company/Supervision/Violation/ViolationImpl.py index fa3effa..f3dee41 100644 --- a/Company/Supervision/Violation/ViolationImpl.py +++ b/Company/Supervision/Violation/ViolationImpl.py @@ -1,16 +1,44 @@ +from bson import ObjectId +from datetime import datetime from Company.Basic.Business.BusinessImpl import BusinessImpl from Company.CompanyUtils import CompanyUtils -from Company.Supervision.Penalties.PenaltiesObj import PenaltiesObj from Company.Supervision.Violation.ViolationObj import ViolationObj from DBHelper.MongoHelperInstance import DB_TYC, DB_TEST from Utils.CommonUtil import CommonUtils class ViolationImpl(object): - """行政处罚""" + """严重违法""" @staticmethod - def auto_update(**kwargs): + def verify_time(**kwargs): + """校验更新时间""" + + def calculate_jet_lag(begin_time): + """计算时差""" + end_time = CommonUtils.get_current_time() + time_1_struct = datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S") + time_2_struct = datetime.strptime(begin_time, "%Y-%m-%d %H:%M:%S") + seconds = (time_1_struct - time_2_struct).seconds + if seconds > 60: + return True + else: + return False + + condition = kwargs['condition'] + start_time = DB_TEST.find_all_data( + 'WR_DataBase_v2_test', + 'C11.3_严重违法', + condition, + ['更新时间'] + ) + if start_time: + res = calculate_jet_lag(start_time[-1]['更新时间']) + else: + res = True + return res + + def auto_update(self, **kwargs): """新增/更新(自动)""" condition = kwargs['condition'] @@ -31,7 +59,6 @@ class ViolationImpl(object): for record_item in records_item: dict_data = dict() dict_data['企业ID'] = company_id - dict_data['违法ID'] = CompanyUtils.make_new_violation_id() dict_data['列入日期'] = CommonUtils.time_stamp(record_item['putDate']) dict_data['列入决定机关'] = record_item['putDepartment'] dict_data['列入原因'] = record_item['putReason'] @@ -49,15 +76,17 @@ class ViolationImpl(object): {'企业ID': cid}, '企业名称' ) + # 判断更新时间 + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' update = save_data(cname=cname, cid=cid) if update: - for item in update: - DB_TEST.update_single_data( - "WR_DataBase_v2_test", - "C11.3_严重违法", - {"企业ID": cid, "违法ID": item['违法ID']}, - item - ) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.3_严重违法", + update + ) return 'success' else: return 'update failed' @@ -80,32 +109,101 @@ class ViolationImpl(object): ) else: return 'new failed' + # 判断更新时间 + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' insert = save_data(cname=cname, cid=cid) if insert: - for item in insert: - DB_TEST.upsert_single_data( - "WR_DataBase_v2_test", - "C11.3_严重违法", - {"企业ID": cid, "违法ID": item['违法ID']}, - item - ) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.3_严重违法", + insert + ) return 'success' else: return 'new failed' else: return 'parameter exception' + def manu_update(self, **kwargs): + """新增/更新(手动)""" + cid = kwargs['cid'] + cname = kwargs['cname'] + template = kwargs['template'] + data = CompanyUtils.excel_sheet_parser(file=template) + if len(cid): + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' + if data: + data_list = list() + for item in data: + violation = ViolationObj() + violation.cid = cid + violation.date = CommonUtils.excel_time_stamp(item['列入日期']) + violation.department = item['列入决定机关'] + violation.reason = item['列入原因'] + violation.update_time = CommonUtils.get_current_time() + data_list.append(violation.fields_toggle()) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.3_严重违法", + data_list + ) + return 'success' + else: + return 'update failed' + elif len(cname): + cid = DB_TEST.find_single_column( + 'WR_DataBase_v2_test', + 'C3.1_工商信息', + {'企业名称': cname}, + '企业ID' + ) + if not cid: + res = BusinessImpl.auto_update(condition={"cname": cname, "cid": ""}) + if res == 'success': + cid = DB_TEST.find_single_column( + 'WR_DataBase_v2_test', + 'C3.1_工商信息', + {'企业名称': cname}, + '企业ID' + ) + else: + return 'new failed' + verify_res = self.verify_time(condition={"企业ID": cid}) + if not verify_res: + return 'Please try again in a minute' + if data: + data_list = list() + for item in data: + violation = ViolationObj() + violation.cid = cid + violation.date = CommonUtils.excel_time_stamp(item['列入日期']) + violation.department = item['列入决定机关'] + violation.reason = item['列入原因'] + violation.update_time = CommonUtils.get_current_time() + data_list.append(violation.fields_toggle()) + DB_TEST.insert_many_data( + "WR_DataBase_v2_test", + "C11.3_严重违法", + data_list + ) + return 'success' + else: + return 'parameter exception' + @staticmethod def delete(**kwargs): """删除""" param = kwargs['param'] - cid = param['cid'] - violation_id = param['violation_id'] + _id = param['_id'] res = DB_TEST.delete_single_data( "WR_DataBase_v2_test", "C11.3_严重违法", - {"企业ID": cid, "违法ID": violation_id} + {"_id": ObjectId(_id)} ) if res: @@ -122,8 +220,7 @@ class ViolationImpl(object): def edit(**kwargs): """编辑""" param = kwargs['param'] - cid = param['cid'] - violation_id = param['violation_id'] + _id = param['_id'] body = param['body'] try: violation = ViolationObj() @@ -135,7 +232,7 @@ class ViolationImpl(object): DB_TEST.update_single_data( "WR_DataBase_v2_test", "C11.3_严重违法", - {"企业ID": cid, "违法ID": violation_id}, + {"_id": ObjectId(_id)}, update_data ) return 'success' @@ -168,6 +265,8 @@ class ViolationImpl(object): ) if record: + for rec in record: + rec['_id'] = str(rec['_id']) update_time = record[-1]['更新时间'] result = { "info": "success", diff --git a/Company/Supervision/Violation/ViolationObj.py b/Company/Supervision/Violation/ViolationObj.py index ef476a9..9bc3f6e 100644 --- a/Company/Supervision/Violation/ViolationObj.py +++ b/Company/Supervision/Violation/ViolationObj.py @@ -5,7 +5,6 @@ from Utils.ValidateUtil import ValidateAttr, Validate class ViolationObj(SpecObject): """行政处罚""" cid = ValidateAttr(field='cid', type=str, length=8) - violation_id = ValidateAttr(field='violation_id', type=str, length=8) date = ValidateAttr(field='date', func=Validate.date_format) department = ValidateAttr(field='department', type=str, default=None) reason = ValidateAttr(field='reason', type=str, default=None) @@ -13,7 +12,6 @@ class ViolationObj(SpecObject): fields_map = { "cid": "企业ID", - "violation_id": "违法ID", "date": "列入日期", "department": "列入决定机关", "reason": "列入原因", diff --git a/Company/Supervision/Violation/ViolationRoute.py b/Company/Supervision/Violation/ViolationRoute.py index cf9bd15..2c1b02f 100644 --- a/Company/Supervision/Violation/ViolationRoute.py +++ b/Company/Supervision/Violation/ViolationRoute.py @@ -19,11 +19,23 @@ def auto_update_route(): return {"info": e.__str__()}, e.status_code +@serious_violation_route.route('/manu_update', methods=['POST']) +def manu_update_route(): + """新增/更新(手动)""" + try: + RouteParamsCheck(req=request.form, params=["cid", "cname"]).required() + impl = ViolationImpl() + result = impl.manu_update(cid=request.form['cid'], cname=request.form['cname'], template=request.files['template']) + return {"info": result} + except APIReturnError as e: + return {"info": e.__str__()}, e.status_code + + @serious_violation_route.route('/delete', methods=['GET']) def delete_route(): """删除""" try: - RouteParamsCheck(req=request.args, params=["cid", "violation_id"]).required() + RouteParamsCheck(req=request.args, params=["_id"]).required() impl = ViolationImpl() result = impl.delete(param=request.args) return result @@ -35,7 +47,7 @@ def delete_route(): def edit_route(): """编辑""" try: - RouteParamsCheck(req=request.json, params=["cid", "violation_id", "body"]).required() + RouteParamsCheck(req=request.json, params=["_id", "body"]).required() impl = ViolationImpl() result = impl.edit(param=request.json) return {"info": result}