Răsfoiți Sursa

fix_percent

Xiaopeng Zhang 4 luni în urmă
părinte
comite
b1944d2b97
8 a modificat fișierele cu 2925 adăugiri și 2792 ștergeri
  1. 3 2
      README
  2. 2766 2766
      de/sz/JD_CaiLiaoK.csv
  3. 4 4
      de/sz/JD_JiXieK.csv
  4. 4 19
      loadmongo.py
  5. 74 0
      main.py
  6. 40 1
      subdir/db.py
  7. 28 0
      subdir/service.py
  8. 6 0
      subdir/util.py

+ 3 - 2
README

@@ -11,7 +11,7 @@ Feature
 对于费率表,可以改费率
 对于单价措施,可以删除,可以添加单项定额,目前不支持算式定额,只能用定额树,不支持替换人材机,不支持修改定额名称
 单价措施支持附注,不支持预拌砂浆,不支持补充人材机,支持百分比人材机(回程费),
-支持安装费用(还需要增加修缮工程的安装费用,跟安装不一样(fixed))
+支持安装费用(单位换成元)
 
 人材机表格的计算逻辑:
 1. 首先使用附注底稿,根据附注选择,完善信息,顺便决定有没有后缀“换”
@@ -58,7 +58,8 @@ TODO
 
 配合比表各个专业不同,我们现在是统一用的土建的,这个要改(fixed)
 
-市政2-389 31130104 清单里面也会出现 (市政的31130104需要特殊处理) 现在处理的是措施里面的回程费
+百分比人材机:
+99EXP007/99EXP022(其他机械费占机械费)/31130104/00EXP001/0000FE(tj19-19装饰工程超高人工降效系数)/J50032(xs回程费占机械费 似乎没用上)/J30003(xs 其它机械费,似乎没用上)
 JD_PeiBiF 表很有用,它可以用来找一个材料的组成。
 安装费用的编码
 高层建筑F3

Fișier diff suprimat deoarece este prea mare
+ 2766 - 2766
de/sz/JD_CaiLiaoK.csv


+ 4 - 4
de/sz/JD_JiXieK.csv

@@ -907,10 +907,10 @@
 905,906,99130318,钢轮压路机(振动) 18t,台班,1351.45,,,,,,,1283,1206.65,12,1351.45,1351.45,12,1206.65,1315.25,9,1206.65,
 906,907,99EXP020,加热循环设备,台班,855.18,,,,,,,1284,763.55,12,855.18,855.18,12,763.55,832.27,9,763.55,
 907,908,99EXP021,数字式温度计,台班,62.03,,,,,,,1285,55.38,12,62.03,62.03,12,55.38,60.37,9,55.38,
-908,909,99EXP022,其他机械费占机械费,%,85.6,,,,,,,1286,76.43,12,85.6,85.6,12,76.43,83.31,9,76.43,
-909,910,99EXP022,其他机械费占机械费,%,100.59,,,,,,,1287,89.81,12,100.59,100.59,12,89.81,97.9,9,89.81,
-910,911,99EXP022,其他机械费占机械费,%,119.61,,,,,,,1288,106.79,12,119.61,119.61,12,106.79,116.41,9,106.79,
-911,912,99EXP022,其他机械费占机械费,%,172.05,,,,,,,1289,153.62,12,172.05,172.05,12,153.62,167.44,9,153.62,
+908,909,99EXP022,其他机械费占机械费,%,0.0,,,,,,,1286,76.43,12,85.6,85.6,12,76.43,83.31,9,76.43,
+909,910,99EXP022,其他机械费占机械费,%,0.0,,,,,,,1287,89.81,12,100.59,100.59,12,89.81,97.9,9,89.81,
+910,911,99EXP022,其他机械费占机械费,%,0.0,,,,,,,1288,106.79,12,119.61,119.61,12,106.79,116.41,9,106.79,
+911,912,99EXP022,其他机械费占机械费,%,0.0,,,,,,,1289,153.62,12,172.05,172.05,12,153.62,167.44,9,153.62,
 912,913,99091905,电动卷扬机(单筒快速) 牵引力15kN,台班,180.16,,,,,,,1290,160.86,12,180.16,180.16,12,160.86,175.33,9,160.86,
 913,914,99453506,高压射水车,台班,566.87,,,,,,,1291,506.13,12,566.87,566.87,12,506.13,551.69,9,506.13,
 914,915,99EXP030,QV检测仪,台班,952.0,,,,,,,1292,850.0,12,952.0,952.0,12,850.0,926.5,9,850.0,

+ 4 - 19
loadmongo.py

@@ -35,34 +35,19 @@ def handle_jx(jx):
     result["hj"] = jx["hj"]
     return result
 
-for post in collection.find({"zhuanye": "安装"}):
+for post in collection.find({"zhuanye": "市政"}):
     
