e6c82ee3 by 周伟奇

fix amount

1 parent 26691edc
...@@ -37,7 +37,26 @@ DEALER_CODE = 'ocr_situ_group' ...@@ -37,7 +37,26 @@ DEALER_CODE = 'ocr_situ_group'
37 37
38 # ---------银行流水模板相关-------------------------------------------------------------------------------------------- 38 # ---------银行流水模板相关--------------------------------------------------------------------------------------------
39 39
40 TRANS = str.maketrans('Cc((oODlLAsSbgE', '000000011455699') 40 TRANS_MAP = {
41 'C': "0",
42 'c': "0",
43 '(': "0",
44 '(': "0",
45 'o': "0",
46 'O': "0",
47 'D': "0",
48 '[': "1",
49 'l': "1",
50 'L': "1",
51 'A': "4",
52 's': "5",
53 'S': "5",
54 'b': "6",
55 'g': "9",
56 'E': "9",
57 'B': "13",
58 }
59 TRANS = str.maketrans(TRANS_MAP)
41 60
42 CARD_RATIO = 0.9 61 CARD_RATIO = 0.9
43 UNKNOWN_CARD = '未知卡号' 62 UNKNOWN_CARD = '未知卡号'
......
...@@ -203,6 +203,17 @@ class BSWorkbook(Workbook): ...@@ -203,6 +203,17 @@ class BSWorkbook(Workbook):
203 ms.append(row) 203 ms.append(row)
204 return ms 204 return ms
205 205
206 @staticmethod
207 def amount_format(amount_str):
208 if not isinstance(amount_str, str) or amount_str == '':
209 return amount_str
210 # 替换
211 res_str = amount_str.translate(consts.TRANS)
212 # 删除多余的-
213 res_str = res_str[0] + res_str[1:].replace('-', '')
214 # TODO 逗号与句号处理
215 return res_str
216
206 def build_month_sheet(self, card, month_mapping, ms, is_reverse): 217 def build_month_sheet(self, card, month_mapping, ms, is_reverse):
207 tmp_ws = self.create_sheet('tmp_ws') 218 tmp_ws = self.create_sheet('tmp_ws')
208 for month in sorted(month_mapping.keys()): 219 for month in sorted(month_mapping.keys()):
...@@ -235,9 +246,7 @@ class BSWorkbook(Workbook): ...@@ -235,9 +246,7 @@ class BSWorkbook(Workbook):
235 # 3.3.余额转数值 246 # 3.3.余额转数值
236 over_cell = rows[consts.OVER_IDX] 247 over_cell = rows[consts.OVER_IDX]
237 try: 248 try:
238 if isinstance(over_cell.value, str): 249 over_cell.value = locale.atof(self.amount_format(over_cell.value))
239 over_cell.value = over_cell.value.translate(consts.TRANS)
240 over_cell.value = locale.atof(over_cell.value)
241 except Exception as e: 250 except Exception as e:
242 continue 251 continue
243 else: 252 else:
...@@ -246,22 +255,16 @@ class BSWorkbook(Workbook): ...@@ -246,22 +255,16 @@ class BSWorkbook(Workbook):
246 # 3.4.金额转数值 255 # 3.4.金额转数值
247 try: 256 try:
248 try: 257 try:
249 if isinstance(amount_cell.value, str): # TODO 可在转化数字失败后,再替换 258 amount_cell.value = locale.atof(self.amount_format(amount_cell.value))
250 amount_cell.value = amount_cell.value.translate(consts.TRANS)
251 amount_cell.value = locale.atof(amount_cell.value)
252 except Exception as e: 259 except Exception as e:
253 try: 260 try:
254 if isinstance(rows[consts.INCOME_IDX].value, str): 261 amount_cell.value = locale.atof(self.amount_format(rows[consts.INCOME_IDX].value))
255 rows[consts.OUTLAY_IDX].value = rows[consts.INCOME_IDX].value.translate(consts.TRANS)
256 amount_cell.value = locale.atof(rows[consts.OUTLAY_IDX].value)
257 if amount_cell.value == 0: 262 if amount_cell.value == 0:
258 raise 263 raise
259 elif amount_cell.value < 0: 264 elif amount_cell.value < 0:
260 amount_cell.value = -amount_cell.value 265 amount_cell.value = -amount_cell.value
261 except Exception as e: 266 except Exception as e:
262 if isinstance(rows[consts.OUTLAY_IDX].value, str): 267 amount_cell.value = locale.atof(self.amount_format(rows[consts.OUTLAY_IDX].value))
263 rows[consts.OUTLAY_IDX].value = rows[consts.OUTLAY_IDX].value.translate(consts.TRANS)
264 amount_cell.value = locale.atof(rows[consts.OUTLAY_IDX].value)
265 if amount_cell.value > 0: 268 if amount_cell.value > 0:
266 amount_cell.value = -amount_cell.value 269 amount_cell.value = -amount_cell.value
267 except Exception as e: 270 except Exception as e:
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!