소스 검색

fix_buchong

Xiaopeng Zhang 5 달 전
부모
커밋
f649ea9417
5개의 변경된 파일44개의 추가작업 그리고 25개의 파일을 삭제
  1. 15 2
      README
  2. 1 1
      main.py
  3. 9 4
      specialdetection.py
  4. 2 2
      subdir/db.py
  5. 17 16
      subdir/service.py

+ 15 - 2
README

@@ -11,7 +11,7 @@ Feature
 对于费率表,可以改费率
 对于单价措施,可以删除,可以添加单项定额,目前不支持算式定额,只能用定额树,不支持替换人材机,不支持修改定额名称
 单价措施支持附注,不支持预拌砂浆,不支持补充人材机,支持百分比人材机(回程费),
-支持安装费用????
+支持安装费用
 
 导入功能
 附注disable
@@ -31,7 +31,20 @@ JD_PeiBiF 表很有用,它可以用来找一个材料的组成。
 需要人材机汇总后一并处理下甲供材,把量拿到,把总价算好(fixed)
 
 
-钢筋工程,铁件制作,铁件安装的定额有意思5-28
+钢筋工程,铁件制作,铁件安装的定额有意思5-28,额外加了型钢0.0105
 安装工程有蛮大的不同
 
 一个清单可以有普通定额跟单项定额,单项定额的特点是不算管理费跟利润
+
+
+有套定额直接在清单下面加材料,这个目前不支持
+然后材料替换,这个不光砂浆混凝土会换,好像有人换其他的,比如换涂料啊什么的,感觉这个换算很通用?换汽车式起重机吨位, 镀锌铁皮换压型钢板 33110701 园林要加主材 600*300*50厚五莲花花岗岩火烧面路平石
+土建 淮补4-1 这个定额没有,土建定额的定额书应该是有问题
+安装补充,神奇的编号 110000F,  侧墙轴流风机  910000F 可燃气体探测器 燃气声光报警器 410000F 编号跟册子有关
+土建也能补充,而且跟安装不一样,土建会具体补充某些材料
+
+
+
+园林跟市政重合很多,定额识别是个问题
+前段跟后端拿定额信息需要变
+土建里头会用市政

+ 1 - 1
main.py

@@ -594,7 +594,7 @@ async def read_singledexilie(zhuanye: int, debh: str):
             item_ = item
         result3['DEBH'] = {item_: (r_debh)}
 
-
+    print(result3)
     return json.dumps(result3, ensure_ascii=False)
 
 

+ 9 - 4
specialdetection.py

@@ -22,16 +22,21 @@ def clean(debh):
         debh = debh[:position-1]
     return debh
 
-for post in collection.find({"biao_id": '6879086d5d280edee4b4aa15', 'Dwgcbh': '007'}):
+for post in collection.find({"biao_id": '688990c88230558391ff533c', 'Dwgcbh': '004'}):
     for entry in (post['__children']):
         ##print(entry['清单编码'])
         cleaned = clean(entry['清单编码'])
         if cleaned.startswith("D"):
             continue
         dercj = (entry['dercj'])
-        post2 = collection2.find_one({'zhuanye': '安装', 'DEBH' : cleaned })
+        post2 = collection2.find_one({'zhuanye': '土建', 'DEBH' : cleaned })
         if post2 == None:
-            pass##input(cleaned + " not found ")
+            if  '-F' in cleaned  :
+                pass
+            else:
+                print("DE not found")
+                print(cleaned)
+                print(post)
         else:
             mongo_cl = post2['mongo_cl']
             mongo_jx = post2['mongo_jx']
