dedata.py 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. import service
  2. import json
  3. import util
  4. def read_singledexilie2(zhuanye: int, debh: str):
  5. if debh.startswith("D") :
  6. return json.dumps({
  7. "reverse": "None",
  8. "rgde": None,
  9. "jxde": None,
  10. "clde": None,
  11. "actual_zhuanye": zhuanye,
  12. "bz_selected": {"BZBH": {}},
  13. "bz_selected2": {"BZBH": {}}
  14. }, ensure_ascii=False)
  15. if "-F" in debh and zhuanye == 30:
  16. return service.read_singledexilie_azfy(debh)
  17. if "-F" in debh and zhuanye == 60:
  18. return service.read_singledexilie_xsazfy(debh)
  19. if debh == '19-19':
  20. return service.read_singledexilie_tjazfy(debh)
  21. if debh == '19-20':
  22. return service.read_singledexilie_tjazfy(debh)
  23. if debh == '19-21':
  24. return service.read_singledexilie_tjazfy(debh)
  25. if debh == '19-22':
  26. return service.read_singledexilie_tjazfy(debh)
  27. if debh == '19-23':
  28. return service.read_singledexilie_tjazfy(debh)
  29. if debh == '19-24':
  30. return service.read_singledexilie_tjazfy(debh)
  31. if debh == '19-25':
  32. return service.read_singledexilie_tjazfy(debh)
  33. if debh == '19-26':
  34. return service.read_singledexilie_tjazfy(debh)
  35. if debh == '19-27':
  36. return service.read_singledexilie_tjazfy(debh)
  37. if debh == '19-28':
  38. return service.read_singledexilie_tjazfy(debh)
  39. if debh == '19-29':
  40. return service.read_singledexilie_tjazfy(debh)
  41. if debh == '19-30':
  42. return service.read_singledexilie_tjazfy(debh)
  43. if debh == '19-31':
  44. return service.read_singledexilie_tjazfy(debh)
  45. if debh == '19-32':
  46. return service.read_singledexilie_tjazfy(debh)
  47. if debh == '19-33':
  48. return service.read_singledexilie_tjazfy(debh)
  49. if debh == '19-34':
  50. return service.read_singledexilie_tjazfy(debh)
  51. if debh == '19-35':
  52. return service.read_singledexilie_tjazfy(debh)
  53. if debh == '19-36':
  54. return service.read_singledexilie_tjazfy(debh)
  55. r_debh = debh.split("!")[0]
  56. if "附注" in r_debh:
  57. position = r_debh.find("附注")
  58. r_debh = r_debh[:position]
  59. ##print(r_debh)
  60. result1, result2, rgde, jxde, clde, bz_selected, bz_selected2, actual_zhuanye= service.getSingleDeXilie(zhuanye, r_debh)
  61. ##print("get result ***************************************")
  62. if result1:
  63. result3 = json.loads(result1)
  64. else:
  65. result3 = {}
  66. result3["reverse"] = str(result2)
  67. result3["rgde"] = rgde
  68. result3["jxde"] = jxde
  69. result3["clde"] = clde
  70. result3["actual_zhuanye"] = actual_zhuanye
  71. if bz_selected != None:
  72. result3["bz_selected"] = json.loads(bz_selected)
  73. else:
  74. result3["bz_selected"] = {"BZBH": {}}
  75. if bz_selected2 != None:
  76. result3["bz_selected2"] = json.loads(bz_selected2)
  77. else:
  78. result3["bz_selected2"] = {"BZBH": {}}
  79. ####14-227+[14-228]*-2
  80. ####3-409*1.2
  81. ##print(r_debh)
  82. r_debh = r_debh.replace("(", "")
  83. r_debh = r_debh.replace("(", "")
  84. r_debh = r_debh.replace(")", "")
  85. r_debh = r_debh.replace(")", "")
  86. if "[" in r_debh:
  87. position3 = r_debh.find("*")
  88. coef = 1
  89. if position3 == -1:
  90. pass
  91. else:
  92. coef = r_debh[1 + position3:]
  93. ##print(coef)
  94. tail = 0
  95. for i in range(0, len(coef) + 1):
  96. if i == len(coef):
  97. tail = i
  98. break
  99. if (coef[i] > '9' or coef[i] < '0') and coef[i] != '-' and coef[i] != '.':
  100. tail = i
  101. break
  102. if tail == 0:
  103. ##print("1113111")
  104. result3["reverse"] = 'None'
  105. return json.dumps(service.chaifen(result3, actual_zhuanye), ensure_ascii=False)
  106. coef = float(coef[0:tail])
  107. position1 = r_debh.find("[")
  108. position2 = r_debh.find("]")
  109. if position2 == -1:
  110. ##print("1121111")
  111. result3["reverse"] = 'None'
  112. return json.dumps(service.chaifen(result3, actual_zhuanye), ensure_ascii=False)
  113. if r_debh[position1-1] == "+":
  114. pass
  115. elif r_debh[position1-1] == "-":
  116. coef = -coef
  117. else:
  118. ##print("111111")
  119. result3["reverse"] = 'None'
  120. return json.dumps(service.chaifen(result3, actual_zhuanye), ensure_ascii=False)
  121. debh = r_debh[position1+1: position2]
  122. if result3['GLDE']: ##csv文件里的字段,表示这个定额有没有配套的增减定额
  123. hit = False
  124. for key, value in result3['GLDE'].items():
  125. if debh in value:
  126. hit = True
  127. if not hit:
  128. result3["reverse"] = 'None'
  129. return json.dumps(service.chaifen(result3, actual_zhuanye), ensure_ascii=False)
  130. else:
  131. result3["reverse"] = 'None'
  132. return json.dumps(service.chaifen(result3, actual_zhuanye), ensure_ascii=False)
  133. print("解析算式,系数为" + str(coef))
  134. result1_, result2_, rgde_, jxde_, clde_, bz_selected_, bz_selected2_, actual_zhuanye_ = service.getSingleDeXilie(zhuanye, debh)
  135. if result1_:
  136. rgde = util.mergerg(rgde, rgde_, coef)
  137. jxde = util.mergejx(jxde, jxde_, coef)
  138. clde = util.mergecl(clde, clde_, coef)
  139. result3["rgde"] = rgde
  140. result3["jxde"] = jxde
  141. result3["clde"] = clde
  142. item_ = None
  143. for item in result3['DW'].keys():
  144. item_ = item
  145. result3['DEBH'] = {item_: util.cleanBM(r_debh)}
  146. else:
  147. result3["reverse"] = 'None'
  148. elif "*" in r_debh:##1-234*1.2
  149. position3 = r_debh.find("*")
  150. coef = 1
  151. coef = r_debh[1 + position3:]
  152. ##print(coef)
  153. tail = 0
  154. for i in range(0, len(coef) + 1):
  155. if i == len(coef):
  156. tail = i
  157. break
  158. if (coef[i] > '9' or coef[i] < '0') and coef[i] != '-' and coef[i] != '.':
  159. tail = i
  160. break
  161. if tail == 0:
  162. ##print("1113111")
  163. result3["reverse"] = 'None'
  164. return json.dumps(service.chaifen(result3, actual_zhuanye), ensure_ascii=False)
  165. coef = float(coef[0:tail])
  166. util.multirg(result3["rgde"], coef)
  167. util.multijx(result3["jxde"], coef)
  168. util.multicl(result3["clde"], coef)
  169. item_ = None
  170. for item in result3['DW'].keys():
  171. item_ = item
  172. result3['DEBH'] = {item_: (r_debh)}
  173. ##print(result3)
  174. return json.dumps(service.chaifen(result3, actual_zhuanye), ensure_ascii=False)