预算对比页面增加项目总额列

main
tangxiaoxuan 10 months ago
commit 3aa284c96e

@ -0,0 +1,496 @@
/**
*
* Copyright (c) 2001-2018 .
* ,.
*
*/
package com.engine.fna.cmd.budgeting;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang.StringEscapeUtils;
import weaver.conn.RecordSet;
import weaver.fna.general.FnaCommon;
import weaver.fna.general.FnaSplitPageTransmethod;
import weaver.fna.maintenance.BudgetfeeTypeComInfo;
import weaver.fna.maintenance.FnaBudgetInfoComInfo;
import weaver.fna.maintenance.FnaSystemSetComInfo;
import weaver.general.BaseBean;
import weaver.general.SplitPageParaBean;
import weaver.general.SplitPageUtil;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.resource.ResourceComInfo;
import weaver.systeminfo.SystemEnv;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.core.interceptor.CommandContext;
import com.engine.fna.entity.RowInfo;
/**
* @author xuf
* @date 2018-5-23
*
*/
public class GetBudgetCompareDataListCmd extends AbstractCommonCommand<Map<String, Object>>{
/**
*
*/
@Override
public BizLogContext getLogContext() {
return null;
}
/**
*
* @param params
* @param user
*/
public GetBudgetCompareDataListCmd(Map<String, Object> params, User user){
this.params = params;
this.user = user;
}
/**
* Command
* @param commandContext
* @return
*/
@Override
public Map<String, Object> execute(CommandContext commandContext) {
Map<String,Object> datas = new HashMap<String,Object>();
List<RowInfo> rowInfoList = new ArrayList<RowInfo>();
Map<String,Object> versionFirstMap = new HashMap<String,Object>();//预算总额版本一
Map<String,Object> versionSecondMap = new HashMap<String,Object>();//预算总额版本二
Map<String,Object> changeBudgetMap = new HashMap<String,Object>();//变更差额
RecordSet rs = new RecordSet();
String organizationtype = Util.null2String(params.get("organizationtype"));//组织类型
String organizationid = Util.null2String(params.get("organizationid"));//组织ID
//String[] historyRevisionArray = params.getValues("historyRevision");//要对比的两个预算版本id
int budgetinfoid_1 = Util.getIntValue(Util.null2String(params.get("budgetinfoid_1")), -1);
int budgetinfoid_2 = Util.getIntValue(Util.null2String(params.get("budgetinfoid_2")), -1);
String tabFeeperiod = Util.null2String(params.get("tabFeeperiod")).trim();//打开预算周期tab页类型
if("".equals(tabFeeperiod)){
tabFeeperiod = "M";
}
FnaSystemSetComInfo fnaSystemSetComInfo = new FnaSystemSetComInfo();
int budgetperiods = Util.getIntValue(Util.null2String(params.get("budgetperiods")), 0);//预算年度ID因为不会跨年比较预算版本所以只需要一个
//定位 数据库表名
String tableName_FnaBudgetInfo = "FnaBudgetInfo";
String tableName_FnaBudgetInfoDetail = "FnaBudgetInfoDetail";
//String guid1 = Util.null2String(params.get("guid1")).trim();
String nameQuery = Util.null2String(params.get("nameQuery"));
int qCount = 0;
int feeperiod = 0;
if("M".equals(tabFeeperiod)){
qCount = 12;
feeperiod = 1;
}else if("Q".equals(tabFeeperiod)){
qCount = 4;
feeperiod = 2;
}else if("H".equals(tabFeeperiod)){
qCount = 2;
feeperiod = 3;
}else if("Y".equals(tabFeeperiod)){
qCount = 1;
feeperiod = 4;
}
DecimalFormat df = new DecimalFormat("####################################################0.00");
FnaSplitPageTransmethod fnaSplitPageTransmethod = new FnaSplitPageTransmethod();
FnaBudgetInfoComInfo fnaBudgetInfoComInfo = new FnaBudgetInfoComInfo();
int revision1 = -1;
int status1 = -1;
double sum_budgetaccount1 = 0.00;
String sql = "select a.revision, a.status, SUM(b.budgetaccount) sum_budgetaccount "+
" from "+tableName_FnaBudgetInfo+" a "+
" JOIN "+tableName_FnaBudgetInfoDetail+" b ON a.id = b.budgetinfoid "+
" where a.id = "+budgetinfoid_1+" "+
" GROUP BY a.revision, a.status ";
rs.executeSql(sql);
if(rs.next()){
revision1 = rs.getInt("revision");
status1 = rs.getInt("status");
sum_budgetaccount1 = Util.getDoubleValue(df.format(Util.getDoubleValue(rs.getString("sum_budgetaccount"))), 0.00);
}
String revision1Name = "V"+revision1;
if(revision1==0){
revision1Name=SystemEnv.getHtmlLabelName(220,user.getLanguage());//草稿
}
if(status1==3){
revision1Name=SystemEnv.getHtmlLabelName(2242,user.getLanguage());//待审批
}
int revision2 = -1;
int status2 = -1;
double sum_budgetaccount2 = 0.00;
sql = "select a.revision, a.status, SUM(b.budgetaccount) sum_budgetaccount "+
" from "+tableName_FnaBudgetInfo+" a "+
" JOIN "+tableName_FnaBudgetInfoDetail+" b ON a.id = b.budgetinfoid "+
" where a.id = "+budgetinfoid_2+" "+
" GROUP BY a.revision, a.status ";
rs.executeSql(sql);
if(rs.next()){
revision2 = rs.getInt("revision");
status2 = rs.getInt("status");
sum_budgetaccount2 = Util.getDoubleValue(df.format(Util.getDoubleValue(rs.getString("sum_budgetaccount"))), 0.00);
}
String revision2Name = "V"+revision2;
if(revision2==0){
revision2Name=SystemEnv.getHtmlLabelName(220,user.getLanguage());//草稿
}
if(status2==3){
revision2Name=SystemEnv.getHtmlLabelName(2242,user.getLanguage());//待审批
}
BudgetfeeTypeComInfo budgetfeeTypeComInfo = new BudgetfeeTypeComInfo();
boolean showHiddenSubject = 1==Util.getIntValue(fnaSystemSetComInfo.get_showHiddenSubject());
boolean subjectFilter = 1==Util.getIntValue(fnaSystemSetComInfo.get_subjectFilter());
String separator = Util.null2String(fnaSystemSetComInfo.get_separator());
if("".equals(separator)){
separator = "/";
}
int pageIndex = Util.getIntValue(Util.null2String(params.get("pageIndex")), 1);
int pageSize = Util.getIntValue(Util.null2String(params.get("pageSize")), -1);
pageSize = FnaCommon.getAndSaveFnaBudgetInfoPageSize(pageSize, 50, user.getUID());
int sqlCondOrgType4ftRul = Util.getIntValue(organizationtype);
int sqlCondOrgId4ftRul = Util.getIntValue(organizationid);
if(Util.getIntValue(organizationtype)==3){//个人预算
try {
ResourceComInfo rci = new ResourceComInfo();
sqlCondOrgType4ftRul = 2;
sqlCondOrgId4ftRul = Util.getIntValue(rci.getDepartmentID(organizationid));
} catch (Exception e) {
e.printStackTrace();
}
}
SplitPageParaBean splitPageParaBean = new SplitPageParaBean();
SplitPageUtil splitPageUtil = new SplitPageUtil();
StringBuffer sql_rs_split = new StringBuffer();
sql_rs_split.append("select DISTINCT b2.id b2id, b2.name b2name, b2.codeName b2codeName, b2.feelevel b2feelevel, b2.Archive b2Archive, b2.alertvalue b2Alertvalue, b2.isEditFeeType b2IsEditFeeType, b2.displayOrder b2displayOrder, \n");
sql_rs_split.append(" b3.id b3id, b3.name b3name, b3.codeName b3codeName, b3.feelevel b3feelevel, b3.Archive b3Archive, b3.alertvalue b3Alertvalue, b3.isEditFeeType b3IsEditFeeType, b3.displayOrder b3displayOrder \n");
sql_rs_split.append(" from Fnabudgetfeetype b2 ");
sql_rs_split.append(" join FnaBudgetfeeType b3 on b2.id = b3.groupCtrlId \n");
sql_rs_split.append(" where 1=1 \n");
if(subjectFilter){
sql_rs_split.append(" and ( \n"+
" not exists (select 1 from FnabudgetfeetypeRuleSet ftRul \n"+
" where ftRul.type = "+sqlCondOrgType4ftRul+" and ftRul.mainid = b3.id ) \n"+
" or \n"+
" exists (select 1 from FnabudgetfeetypeRuleSet ftRul \n"+
" where ftRul.type = "+sqlCondOrgType4ftRul+" and ftRul.orgid = "+sqlCondOrgId4ftRul+" and ftRul.mainid = b3.id ) \n"+
" ) \n");
}
if(!"".equals(nameQuery)){
sql_rs_split.append(" and (b3.name like '%"+StringEscapeUtils.escapeSql(nameQuery)+"%') \n");
}
if(!showHiddenSubject){
sql_rs_split.append(" and (b3.archive is null or b3.archive=0) ");
}
sql_rs_split.append(" and b3.feeperiod = "+feeperiod+" and b3.isEditFeeType = 1 ");
String backFields = " t1.* ";
String sqlFrom = " from ("+sql_rs_split.toString()+") t1 ";
String SqlOrderBy = " t1.b2feelevel, t1.b2displayOrder, t1.b2codeName, t1.b2name, t1.b3feelevel, t1.b3displayOrder, t1.b3codeName, t1.b3name ";
String primaryKey = " b3id ";
splitPageParaBean.setBackFields(backFields);
splitPageParaBean.setSqlFrom(sqlFrom);
splitPageParaBean.setPrimaryKey(primaryKey);
splitPageParaBean.setSqlOrderBy(SqlOrderBy);
splitPageParaBean.setSortWay(splitPageParaBean.ASC);
splitPageParaBean.setDistinct(true);
splitPageUtil.setSpp(splitPageParaBean);
List<String> currentPage_isEditFeeTypeIds_list = new ArrayList<String>();
StringBuffer currentPage_isEditFeeTypeIds = new StringBuffer("-1");
RecordSet rs_split = splitPageUtil.getCurrentPageRs(pageIndex, pageSize);
while(rs_split.next()){
int b3id = rs_split.getInt("b3id");
if(!currentPage_isEditFeeTypeIds_list.contains(b3id+"")){
currentPage_isEditFeeTypeIds_list.add(b3id+"");
currentPage_isEditFeeTypeIds.append(","+b3id);
}
}
List<String> sqlCond_currentPage_isEditFeeTypeIds_list = FnaCommon.initData1(currentPage_isEditFeeTypeIds_list);
int sqlCond_currentPage_isEditFeeTypeIds_list_len = sqlCond_currentPage_isEditFeeTypeIds_list.size();
int rsAllCnt = splitPageUtil.getRecordCount();//currentPageAllB3IdList.size();
int maxPageIndex = (rsAllCnt / pageSize) + ((rsAllCnt % pageSize)>0?1:0);
if(pageIndex > maxPageIndex){
pageIndex = maxPageIndex;
}
//bb.writeLog("5 FnaBudgetViewData.jsp>>>"+SDF.format(Calendar.getInstance().getTime()));
//得到指定范围内所有三级科目整期预算
HashMap<String, Map> b3BudgetTypeAmountHm_1 = fnaBudgetInfoComInfo.getBudgetAmountBySubjects_isEditFeeType(budgetinfoid_1, currentPage_isEditFeeTypeIds.toString(), budgetperiods);
HashMap<String, Map> b3BudgetTypeAmountHm_2 = fnaBudgetInfoComInfo.getBudgetAmountBySubjects_isEditFeeType(budgetinfoid_2, currentPage_isEditFeeTypeIds.toString(), budgetperiods);
List<String> b2id_distinct_list = new ArrayList<String>();
List<String> b3id_list = new ArrayList<String>();
StringBuffer sql2 = new StringBuffer();
sql2.append("select distinct b3.id b3id, b3.feelevel b3feelevel, b3.displayOrder b3displayOrder, b3.codeName b3codeName, b3.name b3name, b3.Archive b3Archive,b3.alertvalue b3Alertvalue, \n");
sql2.append(" b2.id b2id, b2.feelevel b2feelevel, b2.displayOrder b2displayOrder, b2.codeName b2codeName, b2.name b2name, b2.Archive b2Archive \n");
sql2.append("from FnaBudgetfeeType b3 \n");
sql2.append("join FnaBudgetfeeType b2 on b2.id = b3.groupCtrlId \n");
sql2.append("where b3.feeperiod = "+feeperiod+" ");
sql2.append("and (1=2 \n");
for(int i=0;i<sqlCond_currentPage_isEditFeeTypeIds_list_len;i++){
sql2.append(" or b3.id in ("+sqlCond_currentPage_isEditFeeTypeIds_list.get(i)+") \n");
}
sql2.append(") \n");
sql2.append("ORDER BY b2.feelevel, b2.displayOrder, b2.codeName, b2.name, b2.id, b3.feelevel, b3.displayOrder, b3.codeName, b3.name, b3.id ");
//new BaseBean().writeLog(sql2.toString());
rs.executeSql(sql2.toString());
while(rs.next()){
String b2name = Util.null2String(rs.getString("b2name")).trim();
String b2id = Util.null2String(rs.getString("b2id")).trim();
boolean b2Archive = 1==Util.getIntValue(rs.getString("b2Archive"), 0);
String b3id = Util.null2String(rs.getString("b3id")).trim();
boolean b3Archive = 1==Util.getIntValue(rs.getString("b3Archive"), 0);
String b3Alertvalue = Util.null2String(rs.getString("b3Alertvalue")).trim();
String b3name = "";
if(!b2id.equals(b3id)){
b3name = budgetfeeTypeComInfo.getSubjectPartName(b3id, b2id, separator);
}else{
b3name = budgetfeeTypeComInfo.getSubjectFullName(b3id, separator);
}
RowInfo rowInfo = new RowInfo();
rowInfo.setSubjectId(b3id);
if(b2id.equals(b3id)){
rowInfo.setShowBottomLine(true);
}else{
b3id_list.add(b3id);
String b3idStr = budgetfeeTypeComInfo.getAllGroupCtrl1AndisEditFeeType1_subjectIds(b2id);
String[] b3idArray = b3idStr.split(",");
if(b3id_list.size() == b3idArray.length){
rowInfo.setShowBottomLine(true);
b3id_list.clear();
}
}
if(!b2id_distinct_list.contains(b2id)){
if(!b2id.equals(b3id)){
if(b2Archive){
b2name = budgetfeeTypeComInfo.getSubjectFullName(Util.getIntValues(b2id), separator)+"<font color=\"red\">("+SystemEnv.getHtmlLabelName(22151,user.getLanguage())+")</font>";//封存
}else{
b2name = budgetfeeTypeComInfo.getSubjectFullName(Util.getIntValues(b2id), separator);
}
/**统一费控的科目赋值*/
rowInfo.setGroupctrlId(b2id);
rowInfo.setGroupctrlSubjectName(b2name);
rowInfo.setShowGroupctrl(true);
}
}
b2id_distinct_list.add(b2id);
if(b3Archive){
rowInfo.setArchive(true);
rowInfo.setArchiveHtml("<span style=\"font-weight: bold;color: red;\">("+SystemEnv.getHtmlLabelName(22151,user.getLanguage())+")</span>");//封存
}
//得到某科目整期预算
Map budgetTypeAmount1 = b3BudgetTypeAmountHm_1.get(b3id);
if(budgetTypeAmount1==null){
budgetTypeAmount1 = new HashMap();
}
Map budgetTypeAmount2 = b3BudgetTypeAmountHm_2.get(b3id);
if(budgetTypeAmount2==null){
budgetTypeAmount2 = new HashMap();
}
double _sum_ysze1 = 0.00;
double _sum_ysze2 = 0.00;
String _sum_pro1 = "";
String _sum_pro2 = "";
/**预算总额V1*/
rowInfo.setSubjectName(b3name);
rowInfo.setVersionFirstName(SystemEnv.getHtmlLabelName(18501,user.getLanguage())+"("+revision1Name+")");//预算总额 V1
for(int i = 1; i <= qCount; i++){
//预算总额
double _ysze1 = Util.getDoubleValue((String)budgetTypeAmount1.get(i+""), 0.00);
//预算总额
double _ysze2 = Util.getDoubleValue((String)budgetTypeAmount2.get(i+""), 0.00);
_sum_ysze1 = Util.getDoubleValue(df.format(_sum_ysze1 + _ysze1));
String versionFirstStr = fnaSplitPageTransmethod.fmtAmountQuartile(_ysze1);
if(_ysze2 != _ysze1){
//colorRed2 = "background-color: yellow;";
versionFirstStr = "<span style='background-color: yellow;'>" + fnaSplitPageTransmethod.fmtAmountQuartile(_ysze1) + "</span>";
}
versionFirstMap.put("subject_"+b3id+"_"+i, versionFirstStr);
}
versionFirstMap.put("subject_"+b3id+"_ALL", fnaSplitPageTransmethod.fmtAmountQuartile(_sum_ysze1));
JSONArray jsonArray1 = getSumProjectArrays(budgetinfoid_1, tableName_FnaBudgetInfoDetail);
JSONArray jsonArray2 = getSumProjectArrays(budgetinfoid_2, tableName_FnaBudgetInfoDetail);
int jsonArray1Size = jsonArray1.size();
int jsonArray2Size = jsonArray2.size();
for(int i=0; i<jsonArray1Size; i++) {
JSONObject jsonObject = jsonArray1.getJSONObject(i);
String budgettypeid = Util.null2String(jsonObject.getString("subjectId")).trim(); //科目ID
if(b3id.equals(budgettypeid)) {
_sum_pro1 = jsonObject.getString("sum");
break;
}
}
for(int i=0; i<jsonArray2Size; i++) {
JSONObject jsonObject = jsonArray2.getJSONObject(i);
String budgettypeid = Util.null2String(jsonObject.getString("subjectId")).trim(); //科目ID
if(b3id.equals(budgettypeid)) {
_sum_pro2 = jsonObject.getString("sum");
break;
}
}
String proFirstStr = fnaSplitPageTransmethod.fmtAmountQuartile(_sum_pro1);
if(!_sum_pro1.equals(_sum_pro2)){
//colorRed2 = "background-color: yellow;";
proFirstStr = "<span style='background-color: yellow;'>" + _sum_pro1 + "</span>";
}
versionFirstMap.put("subject_"+b3id+"_PRO", proFirstStr);
/**预算总额V2*/
rowInfo.setVersionSecondName(SystemEnv.getHtmlLabelName(18501,user.getLanguage())+"("+revision2Name+")");//预算总额V2
for(int i = 1; i <= qCount; i++){
//预算总额
double _ysze1 = Util.getDoubleValue((String)budgetTypeAmount1.get(i+""), 0.00);
//预算总额
double _ysze2 = Util.getDoubleValue((String)budgetTypeAmount2.get(i+""), 0.00);
_sum_ysze2 = Util.getDoubleValue(df.format(_sum_ysze2 + _ysze2));
String versionSecondStr = fnaSplitPageTransmethod.fmtAmountQuartile(_ysze2);
if(_ysze2 != _ysze1){
versionSecondStr = "<span style='background-color: yellow;'>" + fnaSplitPageTransmethod.fmtAmountQuartile(_ysze2) + "</span>";
}
versionSecondMap.put("subject_"+b3id+"_"+i, versionSecondStr);
}
versionSecondMap.put("subject_"+b3id+"_ALL", fnaSplitPageTransmethod.fmtAmountQuartile(_sum_ysze2));
String proSecondStr = fnaSplitPageTransmethod.fmtAmountQuartile(_sum_pro2);
if(!_sum_pro1.equals(_sum_pro2)){
//colorRed2 = "background-color: yellow;";
proSecondStr = "<span style='background-color: yellow;'>" + _sum_pro2 + "</span>";
}
versionSecondMap.put("subject_"+b3id+"_PRO", proSecondStr);
/**变更差额*/
rowInfo.setChangeBudgetName(SystemEnv.getHtmlLabelName(18751,user.getLanguage()));//变更差额
for(int i = 1; i <= qCount; i++){
//预算总额
double _ysze1 = Util.getDoubleValue((String)budgetTypeAmount1.get(i+""), 0.00);
double _ysze2 = Util.getDoubleValue((String)budgetTypeAmount2.get(i+""), 0.00);
double _ysze_diff = _ysze1 - _ysze2;
String changeBudgetStr = fnaSplitPageTransmethod.fmtAmountQuartile(_ysze_diff);
if(_ysze_diff > 0){
changeBudgetStr = "<font color='blue'>" + fnaSplitPageTransmethod.fmtAmountQuartile(_ysze_diff) + "</font>";
}else if(_ysze_diff < 0){
changeBudgetStr = "<font color='red'>" + fnaSplitPageTransmethod.fmtAmountQuartile(_ysze_diff) + "</font>";
}
changeBudgetMap.put("subject_"+b3id+"_"+i, changeBudgetStr);
}
double _sum_ysze_diff = _sum_ysze1 - _sum_ysze2;
String changeBudgetSumStr = fnaSplitPageTransmethod.fmtAmountQuartile(_sum_ysze_diff);
if(_sum_ysze_diff > 0){
changeBudgetSumStr = "<font color='blue'>" + fnaSplitPageTransmethod.fmtAmountQuartile(_sum_ysze_diff) + "</font>";
}else if(_sum_ysze_diff < 0){
changeBudgetSumStr = "<font color='red'>" + fnaSplitPageTransmethod.fmtAmountQuartile(_sum_ysze_diff) + "</font>";
}
changeBudgetMap.put("subject_"+b3id+"_ALL", changeBudgetSumStr);
String changeProSumStr = "";
if (!_sum_pro1.equals("")) {
double _sum_pro_diff = Double.parseDouble(_sum_pro1) - Double.parseDouble(_sum_pro2);
changeProSumStr = fnaSplitPageTransmethod.fmtAmountQuartile(_sum_pro_diff);
if (_sum_pro_diff > 0) {
changeProSumStr = "<font color='blue'>" + fnaSplitPageTransmethod.fmtAmountQuartile(_sum_pro_diff) + "</font>";
} else if (_sum_pro_diff < 0) {
changeProSumStr = "<font color='red'>" + fnaSplitPageTransmethod.fmtAmountQuartile(_sum_pro_diff) + "</font>";
}
}
changeBudgetMap.put("subject_"+b3id+"_PRO", changeProSumStr);
rowInfoList.add(rowInfo);
}
datas.put("pageIndex", pageIndex);
datas.put("pageSize", pageSize);
datas.put("rsAllCnt",rsAllCnt);
datas.put("qCount", qCount);
datas.put("rowInfoList", rowInfoList);
datas.put("versionFirstMap", versionFirstMap);
datas.put("versionSecondMap", versionSecondMap);
datas.put("changeBudgetMap", changeBudgetMap);
return datas;
}
/**
*
* @param budgetinfoid
* @return
*/
public JSONArray getSumProjectArrays(int budgetinfoid, String tableName_FnaBudgetInfoDetail) {
DecimalFormat df = new DecimalFormat("####################################################0.00");
JSONArray jsonArray = new JSONArray();
String budgettypeid = "";
String sumProject = "";
String sql = "SELECT distinct budgettypeid, sumProject FROM " + tableName_FnaBudgetInfoDetail + " WHERE budgetinfoid=? ";
RecordSet rs = new RecordSet();
rs.executeQuery(sql,budgetinfoid);
while(rs.next()) {
budgettypeid = Util.null2String(rs.getString("budgettypeid")).trim(); //科目ID
sumProject = Util.null2String(rs.getString("sumProject")).trim(); //科目的项目总额
JSONObject jsonObject = new JSONObject();
jsonObject.put("subjectId",budgettypeid);
jsonObject.put("sum",df.format(Util.getDoubleValue(sumProject,0)));
jsonArray.add(jsonObject);
}
return jsonArray;
}
}

