Browse Source

before start anzhuang

xiaopzhang 2 weeks ago
parent
commit
779b62ebca
14 changed files with 414 additions and 177 deletions
  1. 0 0
      basic_rule
  2. 62 1
      extra.py
  3. 0 1
      fuzhu_candidate
  4. 2 1
      fuzhu_util.py
  5. 0 0
      nantong_rule
  6. 2 1
      postprocess0112.py
  7. 1 1
      postprocess0113.py
  8. 7 4
      postprocess0114.py
  9. 69 69
      service.py
  10. 30 5
      tasks.py
  11. 96 22
      tihuan.py
  12. 4 0
      tihuan_mugongban.py
  13. 55 7
      tihuan_shajiang.py
  14. 86 65
      utils.js

File diff suppressed because it is too large
+ 0 - 0
basic_rule


+ 62 - 1
extra.py

@@ -1,6 +1,38 @@
 import time
 from config import simplemodel
 from menchuangfallback import menchuangfallback
+
+
+example1='''
+1、包水管 做法详见图纸设计及相关图集规范
+2、5#镀锌角钢基架
+3、水管外包吸音材料
+4、水泥纤维板
+'''
+answer_1='''
+{'面层': '水泥纤维板'}
+'''
+
+
+example2='''
+1、一层大厅消火栓处,做法详见图纸设计及相关图集规范
+2、石膏板、阻燃基层板、40*20*3镀锌方通龙骨、金属转轴等
+'''
+
+answer_2='''
+{'面层': '石膏板'}
+'''
+
+example3='''
+1、不锈钢饰面 做法详见图纸设计及相关图集规范
+2、1.5mm厚不锈钢面层
+3、阻燃板基层,木龙骨找平阻燃处理
+'''
+
+answer_3='''
+{'面层': '1.5mm厚不锈钢面层'}
+'''
+
 def extra(
        data, #data
        aiclient,
@@ -56,6 +88,21 @@ def extra(
         answers = [x for x in answers if ':' in x ]
         answer2 = answers[0].split(":")[1].replace(" ", "")
         return answer2
+    if data['bianma'].startswith("011207") or data['bianma'].startswith('011208'):
+        completion = aiclient.chat.completions.create(
+            model="glm-4.5-air",
+            messages=[
+                {"role": "system", "content": "You are a helpful assistant.请将最终答案以JSON格式输出"},
+                {"role": "user", "content": "墙柱面装饰板工程往往由多道工序组成,包括底层龙骨,附着于龙骨上的基层板、吸音棉、阻燃板等,以及作为饰面的面层板。现在要求你从给定的工作内容描述中抽取出面层的描述。举个例子,给定工作内容:"+example1+"\n你应该返回:"+answer_1+"\n再举个例子,给定工作内容:"+example2+"\n你应该返回:"+answer_2+"\n再举个例子,给定工作内容:"+example3+"\n你应该返回:"+answer_3+"\n现在给定工作内容:"+data['mc']+" "+data['tz']+"\n请给出你的答案"},
+            ],
+            extra_body={"thinking": {"type": "disabled"}},
+        )
+        json_string = completion.choices[0].message.content
+        print(json_string)
+        answers = json_string.split("\n")
+        answers = [x for x in answers if ':' in x ]
+        answer2 = answers[0].split(":")[1].replace(" ", "")
+        return answer2
     completion = aiclient.chat.completions.create(
         model="glm-4.5-air",
         messages=[
@@ -91,7 +138,21 @@ def need_extra(
        aiclient,
        qwclient,
        sfclient,
-       result):
+       result, name_label):
+    if data['bianma'].startswith('011207') or data['bianma'].startswith('011208'):
+        result = [x[0].replace('换', '') for x in result]
+        result = [name_label[x] for x in result]
+        if len([x for x in result if '铝板' in x or '铝单板' in x]) > 0:
+            return False
+        left = [x.replace('在木龙骨', '')  for x in result ]
+        left = [x.replace('在龙骨', '')  for x in left ]
+        left = [x for x in left if '龙骨' not in x]
+        left = [x for x in left if '细木工板基层' not in x]
+        left = [x for x in left if '吸音' not in x]
+        if len(left) == 0:
+            return True
+        return False
+
     if data['bianma'].startswith("0108") and len(result) == 0:
         return True
     if data['bianma'].startswith("0115") and len(result) == 0:

File diff suppressed because it is too large
+ 0 - 1
fuzhu_candidate


+ 2 - 1
fuzhu_util.py

@@ -18,7 +18,7 @@ def fuzhu_util(
                 {"role": "system", "content": "You are a helpful assistant."},
                 {"role": "user", "content": "以下是一段工作内容的描述:" + work + '\n'},
                 {"role": "user", "content": "该工作内容的描述中包含了一道工序如下:" + label + '\n'},
-                {"role": "user", "content": "该工序与工作内容可能有稍许偏差,需要修正或补充。 " + '; '.join(xuanxiang) + "\n请从上述选项中选择出符合工作内容描述,确实可以修正、补充的选项并返回。例如,选项中如果有除锈等级的修正,则你需要分析工作内容描述中是否明确除锈等级。如果明确除锈等级,你应该选择对应选项。如果没有,则不得选择。再比如,选项中提及原材料每米重量5kg以内为小型构件。那么你要分析工作内容中是否给出原材料每米重量,如果给出,则你可以据此做出选择,如果没有给出,你不得选择该选项。再比如,选项中提及,(如果)设计采用螺栓的,如何如何,那么你要分析工作内容,如果工作内容明确描述设计使用螺栓的,你可以据此做出选择,如果没有,则你不得选择。请给出分析并返回类似[A, B]这样的数组。如果没有任何选项符合,则返回空数组[]"},
+                {"role": "user", "content": "该工序与工作内容可能有稍许偏差,需要修正或补充。施工地区设定在南通市." + '; '.join(xuanxiang) + "\n请从上述选项中选择出符合工作内容描述,有明确依据确实可以修正、补充的选项并返回。例如,选项中如果有除锈等级的修正,则你需要分析工作内容描述中是否明确除锈等级。如果明确除锈等级,你应该选择对应选项。如果没有,则不得选择。再比如,选项中提及原材料每米重量5kg以内为小型构件。那么你要分析工作内容中是否给出原材料每米重量,如果给出,则你可以据此做出选择,如果没有给出,你不得选择该选项。再比如,选项中提及,(如果)设计采用螺栓的,如何如何,那么你要分析工作内容,如果工作内容明确描述设计使用螺栓的,你可以据此做出选择,如果没有,则你不得选择。再比如,选项中提到坡度大于10°的斜板,那么你要分析工作内容,如果工作内容提及斜板并且明确提及坡度,并且该坡度大于10°,则你可以据此做出选择,如果没有,则你不的选择。请给出分析并返回类似[A, B]这样的数组。如果没有任何选项符合,则返回空数组[]"},
             ],
             extra_body={"thinking": {"type": "disabled"}},
         )
@@ -38,6 +38,7 @@ def fuzhu_util(
         extra_body={"thinking": {"type": "disabled"}},
     )
         json_string = completion.choices[0].message.content
+        print(json_string)
         for i in range(len(options)):
             if letters[i] in json_string:
                 choice.append(letters[i])

File diff suppressed because it is too large
+ 0 - 0
nantong_rule


+ 2 - 1
postprocess0112.py

@@ -250,7 +250,7 @@ def aifilter4(A, #options
         messages=[
             {"role": "system", "content": "You are a helpful assistant."},
             {"role": "user", "content": " 特殊处理要求一:如果工作内容没有提及界面剂,则去掉所有含有“界面剂”字样的选项"},
-            {"role": "user", "content": " 特殊处理要求二:如果选项中既有墙柱面一般抹灰的选项(夹板基层不属于一般抹灰,龙骨不属于一般抹灰,刷界面剂不属于一般抹灰),又有镶贴块料面层及幕墙的选项,则去掉墙柱面一般抹灰的选项"},
+            {"role": "user", "content": " 特殊处理要求二:如果选项中既有墙柱面一般抹灰的选项(夹板基层****属于一般抹灰,龙骨****属于一般抹灰,刷界面剂****属于一般抹灰),又有镶贴块料面层及幕墙的选项,则去掉墙柱面一般抹灰的选项"},
             {"role": "user", "content": " 重要提示:选项指的是给定的A、B、C之类的选项,不是指的工作内容中的可能的1、2、3这样罗列的特征"},
             {"role": "user", "content": " 重要提示:除特殊处理要求提及的内容外,不需考虑选项内容与工作内容是否符合,只需要根据特殊处理要求做出处理"},
             {"role": "user", "content": "问题描述: 给定一段工作内容: " + B['label'] + " " +  B['mc'] + " " + B['tz'] +  ",".join(options) + "。请根据处理要求做出处理,并返回结果, 删除选项必须对应到明确的特殊处理要求,不要擅自删除选项。例如,如果处理完后剩余A,B,C三个选项,请返回[A,B,C]"},
@@ -347,6 +347,7 @@ def aifilter1(A, #options
             {"role": "system", "content": "You are a helpful assistant."},
             {"role": "user", "content": " 特殊处理要求一:去掉所有刷素水泥浆的选项"},
             {"role": "user", "content": " 特殊处理要求二:去掉所有精确含有“天棚工程”四个字的选项,不得删除含有“天棚及其他”五个字的选项"},
+            {"role": "user", "content": " 特殊处理要求三:如果工作内容中没有提及铝板、铝单板,则删除含有“铝板幕墙”四个字的选项"},
             {"role": "user", "content": " 重要提示:选项指的是给定的A、B、C之类的选项,不是指的工作内容中的可能的1、2、3这样罗列的特征"},
             {"role": "user", "content": " 重要提示:除特殊处理要求提及的内容外,不需考虑选项内容与工作内容是否符合,只需要根据特殊处理要求做出处理"},
             {"role": "user", "content": "问题描述: 给定一段工作内容: " + B['label'] + " " +  B['mc'] + " " + B['tz'] +  ",".join(options) + "。请根据处理要求做出处理,并返回结果, 删除选项必须对应到明确的特殊处理要求,不要擅自删除选项。例如,如果处理完后剩余A,B,C三个选项,请返回[A,B,C]"},

+ 1 - 1
postprocess0113.py

@@ -464,7 +464,7 @@ def aifilter1(A, #options
         options.append("给定选项" + letters[i]+",内容为"+A[i] )
 
     completion = aiclient.chat.completions.create(
-        model="glm-z1-flash",
+        model="glm-4.5-air",
         #model="THUDM/GLM-Z1-9B-0414",
         #model="ernie-speed-128k",
         messages=[

+ 7 - 4
postprocess0114.py

@@ -108,9 +108,9 @@ def aifilter1(A, #options
 def handle_nizi(selected, data,aiclient,qwclient,sfclient,label_name,name_dw,candidates):
     options=[]
     options_=[]
-    options.append('没有提及腻子')
-    options.append('提及腻子')
-    options.append('提及保温腻子')
+    options.append('不使用腻子')
+    options.append('使用腻子')
+    options.append('使用保温腻子')
     options.append('腻子2道(遍)')
     options.append('腻子3道(遍)')
     letters = "ABCDEFGHIJKLMN"
@@ -123,7 +123,7 @@ def handle_nizi(selected, data,aiclient,qwclient,sfclient,label_name,name_dw,can
         #model="ernie-speed-128k",
         messages=[
             {"role": "system", "content": "You are a helpful assistant."},
-            {"role": "user", "content": "问题描述: 给定一段工作内容: " + data['label'] + " " +  data['mc'] + " " + data['tz'] +  ",".join(options_) + "。请选出与工作内容最匹配的腻子选项。请输出A、B这样的字母作为答案"},
+            {"role": "user", "content": "问题描述: 给定一段工作内容;"+ ",".join(options_) + "。请选出与工作内容最匹配的选项。例如,如果工作内容中不使用腻子,则输出A。再例如,如果工作内容中提到刷腻子2遍,则输出D.现在给定一段工作内容: "+ data['label'] + " " +  data['mc'] + " " + data['tz'] + "\n请给出分析过程并请输出A、B这样的字母作为答案"},
         ],
         extra_body={"thinking": {"type": "disabled"}},
         #extra_body={"enable_thinking": True},
@@ -271,6 +271,9 @@ def handle_neiqiang(selected, data,aiclient,qwclient,sfclient,label_name,name_dw
     if answer=='F':
         return [name_label['17-224']] 
     if answer=='G': 
+        nizi = handle_nizi(selected, data,aiclient,qwclient,sfclient,label_name,name_dw,candidates)
+        if nizi == 'A':
+            return [name_label['17-CB5']]
         return [name_label['17-CB4']]##满刮腻子
 def handle_waiqiang(nizi, selected, data,aiclient,qwclient,sfclient,label_name,name_dw,candidates):
     options=[]

+ 69 - 69
service.py

@@ -44,7 +44,7 @@ def chaifen(result, zhuanye):
                 CLBH = row.CLBH
                 CLMC = row.CLMC
                 JLDW = row.JLDW
-                YSJG = row.YSJG
+                YSJG = row.Csdj
                 SL = float(row.SL) * float(entry['SL'])
                 HJ = float(row.HJ) * float(entry['SL'])
                 entry['children'].append({'CLBH': CLBH,
@@ -1674,7 +1674,7 @@ def getSingleDeXilie_xsaz(debh):
             CLBH = filtered2.iloc[0]["CLBH"]
             CLMC = filtered2.iloc[0]["CLMC"]
             JLDW = filtered2.iloc[0]["JLDW"]
-            YSJG = filtered2.iloc[0]["YSJG"]
+            YSJG = filtered2.iloc[0]["Csdj"]
             rgde_["CLBH"] = CLBH
             rgde_["CLMC"] = CLMC
             rgde_["JLDW"] = JLDW
@@ -1698,7 +1698,7 @@ def getSingleDeXilie_xsaz(debh):
             jxbh = filtered2.iloc[0]["jxbh"]
             jxmc = filtered2.iloc[0]["jxmc"]
             DW = filtered2.iloc[0]["DW"]
-            tbdj = filtered2.iloc[0]["tbdj"]
+            tbdj = filtered2.iloc[0]["Csdj"]
             jxde_["jxbh"] = jxbh
             jxde_["jxmc"] = jxmc
             jxde_["DW"] = DW
@@ -1723,7 +1723,7 @@ def getSingleDeXilie_xsaz(debh):
             CLBH = filtered2.iloc[0]["CLBH"]
             CLMC = filtered2.iloc[0]["CLMC"]
             JLDW = filtered2.iloc[0]["JLDW"]
-            YSJG = filtered2.iloc[0]["YSJG"]
+            YSJG = filtered2.iloc[0]["Csdj"]
             clde_["CLBH"] = CLBH
             clde_["CLMC"] = CLMC
             clde_["JLDW"] = JLDW
@@ -1737,7 +1737,7 @@ def getSingleDeXilie_xsaz(debh):
             CLBH = filtered2_.iloc[0]["PBBH"]
             CLMC = filtered2_.iloc[0]["PBMC"]
             JLDW = filtered2_.iloc[0]["DW"]
-            YSJG = filtered2_.iloc[0]["PBDJ"]
+            YSJG = filtered2_.iloc[0]["Csdj"]
             clde_["CLBH"] = CLBH.item()
             clde_["CLMC"] = CLMC
             clde_["JLDW"] = JLDW
@@ -1746,14 +1746,14 @@ def getSingleDeXilie_xsaz(debh):
             clde_["HJ"] = HJ.item()
             clde.append(clde_)
         elif len(filtered2) > 0 and len(filtered2_) > 0:
-            YSJG = filtered2.iloc[0]["YSJG"]
-            YSJG_ = filtered2_.iloc[0]["PBDJ"]
+            YSJG = filtered2.iloc[0]["Csdj"]
+            YSJG_ = filtered2_.iloc[0]["Csdj"]
             if float(HJ) < 0.00001:
                 if float(YSJG) < 0.00001:
                     CLBH = filtered2.iloc[0]["CLBH"]
                     CLMC = filtered2.iloc[0]["CLMC"]
                     JLDW = filtered2.iloc[0]["JLDW"]
-                    YSJG = filtered2.iloc[0]["YSJG"]
+                    YSJG = filtered2.iloc[0]["Csdj"]
                     clde_["CLBH"] = CLBH
                     clde_["CLMC"] = CLMC
                     clde_["JLDW"] = JLDW
@@ -1765,7 +1765,7 @@ def getSingleDeXilie_xsaz(debh):
                     CLBH = filtered2_.iloc[0]["PBBH"]
                     CLMC = filtered2_.iloc[0]["PBMC"]
                     JLDW = filtered2_.iloc[0]["DW"]
-                    YSJG = filtered2_.iloc[0]["PBDJ"]
+                    YSJG = filtered2_.iloc[0]["Csdj"]
                     clde_["CLBH"] = CLBH.item()
                     clde_["CLMC"] = CLMC
                     clde_["JLDW"] = JLDW
@@ -1781,7 +1781,7 @@ def getSingleDeXilie_xsaz(debh):
                     CLBH = filtered2.iloc[0]["CLBH"]
                     CLMC = filtered2.iloc[0]["CLMC"]
                     JLDW = filtered2.iloc[0]["JLDW"]
-                    YSJG = filtered2.iloc[0]["YSJG"]
+                    YSJG = filtered2.iloc[0]["Csdj"]
                     clde_["CLBH"] = CLBH
                     clde_["CLMC"] = CLMC
                     clde_["JLDW"] = JLDW
@@ -1793,7 +1793,7 @@ def getSingleDeXilie_xsaz(debh):
                     CLBH = filtered2_.iloc[0]["PBBH"]
                     CLMC = filtered2_.iloc[0]["PBMC"]
                     JLDW = filtered2_.iloc[0]["DW"]
-                    YSJG = filtered2_.iloc[0]["PBDJ"]
+                    YSJG = filtered2_.iloc[0]["Csdj"]
                     clde_["CLBH"] = CLBH.item()
                     clde_["CLMC"] = CLMC
                     clde_["JLDW"] = JLDW
@@ -1868,7 +1868,7 @@ def getSingleDeXilie_xstj(debh):
             CLBH = filtered2.iloc[0]["CLBH"]
             CLMC = filtered2.iloc[0]["CLMC"]
             JLDW = filtered2.iloc[0]["JLDW"]
-            YSJG = filtered2.iloc[0]["YSJG"]
+            YSJG = filtered2.iloc[0]["Csdj"]
             rgde_["CLBH"] = CLBH
             rgde_["CLMC"] = CLMC
             rgde_["JLDW"] = JLDW
@@ -1886,7 +1886,7 @@ def getSingleDeXilie_xstj(debh):
         CLBH = entry["CLBH"]
         CLMC = entry["CLMC"]
         JLDW = entry["JLDW"]
-        YSJG = entry["YSJG"]
+        YSJG = entry["Csdj"]
         rgde_["CLBH"] = CLBH
         rgde_["CLMC"] = CLMC
         rgde_["JLDW"] = JLDW
@@ -1909,7 +1909,7 @@ def getSingleDeXilie_xstj(debh):
             jxbh = filtered2.iloc[0]["jxbh"]
             jxmc = filtered2.iloc[0]["jxmc"]
             DW = filtered2.iloc[0]["DW"]
-            tbdj = filtered2.iloc[0]["tbdj"]
+            tbdj = filtered2.iloc[0]["Csdj"]
             jxde_["jxbh"] = jxbh
             jxde_["jxmc"] = jxmc
             jxde_["DW"] = DW
@@ -1926,7 +1926,7 @@ def getSingleDeXilie_xstj(debh):
         jxbh = entry["jxbh"]
         jxmc = entry["jxmc"]
         DW = entry["DW"]
-        tbdj = entry["tbdj"]
+        tbdj = entry["Csdj"]
         jxde_["jxbh"] = jxbh
         jxde_["jxmc"] = jxmc
         jxde_["DW"] = DW
@@ -1951,7 +1951,7 @@ def getSingleDeXilie_xstj(debh):
             CLBH = filtered2.iloc[0]["CLBH"]
             CLMC = filtered2.iloc[0]["CLMC"]
             JLDW = filtered2.iloc[0]["JLDW"]
-            YSJG = filtered2.iloc[0]["YSJG"]
+            YSJG = filtered2.iloc[0]["Csdj"]
             clde_["CLBH"] = CLBH
             clde_["CLMC"] = CLMC
             clde_["JLDW"] = JLDW
@@ -1965,7 +1965,7 @@ def getSingleDeXilie_xstj(debh):
             CLBH = filtered2_.iloc[0]["PBBH"]
             CLMC = filtered2_.iloc[0]["PBMC"]
             JLDW = filtered2_.iloc[0]["DW"]
-            YSJG = filtered2_.iloc[0]["PBDJ"]
+            YSJG = filtered2_.iloc[0]["Csdj"]
             clde_["CLBH"] = CLBH.item()
             clde_["CLMC"] = CLMC
             clde_["JLDW"] = JLDW
@@ -1974,14 +1974,14 @@ def getSingleDeXilie_xstj(debh):
             clde_["HJ"] = HJ.item()
             clde.append(clde_)
         elif len(filtered2) > 0 and len(filtered2_) > 0:
-            YSJG = filtered2.iloc[0]["YSJG"]
-            YSJG_ = filtered2_.iloc[0]["PBDJ"]
+            YSJG = filtered2.iloc[0]["Csdj"]
+            YSJG_ = filtered2_.iloc[0]["Csdj"]
             if float(HJ) < 0.00001:
                 if float(YSJG) < 0.00001:
                     CLBH = filtered2.iloc[0]["CLBH"]
                     CLMC = filtered2.iloc[0]["CLMC"]
                     JLDW = filtered2.iloc[0]["JLDW"]
-                    YSJG = filtered2.iloc[0]["YSJG"]
+                    YSJG = filtered2.iloc[0]["Csdj"]
                     clde_["CLBH"] = CLBH
                     clde_["CLMC"] = CLMC
                     clde_["JLDW"] = JLDW
@@ -1993,7 +1993,7 @@ def getSingleDeXilie_xstj(debh):
                     CLBH = filtered2_.iloc[0]["PBBH"]
                     CLMC = filtered2_.iloc[0]["PBMC"]
                     JLDW = filtered2_.iloc[0]["DW"]
-                    YSJG = filtered2_.iloc[0]["PBDJ"]
+                    YSJG = filtered2_.iloc[0]["Csdj"]
                     clde_["CLBH"] = CLBH.item()
                     clde_["CLMC"] = CLMC
                     clde_["JLDW"] = JLDW
@@ -2010,7 +2010,7 @@ def getSingleDeXilie_xstj(debh):
                     CLBH = filtered2.iloc[0]["CLBH"]
                     CLMC = filtered2.iloc[0]["CLMC"]
                     JLDW = filtered2.iloc[0]["JLDW"]
-                    YSJG = filtered2.iloc[0]["YSJG"]
+                    YSJG = filtered2.iloc[0]["Csdj"]
                     clde_["CLBH"] = CLBH
                     clde_["CLMC"] = CLMC
                     clde_["JLDW"] = JLDW
@@ -2022,7 +2022,7 @@ def getSingleDeXilie_xstj(debh):
                     CLBH = filtered2_.iloc[0]["PBBH"]
                     CLMC = filtered2_.iloc[0]["PBMC"]
                     JLDW = filtered2_.iloc[0]["DW"]
-                    YSJG = filtered2_.iloc[0]["PBDJ"]
+                    YSJG = filtered2_.iloc[0]["Csdj"]
                     clde_["CLBH"] = CLBH.item()
                     clde_["CLMC"] = CLMC
                     clde_["JLDW"] = JLDW
@@ -2041,7 +2041,7 @@ def getSingleDeXilie_xstj(debh):
         CLBH = entry["CLBH"]
         CLMC = entry["CLMC"]
         JLDW = entry["JLDW"]
-        YSJG = entry["YSJG"]
+        YSJG = entry["Csdj"]
         clde_["CLBH"] = CLBH
         clde_["CLMC"] = CLMC
         clde_["JLDW"] = JLDW
@@ -2056,7 +2056,7 @@ def getSingleDeXilie_xstj(debh):
         CLBH = entry["PBBH"]
         CLMC = entry["PBMC"]
         JLDW = entry["DW"]
-        YSJG = entry["PBDJ"]
+        YSJG = entry["Csdj"]
         clde_["CLBH"] = CLBH
         clde_["CLMC"] = CLMC
         clde_["JLDW"] = JLDW
@@ -2127,7 +2127,7 @@ def getSingleDeXilie_yl(debh):
             CLBH = filtered2.iloc[0]["CLBH"]
             CLMC = filtered2.iloc[0]["CLMC"]
             JLDW = filtered2.iloc[0]["JLDW"]
-            YSJG = filtered2.iloc[0]["YSJG"]
+            YSJG = filtered2.iloc[0]["Csdj"]
             rgde_["CLBH"] = CLBH
             rgde_["CLMC"] = CLMC
             rgde_["JLDW"] = JLDW
@@ -2145,7 +2145,7 @@ def getSingleDeXilie_yl(debh):
         CLBH = entry["CLBH"]
         CLMC = entry["CLMC"]
         JLDW = entry["JLDW"]
-        YSJG = entry["YSJG"]
+        YSJG = entry["Csdj"]
         rgde_["CLBH"] = CLBH
         rgde_["CLMC"] = CLMC
         rgde_["JLDW"] = JLDW
@@ -2168,7 +2168,7 @@ def getSingleDeXilie_yl(debh):
             jxbh = filtered2.iloc[0]["jxbh"]
             jxmc = filtered2.iloc[0]["jxmc"]
             DW = filtered2.iloc[0]["DW"]
-            tbdj = filtered2.iloc[0]["tbdj"]
+            tbdj = filtered2.iloc[0]["Csdj"]
             jxde_["jxbh"] = jxbh
             jxde_["jxmc"] = jxmc
             jxde_["DW"] = DW
@@ -2185,7 +2185,7 @@ def getSingleDeXilie_yl(debh):
         jxbh = entry["jxbh"]
         jxmc = entry["jxmc"]
         DW = entry["DW"]
-        tbdj = entry["tbdj"]
+        tbdj = entry["Csdj"]
         jxde_["jxbh"] = jxbh
         jxde_["jxmc"] = jxmc
         jxde_["DW"] = DW
@@ -2208,7 +2208,7 @@ def getSingleDeXilie_yl(debh):
             CLBH = filtered2.iloc[0]["CLBH"]
             CLMC = filtered2.iloc[0]["CLMC"]
             JLDW = filtered2.iloc[0]["JLDW"]
-            YSJG = filtered2.iloc[0]["YSJG"]
+            YSJG = filtered2.iloc[0]["Csdj"]
             clde_["CLBH"] = CLBH
             clde_["CLMC"] = CLMC
             clde_["JLDW"] = JLDW
@@ -2223,7 +2223,7 @@ def getSingleDeXilie_yl(debh):
                 CLBH = filtered2.iloc[0]["PBBH"]
                 CLMC = filtered2.iloc[0]["PBMC"]
                 JLDW = filtered2.iloc[0]["DW"]
-                YSJG = filtered2.iloc[0]["PBDJ"]
+                YSJG = filtered2.iloc[0]["Csdj"]
                 clde_["CLBH"] = CLBH.item()
                 clde_["CLMC"] = CLMC
                 clde_["JLDW"] = JLDW
@@ -2241,7 +2241,7 @@ def getSingleDeXilie_yl(debh):
         CLBH = entry["CLBH"]
         CLMC = entry["CLMC"]
         JLDW = entry["JLDW"]
-        YSJG = entry["YSJG"]
+        YSJG = entry["Csdj"]
         clde_["CLBH"] = CLBH
         clde_["CLMC"] = CLMC
         clde_["JLDW"] = JLDW
@@ -2256,7 +2256,7 @@ def getSingleDeXilie_yl(debh):
         CLBH = entry["PBBH"]
         CLMC = entry["PBMC"]
         JLDW = entry["DW"]
-        YSJG = entry["PBDJ"]
+        YSJG = entry["Csdj"]
         clde_["CLBH"] = CLBH
         clde_["CLMC"] = CLMC
         clde_["JLDW"] = JLDW
@@ -2325,7 +2325,7 @@ def getSingleDeXilie_az(debh):
             CLBH = filtered2.iloc[0]["CLBH"]
             CLMC = filtered2.iloc[0]["CLMC"]
             JLDW = filtered2.iloc[0]["JLDW"]
-            YSJG = filtered2.iloc[0]["YSJG"]
+            YSJG = filtered2.iloc[0]["Csdj"]
             rgde_["CLBH"] = str(CLBH.item()) if type(CLBH) == int64 else CLBH
             rgde_["CLMC"] = CLMC
             rgde_["JLDW"] = JLDW
@@ -2343,7 +2343,7 @@ def getSingleDeXilie_az(debh):
         CLBH = entry["CLBH"]
         CLMC = entry["CLMC"]
         JLDW = entry["JLDW"]
-        YSJG = entry["YSJG"]
+        YSJG = entry["Csdj"]
         rgde_["CLBH"] = CLBH
         rgde_["CLMC"] = CLMC
         rgde_["JLDW"] = JLDW
@@ -2366,7 +2366,7 @@ def getSingleDeXilie_az(debh):
             jxbh = filtered2.iloc[0]["jxbh"]
             jxmc = filtered2.iloc[0]["jxmc"]
             DW = filtered2.iloc[0]["DW"]
-            tbdj = filtered2.iloc[0]["tbdj"]
+            tbdj = filtered2.iloc[0]["Csdj"]
             jxde_["jxbh"] = jxbh
             jxde_["jxmc"] = jxmc
             jxde_["DW"] = DW
@@ -2383,7 +2383,7 @@ def getSingleDeXilie_az(debh):
         jxbh = entry["jxbh"]
         jxmc = entry["jxmc"]
         DW = entry["DW"]
-        tbdj = entry["tbdj"]
+        tbdj = entry["Csdj"]
         jxde_["jxbh"] = jxbh
         jxde_["jxmc"] = jxmc
         jxde_["DW"] = DW
@@ -2406,7 +2406,7 @@ def getSingleDeXilie_az(debh):
             CLBH = filtered2.iloc[0]["CLBH"]
             CLMC = filtered2.iloc[0]["CLMC"]
             JLDW = filtered2.iloc[0]["JLDW"]
-            YSJG = filtered2.iloc[0]["YSJG"]
+            YSJG = filtered2.iloc[0]["Csdj"]
             clde_["CLBH"] = str(CLBH.item()) if type(CLBH) == int64 else CLBH
             clde_["CLMC"] = CLMC
             clde_["JLDW"] = JLDW
@@ -2421,7 +2421,7 @@ def getSingleDeXilie_az(debh):
                 CLBH = filtered2.iloc[0]["PBBH"]
                 CLMC = filtered2.iloc[0]["PBMC"]
                 JLDW = filtered2.iloc[0]["DW"]
-                YSJG = filtered2.iloc[0]["PBDJ"]
+                YSJG = filtered2.iloc[0]["Csdj"]
                 clde_["CLBH"] = str(CLBH.item()) if type(CLBH) == int64 else CLBH
                 clde_["CLMC"] = CLMC
                 clde_["JLDW"] = JLDW
@@ -2441,7 +2441,7 @@ def getSingleDeXilie_az(debh):
         CLBH = entry["CLBH"]
         CLMC = entry["CLMC"]
         JLDW = entry["JLDW"]
-        YSJG = entry["YSJG"]
+        YSJG = entry["Csdj"]
         clde_["CLBH"] = CLBH
         clde_["CLMC"] = CLMC
         clde_["JLDW"] = JLDW
@@ -2456,7 +2456,7 @@ def getSingleDeXilie_az(debh):
         CLBH = entry["PBBH"]
         CLMC = entry["PBMC"]
         JLDW = entry["DW"]
-        YSJG = entry["PBDJ"]
+        YSJG = entry["Csdj"]
         clde_["CLBH"] = CLBH
         clde_["CLMC"] = CLMC
         clde_["JLDW"] = JLDW
@@ -2527,7 +2527,7 @@ def getSingleDeXilie_sz(debh):
             CLBH = filtered2.iloc[0]["CLBH"]
             CLMC = filtered2.iloc[0]["CLMC"]
             JLDW = filtered2.iloc[0]["JLDW"]
-            YSJG = filtered2.iloc[0]["YSJG"]
+            YSJG = filtered2.iloc[0]["Csdj"]
             rgde_["CLBH"] = CLBH
             rgde_["CLMC"] = CLMC
             rgde_["JLDW"] = JLDW
@@ -2545,7 +2545,7 @@ def getSingleDeXilie_sz(debh):
         CLBH = entry["CLBH"]
         CLMC = entry["CLMC"]
         JLDW = entry["JLDW"]
-        YSJG = entry["YSJG"]
+        YSJG = entry["Csdj"]
         rgde_["CLBH"] = CLBH
         rgde_["CLMC"] = CLMC
         rgde_["JLDW"] = JLDW
@@ -2568,7 +2568,7 @@ def getSingleDeXilie_sz(debh):
             jxbh = filtered2.iloc[0]["jxbh"]
             jxmc = filtered2.iloc[0]["jxmc"]
             DW = filtered2.iloc[0]["DW"]
-            tbdj = filtered2.iloc[0]["tbdj"]
+            tbdj = filtered2.iloc[0]["Csdj"]
             jxde_["jxbh"] = jxbh
             jxde_["jxmc"] = jxmc
             jxde_["DW"] = DW
@@ -2585,7 +2585,7 @@ def getSingleDeXilie_sz(debh):
         jxbh = entry["jxbh"]
         jxmc = entry["jxmc"]
         DW = entry["DW"]
-        tbdj = entry["tbdj"]
+        tbdj = entry["Csdj"]
         jxde_["jxbh"] = jxbh
         jxde_["jxmc"] = jxmc
         jxde_["DW"] = DW
@@ -2610,7 +2610,7 @@ def getSingleDeXilie_sz(debh):
             CLBH = filtered2.iloc[0]["CLBH"]
             CLMC = filtered2.iloc[0]["CLMC"]
             JLDW = filtered2.iloc[0]["JLDW"]
-            YSJG = filtered2.iloc[0]["YSJG"]
+            YSJG = filtered2.iloc[0]["Csdj"]
             clde_["CLBH"] = str(CLBH.item()) if type(CLBH) == int64 else CLBH
             clde_["CLMC"] = CLMC
             clde_["JLDW"] = JLDW
@@ -2622,7 +2622,7 @@ def getSingleDeXilie_sz(debh):
             CLBH = filtered2_.iloc[0]["PBBH"]
             CLMC = filtered2_.iloc[0]["PBMC"]
             JLDW = filtered2_.iloc[0]["DW"]
-            YSJG = filtered2_.iloc[0]["PBDJ"]
+            YSJG = filtered2_.iloc[0]["Csdj"]
             clde_["CLBH"] = str(CLBH.item()) if type(CLBH) == int64 else CLBH
             clde_["CLMC"] = CLMC
             clde_["JLDW"] = JLDW
@@ -2631,15 +2631,15 @@ def getSingleDeXilie_sz(debh):
             clde_["HJ"] = HJ.item() if type(HJ) == float64 else HJ
             clde.append(clde_)
         elif len(filtered2) > 0 and len(filtered2_) > 0:
-            YSJG = filtered2.iloc[0]["YSJG"]
-            YSJG_ = filtered2_.iloc[0]["PBDJ"]
+            YSJG = filtered2.iloc[0]["Csdj"]
+            YSJG_ = filtered2_.iloc[0]["Csdj"]
             ##print(debh)
             if float(HJ) < 0.00001:
                 if float(YSJG) < 0.00001:
                     CLBH = filtered2.iloc[0]["CLBH"]
                     CLMC = filtered2.iloc[0]["CLMC"]
                     JLDW = filtered2.iloc[0]["JLDW"]
-                    YSJG = filtered2.iloc[0]["YSJG"]
+                    YSJG = filtered2.iloc[0]["Csdj"]
                     clde_["CLBH"] = str(CLBH.item()) if type(CLBH) == int64 else CLBH
                     clde_["CLMC"] = CLMC
                     clde_["JLDW"] = JLDW
@@ -2651,7 +2651,7 @@ def getSingleDeXilie_sz(debh):
                     CLBH = filtered2_.iloc[0]["PBBH"]
                     CLMC = filtered2_.iloc[0]["PBMC"]
                     JLDW = filtered2_.iloc[0]["DW"]
-                    YSJG = filtered2_.iloc[0]["PBDJ"]
+                    YSJG = filtered2_.iloc[0]["Csdj"]
                     clde_["CLBH"] = str(CLBH.item()) if type(CLBH) == int64 else CLBH
                     clde_["CLMC"] = CLMC
                     clde_["JLDW"] = JLDW
@@ -2667,7 +2667,7 @@ def getSingleDeXilie_sz(debh):
                     CLBH = filtered2.iloc[0]["CLBH"]
                     CLMC = filtered2.iloc[0]["CLMC"]
                     JLDW = filtered2.iloc[0]["JLDW"]
-                    YSJG = filtered2.iloc[0]["YSJG"]
+                    YSJG = filtered2.iloc[0]["Csdj"]
                     clde_["CLBH"] = str(CLBH.item()) if type(CLBH) == int64 else CLBH
                     clde_["CLMC"] = CLMC
                     clde_["JLDW"] = JLDW
@@ -2679,7 +2679,7 @@ def getSingleDeXilie_sz(debh):
                     CLBH = filtered2_.iloc[0]["PBBH"]
                     CLMC = filtered2_.iloc[0]["PBMC"]
                     JLDW = filtered2_.iloc[0]["DW"]
-                    YSJG = filtered2_.iloc[0]["PBDJ"]
+                    YSJG = filtered2_.iloc[0]["Csdj"]
                     clde_["CLBH"] = str(CLBH.item()) if type(CLBH) == int64 else CLBH
                     clde_["CLMC"] = CLMC
                     clde_["JLDW"] = JLDW
@@ -2697,7 +2697,7 @@ def getSingleDeXilie_sz(debh):
         CLBH = entry["CLBH"]
         CLMC = entry["CLMC"]
         JLDW = entry["JLDW"]
-        YSJG = entry["YSJG"]
+        YSJG = entry["Csdj"]
         clde_["CLBH"] = CLBH
         clde_["CLMC"] = CLMC
         clde_["JLDW"] = JLDW
@@ -2712,7 +2712,7 @@ def getSingleDeXilie_sz(debh):
         CLBH = entry["PBBH"]
         CLMC = entry["PBMC"]
         JLDW = entry["DW"]
-        YSJG = entry["PBDJ"]
+        YSJG = entry["Csdj"]
         clde_["CLBH"] = CLBH
         clde_["CLMC"] = CLMC
         clde_["JLDW"] = JLDW
@@ -2783,7 +2783,7 @@ def getSingleDeXilie_tj(debh):
             CLBH = filtered2.iloc[0]["CLBH"]
             CLMC = filtered2.iloc[0]["CLMC"]
             JLDW = filtered2.iloc[0]["JLDW"]
-            YSJG = filtered2.iloc[0]["YSJG"]
+            YSJG = filtered2.iloc[0]["Csdj"]
             rgde_["CLBH"] = CLBH
             rgde_["CLMC"] = CLMC
             rgde_["JLDW"] = JLDW
@@ -2801,7 +2801,7 @@ def getSingleDeXilie_tj(debh):
         CLBH = entry["CLBH"]
         CLMC = entry["CLMC"]
         JLDW = entry["JLDW"]
-        YSJG = entry["YSJG"]
+        YSJG = entry["Csdj"]
         rgde_["CLBH"] = CLBH
         rgde_["CLMC"] = CLMC
         rgde_["JLDW"] = JLDW
@@ -2825,7 +2825,7 @@ def getSingleDeXilie_tj(debh):
             jxbh = filtered2.iloc[0]["jxbh"]
             jxmc = filtered2.iloc[0]["jxmc"]
             DW = filtered2.iloc[0]["DW"]
-            tbdj = filtered2.iloc[0]["tbdj"]
+            tbdj = filtered2.iloc[0]["Csdj"]
             jxde_["jxbh"] = jxbh
             jxde_["jxmc"] = jxmc
             jxde_["DW"] = DW
@@ -2842,7 +2842,7 @@ def getSingleDeXilie_tj(debh):
         jxbh = entry["jxbh"]
         jxmc = entry["jxmc"]
         DW = entry["DW"]
-        tbdj = entry["tbdj"]
+        tbdj = entry["Csdj"]
         jxde_["jxbh"] = jxbh
         jxde_["jxmc"] = jxmc
         jxde_["DW"] = DW
@@ -2867,7 +2867,7 @@ def getSingleDeXilie_tj(debh):
             CLBH = filtered2.iloc[0]["CLBH"]
             CLMC = filtered2.iloc[0]["CLMC"]
             JLDW = filtered2.iloc[0]["JLDW"]
-            YSJG = filtered2.iloc[0]["YSJG"]
+            YSJG = filtered2.iloc[0]["Csdj"]
             clde_["CLBH"] = CLBH
             clde_["CLMC"] = CLMC
             clde_["JLDW"] = JLDW
@@ -2879,7 +2879,7 @@ def getSingleDeXilie_tj(debh):
             CLBH = filtered2_.iloc[0]["PBBH"]
             CLMC = filtered2_.iloc[0]["PBMC"]
             JLDW = filtered2_.iloc[0]["DW"]
-            YSJG = filtered2_.iloc[0]["PBDJ"]
+            YSJG = filtered2_.iloc[0]["Csdj"]
             clde_["CLBH"] = CLBH
             clde_["CLMC"] = CLMC
             clde_["JLDW"] = JLDW
@@ -2888,14 +2888,14 @@ def getSingleDeXilie_tj(debh):
             clde_["HJ"] = HJ.item() if type(HJ) == float64 else HJ
             clde.append(clde_)
         elif len(filtered2) > 0 and len(filtered2_) > 0:
-            YSJG = filtered2.iloc[0]["YSJG"]
-            YSJG_ = filtered2_.iloc[0]["PBDJ"]
+            YSJG = filtered2.iloc[0]["Csdj"]
+            YSJG_ = filtered2_.iloc[0]["Csdj"]
             if float(HJ) < 0.00001:
                 if float(YSJG) < 0.00001:
                     CLBH = filtered2.iloc[0]["CLBH"]
                     CLMC = filtered2.iloc[0]["CLMC"]
                     JLDW = filtered2.iloc[0]["JLDW"]
-                    YSJG = filtered2.iloc[0]["YSJG"]
+                    YSJG = filtered2.iloc[0]["Csdj"]
                     clde_["CLBH"] = CLBH
                     clde_["CLMC"] = CLMC
                     clde_["JLDW"] = JLDW
@@ -2907,7 +2907,7 @@ def getSingleDeXilie_tj(debh):
                     CLBH = filtered2_.iloc[0]["PBBH"]
                     CLMC = filtered2_.iloc[0]["PBMC"]
                     JLDW = filtered2_.iloc[0]["DW"]
-                    YSJG = filtered2_.iloc[0]["PBDJ"]
+                    YSJG = filtered2_.iloc[0]["Csdj"]
                     clde_["CLBH"] = CLBH
                     clde_["CLMC"] = CLMC
                     clde_["JLDW"] = JLDW
@@ -2923,7 +2923,7 @@ def getSingleDeXilie_tj(debh):
                     CLBH = filtered2.iloc[0]["CLBH"]
                     CLMC = filtered2.iloc[0]["CLMC"]
                     JLDW = filtered2.iloc[0]["JLDW"]
-                    YSJG = filtered2.iloc[0]["YSJG"]
+                    YSJG = filtered2.iloc[0]["Csdj"]
                     clde_["CLBH"] = CLBH
                     clde_["CLMC"] = CLMC
                     clde_["JLDW"] = JLDW
@@ -2935,7 +2935,7 @@ def getSingleDeXilie_tj(debh):
                     CLBH = filtered2_.iloc[0]["PBBH"]
                     CLMC = filtered2_.iloc[0]["PBMC"]
                     JLDW = filtered2_.iloc[0]["DW"]
-                    YSJG = filtered2_.iloc[0]["PBDJ"]
+                    YSJG = filtered2_.iloc[0]["Csdj"]
                     clde_["CLBH"] = CLBH
                     clde_["CLMC"] = CLMC
                     clde_["JLDW"] = JLDW
@@ -2955,7 +2955,7 @@ def getSingleDeXilie_tj(debh):
         CLBH = entry["CLBH"]
         CLMC = entry["CLMC"]
         JLDW = entry["JLDW"]
-        YSJG = entry["YSJG"]
+        YSJG = entry["Csdj"]
         clde_["CLBH"] = CLBH
         clde_["CLMC"] = CLMC
         clde_["JLDW"] = JLDW
@@ -2971,7 +2971,7 @@ def getSingleDeXilie_tj(debh):
         CLBH = entry["PBBH"]
         CLMC = entry["PBMC"]
         JLDW = entry["DW"]
-        YSJG = entry["PBDJ"]
+        YSJG = entry["Csdj"]
         clde_["CLBH"] = CLBH
         clde_["CLMC"] = CLMC
         clde_["JLDW"] = JLDW

+ 30 - 5
tasks.py

@@ -350,7 +350,7 @@ def callzai(A,B,C):
         model="Qwen/Qwen3-32B",
         messages=[
             {"role": "system", "content": "You are a helpful assistant."},
-            {"role": "user", "content": " 给定一条主定额,内容为" + A + ",记作A,再给定一条配套定额,内容为" + B + ",记作B。可以通过简单的组合,来表达对应的工作内容的数量,比如A+B可以表达,主定额的工作量加上配套定额的工作量;再比如,A+B*2可以表达, 主定额的工作量加上两倍的配套定额的工作量;再比如,A+B*(-2)可以表达, 主定额减去两倍的配套定额的工作量;再比如,A可以表示,不使用配套定额,仅表示主定额的工作量。现在给你一条工程量清单,内容为" + C + ",该条清单包含了主定额描述的工作内容,但是数量并不一定一致。请你找到清单中对应的描述(不需要考虑混凝土强度等级是否完全一致,需要区分面层和找平找坡层),辨识出工作数量(砂浆保护层厚度跟砂浆找平层厚度不可合并),并组合A与B,表示出清单描述的对应工作数量。请给出分析过程,并请最终输出类似A+B、A+B*2、A-B*2的格式,不要输出A+2*B、A-2*B的格式。如果清单里相应工作量的描述不明确,请输出A作为答案 "},
+            {"role": "user", "content": " 给定一条主定额,内容为" + A + ",记作A,再给定一条配套定额,内容为" + B + ",记作B。可以通过简单的组合,来表达对应的工作内容的数量,比如A+B可以表达,主定额的工作量加上配套定额的工作量;再比如,A+B*2可以表达, 主定额的工作量加上两倍的配套定额的工作量;再比如,A+B*(-2)可以表达, 主定额减去两倍的配套定额的工作量;再比如,A可以表示,不使用配套定额,仅表示主定额的工作量。现在给你一条工程量清单,内容为" + C + ",该条清单包含了主定额描述的工作内容,但是数量并不一定一致。请你找到清单中对应的描述(不需要考虑龙骨类型是否完全一致,不需要考虑混凝土强度等级是否完全一致,需要区分面层和找平找坡层),辨识出工作数量(砂浆保护层厚度跟砂浆找平层厚度不可合并),并组合A与B,表示出清单描述的对应工作数量。请给出分析过程,并请最终输出类似A+B、A+B*2、A-B*2的格式,不要输出A+2*B、A-2*B的格式。如果清单里相应工作量的描述不明确,请输出A作为答案 "},
         ],
         # Qwen3模型通过enable_thinking参数控制思考过程(开源版默认True,商业版默认False)
         # 使用Qwen3开源版模型时,若未启用流式输出,请将下行取消注释,否则会报错
@@ -401,7 +401,7 @@ def transform(answer, input, entry):
     return answer2
 
 def zuhe(input, content):
-    if input in incremental and input != '17-176' and input != '17-177' and input != '17-179' and input != '17-180' and input != '17-181':
+    if input in incremental and input != '17-176' and input != '17-177' and input != '17-179' and input != '17-180' and input != '17-181' and input != '15-33' and input != '1534' and input != '15-35' and input != '15-36' and input != '15-37' and input != '15-38' and input != '15-39' and input != '15-40' and input != '15-41':
         option = incremental[input]
         for entry in option:
             answer = callzai(name_label[input], name_label[entry], content)
@@ -508,6 +508,29 @@ def huansuan(input, dw):
         return float(answer2)
 
 def clarify(data):
+    data['tz'] = data['tz'].replace('DTG', '')
+    data['tz'] = data['tz'].replace("聚合物水泥砂浆修补墙面", "")
+    data['tz'] = data['tz'].replace('DTA', '')
+    data['tz'] = data['tz'].replace('DS M15', '1:3水泥砂浆')
+    data['tz'] = data['tz'].replace('DSM15', '1:3水泥砂浆')
+    data['tz'] = data['tz'].replace('DP M15', '1:3水泥砂浆')
+    data['tz'] = data['tz'].replace('DPM15', '1:3水泥砂浆')
+    data['tz'] = data['tz'].replace('DS M20', '1:2.5水泥砂浆')
+    data['tz'] = data['tz'].replace('DSM20', '1:2.5水泥砂浆')
+    data['tz'] = data['tz'].replace('DP M20', '1:2.5水泥砂浆')
+    data['tz'] = data['tz'].replace('DPM20', '1:2.5水泥砂浆')
+    data['tz'] = data['tz'].replace('DP(DCA)M20', '1:2.5水泥砂浆')
+    data['tz'] = data['tz'].replace('DP(DCA) M20', '1:2.5水泥砂浆')
+    data['tz'] = data['tz'].replace('DP(DCA)M5', '1:1:6混合砂浆')
+    data['tz'] = data['tz'].replace('DP(DCA) M5', '1:1:6混合砂浆')
+    data['tz'] = data['tz'].replace('DP M5', '1:1:6混合砂浆')
+    data['tz'] = data['tz'].replace('DPM5', '1:1:6混合砂浆')
+    data['tz'] = data['tz'].replace('DP MS', '1:1:6混合砂浆')
+    data['tz'] = data['tz'].replace('DPMS', '1:1:6混合砂浆')
+    data['tz'] = data['tz'].replace('DP(DCA)M10', '1:0.5:3混合砂浆')
+    data['tz'] = data['tz'].replace('DP(DCA) M10', '1:0.5:3混合砂浆')
+    data['tz'] = data['tz'].replace('DP M10', '1:0.5:3混合砂浆')
+    data['tz'] = data['tz'].replace('DPM10', '1:0.5:3混合砂浆')
     data['tz'] = data['tz'].replace("水泥基防水涂料", "水泥基渗透结晶防水涂料")
     data['tz'] = data['tz'].replace("回光灯带", "回光灯槽")
     data['mc'] = data['mc'].replace("回光灯带", "回光灯槽")
@@ -515,6 +538,7 @@ def clarify(data):
     data['tz'] = data['tz'].replace("JS防水涂料", "聚合物水泥防水涂料")
     data['tz'] = data['tz'].replace("聚合物水泥砂浆", "防水砂浆")
     data['tz'] = data['tz'].replace("丝杆", "丝杆吊筋")
+    data['tz_bak'] = data['tz']
     if data['bianma'].startswith("010301"):##打桩
         print("clarify")
         result = callzaiclarify(data)
@@ -555,6 +579,8 @@ def clarify(data):
         data['tz'] = data['tz'].replace("铝单板", "铝单板幕墙")
         data['tz'] = data['tz'].replace("阻燃板", "细木工板")
         data['tz'] = data['tz'].replace("阻燃基层板", "细木工板")
+        data['tz'] = data['tz'].replace("岩棉板", "岩棉吸音板")
+        data['tz'] = data['tz'].replace("吸音材料", "岩棉吸音板")
         data['tz'] = data['tz'].replace("水泥纤维板", "水泥压力板")
         if '防潮层' in data['tz'] or '防水砂浆' in data['tz']:
             data['mc']='墙柱面防水(防潮)'
@@ -749,7 +775,6 @@ def process_data(data:dict)-> dict:
         notselected = notselected + incremental[entry]
     notselected=[name_label[x] for x in notselected]
     for rank in ranks:
-        
         print(f"{rank['score']} {d[rank['corpus_id']]}")
         if rank['score']<cutoff:
             continue
@@ -809,12 +834,12 @@ def process_data(data:dict)-> dict:
     print("after zuhe")
     print(result)
     result = [(x[0], x[1], dedata.read_singledexilie2(10, x[0])) for x in result]
-    result = [(x[0], x[1], x[2], tihuan(x[0], x[2], label, aiclient, qwclient, simpleclient)) for x in result]
+    result = [(x[0], x[1], x[2], tihuan(x[0], x[2], label, aiclient, qwclient, simpleclient, data)) for x in result]
     fuzhu = [analyze(x[2]) for x in result]
     fuzhu = zip(selected, fuzhu)
     fuzhu = [x for x in fuzhu]
     fuzhu_selected = [select_fuzhu(x, label, aiclient, qwclient, simpleclient) for x in fuzhu]
-    need = need_extra(data, aiclient, qwclient, simpleclient, result)
+    need = need_extra(data, aiclient, qwclient, simpleclient, result, name_label)
     replace={}
     if need:
         extra_info = extra(data, aiclient, qwclient, simpleclient, menchuang_collection, model, qita_collection)

+ 96 - 22
tihuan.py

@@ -11,6 +11,7 @@ from tihuan_wa import tihuan_wa
 from tihuan_dizhuan import tihuan_dizhuan
 from tihuan_juancai import tihuan_juancai
 from tihuan_bancai import tihuan_bancai
+from tihuan_mugongban import tihuan_mugongban
 from config import simplemodel
 with open("name_label", "r") as f:
     content = f.read()
@@ -21,7 +22,8 @@ def tihuan(
        label,
        aiclient,
        qwclient,
-       sfclient
+       sfclient,
+       data
        ):
     result=[]
     xuanxiang=[]
@@ -43,6 +45,8 @@ def tihuan(
     clde = rcjobj['clde']
     hit_zhuan=False
     hit_kuai=False
+    sj_max = 0
+    sj_min = 10000
     for i in range(len(clde)):
         bh = clde[i]['CLBH']
         sl = clde[i]['SL']
@@ -52,12 +56,19 @@ def tihuan(
             hit_zhuan = True
         if bh.startswith("0415"):
             hit_kuai = True
+        if bh.startswith("800") and not bh.startswith('8007'):##砂浆
+            if sl < 0.01:
+                continue
+            if sl > sj_max:
+                sj_max = sl
+            if sl < sj_min:
+                sj_min = sl
     for i in range(len(clde)):
         bh = clde[i]['CLBH']
         sl = clde[i]['SL']
         if float(sl) < 1e-6:
             continue
-        if bh in ['80010161']:
+        if bh in ['80010161']:##块料楼地面 干硬性水泥砂浆
             continue
         if bh.startswith("8021"):
             ##混凝土
@@ -75,7 +86,7 @@ def tihuan(
             model=simplemodel(),
             messages=[
             {"role": "system", "content": "You are a helpful assistant.请将最终答案以JSON格式输出"},
-            {"role": "user", "content": " 给你一段文字如下, " + json_string + ",其中给出了一种混凝土名称作为答案,请将该混凝土名称输出"},                       
+            {"role": "user", "content": " 给你一段文字如下, " + json_string + ",其中给出了一种混凝土名称型号作为答案,请将该混凝土名称型号输出"},                       
             ],
             extra_body={"thinking": {"type": "disabled"}},
             )
@@ -127,23 +138,52 @@ def tihuan(
             part = part.replace(' ','')
             
             result.append(tihuan_gangjin(clde[i]['CLBH'], clde[i]['CLMC'], clde[i]['YSJG'], part))
-        if bh.startswith("800"):
+        if bh.startswith("800") and not bh.startswith('8007'):
             ##砂浆
-            completion = aiclient.chat.completions.create(
-            model="glm-4.5-air",
-            messages=[
-                {"role": "system", "content": "You are a helpful assistant."},
-                {"role": "user", "content": "以下是一段工作内容的描述: " + label + '\n其中包括了一道工序如下: ' +description +  '\n工序使用了砂浆作为材料之一。请从工作内容中找到与该工序最匹配的描述(不要从工序文字中抽取描述)(注意区分找平找坡层跟面层保护层),并从抽取的描述中再抽取出砂浆的具体品种型号等信息。例如,如果工作内容的描述中写的是“Mb10水泥砂浆”,那么你应该原封不动的返回“Mb10水泥砂浆”。如果工作内容中没有具体描述砂浆的信息,则返回“通用砂浆”'},
-            ],
-            extra_body={"thinking": {"type": "disabled"}},
+            if data['bianma'].startswith('0112'):
+                if sl < 0.01:
+                    continue
+                if sl >= sj_max:##打底
+                    completion = aiclient.chat.completions.create(
+                    model="glm-4.5-air",
+                    messages=[
+                        {"role": "system", "content": "You are a helpful assistant."},
+                        {"role": "user", "content": "以下是一段工作内容的描述: " + data['tz_bak'] + '\n其中包括了一道工序如下: ' +description +  '\n工序使用了砂浆打底(**不**是罩面)。请从工作内容中找到与砂浆打底(**不**是罩面)最匹配的描述,并从抽取的描述中再抽取出砂浆的具体品种型号等信息。例如,如果工作内容的描述中写的是“Mb10水泥砂浆”,那么你应该原封不动的返回“Mb10水泥砂浆”。如果工作内容中没有具体描述砂浆的信息,则返回“通用砂浆”'},
+                    ],
+                    extra_body={"thinking": {"type": "disabled"}},
         )
-            json_string = completion.choices[0].message.content
-            print(json_string)
+                    json_string = completion.choices[0].message.content
+                    print(json_string)
+                elif sl <= sj_min:##罩面
+                    completion = aiclient.chat.completions.create(
+                    model="glm-4.5-air",
+                    messages=[
+                        {"role": "system", "content": "You are a helpful assistant."},
+                        {"role": "user", "content": "以下是一段工作内容的描述: " + data['tz_bak'] + '\n其中包括了一道工序如下: ' +description +  '\n工序使用了砂浆罩面(**不**是打底)。请从工作内容中找到与砂浆罩面(**不**是打底)最匹配的描述,并从抽取的描述中再抽取出砂浆的具体品种型号等信息。例如,如果工作内容的描述中写的是“Mb10水泥砂浆”,那么你应该原封不动的返回“Mb10水泥砂浆”。如果工作内容中没有具体描述砂浆的信息,则返回“通用砂浆”'},
+                    ],
+                    extra_body={"thinking": {"type": "disabled"}},
+        )
+                    json_string = completion.choices[0].message.content
+                    print(json_string)
+                else:
+                    continue
+            else:
+                completion = aiclient.chat.completions.create(
+                model="glm-4.5-air",
+                messages=[
+                    {"role": "system", "content": "You are a helpful assistant."},
+                    {"role": "user", "content": "以下是一段工作内容的描述: " + label + '\n其中包括了一道工序如下: ' +description +  '\n工序使用了砂浆作为材料之一。请从工作内容中找到与该工序最匹配的描述(不要从工序文字中抽取描述)(注意区分找平找坡层跟面层保护层),并从抽取的描述中再抽取出砂浆的具体品种型号等信息。例如,如果工作内容的描述中写的是“Mb10水泥砂浆”,那么你应该原封不动的返回“Mb10水泥砂浆”。如果工作内容中没有具体描述砂浆的信息,则返回“通用砂浆”'},
+                ],
+                extra_body={"thinking": {"type": "disabled"}},
+        )
+                json_string = completion.choices[0].message.content
+                print(json_string)
+
             completion = sfclient.chat.completions.create(
             model=simplemodel(),
             messages=[
             {"role": "system", "content": "You are a helpful assistant.请将最终答案以JSON格式输出"},
-            {"role": "user", "content": " 给你一段文字如下, " + json_string + ",其中给出了一种砂浆名称作为答案,请将该砂浆名称输出"},                       
+            {"role": "user", "content": " 给你一段文字如下, " + json_string + ",其中给出了一种砂浆名称作为答案,请将该砂浆名称输出.必须以json格式输出.请直接输出结果"},                       
             ],
             extra_body={"thinking": {"type": "disabled"}},
             )
@@ -314,7 +354,7 @@ def tihuan(
             model=simplemodel(),
             messages=[
             {"role": "system", "content": "You are a helpful assistant.请将最终答案以JSON格式输出"},
-            {"role": "user", "content": " 给你一段文字如下, " + json_string + ",其中给出了一种钢材名称作为答案,请将该钢材名称输出"},                       
+            {"role": "user", "content": " 给你一段文字如下, " + json_string + ",其中给出了一种钢材名称型号作为答案,请将该钢材名称型号输出"},                       
             ],
             extra_body={"thinking": {"type": "disabled"}},
             )
@@ -382,7 +422,7 @@ def tihuan(
             model=simplemodel(),
             messages=[
             {"role": "system", "content": "You are a helpful assistant.请将最终答案以JSON格式输出"},
-            {"role": "user", "content": " 给你一段文字如下, " + json_string + ",其中给出了一种瓦名称作为答案,请将该瓦名称输出"},                       
+            {"role": "user", "content": " 给你一段文字如下, " + json_string + ",其中给出了一种瓦名称型号作为答案,请将该瓦名称型号输出"},                       
             ],
             extra_body={"thinking": {"type": "disabled"}},
             )
@@ -400,13 +440,13 @@ def tihuan(
             part = part.replace(' ','')
             
             result.append(tihuan_wa(clde[i]['CLBH'], clde[i]['CLMC'], clde[i]['YSJG'], part))
-        if bh.startswith("066501"):
-            ##地砖
+        if bh.startswith("066501") or bh.startswith('066121'):
+            ##地砖、面砖
             completion = aiclient.chat.completions.create(
             model="glm-4.5-air",
             messages=[
                 {"role": "system", "content": "You are a helpful assistant."},
-                {"role": "user", "content": "以下是一段工作内容的描述: " + label + '\n其中包括了一道工序如下: ' +description +  '\n工序使用了地砖作为材料之一。请从工作内容中找到与该工序最匹配的描述,并从描述中抽取出地砖的具体品种型号等信息。例如,如果工作内容的描述中写的是“10厚800X800防滑地砖”,那么你应该原封不动的返回“10厚800X800防滑地砖”。如果工作内容中没有具体描述地砖的信息,则返回“通用砖”'},
+                {"role": "user", "content": "以下是一段工作内容的描述: " + label + '\n其中包括了一道工序如下: ' +description +  '\n工序使用了地砖、面砖作为材料之一。请从工作内容中找到与该工序最匹配的描述,并从描述中抽取出地砖、面砖的具体品种型号等信息。例如,如果工作内容的描述中写的是“10厚800X800防滑地砖”,那么你应该原封不动的返回“10厚800X800防滑地砖”。如果工作内容中没有具体描述地砖、面砖的信息,则返回“通用砖”'},
             ],
             extra_body={"thinking": {"type": "disabled"}},
         )
@@ -416,7 +456,7 @@ def tihuan(
             model=simplemodel(),
             messages=[
             {"role": "system", "content": "You are a helpful assistant.请将最终答案以JSON格式输出"},
-            {"role": "user", "content": " 给你一段文字如下, " + json_string + ",其中给出了一种砖名称作为答案,请将该砖名称输出"},                       
+            {"role": "user", "content": " 给你一段文字如下, " + json_string + ",其中给出了一种砖名称型号作为答案,请将该砖名称型号输出"},                       
             ],
             extra_body={"thinking": {"type": "disabled"}},
             )
@@ -450,7 +490,7 @@ def tihuan(
             model=simplemodel(),
             messages=[
             {"role": "system", "content": "You are a helpful assistant.请将最终答案以JSON格式输出"},
-            {"role": "user", "content": " 给你一段文字如下, " + json_string + ",其中给出了一种卷材名称作为答案,请将该卷材名称输出"},                       
+            {"role": "user", "content": " 给你一段文字如下, " + json_string + ",其中给出了一种卷材名称型号作为答案,请将该卷材名称型号输出"},                       
             ],
             extra_body={"thinking": {"type": "disabled"}},
             )
@@ -484,7 +524,7 @@ def tihuan(
             model=simplemodel(),
             messages=[
             {"role": "system", "content": "You are a helpful assistant.请将最终答案以JSON格式输出"},
-            {"role": "user", "content": " 给你一段文字如下, " + json_string + ",其中给出了一种板材名称作为答案,请将该板材名称输出"},                       
+            {"role": "user", "content": " 给你一段文字如下, " + json_string + ",其中给出了一种板材名称型号作为答案,请将该板材名称型号输出"},                       
             ],
             extra_body={"thinking": {"type": "disabled"}},
             )
@@ -502,4 +542,38 @@ def tihuan(
             part = part.replace(' ','')
             
             result.append(tihuan_bancai(clde[i]['CLBH'], clde[i]['CLMC'], clde[i]['YSJG'], part))
+        if bh.startswith("0509"):
+            ##细木工板
+            completion = aiclient.chat.completions.create(
+            model="glm-4.5-air",
+            messages=[
+                {"role": "system", "content": "You are a helpful assistant."},
+                {"role": "user", "content": "以下是一段工作内容的描述: " + data['tz_bak'] + '\n其中包括了一道工序如下: ' +description +  '\n工序使用了板材作为材料之一,用于阻燃吸音。请从工作内容中找到与该工序最匹配的描述,并从描述中抽取出板材的具体品种型号等信息。例如,如果工作内容的描述中写的是“18mm厚阻燃板”,那么你应该原封不动的返回“18mm厚阻燃板”。如果工作内容中没有具体描述板材的信息,则返回“通用板材”'},
+            ],
+            extra_body={"thinking": {"type": "disabled"}},
+        )
+            json_string = completion.choices[0].message.content
+            print(json_string)
+            completion = sfclient.chat.completions.create(
+            model=simplemodel(),
+            messages=[
+            {"role": "system", "content": "You are a helpful assistant.请将最终答案以JSON格式输出"},
+            {"role": "user", "content": " 给你一段文字如下, " + json_string + ",其中给出了一种板材名称型号作为答案,请将该板材名称型号输出"},                       
+            ],
+            extra_body={"thinking": {"type": "disabled"}},
+            )
+            json_string = completion.choices[0].message.content
+            print(json_string)
+            parts = json_string.split('\n')
+            parts = [x for x in parts if ':' in x]
+            if len(parts) == 0:
+                continue
+            parts = parts[0].split(':')
+            part = parts[1]
+            part = part.replace(',','')
+            part = part.replace('\'','')
+            part = part.replace('\"','')
+            part = part.replace(' ','')
+            
+            result.append(tihuan_mugongban(clde[i]['CLBH'], clde[i]['CLMC'], clde[i]['YSJG'], part))
     return result

+ 4 - 0
tihuan_mugongban.py

@@ -0,0 +1,4 @@
+def tihuan_mugongban(old_bianma, old_mc, old_jg, new_name):
+    if '通用' in new_name:
+        return {'bianma': old_bianma, 'new_bianma': old_bianma, 'mc': old_mc, 'jg': old_jg}
+    return {'bianma': old_bianma, 'new_bianma': old_bianma, 'mc': new_name, 'jg': old_jg}

+ 55 - 7
tihuan_shajiang.py

@@ -1,5 +1,6 @@
 def tihuan_shajiang(old_bianma, old_mc, old_jg, new_name):
     new_name = new_name.split('或')[0]
+    new_name = new_name.replace(':', ':')
     if '通用' in new_name or '清水' in new_name or '低强度' in new_name or 'DTG' in new_name or '素水泥浆' in new_name or 'DTA' in new_name:
         return {'bianma': old_bianma, 'new_bianma': old_bianma, 'mc': old_mc, 'jg': old_jg}
     if '专用' in new_name:
@@ -41,25 +42,72 @@ def tihuan_shajiang(old_bianma, old_mc, old_jg, new_name):
             return {'bianma': old_bianma, 'new_bianma': '80010104', 'mc': new_name, 'jg': '180.37'}
         if 'Mb2.5' in new_name or 'M2.5' in new_name or 'Ma2.5' in new_name:
             return {'bianma': old_bianma, 'new_bianma': '80010103', 'mc': new_name, 'jg': '175.72'}
-        if '1:1' in new_name:
-            return {'bianma': old_bianma, 'new_bianma': '80010121', 'mc': new_name, 'jg': '308.42'}
         if '1:1.5' in new_name:
             return {'bianma': old_bianma, 'new_bianma': '80010122', 'mc': new_name, 'jg': '289.29'}
-        if '1:2' in new_name:
-            return {'bianma': old_bianma, 'new_bianma': '80010123', 'mc': new_name, 'jg': '275.64'}
+        if '1:1' in new_name:
+            return {'bianma': old_bianma, 'new_bianma': '80010121', 'mc': new_name, 'jg': '308.42'}
         if '1:2.5' in new_name:
             return {'bianma': old_bianma, 'new_bianma': '80010124', 'mc': new_name, 'jg': '265.07'}
+        if '1:2' in new_name:
+            return {'bianma': old_bianma, 'new_bianma': '80010123', 'mc': new_name, 'jg': '275.64'}
         if '1:3' in new_name:
             return {'bianma': old_bianma, 'new_bianma': '80010125', 'mc': new_name, 'jg': '239.65'}
         return {'bianma': old_bianma, 'new_bianma': old_bianma, 'mc': new_name, 'jg': old_jg}
     if '石灰砂浆' in new_name:
-        if '1:2' in new_name:
-            return {'bianma': old_bianma, 'new_bianma': '80030103', 'mc': new_name, 'jg': '206.31'}
         if '1:2.5' in new_name:
             return {'bianma': old_bianma, 'new_bianma': '80030104', 'mc': new_name, 'jg': '200.91'}
+        if '1:2' in new_name:
+            return {'bianma': old_bianma, 'new_bianma': '80030103', 'mc': new_name, 'jg': '206.31'}
         if '1:3' in new_name:
             return {'bianma': old_bianma, 'new_bianma': '80010105', 'mc': new_name, 'jg': '192.27'}
         if '1:4' in new_name:
             return {'bianma': old_bianma, 'new_bianma': '80010106', 'mc': new_name, 'jg': '168.51'}
         return {'bianma': old_bianma, 'new_bianma': old_bianma, 'mc': new_name, 'jg': old_jg}
-    return {'bianma': old_bianma, 'new_bianma': old_bianma, 'mc': new_name, 'jg': old_jg}
+    if '混合砂浆' in new_name or '水泥石灰膏砂浆' in new_name or '水泥石灰砂浆' in new_name:
+        if 'M2.5' in new_name:
+            return {'bianma': old_bianma, 'new_bianma': '80050103', 'mc': new_name, 'jg': '188.64'}
+        if 'M5' in new_name:
+            return {'bianma': old_bianma, 'new_bianma': '80050104', 'mc': new_name, 'jg': '193'}
+        if 'M7.5' in new_name:
+            return {'bianma': old_bianma, 'new_bianma': '80050105', 'mc': new_name, 'jg': '195.2'}
+        if 'M10' in new_name:
+            return {'bianma': old_bianma, 'new_bianma': '80050106', 'mc': new_name, 'jg': '199.56'}
+        if 'M15' in new_name:
+            return {'bianma': old_bianma, 'new_bianma': '80050108', 'mc': new_name, 'jg': '217.79'}
+        if 'M30' in new_name:
+            return {'bianma': old_bianma, 'new_bianma': '80050111', 'mc': new_name, 'jg': '294.39'}
+        if '1:1:6' in new_name:
+            return {'bianma': old_bianma, 'new_bianma': '80050125', 'mc': new_name, 'jg': '215.85'}
+        if '1:0.5:3' in new_name:
+            return {'bianma': old_bianma, 'new_bianma': '80050312', 'mc': new_name, 'jg': '252.9'}
+        return {'bianma': old_bianma, 'new_bianma': old_bianma, 'mc': new_name, 'jg': old_jg}
+    else:
+        if 'Mb10' in new_name or 'M10' in new_name or 'Ma10' in new_name:
+            if old_bianma.startswith("8001"):
+                return {'bianma': old_bianma, 'new_bianma': '80010106', 'mc': new_name, 'jg': '191.53'}
+            elif old_bianma.startswith("8005"):
+                return {'bianma': old_bianma, 'new_bianma': '80050106', 'mc': new_name, 'jg': '199.56'}
+            else:
+                return {'bianma': old_bianma, 'new_bianma': old_bianma, 'mc': new_name, 'jg': old_jg}
+        if 'Mb7.5' in new_name or 'M7.5' in new_name or 'Ma7.5' in new_name:
+            if old_bianma.startswith("8001"):
+                return {'bianma': old_bianma, 'new_bianma': '80010105', 'mc': new_name, 'jg': '182.23'}
+            elif old_bianma.startswith("8005"):
+                return {'bianma': old_bianma, 'new_bianma': '80050105', 'mc': new_name, 'jg': '195.2'}
+            else:
+                return {'bianma': old_bianma, 'new_bianma': old_bianma, 'mc': new_name, 'jg': old_jg}
+        if 'Mb5' in new_name or 'M5' in new_name or 'Ma5' in new_name:
+            if old_bianma.startswith("8001"):
+                return {'bianma': old_bianma, 'new_bianma': '80010104', 'mc': new_name, 'jg': '180.37'}
+            elif old_bianma.startswith("8005"):
+                return {'bianma': old_bianma, 'new_bianma': '80050104', 'mc': new_name, 'jg': '193'}
+            else:
+                return {'bianma': old_bianma, 'new_bianma': old_bianma, 'mc': new_name, 'jg': old_jg}
+        if 'Mb2.5' in new_name or 'M2.5' in new_name or 'Ma2.5' in new_name:
+            if old_bianma.startswith("8001"):
+                return {'bianma': old_bianma, 'new_bianma': '80010103', 'mc': new_name, 'jg': '175.72'}
+            elif old_bianma.startswith("8005"):
+                return {'bianma': old_bianma, 'new_bianma': '80050103', 'mc': new_name, 'jg': '188.64'}
+            else:
+                return {'bianma': old_bianma, 'new_bianma': old_bianma, 'mc': new_name, 'jg': old_jg}
+        return {'bianma': old_bianma, 'new_bianma': old_bianma, 'mc': new_name, 'jg': old_jg}

+ 86 - 65
utils.js

@@ -985,6 +985,9 @@ const tjpbsj = ['80010103',
 '80071321',
 '80050108',
 '80050111',
+'80110303',
+'80110313',
+'80110314',
 '80010341'];
 const tjpbsjchai = [['80010103', 202.0, 273],
 ['80010103', 1.61, 277],
@@ -1205,44 +1208,55 @@ const tjpbsjchai = [['80010103', 202.0, 273],
 ['80050111', 0.4, 1173],
 ['80050108', 466.0, 1526],
 ['80050108', 1.03, 1527],
-['80050108', 0.4, 1173]];
-const tjpbcl = [['02290501', '麻刀', 'kg', 2.4, 114],
-['04010611', '水泥 32.5级', 'kg', 0.31, 273],
-['04010701', '白水泥', 'kg', 0.7, 274],
-['04030100', '黄砂', 't', 74.0, 275],
-['04030107', '中砂', 't', 69.37, 277],
-['04030133', '石英砂', 't', 180.0, 280],
-['04090602', '滑石粉', 'kg', 0.62, 292],
-['04090700', '石英粉', 'kg', 0.35, 293],
-['11410319', '呋喃树脂', 'kg', 18.0, 813],
-['11410324', '邻苯型不饱和聚酸树脂', 'kg', 20.0, 815],
-['11550105', '石油沥青 30#', 'kg', 5.5, 838],
-['11593507', '过氧化环乙酮二丁酯糊 50%', 'kg', 16.0, 879],
-['12060323', '煤焦油', 'kg', 2.8, 894],
-['12300325', '氟硅酸钠', 'kg', 2.8, 900],
-['12310303', '二甲苯', 'kg', 5.9, 903],
-['12310307', '乙二胺', 'kg', 15.0, 905],
-['12310308', '丙酮', 'kg', 6.0, 906],
-['12310317', '苯乙烯', 'kg', 9.7, 909],
-['31150101', '水', 'm3', 4.7, 1173],
-['01650104', '钢屑', 'kg', 2.4, 1358],
-['02070404', '聚硫橡胶', 'kg', 30.0, 1359],
-['04030121', '白云石砂 4#', 't', 133.0, 1360],
-['04030129', '重晶石砂', 't', 330.0, 1361],
-['04030139', '轻质砂', 'm3', 70.0, 1362],
-['04090120', '石灰膏', 'm3', 216.0, 1369],
-['04090605', '铸石粉', 't', 712.5, 1370],
-['04230108', '防水剂', 'kg', 5.0, 1371],
-['11410305', '环氧树脂 E42', 'kg', 19.95, 1372],
-['11410325', '双酚A不饱和聚脂树脂', 'kg', 19.0, 1373],
-['12310329', '环烷酸钴苯乙烯液', 'kg', 12.0, 1375],
-['13010102', '温石棉', 'kg', 7.79, 1377],
-['13160303', '硅藻土', 'kg', 0.38, 1379],
-['31052502', '硫磺', 'kg', 1.8, 1380],
-['31132509', '纸筋', 'kg', 1.5, 1381],
-['04010611', '复合硅酸盐水泥  32.5级', 'kg', 0.31, 1526],
-['04030107', '中(粗)砂', 't', 69.37, 1527],
-['12413531', '水玻璃', 'kg', 0.85, 1541]];
+['80050108', 0.4, 1173],
+['80110303', 1517, 273],
+['80110303', 0.52, 1173],
+['80110313', 1517, 273],
+['80110313', 21, 952],
+['80110313', 0.52, 1173],
+['80110314', 522, 273],
+['80110314', 182, 952],
+['80110314', 0.67, 1173],
+];
+const tjpbcl = [['02290501', '麻刀', 'kg', 2.06, 114],
+['04010611', '水泥 32.5级', 'kg', 0.27, 273],
+['04010701', '白水泥', 'kg', 0.6, 274],
+['04030100', '黄砂', 't', 71.89, 275],
+['04030107', '中砂', 't', 67.39, 277],
+['04030133', '石英砂', 't', 174.86, 280],
+['04090602', '滑石粉', 'kg', 0.53, 292],
+['04090700', '石英粉', 'kg', 0.34, 293],
+['11410319', '呋喃树脂', 'kg', 15.44, 813],
+['11410324', '邻苯型不饱和聚酸树脂', 'kg', 17.15, 815],
+['11550105', '石油沥青 30#', 'kg', 4.72, 838],
+['11593507', '过氧化环乙酮二丁酯糊 50%', 'kg', 13.72, 879],
+['12060323', '煤焦油', 'kg', 2.4, 894],
+['12300325', '氟硅酸钠', 'kg', 2.4, 900],
+['12310303', '二甲苯', 'kg', 5.06, 903],
+['12310307', '乙二胺', 'kg', 12.86, 905],
+['12310308', '丙酮', 'kg', 5.15, 906],
+['12310317', '苯乙烯', 'kg', 8.32, 909],
+['31150101', '水', 'm3', 4.57, 1173],
+['01650104', '钢屑', 'kg', 2.06, 1358],
+['02070404', '聚硫橡胶', 'kg', 25.73, 1359],
+['04030121', '白云石砂 4#', 't', 114.05, 1360],
+['04030129', '重晶石砂', 't', 282.99, 1361],
+['04030139', '轻质砂', 'm3', 60.03, 1362],
+['04090120', '石灰膏', 'm3', 209.83, 1369],
+['04090605', '铸石粉', 't', 611, 1370],
+['04230108', '防水剂', 'kg', 4.29, 1371],
+['11410305', '环氧树脂 E42', 'kg', 17.11, 1372],
+['11410325', '双酚A不饱和聚脂树脂', 'kg', 16.29, 1373],
+['12310329', '环烷酸钴苯乙烯液', 'kg', 10.29, 1375],
+['13010102', '温石棉', 'kg', 6.68, 1377],
+['13160303', '硅藻土', 'kg', 0.33, 1379],
+['31052502', '硫磺', 'kg', 1.54, 1380],
+['31132509', '纸筋', 'kg', 1.29, 1381],
+['04010611', '复合硅酸盐水泥  32.5级', 'kg', 0.27, 1526],
+['04030107', '中(粗)砂', 't', 67.39, 1527],
+['12413531', '水玻璃', 'kg', 0.73, 1541],
+['12413518', '901胶', 'kg', 2.14, 952],
+];
 
 const ylpbsj = ['62532',
     '62542',
@@ -1290,6 +1304,8 @@ const ylpbsj = ['62532',
     '63162',
     '63172',
     '63332',
+    '63192',
+    '63222',
     '63333']; 
 const ylpbsjchai =   [['62532', 0.3, 30181],
 ['62532', 202.0, 29596],
@@ -1459,21 +1475,27 @@ const ylpbsjchai =   [['62532', 0.3, 30181],
 ['63332', 530.0, 30134],
 ['63333', 1.69, 29714],
 ['63333', 244.0, 30140],
-['63333', 468.0, 30134]];
-const ylpbcl = [['0430061', '白水泥', 'kg', 0.52, 29595],
-['0430080', '水泥 32.5级', 'kg', 0.3, 29596],
-['0530135', '白石子', 't', 106.3, 29611],
-['0530490', '石灰膏', 'm3', 118.0, 29677],
-['0530720', '中砂', 't', 36.5, 29714],
-['1730060', '防水剂', 'kg', 1.52, 29983],
-['2230080', '滑石粉', 'kg', 0.45, 30134],
-['2230131', '石油沥青 30#', 'kg', 3.69, 30140],
-['2330290', '麻刀', 'kg', 2.0, 30165],
-['2330450', '水', 'm3', 4.1, 30181],
-['2330520', '纸筋', 'kg', 0.5, 30188],
+['63333', 468.0, 30134],
+['63192', 0.52, 30181],
+['63192', 455.1, 29596],
+['63222', 0.52, 30181],
+['63222', 21, 29903],
+['63222', 1817, 29596],
+];
+const ylpbcl = [['0430061', '白水泥', 'kg', 0.45, 29595],
+['0430080', '水泥 32.5级', 'kg', 0.26, 29596],
+['0530135', '白石子', 't', 103.26, 29611],
+['0530490', '石灰膏', 'm3', 114.63, 29677],
+['0530720', '中砂', 't', 35.46, 29714],
+['1730060', '防水剂', 'kg', 1.3, 29983],
+['2230080', '滑石粉', 'kg', 0.39, 30134],
+['2230131', '石油沥青 30#', 'kg', 3.16, 30140],
+['2330290', '麻刀', 'kg', 1.72, 30165],
+['2330450', '水', 'm3', 3.98, 30181],
+['2330520', '纸筋', 'kg', 0.43, 30188],
+['1630010', '801胶', 'kg', 1.54, 29903],
 ['2359999', '其它材料费(调整)', '元', 1.0, 31054]];
 
-
 const xstjpbsj = ['0304912001',
     '0304912002',
     '0304912003',
@@ -1712,20 +1734,19 @@ const xstjpbsjchai = [['0304912001', 202.0, 263],
 ['0304916007', 0.13, 38],
 ['0304916007', 0.4, 353]];
 
-const xstjpbcl = [['0101020201', '中砂', 't', 68.5, 5],
-['0101020401', '砂', 't', 59.0, 6],
-['0101070501', '轻质砂 JML', 'm3', 70.0, 12],
-['0105010201', '石灰膏', 'm3', 160.0, 38],
-['0105050201', '滑石粉', 'kg', 0.45, 41],
-['0105060402', '纸筋', 'kg', 0.5, 47],
-['0301010102', '水泥 32.5级', 'kg', 0.31, 263],
-['0301030100', '白水泥', 'kg', 0.58, 266],
-['0612070102', '水', 'm3', 4.1, 353],
-['0512010304', '钢屑', 'kg', 0.76, 864],
-['0604010302', '石油沥青30#', 'kg', 3.69, 1085],
-['0608013501', '麻刀', 'kg', 2.0, 1198],
-['0609100611', '防水剂', 'kg', 1.52, 1305]];
-   
+const xstjpbcl = [['0101020201', '中砂', 't', 66.54, 5],
+['0101020401', '砂', 't', 57.32, 6],
+['0101070501', '轻质砂 JML', 'm3',68 , 12],
+['0105010201', '石灰膏', 'm3', 155.43, 38],
+['0105050201', '滑石粉', 'kg', 0.39, 41],
+['0105060402', '纸筋', 'kg', 0.43, 47],
+['0301010102', '水泥 32.5级', 'kg', 0.26, 263],
+['0301030100', '白水泥', 'kg', 0.5, 266],
+['0612070102', '水', 'm3', 3.98, 353],
+['0512010304', '钢屑', 'kg', 0.65, 864],
+['0604010302', '石油沥青30#', 'kg', 3.16, 1085],
+['0608013501', '麻刀', 'kg', 1.72, 1198],
+['0609100611', '防水剂', 'kg', 1.3, 1305]];   
 export const addChildren = (zhuanye, bianhao, hl, bc, key) => {
     if (zhuanye == 40) {
         if (ylpbsj.includes(bianhao)) {

Some files were not shown because too many files changed in this diff