|
|
@ -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;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|