feat: 认定vsOA增加一般类对比(超规+一般双维度差额)
This commit is contained in:
parent
422a80c3d9
commit
631ae3f8b0
Binary file not shown.
@ -1,8 +1,8 @@
|
||||
项目名称,认定_危大方案总数,认定_超规数,所属国别,平台_匹配项目,平台_方案总数,平台_超规数,差额,匹配状态
|
||||
沙特利雅得德拉伊耶门二期多功能场馆及办公楼房建项目,5,2,沙特,沙特利雅得德拉伊耶门二期多功能场馆及办公楼房建项目,3,1,-2,✅
|
||||
沙特吉赞基础下游工业城3区1巷独栋别墅一期项目,1,0,沙特,沙特吉赞基础下游工业城3区1巷独栋别墅一期项目,3,2,2,✅
|
||||
沙特达曼港第一和第二集装箱码头升级改造工程项目,1,1,沙特,沙特达曼港第一和第二集装箱码头升级改造工程,3,2,2,✅
|
||||
阿联酋沙迦卡尔巴摩托艇码头项目,2,0,阿联酋,阿联酋沙迦卡尔巴摩托艇港开发项目,3,1,1,✅
|
||||
阿联酋迪拜马克图姆国际机场地下结构工程项目,31,12,阿联酋,阿联酋迪拜马克图姆国际机场地下结构工程项目,35,13,4,✅
|
||||
阿联酋阿布扎比哈里发港EGA泊位翻新项目,1,0,阿联酋,阿联酋阿布扎比哈里发港EGA泊位翻新工程项目,1,0,0,✅
|
||||
阿联酋阿布扎比马斯努阿岛水工项目,2,1,阿联酋,阿联酋阿布扎比马斯努阿岛水工项目,0,0,-2,✅
|
||||
项目名称,认定_危大方案总数,认定_超规数,所属国别,认定_一般数,平台_匹配项目,平台_方案总数,平台_超规数,平台_一般数,差额_超规,差额_一般,差额_合计,匹配状态
|
||||
沙特利雅得德拉伊耶门二期多功能场馆及办公楼房建项目,5,2,沙特,3,沙特利雅得德拉伊耶门二期多功能场馆及办公楼房建项目,3,1,2,-1,-1,-2,✅
|
||||
沙特吉赞基础下游工业城3区1巷独栋别墅一期项目,1,0,沙特,1,沙特吉赞基础下游工业城3区1巷独栋别墅一期项目,3,2,1,2,0,2,✅
|
||||
沙特达曼港第一和第二集装箱码头升级改造工程项目,1,1,沙特,0,沙特达曼港第一和第二集装箱码头升级改造工程,3,2,1,1,1,2,✅
|
||||
阿联酋沙迦卡尔巴摩托艇码头项目,2,0,阿联酋,2,阿联酋沙迦卡尔巴摩托艇港开发项目,3,1,2,1,0,1,✅
|
||||
阿联酋迪拜马克图姆国际机场地下结构工程项目,31,12,阿联酋,19,阿联酋迪拜马克图姆国际机场地下结构工程项目,35,13,22,1,3,4,✅
|
||||
阿联酋阿布扎比哈里发港EGA泊位翻新项目,1,0,阿联酋,1,阿联酋阿布扎比哈里发港EGA泊位翻新工程项目,1,0,1,0,0,0,✅
|
||||
阿联酋阿布扎比马斯努阿岛水工项目,2,1,阿联酋,1,阿联酋阿布扎比马斯努阿岛水工项目,0,0,0,-1,-1,-2,✅
|
||||
|
||||
|
Binary file not shown.
@ -220,18 +220,26 @@ if PLATFORM_PARQUET.exists():
|
||||
if ratio > best_ratio:
|
||||
best_ratio = ratio; best_match = plat_name
|
||||
row_dict = cert_row.to_dict()
|
||||
# 认定一般数 = 总数 - 超规
|
||||
row_dict['认定_一般数'] = row_dict['认定_危大方案总数'] - row_dict['认定_超规数']
|
||||
if best_match and best_ratio >= 0.75:
|
||||
prow = platform_counts[platform_counts['项目名称'] == best_match].iloc[0]
|
||||
row_dict['平台_匹配项目'] = best_match
|
||||
row_dict['平台_方案总数'] = int(prow['平台_方案总数'])
|
||||
row_dict['平台_超规数'] = int(prow['平台_超规数'])
|
||||
row_dict['差额'] = int(prow['平台_方案总数']) - row_dict['认定_危大方案总数']
|
||||
row_dict['平台_一般数'] = int(prow['平台_方案总数']) - int(prow['平台_超规数'])
|
||||
row_dict['差额_超规'] = int(prow['平台_超规数']) - row_dict['认定_超规数']
|
||||
row_dict['差额_一般'] = row_dict['平台_一般数'] - row_dict['认定_一般数']
|
||||
row_dict['差额_合计'] = int(prow['平台_方案总数']) - row_dict['认定_危大方案总数']
|
||||
row_dict['匹配状态'] = '✅'
|
||||
else:
|
||||
row_dict['平台_匹配项目'] = ''
|
||||
row_dict['平台_方案总数'] = 0
|
||||
row_dict['平台_超规数'] = 0
|
||||
row_dict['差额'] = -row_dict['认定_危大方案总数']
|
||||
row_dict['平台_一般数'] = 0
|
||||
row_dict['差额_超规'] = -row_dict['认定_超规数']
|
||||
row_dict['差额_一般'] = -row_dict['认定_一般数']
|
||||
row_dict['差额_合计'] = -row_dict['认定_危大方案总数']
|
||||
row_dict['匹配状态'] = '⚠️ 未匹配'
|
||||
matched.append(row_dict)
|
||||
df_result = pd.DataFrame(matched)
|
||||
|
||||
@ -110,17 +110,20 @@ write_data_sheet(s3,cert_valid.reset_index(drop=True),
|
||||
|
||||
# ════════ S4: 认定vsOA ════════
|
||||
s4=wb.create_sheet('认定vsOA')
|
||||
COMP_COLS=['项目名称','认定_危大方案总数','认定_超规数','所属国别','平台_方案总数','平台_超规数','差额','匹配状态']
|
||||
COMP_COLS=['项目名称','认定_危大方案总数','认定_超规数','认定_一般数',
|
||||
'平台_方案总数','平台_超规数','平台_一般数',
|
||||
'差额_超规','差额_一般','差额_合计','匹配状态']
|
||||
ncol_c=len(COMP_COLS)
|
||||
s4.merge_cells(start_row=1,start_column=1,end_row=1,end_column=ncol_c)
|
||||
s4.cell(1,1,f'认定 vs OA登记 项目级对比({REPORT_DATE})').font=TITLE_F; s4.cell(1,1).border=GOLD_BD
|
||||
hdr_row(s4,3,COMP_COLS)
|
||||
for ri,(_,row) in enumerate(cert_comp.iterrows()):
|
||||
for ci,col in enumerate(COMP_COLS):
|
||||
v=row[col]
|
||||
v=row.get(col,'')
|
||||
if pd.isna(v): v=''
|
||||
cell=s4.cell(ri+4,ci+1,v); cell.font=DATA_F; cell.border=BORDER
|
||||
if col=='差额' and isinstance(v,(int,float)) and v!=0:
|
||||
# 差额高亮
|
||||
if col.startswith('差额_') and isinstance(v,(int,float)) and v!=0:
|
||||
cell.font=RED_F if v<0 else GREEN_F
|
||||
if col=='匹配状态': cell.font=GREEN_F if '✅' in str(v) else DATA_F
|
||||
s4.auto_filter.ref=f'A3:{get_column_letter(ncol_c)}{len(cert_comp)+3}'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user