Переглянути джерело

Merge remote-tracking branch 'origin/master'

luojiehua 1 рік тому
батько
коміт
8713d51dee

+ 38 - 21
BaseDataMaintenance/maintenance/preproject/fillColumns.py

@@ -68,10 +68,10 @@ class PreprojectFill():
     def fill_contact_producer(self):
         q1 = BoolQuery(must_queries=[TermQuery("status",1),
                                        ])
-        columns = [preproject_tenderee,preproject_last_tenderee_contact,preproject_last_tenderee_phone,preproject_last_win_tenderer,preproject_last_win_tenderer_contact,preproject_last_win_tenderer_phone]
+        columns = ["status",preproject_tenderee,preproject_last_tenderee_contact,preproject_last_tenderee_phone,preproject_last_win_tenderer,preproject_last_win_tenderer_contact,preproject_last_win_tenderer_phone]
         query = q1
         rows,next_token,total_count,is_all_succeed = self.ots_client.search("preproject","preproject_index",
-                                                                            SearchQuery(query,sort=Sort(sorters=[FieldSort("uuid")]),get_total_count=True,limit=100),
+                                                                            SearchQuery(query,sort=Sort(sorters=[FieldSort("crtime",SortOrder.DESC)]),get_total_count=True,limit=100),
                                                                             ColumnsToGet(columns,ColumnReturnType.SPECIFIED))
         dict_rows = getRow_ots(rows)
         for _row in dict_rows:
@@ -100,7 +100,8 @@ class PreprojectFill():
 
 
             if tenderee is not None and tenderee!="":