@ -0,0 +1,340 @@
import React from 'react';
import { inject, observer } from 'mobx-react';
import { WeaErrorPage, WeaTools, WeaNewScroll, WeaLocaleProvider } from 'ecCom';
import { Pagination } from 'antd';
import * as mobx from 'mobx'
import { getBrowserVersion } from '../../util/common';
const getLabel = WeaLocaleProvider.getLabel;
@inject('budgetingStore')
@observer
class BudgetingCompare extends React.Component {
constructor(props) {
super(props);
this.state = {
showGroupHeight: true,
budgetConditionHeight: 0
};
}
componentDidMount() {
}
componentWillReceiveProps(nextProps) {
}
shouldComponentUpdate(nextProps, nextState) {
return true;
}
componentWillUnmount() {
//组件卸载时一般清理一些状态
}
render() {
const { budgetingStore } = this.props;
const { pageIndex, pageSize, rsAllCnt, qCount, compareData, updata } = budgetingStore;
const { versionFirstMap, versionSecondMap, changeBudgetMap, leftTreeOnOff, leftTreeWidth, leftTreeOnOff_middle } = budgetingStore;
let contentHeigh = jQuery(".wea-new-top-content").height();
let budgetTabHeight = jQuery(".fna_budget_tab").height();
let tabHeight = jQuery(".ant-row.wea-title").height(); //基本信息 搜索面板
let budgetPeriodHeight = jQuery(".fna_budget_period_tab").height();
let pageHeight = jQuery(".fna_page").height();
let budgetHeight = 0;
if (this.state.showGroupHeight && jQuery(".fna_budget_condition").height()) {
this.setState({
showGroupHeight: false,
budgetConditionHeight: jQuery(".fna_budget_condition").height()
})
}
if (updata) {
budgetHeight = contentHeigh - budgetTabHeight - this.state.budgetConditionHeight - tabHeight - budgetPeriodHeight - pageHeight - 15;
} else {
budgetHeight = contentHeigh - budgetTabHeight - tabHeight - budgetPeriodHeight - pageHeight - 15;
}
let leftData = []; //左边固定列内容
let dateGroup = [];//日期列
let subjectGroup = [];//科目行 List<subjectInfo>
let dateGroup2 = []; //日期列
let widthLength = '100%';
if (qCount == 12) {
widthLength = '2400px';
}
for (let i = 1; i <= qCount; i++) {
dateGroup.push(<th span={12 / qCount}>{i}{getLabel(15372, '期')}</th>);
dateGroup2.push(<th style={{ 'border-bottom': '1px solid #e2ecf2' }} span={12 / qCount} class='thead_data'>{i}{getLabel(15372, '期')}</th>);
}
compareData.forEach(dataObj => {
let subjectId = dataObj.subjectId;
//let archive = dataObj.archive;//封存
let archiveHtml = dataObj.archiveHtml;
let showGroupctrl = dataObj.showGroupctrl;//显示下级统一费控
let groupctrlId = dataObj.groupctrlId;
let showBottomLine = dataObj.showBottomLine;
let styleStr = {};
let styleHideBorder = {};
if (showBottomLine) {
styleStr = { 'border-bottom': '1px solid #A9A9A9' };
styleHideBorder = { 'border-bottom': '1px solid transparent' };
}
let versionFirstGroup = [];
let versionSecondGroup = [];
let changeBudgetGroup = [];
let sumGroup = [];
for (let i = 1; i <= qCount; i++) {
let versionFirstAmount = versionFirstMap['subject_' + subjectId + '_' + i];
let versionSecondAmount = versionSecondMap['subject_' + subjectId + '_' + i];
let changeBudgetAmount = changeBudgetMap['subject_' + subjectId + '_' + i];
//<div dangerouslySetInnerHTML={{__html: record.otherIdspan}}/>
if (showGroupctrl) {
sumGroup.push(<td className="fna_amount fna_budget_Subject" span={12 / qCount}>&nbsp;</td>);
}
versionFirstGroup.push(<td className="fna_amount" span={12 / qCount}><div dangerouslySetInnerHTML={{ __html: versionFirstAmount }} /></td>);
versionSecondGroup.push(<td className="fna_amount" span={12 / qCount}><div dangerouslySetInnerHTML={{ __html: versionSecondAmount }} /></td>);
changeBudgetGroup.push(<td style={styleStr} className="fna_amount" span={12 / qCount}><div dangerouslySetInnerHTML={{ __html: changeBudgetAmount }} /></td>);
}
if (showGroupctrl) {
sumGroup.push(<td className="fna_amount fna_budget_Subject" span={4}></td>);
}
let changeBudgetSum = changeBudgetMap['subject_' + subjectId + '_ALL'];
let leftTab_width;
let rightTab_width;
if (leftTreeOnOff && leftTreeOnOff_middle) {
leftTab_width = ((jQuery('body').width() - leftTreeWidth - leftTreeWidth) * 0.3 * 0.55);
rightTab_width = ((jQuery('body').width() - leftTreeWidth - leftTreeWidth) * 0.3 * 0.40);
} else if (leftTreeOnOff || leftTreeOnOff_middle) {
leftTab_width = jQuery('.e9theme-bs-main') ? ((jQuery('body').width() - leftTreeWidth) * 0.3 * 0.55) : ((jQuery('body').width() - leftTreeWidth) * 0.3 * 0.55);
rightTab_width = jQuery('.e9theme-bs-main') ? ((jQuery('body').width() - leftTreeWidth) * 0.3 * 0.40) : ((jQuery('body').width() - leftTreeWidth) * 0.3 * 0.40);
} else {
leftTab_width = jQuery('.e9theme-bs-main') ? ((jQuery('body').width()) * 0.3 * 0.55) : ((jQuery('body').width()) * 0.3 * 0.55);
rightTab_width = jQuery('.e9theme-bs-main') ? ((jQuery('body').width()) * 0.3 * 0.40) : ((jQuery('body').width()) * 0.3 * 0.40);
}
versionFirstGroup.push(<td className="fna_amount" span={4}>{versionFirstMap['subject_' + subjectId + '_ALL']}</td>);
versionSecondGroup.push(<td className="fna_amount" span={4}>{versionSecondMap['subject_' + subjectId + '_ALL']}</td>);
changeBudgetGroup.push(<td style={styleStr} className="fna_amount" span={4}><div dangerouslySetInnerHTML={{ __html: changeBudgetSum }} /></td>);
// 版本比对项目预算value
versionFirstGroup.push(<td className="fna_amount" span={4}>{versionFirstMap['subject_' + subjectId + '_PRO']}</td>);
versionSecondGroup.push(<td className="fna_amount" span={4}>{versionSecondMap['subject_' + subjectId + '_PRO']}</td>);
changeBudgetGroup.push(<td style={styleStr} className="fna_amount" span={4}><div dangerouslySetInnerHTML={{ __html: changeBudgetMap['subject_' + subjectId + '_PRO'] }} /></td>);
if (showGroupctrl) {
subjectGroup.push(<tr className="fna_tr">{sumGroup}</tr>);
leftData.push(
<tr className="fna_tr">
<td className="fna_budget_Subject fna_budget_Subject_padding" title={dataObj.groupctrlSubjectName} >
<div dangerouslySetInnerHTML={{ __html: dataObj.groupctrlSubjectName }} style={{ width: (leftTab_width - 50), overflow: 'hidden', 'text-overflow': 'ellipsis', 'white-space': 'nowrap' }} />
</td>
<td className="fna_budget_Subject" style={{ width: '40%' }}></td>
</tr>);
}
subjectGroup.push(<tr className="fna_tr_info">{versionFirstGroup}</tr>);
subjectGroup.push(<tr className="fna_tr_info">{versionSecondGroup}</tr>);
subjectGroup.push(<tr className="fna_tr">{changeBudgetGroup}</tr>);
let isChromeStyle = { width: (leftTab_width - 50), overflow: 'hidden', 'text-overflow': 'ellipsis', '-webkit-line-clamp': '3', 'display': '-webkit-box', '-webkit-box-orient': 'vertical' };
let notChromeStyle = { width: (leftTab_width - 50), overflow: 'hidden', 'text-overflow': 'ellipsis', height: '90px' };
let isChrome = getBrowserVersion() === 'Chrome' ? isChromeStyle : notChromeStyle;
leftData.push(<tr className="fna_tr_info">
<td className="fna_budget_Subject fna_budget_Subject_padding" span={4} title={dataObj.subjectName} style={{ 'border-bottom': '1px solid #A9A9A9' }} rowspan="3">
<div style={isChrome}>
{dataObj.subjectName}
</div>
</td>
{/* <td span={4}>{dataObj.versionFirstName}</td> */}
<td span={4} title={dataObj.versionFirstName}>
<div dangerouslySetInnerHTML={{ __html: dataObj.versionFirstName }} style={{ width: (rightTab_width - 50), overflow: 'hidden', 'text-overflow': 'ellipsis', 'white-space': 'nowrap' }} />
</td>
</tr>);
// leftData.push(
// <tr className="fna_tr_info">
// <td className="fna_budget_Subject" span={4}><div dangerouslySetInnerHTML={{__html: archiveHtml}}/></td>
// <td span={4}>{dataObj.versionSecondName}</td>
// </tr>);
leftData.push(
<tr className="fna_tr_info">
<td span={4} title={dataObj.versionSecondName}>
<div dangerouslySetInnerHTML={{ __html: dataObj.versionSecondName }} style={{ width: (rightTab_width - 50), overflow: 'hidden', 'text-overflow': 'ellipsis', 'white-space': 'nowrap' }} />
</td>
</tr>);
// leftData.push(
// <tr className="fna_tr">
// <td style={styleStr} span={4}></td>
// <td style={styleStr} span={4}>{dataObj.changeBudgetName}</td>
// </tr>);
leftData.push(
<tr className="fna_tr">
<td style={styleStr} span={4} title={dataObj.changeBudgetName}>
<div dangerouslySetInnerHTML={{ __html: dataObj.changeBudgetName }} style={{ width: (rightTab_width - 50), overflow: 'hidden', 'text-overflow': 'ellipsis', 'white-space': 'nowrap' }} />
</td>
</tr>);
});
let dataList = [];
let actual_width;
let top_div_width;
if (qCount == '12') {
top_div_width = '135'
actual_width = '1755px';
top_div_width = 100 / 14;
} else {
let width = jQuery('.tabTopRight').width();
//top_div_width = width/(qCount+1);
top_div_width = 100 / (qCount + 2);
actual_width = '100%';
}
jQuery('.editRight').scroll(function () {
jQuery('.dataListMove').css('left', -jQuery('.editRight').scrollLeft());
jQuery('.editLeftTab').css('top', -jQuery('.editRight').scrollTop());
})
for (let i = 1; i <= qCount; i++) {
dataList.push(<div style={{ width: top_div_width + '%' }}>{i}{getLabel(15372, '期')}</div>);
}
let DivContent = [
<div style={{ width: '100%', overflow: 'hidden' }}>
<div class='tabTop'>
<div class='tabTopLeft' style={{ width: '30%', position: 'relative', top: '0', left: '0', 'z-index': '999' }}>
<div style={{ width: '100%' }} className="fna_tr_first">
<div class='tabTop_subject' style={{ width: '55%' }}>{getLabel(15409, '科目名称')}</div>
<div class='tabTop_statistical' style={{ width: '45%' }}>{getLabel(16893, '统计项')}</div>
</div>
</div>
<div style={{ width: '70%', overflow: 'hidden', background: '#f7fbfe' }}>
<div style={{ width: '100%', overflow: 'auto', position: 'relative', top: '0px' }} className="fna_tr_first tabTopRight">
<div style={{ width: actual_width, position: 'relative', left: '0', top: '-8px' }} className='dataListMove'>
{dataList}
<div class='tabTop_all' style={{ width: (top_div_width - 1) + '%' }}>{getLabel(1013, '全年')}</div>
<div class='tabTop_all' style={{ width: (top_div_width - 1) + '%' }}>项目总额</div>
</div>
</div>
</div>
</div>
<div class='editLeft' style={{ width: '30%', 'max-height': (budgetHeight - 30) }}>
<table class='editLeftTab' cellPadding='0' cellSpacing='0' style={{ width: '100%', borderRight: '1px solid #A9A9A9', position: 'relative', top: '0', left: '0', borderCollapse: 'collapse' }}>
{leftData}
</table>
</div>
<div class='editRight' style={{ 'max-height': (budgetHeight - 30), overflow: 'auto' }}>
<table class='editRightTab' cellPadding='0' cellSpacing='0' style={{ width: actual_width, borderCollapse: 'collapse' }}>
{subjectGroup}
</table>
</div>
</div>
]
let NullDivContent = [
<div style={{ width: '100%', 'overflow-x': 'auto' }}>
<WeaNewScroll ecId={`${this && this.props && this.props.ecId || ''}_WeaNewScroll@7oq7n9@nullDivContent`}
height={budgetHeight}
>
<table style={{ width: '100%', 'border-spacing': '0px' }} >
<tr className="fna_tr_first">
<th span={4} style={{ 'width': '20%', 'border-bottom': '1px solid #e2ecf2' }}>{getLabel(15409, '科目名称')}</th>
<th span={4} style={{ 'width': '13%', 'border-bottom': '1px solid #e2ecf2' }}>{getLabel(16893, '统计项')}</th>
{dateGroup2}
<th style={{ 'border-bottom': '1px solid #e2ecf2' }} span={4}>{getLabel(1013, '全年')}</th>
<th style={{ 'border-bottom': '1px solid #e2ecf2' }} span={4}>项目总额</th>
</tr>
{subjectGroup}
</table>
</WeaNewScroll>
</div>
]
let content = "";
if (rsAllCnt == '0') {
content = NullDivContent;
} else {
content = DivContent;
}
return (
<div>
{content}
<Pagination ecId={`${this && this.props && this.props.ecId || ''}_Pagination@at42zn`}
className='fna_page'
showSizeChanger
showQuickJumper
defaultCurrent={1}
current={pageIndex}
pageSize={pageSize}
total={rsAllCnt}
showTotal={total => `${getLabel(386979, '共')} ${total} ${getLabel(386978, '条')}`}
pageSizeOptions={['10', '20', '30', '50']}
onChange={this.pageChange}
onShowSizeChange={this.onShowSizeChange}
/>
</div>
)
}
pageChange = (page) => {
//console.log('page',page);
const { budgetingStore } = this.props;
const { compareDataList } = budgetingStore;
const { organizationtype, organizationid, budgetperiods, tabFeeperiod } = budgetingStore;
const { budgetinfoid_1, budgetinfoid_2 } = budgetingStore;
const { nameQuery, clickType } = budgetingStore;
let baseParams = { organizationtype: organizationtype, organizationid: organizationid, budgetperiods: budgetperiods, tabFeeperiod: tabFeeperiod };
let idParams = { budgetinfoid_1: budgetinfoid_1, budgetinfoid_2: budgetinfoid_2 };
let queryParams = { nameQuery: nameQuery };
let params = { ...baseParams, ...queryParams, ...idParams, pageIndex: page, clickType };
compareDataList(params);
}
onShowSizeChange = (current, pageSize) => {
//console.log('current ', current);
//console.log('pageSize ', pageSize);
const { budgetingStore } = this.props;
const { compareDataList } = budgetingStore;
const { organizationtype, organizationid, budgetperiods, tabFeeperiod } = budgetingStore;
const { budgetinfoid_1, budgetinfoid_2 } = budgetingStore;
const { nameQuery, clickType } = budgetingStore;
let baseParams = { organizationtype: organizationtype, organizationid: organizationid, budgetperiods: budgetperiods, tabFeeperiod: tabFeeperiod };
let idParams = { budgetinfoid_1: budgetinfoid_1, budgetinfoid_2: budgetinfoid_2 };
let queryParams = { nameQuery: nameQuery };
let params = { ...baseParams, ...queryParams, ...idParams, pageSize: pageSize, pageIndex: current, clickType };
compareDataList(params);
}
}
export default WeaTools.tryCatch(React,
props => <WeaErrorPage ecId={`${this && this.props && this.props.ecId || ''}_WeaErrorPage@qkf156`} msg={props.error ? props.error : getLabel(385218, '对不起,该页面异常,请联系管理员!')} />,
{ error: "" }
)(BudgetingCompare);
Loading…
Cancel
Save