@@ -52,7 +57,7 @@ for post in collection.find({"biao_id": '6879086d5d280edee4b4aa15', 'Dwgcbh': '0
                 for jx in mongo_jx:
                     if jx['jxbh'] == bm:
                         hit = True
-                if not hit:
+                if (not hit) and item[1] != 'S00001' and item[1] != '410000F' and item[1] != 'JD0001' and (not '二类工' in item[2]) and (not '水泥' in item[2]) and item[1] != '01270100' and cleaned !='5-28' and cleaned != '4-3' and (not '砂浆' in item[2]):
                     print(cleaned)
                     print("special case found for" + str(item))
                     

+ 2 - 2
subdir/db.py

@@ -415,14 +415,14 @@ def getDjcsQingdanrcj_(root, bh, bt, bm):
 def getRcjbc(rcj):
     result = []
     for entry in rcj:
-        if entry[1] == '410000F':
+        if  '10000F' in entry[1]:
             result.append({
                 "id": str(uuid.uuid4()),
                 "主材标志": "true",
                 "主要材料标志": "true",
                 "产地": "",
                 "人材机类别": "2",
-                "人材机编码": "410000F",
+                "人材机编码": entry[1],
                 "供应厂商": "",
                 "单价": entry[5],
                 "单位": entry[4],

+ 17 - 16
subdir/service.py

@@ -8,7 +8,7 @@ import re
 from fastapi.middleware.cors import CORSMiddleware
 from pydantic import BaseModel
 import pandas as pd
-from numpy import float64
+from numpy import float64, int64
 
 
 
@@ -1734,12 +1734,12 @@ def getSingleDeXilie_az(debh):
             CLMC = filtered2.iloc[0]["CLMC"]
             JLDW = filtered2.iloc[0]["JLDW"]
             YSJG = filtered2.iloc[0]["YSJG"]
-            rgde_["CLBH"] = CLBH
+            rgde_["CLBH"] = CLBH.item() if type(CLBH) == int64 else CLBH
             rgde_["CLMC"] = CLMC
             rgde_["JLDW"] = JLDW
-            rgde_["YSJG"] = YSJG
-            rgde_["gr"] = gr
-            rgde_["gf"] = gf
+            rgde_["YSJG"] = YSJG.item() if type(YSJG) == float64 else YSJG
+            rgde_["gr"] = gr.item() if type(gr) == float64 else gr
+            rgde_["gf"] = gf.item() if type(gf) == float64 else gf
         rgde.append(rgde_)
     ##print(rgde)
     ####jixie
@@ -1761,9 +1761,9 @@ def getSingleDeXilie_az(debh):
             jxde_["jxbh"] = jxbh
             jxde_["jxmc"] = jxmc
             jxde_["DW"] = DW
-            jxde_["tbdj"] = tbdj
-            jxde_["sl"] = sl
-            jxde_["hj"] = hj
+            jxde_["tbdj"] = tbdj.item() if type(tbdj) == float64 else tbdj
+            jxde_["sl"] = sl.item() if type(sl) == float64 else sl
+            jxde_["hj"] = hj.item() if type(hj) == float64 else hj
         jxde.append(jxde_)
     ####cailiao
     clde = []
@@ -1781,12 +1781,12 @@ def getSingleDeXilie_az(debh):
             CLMC = filtered2.iloc[0]["CLMC"]
             JLDW = filtered2.iloc[0]["JLDW"]
             YSJG = filtered2.iloc[0]["YSJG"]
-            clde_["CLBH"] = CLBH
+            clde_["CLBH"] = CLBH.item() if type(CLBH) == int64 else CLBH
             clde_["CLMC"] = CLMC
             clde_["JLDW"] = JLDW
-            clde_["YSJG"] = YSJG
-            clde_["SL"] = SL
-            clde_["HJ"] = HJ
+            clde_["YSJG"] = YSJG.item() if type(YSJG) == float64 else YSJG
+            clde_["SL"] = SL.item() if type(SL) == float64 else SL
+            clde_["HJ"] = HJ.item() if type(HJ) == float64 else HJ
             clde.append(clde_)
         else:
             detail = pd.read_csv("de/az/JD_PeiBi.csv")
@@ -1796,14 +1796,15 @@ def getSingleDeXilie_az(debh):
                 CLMC = filtered2.iloc[0]["PBMC"]
                 JLDW = filtered2.iloc[0]["DW"]
                 YSJG = filtered2.iloc[0]["PBDJ"]
-                clde_["CLBH"] = CLBH
+                clde_["CLBH"] = CLBH.item() if type(CLBH) == int64 else CLBH
                 clde_["CLMC"] = CLMC
                 clde_["JLDW"] = JLDW
-                clde_["YSJG"] = YSJG
-                clde_["SL"] = SL
-                clde_["HJ"] = HJ
+                clde_["YSJG"] = YSJG.item() if type(YSJG) == float64 else YSJG
+                clde_["SL"] = SL.item() if type(SL) == float64 else SL
+                clde_["HJ"] = HJ.item() if type(HJ) == float64 else HJ
                 clde.append(clde_)
     filtered = filtered.drop(['BH1', 'BH2', "GCLCLF", "GCLCLF1", "GCLGG", "GCLGLF", "GCLJJ", "GCLJXF", "GCLLR", "GCLRGF", "GCLRGR", "GCLSJDJ", "GCPBHJ",  "GLFFL", "LRFL", "PBBH", "PBBHM", "PBDJ", "PBSL", "THMC", "THSL", "dejb", "is_lock",  "mcxz", "qfbz",  "sptfl"], axis=1)
+    print(filtered)
     return filtered.to_json(force_ascii=False), id, rgde, jxde, clde, bz_selected.to_json(force_ascii=False) if len(bz_selected) > 0 else None, bz_selected2.to_json(force_ascii=False) if len(bz_selected2) > 0 else None