-                if (tenderee_concat is None or tenderee_concat=="") and (tenderee_phone is None or tenderee_phone==""):
+                # if (tenderee_concat is None or tenderee_concat=="") and (tenderee_phone is None or tenderee_phone==""):
+                if tenderee_phone is None or tenderee_phone=="":
                     #fill tenderee concat and phone
                     bool_query = BoolQuery(must_queries=[
                         TermQuery(preproject_tenderee,tenderee),
@@ -118,28 +119,35 @@ class PreprojectFill():
                     for _data in list_data:
                         tenderee_contact = _data.get("tenderee_contact")
                         tenderee_phone = _data.get("tenderee_phone")
-                        if (tenderee_contact is not None and tenderee_contact!="") or (tenderee_phone is not None and tenderee_phone!=""):
+                        # if (tenderee_contact is not None and tenderee_contact!="") or (tenderee_phone is not None and tenderee_phone!=""):
+                        if tenderee_phone is not None and tenderee_phone!="":
                             _find = True
                             _row[preproject_last_tenderee_contact] = tenderee_contact
                             _row[preproject_last_tenderee_phone] = tenderee_phone
+                            break
                     if not _find:
                         bool_query = BoolQuery(must_queries=[
+                            TermQuery("status", 1),
                             TermQuery("enterprise_name",tenderee)
                         ])
                         rows,next_token,total_count,is_all_succeed = self.ots_client.search("enterprise_contact","enterprise_contact_index",
-                                                                                            SearchQuery(bool_query,sort=Sort(sorters=[FieldSort("score",SortOrder.DESC)]),limit=1),
+                                                                                            SearchQuery(bool_query,sort=Sort(sorters=[FieldSort("score",SortOrder.DESC)]),limit=5),
                                                                                             ColumnsToGet(["contact_person","phone_no"],return_type=ColumnReturnType.SPECIFIED))
                         list_data = getRow_ots(rows)
                         if len(list_data)>0:
-                            _data = list_data[0]
-                            tenderee_contact = _data.get("contact_person")
-                            tenderee_phone = _data.get("phone_no")
-                            _row[preproject_last_tenderee_contact] = tenderee_contact
-                            _row[preproject_last_tenderee_phone] = tenderee_phone
+                            # _data = list_data[0]
+                            for _data in list_data:
+                                tenderee_contact = _data.get("contact_person")
+                                tenderee_phone = _data.get("phone_no")
+                                if tenderee_phone is not None and tenderee_phone!="":
+                                    _row[preproject_last_tenderee_contact] = tenderee_contact
+                                    _row[preproject_last_tenderee_phone] = tenderee_phone
+                                    break
 
 
             if win_tenderer is not None and win_tenderer!="":
-                if (win_tenderer_concat is None or win_tenderer_phone!="") and (win_tenderer_phone is None or win_tenderer_phone==""):
+                # if (win_tenderer_concat is None or win_tenderer_concat!="") and (win_tenderer_phone is None or win_tenderer_phone==""):
+                if win_tenderer_phone is None or win_tenderer_phone=="":
                     # fill win_tenderer concat and phone
                     bool_query = BoolQuery(must_queries=[
                         TermQuery("win_tenderer",win_tenderer),
@@ -157,31 +165,38 @@ class PreprojectFill():
                     for _data in list_data:
                         _contact = _data.get("win_tenderer_manager")
                         _phone = _data.get("win_tenderer_phone")
-                        if (_contact is not None and _contact!="") or (_phone is not None and _phone!=""):
+                        # if (_contact is not None and _contact!="") or (_phone is not None and _phone!=""):
+                        if _phone is not None and _phone!="" and _phone!=_row.get(preproject_last_tenderee_phone):
                             _find = True
                             _row[preproject_last_win_tenderer_contact] = _contact
                             _row[preproject_last_win_tenderer_phone] = _phone
+                            break
                     if not _find:
                         bool_query = BoolQuery(must_queries=[
+                            TermQuery("status", 1),
                             TermQuery("enterprise_name",win_tenderer)
                         ])
                         rows,next_token,total_count,is_all_succeed = self.ots_client.search("enterprise_contact","enterprise_contact_index",
-                                                                                            SearchQuery(bool_query,sort=Sort(sorters=[FieldSort("score",SortOrder.DESC)]),limit=1),
+                                                                                            SearchQuery(bool_query,sort=Sort(sorters=[FieldSort("score",SortOrder.DESC)]),limit=5),
                                                                                             ColumnsToGet(["contact_person","phone_no"],return_type=ColumnReturnType.SPECIFIED))
                         list_data = getRow_ots(rows)
                         if len(list_data)>0:
-                            _data = list_data[0]
-                            _contact = _data.get("contact_person")
-                            _phone = _data.get("phone_no")
-                            _row[preproject_last_win_tenderer_contact] = _contact
-                            _row[preproject_last_win_tenderer_phone] = _phone
-
+                            # _data = list_data[0]
+                            for _data in list_data:
+                                _contact = _data.get("contact_person")
+                                _phone = _data.get("phone_no")
+                                # _phone不为空,且不等于招标人电话
+                                if _phone is not None and _phone!="" and _phone!=_row.get(preproject_last_tenderee_phone):
+                                    _row[preproject_last_win_tenderer_contact] = _contact
+                                    _row[preproject_last_win_tenderer_phone] = _phone
+                                    break
 
+            _row["status"] = 0
             _preproject = Preproject(_row)
             _preproject.setValue("status",2,True)
             _preproject.update_row(self.ots_client)
 
-        _mul = MultiThreadHandler(self.fill_concat_queue,comsumer_handle,None,10)
+        _mul = MultiThreadHandler(self.fill_concat_queue,comsumer_handle,None,20)
         _mul.run()
 
     def schedule(self):
@@ -269,4 +284,6 @@ if __name__=="__main__":
     # preprojectFill = PreprojectFill()
     # preprojectFill.schedule()
     # delete_wrong_data()
-    fixProductName()
+    # fixProductName()
+    start_fill_preproject()
+    pass

+ 13 - 0
BaseDataMaintenance/model/ots/Preproject.py

@@ -1,4 +1,5 @@
 from BaseDataMaintenance.model.ots.BaseModel import BaseModel
+import json
 
 preproject_tenderee = "tenderee"
 preproject_product = "product"
@@ -48,6 +49,18 @@ class Preproject(BaseModel):
         return [preproject_tenderee,preproject_product,preproject_may_begin,preproject_may_end]
 
 
+    def getAttribute_turple(self):
+        _list = []
+        for _key in self.getAttribute_keys():
+            if _key=="all_columns":
+                continue
+            _v = self.getProperties().get(_key)
+            if _v is not None:
+                if isinstance(_v,list):
+                    _v = json.dumps(_v)
+                _list.append((_key,_v))
+        return _list
+
 
 
 if __name__=="__main__":