-    if post['DEBH'].startswith('1-'):
-        continue
-    if post['DEBH'].startswith('2-'):
-        continue
-    if post['DEBH'].startswith('3-'):
-        continue
-    if post['DEBH'].startswith('4-'):
-        continue
-    if post['DEBH'].startswith('5-'):
-        continue
-    if post['DEBH'].startswith('6-'):
-        continue
-    if post['DEBH'].startswith('7-'):
-        continue
-    if post['DEBH'].startswith('8-1'):
-        continue
+
     
 
     
 
     print(post['DEBH'])
     
-    myquery = { "zhuanye": "安装",
+    myquery = { "zhuanye": "市政",
                 "DEBH": post["DEBH"]
                 }
-    A1, A2, rg, jx, cl, bz_, A3 = service.getSingleDeXilie_az(post["DEBH"])
+    A1, A2, rg, jx, cl, bz_, A3 = service.getSingleDeXilie_sz(post["DEBH"])
     if bz_:
         bz = json.loads(bz_)
         mongo_bz = []

+ 74 - 0
main.py

@@ -553,6 +553,42 @@ async def read_singledexilie2(zhuanye: int, debh: str):
         return service.read_singledexilie_azfy(debh)
     if "-F" in debh and zhuanye == 60:
         return service.read_singledexilie_xsazfy(debh)
+    if debh == '19-19':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-20':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-21':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-22':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-23':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-24':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-25':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-26':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-27':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-28':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-29':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-30':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-31':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-32':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-33':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-34':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-35':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-36':
+        return service.read_singledexilie_tjazfy(debh)
     r_debh = debh.split("!")[0]
     if "附注" in r_debh:
         position = r_debh.find("附注")
@@ -689,6 +725,44 @@ async def read_singledexilie(zhuanye: int, debh: str, mc: str):
         if mc == '第一章' or mc == '第二章' or mc == '第三章':
             return service.read_singledexilie_xsazfy(debh)
         return service.read_singledexilie_azfy(debh)
+    if debh == '19-19':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-20':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-21':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-22':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-23':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-24':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-25':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-26':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-27':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-28':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-29':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-30':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-31':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-32':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-33':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-34':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-35':
+        return service.read_singledexilie_tjazfy(debh)
+    if debh == '19-36':
+        return service.read_singledexilie_tjazfy(debh)
+    
+
     r_debh = debh.split("!")[0]
     if "附注" in r_debh:
         position = r_debh.find("附注")

+ 40 - 1
subdir/db.py

@@ -2109,6 +2109,33 @@ async def tiaojia(client, biao_id, bh, bm, mingcheng, danwei, jiage, glf, lr, bz
                 elif int(rcj[8]) == 3:
                     dejxf = dejxf + float(rcj[11])
             if hitde:
+                for i in range(1, len(dercj)):
+                    rcj = dercj[i]
+                    if rcj[1] == '00EXP001' and rcj[4] == '%':##//回程费占人工费
+                        rcj[11] = float(rcj[10]) * dergf / float(100)
+                    if rcj[1] == '99EXP007' and rcj[4] == '%':##//回程费占机械费
+                        rcj[11] = float(rcj[10]) * dejxf / float(100)
+                    if rcj[1] == '99EXP022' and rcj[4] == '%':##//回程费占机械费
+                        rcj[11] = float(rcj[10]) * dejxf / float(100)
+                    if rcj[1] == '31130104' and rcj[4] == '%':##//回程费占材料费
+                        rcj[11] = float(rcj[10]) * declf / float(100)
+                dergf = 0
+                declf = 0
+                dejxf = 0
+                dezcf = 0
+                for i in range(1, len(dercj)):
+                    rcj = dercj[i]
+                    
+                    if int(rcj[8]) == 1:
+                        dergf = dergf + float(rcj[11])
+                    elif int(rcj[8]) == 2:
+                        declf = declf + float(rcj[11])
+                        if rcj[14] == 'true' :
+                            dezcf = dezcf + float(rcj[11])
+                    elif int(rcj[8]) == 3:
+                        dejxf = dejxf + float(rcj[11])
+
+
                 entry['人工费'] = str(dergf)
                 entry['辅材费'] = str(declf - dezcf)
                 entry['主材费'] = str(dezcf)
@@ -2220,6 +2247,8 @@ async def tiaojia(client, biao_id, bh, bm, mingcheng, danwei, jiage, glf, lr, bz
                         qdrcj.append(entry)
                     elif '99EXP007' in entry[1] and entry[4] == '%': ##回程费
                         qdrcj.append(entry)
+                    elif '99EXP022' in entry[1] and entry[4] == '%': ##回程费
+                        qdrcj.append(entry)
                     elif '31130104' in entry[1] and entry[4] == '%': ##回程费
                         qdrcj.append(entry)
                     elif entry[10] != '含量':
@@ -2271,6 +2300,7 @@ async def tiaojia(client, biao_id, bh, bm, mingcheng, danwei, jiage, glf, lr, bz
             dergf = 0
             declf = 0
             dejxf = 0
+            dezcf = 0
             for i in range(1, len(dercj)):
                 rcj = dercj[i]
                 if rcj[1] == bm and rcj[2] == mingcheng and rcj[4] == danwei:
@@ -2283,6 +2313,8 @@ async def tiaojia(client, biao_id, bh, bm, mingcheng, danwei, jiage, glf, lr, bz
                     dergf = dergf + float(rcj[11])
                 elif int(rcj[8]) == 2:
                     declf = declf + float(rcj[11])
+                    if rcj[14] == 'true' :
+                        dezcf = dezcf + float(rcj[11])
                 elif int(rcj[8]) == 3:
                     dejxf = dejxf + float(rcj[11])
             if hitde:
@@ -2292,11 +2324,14 @@ async def tiaojia(client, biao_id, bh, bm, mingcheng, danwei, jiage, glf, lr, bz
                         rcj[11] = float(rcj[10]) * dergf / float(100)
                     if rcj[1] == '99EXP007' and rcj[4] == '%':##//回程费占机械费
                         rcj[11] = float(rcj[10]) * dejxf / float(100)
+                    if rcj[1] == '99EXP022' and rcj[4] == '%':##//回程费占机械费
+                        rcj[11] = float(rcj[10]) * dejxf / float(100)
                     if rcj[1] == '31130104' and rcj[4] == '%':##//回程费占材料费
                         rcj[11] = float(rcj[10]) * declf / float(100)
                 dergf = 0
                 declf = 0
                 dejxf = 0
+                dezcf = 0
                 for i in range(1, len(dercj)):
                     rcj = dercj[i]
                     
@@ -2304,13 +2339,15 @@ async def tiaojia(client, biao_id, bh, bm, mingcheng, danwei, jiage, glf, lr, bz
                         dergf = dergf + float(rcj[11])
                     elif int(rcj[8]) == 2:
                         declf = declf + float(rcj[11])
+                        if rcj[14] == 'true' :
+                            dezcf = dezcf + float(rcj[11])
                     elif int(rcj[8]) == 3:
                         dejxf = dejxf + float(rcj[11])
  
 
 
                 entry['人工费'] = str(dergf)
-                entry['辅材费'] = str(declf)
+                entry['辅材费'] = str(declf - dezcf)
                 entry['材料费'] = str(declf)
                 entry['机械费'] = str(dejxf)
                 if bm.startswith("D"):
@@ -2336,6 +2373,8 @@ async def tiaojia(client, biao_id, bh, bm, mingcheng, danwei, jiage, glf, lr, bz
                         qdrcj.append(entry)
                     elif '99EXP007' in entry[1] and entry[4] == '%': ##回程费
                         qdrcj.append(entry)
+                    elif '99EXP022' in entry[1] and entry[4] == '%': ##回程费
+                        qdrcj.append(entry)
                     elif '31130104' in entry[1] and entry[4] == '%': ##回程费
                         qdrcj.append(entry)
                     elif entry[10] != '含量':

+ 28 - 0
subdir/service.py

@@ -892,6 +892,34 @@ def getCls(value):
     length = len(shu)
     return processCls(shu, 0, length, 1)
 
+def read_singledexilie_tjazfy(debh):
+    id = "412"
+    r_debh = debh.split("!")[0]
+    if len(debh.split("!")) == 1:
+        return json.dumps({
+            "reverse": id, 
+            "rgde": [],
+            "jxde": [],
+            "clde": [],
+            "actual_zhuanye": 10,
+            "bz_selected": {"BZBH": {}},
+            "bz_selected2": {"BZBH": {}}
+        }, ensure_ascii=False)
+    gclmc = debh.split("!")[1]
+        
+    return json.dumps({
+            "reverse": id, 
+            "DEBH": {"111": r_debh},
+            "GCLMC": {"111": gclmc},
+            "DW": {"111": '项'},
+            "rgde": [],
+            "jxde": [],
+            "clde": [],
+            "actual_zhuanye": 10,
+            "bz_selected": {"BZBH": {}},
+            "bz_selected2": {"BZBH": {}}
+        }, ensure_ascii=False)
+
 def read_singledexilie_xsazfy(debh):
     id = "None"
     if "-F1" in debh:

+ 6 - 0
subdir/util.py

@@ -47,6 +47,9 @@ def huizongrcj_order(data):
         if '99EXP007' in bm and danwei == '%': ##回程费
             left.append(entry)
             continue
+        if '99EXP022' in bm and danwei == '%': ##回程费
+            left.append(entry)
+            continue
         if '31130104' in bm and danwei == '%': ##回程费
             left.append(entry)
             continue
@@ -91,6 +94,9 @@ def huizongrcj(data):
         if '99EXP007' in bm and danwei == '%': ##azfy
             left.append(entry)
             continue
+        if '99EXP022' in bm and danwei == '%': ##azfy
+            left.append(entry)
+            continue
         if '31130104' in bm and danwei == '%': ##azfy
             left.append(entry)
             continue

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff