| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- import service
- import json
- import util
- def read_singledexilie2(zhuanye: int, debh: str):
- if debh.startswith("D") :
- return json.dumps({
- "reverse": "None",
- "rgde": None,
- "jxde": None,
- "clde": None,
- "actual_zhuanye": zhuanye,
- "bz_selected": {"BZBH": {}},
- "bz_selected2": {"BZBH": {}}
- }, ensure_ascii=False)
- if "-F" in debh and zhuanye == 30:
- 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("附注")
- r_debh = r_debh[:position]
- ##print(r_debh)
- result1, result2, rgde, jxde, clde, bz_selected, bz_selected2, actual_zhuanye= service.getSingleDeXilie(zhuanye, r_debh)
- ##print("get result ***************************************")
- if result1:
- result3 = json.loads(result1)
- else:
- result3 = {}
- result3["reverse"] = str(result2)
- result3["rgde"] = rgde
- result3["jxde"] = jxde
- result3["clde"] = clde
- result3["actual_zhuanye"] = actual_zhuanye
- if bz_selected != None:
- result3["bz_selected"] = json.loads(bz_selected)
- else:
- result3["bz_selected"] = {"BZBH": {}}
- if bz_selected2 != None:
- result3["bz_selected2"] = json.loads(bz_selected2)
- else:
- result3["bz_selected2"] = {"BZBH": {}}
- ####14-227+[14-228]*-2
- ####3-409*1.2
- ##print(r_debh)
- r_debh = r_debh.replace("(", "")
- r_debh = r_debh.replace("(", "")
- r_debh = r_debh.replace(")", "")
- r_debh = r_debh.replace(")", "")
- if "[" in r_debh:
- position3 = r_debh.find("*")
- coef = 1
- if position3 == -1:
- pass
- else:
- coef = r_debh[1 + position3:]
- ##print(coef)
- tail = 0
- for i in range(0, len(coef) + 1):
- if i == len(coef):
- tail = i
- break
- if (coef[i] > '9' or coef[i] < '0') and coef[i] != '-' and coef[i] != '.':
- tail = i
- break
- if tail == 0:
- ##print("1113111")
- result3["reverse"] = 'None'
- return json.dumps(service.chaifen(result3, actual_zhuanye), ensure_ascii=False)
- coef = float(coef[0:tail])
- position1 = r_debh.find("[")
- position2 = r_debh.find("]")
- if position2 == -1:
- ##print("1121111")
- result3["reverse"] = 'None'
- return json.dumps(service.chaifen(result3, actual_zhuanye), ensure_ascii=False)
- if r_debh[position1-1] == "+":
- pass
- elif r_debh[position1-1] == "-":
- coef = -coef
- else:
- ##print("111111")
- result3["reverse"] = 'None'
- return json.dumps(service.chaifen(result3, actual_zhuanye), ensure_ascii=False)
- debh = r_debh[position1+1: position2]
- if result3['GLDE']: ##csv文件里的字段,表示这个定额有没有配套的增减定额
- hit = False
- for key, value in result3['GLDE'].items():
- if debh in value:
- hit = True
- if not hit:
- result3["reverse"] = 'None'
- return json.dumps(service.chaifen(result3, actual_zhuanye), ensure_ascii=False)
- else:
- result3["reverse"] = 'None'
- return json.dumps(service.chaifen(result3, actual_zhuanye), ensure_ascii=False)
- print("解析算式,系数为" + str(coef))
- result1_, result2_, rgde_, jxde_, clde_, bz_selected_, bz_selected2_, actual_zhuanye_ = service.getSingleDeXilie(zhuanye, debh)
- if result1_:
- rgde = util.mergerg(rgde, rgde_, coef)
- jxde = util.mergejx(jxde, jxde_, coef)
- clde = util.mergecl(clde, clde_, coef)
- result3["rgde"] = rgde
- result3["jxde"] = jxde
- result3["clde"] = clde
- item_ = None
- for item in result3['DW'].keys():
- item_ = item
- result3['DEBH'] = {item_: util.cleanBM(r_debh)}
- else:
- result3["reverse"] = 'None'
- elif "*" in r_debh:##1-234*1.2
- position3 = r_debh.find("*")
- coef = 1
-
- coef = r_debh[1 + position3:]
- ##print(coef)
- tail = 0
- for i in range(0, len(coef) + 1):
- if i == len(coef):
- tail = i
- break
- if (coef[i] > '9' or coef[i] < '0') and coef[i] != '-' and coef[i] != '.':
- tail = i
- break
- if tail == 0:
- ##print("1113111")
- result3["reverse"] = 'None'
- return json.dumps(service.chaifen(result3, actual_zhuanye), ensure_ascii=False)
- coef = float(coef[0:tail])
- util.multirg(result3["rgde"], coef)
- util.multijx(result3["jxde"], coef)
- util.multicl(result3["clde"], coef)
- item_ = None
- for item in result3['DW'].keys():
- item_ = item
- result3['DEBH'] = {item_: (r_debh)}
- ##print(result3)
- return json.dumps(service.chaifen(result3, actual_zhuanye), ensure_ascii=False)
|