金碟 BOS 报表后端查询代码

本文介绍了一个用于服务问题分析报表的Java类实现,该类通过构建SQL查询语句并执行数据库操作来获取问题分类及明细数据,支持按条件筛选并提供年度统计数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.kingdee.eas.fdc.customerservice.app;

import java.math.BigDecimal;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.log4j.Logger;

import com.kingdee.bos.BOSException;
import com.kingdee.bos.Context;
import com.kingdee.bos.engine.difftool.RS;
import com.kingdee.bos.metadata.entity.EntityViewInfo;
import com.kingdee.bos.metadata.entity.FilterInfo;
import com.kingdee.bos.metadata.entity.FilterItemInfo;
import com.kingdee.bos.metadata.entity.SorterItemCollection;
import com.kingdee.bos.metadata.entity.SorterItemInfo;
import com.kingdee.bos.metadata.query.util.CompareType;
import com.kingdee.eas.basedata.org.SaleOrgUnitCollection;
import com.kingdee.eas.basedata.org.SaleOrgUnitFactory;
import com.kingdee.eas.basedata.org.SaleOrgUnitInfo;
import com.kingdee.eas.common.EASBizException;
import com.kingdee.eas.fdc.basedata.FDCDateHelper;
import com.kingdee.eas.fdc.basedata.FDCHelper;
import com.kingdee.eas.fdc.basedata.FDCSQLBuilder;
import com.kingdee.eas.fdc.customerservice.FDCStdQueationSortCollection;
import com.kingdee.eas.fdc.customerservice.FDCStdQueationSortFactory;
import com.kingdee.eas.fdc.customerservice.FDCStdQuestionCollection;
import com.kingdee.eas.fdc.customerservice.FDCStdQuestionFactory;
import com.kingdee.eas.fdc.customerservice.IFDCStdQueationSort;
import com.kingdee.eas.fdc.customerservice.IFDCStdQuestion;
import com.kingdee.eas.fdc.customerservice.IMissionHastenEntry;
import com.kingdee.eas.fdc.customerservice.MissionHastenEntryCollection;
import com.kingdee.eas.fdc.customerservice.MissionHastenEntryFactory;
import com.kingdee.eas.fdc.customerservice.RptMissionDoneUnit;
import com.kingdee.eas.fdc.sellhouse.SellProjectCollection;
import com.kingdee.eas.fdc.sellhouse.SellProjectFactory;
import com.kingdee.eas.fdc.sellhouse.SellProjectInfo;
import com.kingdee.eas.util.app.ContextUtil;
import com.kingdee.jdbc.rowset.IRowSet;

public class CMSRptFacadeControllerBean extends AbstractCMSRptFacadeControllerBean
{
/**
*
*/
private static final long serialVersionUID = -6015743036064584678L;
private static Logger logger =
Logger.getLogger("com.kingdee.eas.fdc.propertymgmt.app.CMSRptFacadeControllerBean");

/**
*
* @description 返回问题类Collection,问题明细Collection,问题分组数据
* @author 蒲波
* @createDate 2010-12-7
* @param paramMap 查询条件
* @return MAP
*
* @version EAS1.0
*/
protected Map _getQuestionAnalysRptData(Context ctx, Map paramMap)throws BOSException, EASBizException
{

IFDCStdQuestion IQ = null;
FDCStdQuestionCollection queation = null;
IFDCStdQueationSort IQS = null;
FDCStdQueationSortCollection queationSort = null;
try {
//初始化
IQ = FDCStdQuestionFactory.getLocalInstance(ctx);
IQS = FDCStdQueationSortFactory.getLocalInstance(ctx);
EntityViewInfo evi = new EntityViewInfo();
SorterItemCollection sorter = new SorterItemCollection();
//添加排序
sorter.add(new SorterItemInfo("longnumber"));
evi.setSorter(sorter);
queationSort = IQS.getFDCStdQueationSortCollection(evi);
evi = new EntityViewInfo();
queation = IQ.getFDCStdQuestionCollection(evi);
} catch (BOSException e) {
logger.error(e.getMessage());
}
//拼接SQL
FDCSQLBuilder builder = getQuestionAnalysRptSqlBuilder(ctx, paramMap);
FDCSQLBuilder builderYear = getQuestionAnalysRptSqlYearBuilder(ctx,paramMap);
//执行SQL语句
IRowSet rowSet = builder.executeQuery();//得到问题类结果集
IRowSet rowSetYear = builderYear.executeQuery();//得到问题明细类结果集
Map result = new HashMap();
Map resultYear = new HashMap();
Map resultMap = new HashMap();
try {
//把按条件查询的结果放入MAP中
while(rowSet.next()){
BigDecimal [] counterAmt = new BigDecimal[2];
counterAmt[0]=rowSet.getBigDecimal(2);
counterAmt[1]=rowSet.getBigDecimal(3);
result.put(rowSet.getString(1), counterAmt);
}
//按年查询的结果放入MAP中
while(rowSetYear.next()){
BigDecimal[] counterAmtYear = new BigDecimal[2];
counterAmtYear[0]=rowSetYear.getBigDecimal(2);
counterAmtYear[1]=rowSetYear.getBigDecimal(3);
resultYear.put(rowSetYear.getString(1), counterAmtYear);
}
} catch (SQLException e) {
e.printStackTrace();
}
//将所有的结果放入resultMap返回
resultMap.put("result", result);
resultMap.put("resultYear", resultYear);
resultMap.put("queationSort", queationSort);
resultMap.put("queation", queation);
return resultMap;
}

/**
*
* @description 拼接按条件查询的SQL
* @author 蒲波
* @createDate 2010-12-13
* @param 条件参数
* @return SQL语句
*
* @version EAS1.0
*/
private FDCSQLBuilder getQuestionAnalysRptSqlBuilder(Context ctx, Map paramMap) {
FDCSQLBuilder builder = new FDCSQLBuilder(ctx);
builder.appendSql(" SELECT ");
builder.appendSql(" QUESTION.FID AS ID, ");
builder.appendSql(" COUNT(*) COUNT, ");
builder.appendSql(" SUM(CASE when SRVMISSIONENTRY.FSrvMissionState IN ('FINSHED', 'NOCOMMIT') THEN 1 ELSE 0 end) AS CLOSED ");
builder.appendSql(" FROM T_CMS_ServiceRergisterBill AS SERVICERERGISTERBILL ");
builder.appendSql(" LEFT outer JOIN T_SHE_SellProject AS SELLPROJECT ");
builder.appendSql(" ON SERVICERERGISTERBILL.FSellprojectID = SELLPROJECT.FID ");
builder.appendSql(" LEFT outer JOIN T_CMS_ServiceMissionBill AS SRVMISSIONENTRY ");
builder.appendSql(" ON SERVICERERGISTERBILL.FID = SRVMISSIONENTRY.FSrvRegBillID ");
builder.appendSql(" LEFT outer JOIN T_CMS_ServiceProcessType AS SRVPROCESSTYPE ");
builder.appendSql(" ON SRVMISSIONENTRY.FSrvProcessTypeID = SRVPROCESSTYPE.FID ");
builder.appendSql(" INNER JOIN T_CMS_FDCStdQuestion AS QUESTION ");
builder.appendSql(" ON SRVMISSIONENTRY.FQuestionID = QUESTION.FID ");
builder.appendSql(" INNER JOIN T_CMS_FDCStdQueationSort AS QUESTIONSORT ");
builder.appendSql(" ON QUESTION.FQuestionSortID = QUESTIONSORT.FID ");
//添加条件
createQusDateFilterSql(builder, paramMap);
builder.appendSql(" GROUP BY QUESTION.FID ");
return builder;
}
/**
*
* @description 给SQL语句添加条件
* @author 蒲波
* @createDate 2010-12-13
* @param 条件参数
* @return 空
*
* @version EAS1.0
*/
private void createQusDateFilterSql(FDCSQLBuilder builder, Map paramMap) {
//判断参数是否为空
if(paramMap == null || paramMap.isEmpty()) return;
builder.appendSql(" where 1=1 ");
//判断开始日期是否为空
if(paramMap.get("beginDate") != null){
builder.appendSql(" and SERVICERERGISTERBILL.FCreateTime >= ? ");
builder.addParam(FDCDateHelper.getSqlDate((Date)paramMap.get("beginDate")));
}
//判断结束日期是否为空
if(paramMap.get("endDate") != null ){
builder.appendSql(" and SERVICERERGISTERBILL.FCreateTime < ? ");
Calendar cld = Calendar.getInstance();
cld.setTime((Date)paramMap.get("endDate"));
cld.add(Calendar.DAY_OF_MONTH, 1);
builder.addParam(FDCDateHelper.getSqlDate(cld.getTime()));
// builder.addParam(FDCDateHelper.getSqlDate((Date)paramMap.get("endDate")));
}
//判断项目名称是否为空
if(paramMap.get("projectName") != null ){
builder.appendSql(" and SELLPROJECT.FID = ? ");
builder.addParam(paramMap.get("projectName"));
}
//判断服务类型是否为空
if(paramMap.get("processName") != null ){
builder.appendSql(" and SRVPROCESSTYPE.FID = ? ");
builder.addParam(paramMap.get("processName"));
}
}
/**
*
* @description 拼接SQL语句(按年查询)
* @author 蒲波
* @createDate 2010-12-13
* @param 条件参数
* @return SQL语句
*
* @version EAS1.0
*/
private FDCSQLBuilder getQuestionAnalysRptSqlYearBuilder(Context ctx, Map paramMap) {
FDCSQLBuilder builder = new FDCSQLBuilder(ctx);
builder.appendSql(" SELECT ");
builder.appendSql(" QUESTION.FID AS ID, ");
builder.appendSql(" COUNT(*) COUNT, ");
builder.appendSql(" SUM(CASE when SRVMISSIONENTRY.FSrvMissionState IN ('FINSHED', 'NOCOMMIT') THEN 1 ELSE 0 end) AS CLOSED ");
builder.appendSql(" FROM T_CMS_ServiceRergisterBill AS SERVICERERGISTERBILL ");
builder.appendSql(" LEFT outer JOIN T_SHE_SellProject AS SELLPROJECT ");
builder.appendSql(" ON SERVICERERGISTERBILL.FSellprojectID = SELLPROJECT.FID ");
builder.appendSql(" LEFT outer JOIN T_CMS_ServiceMissionBill AS SRVMISSIONENTRY ");
builder.appendSql(" ON SERVICERERGISTERBILL.FID = SRVMISSIONENTRY.FSrvRegBillID ");
builder.appendSql(" LEFT outer JOIN T_CMS_ServiceProcessType AS SRVPROCESSTYPE ");
builder.appendSql(" ON SRVMISSIONENTRY.FSrvProcessTypeID = SRVPROCESSTYPE.FID ");
builder.appendSql(" INNER JOIN T_CMS_FDCStdQuestion AS QUESTION ");
builder.appendSql(" ON SRVMISSIONENTRY.FQuestionID = QUESTION.FID ");
builder.appendSql(" INNER JOIN T_CMS_FDCStdQueationSort AS QUESTIONSORT ");
builder.appendSql(" ON QUESTION.FQuestionSortID = QUESTIONSORT.FID ");
//添加条件
createQusDateFilterYearSql(builder,paramMap);
builder.appendSql(" GROUP BY QUESTION.FID ");
return builder;
}
/**
*
* @description 给SQL语句添加条件
* @author 蒲波
* @createDate 2010-12-13
* @param 条件参数
* @return 空
*
* @version EAS1.0
*/
private void createQusDateFilterYearSql(FDCSQLBuilder builder, Map paramMap) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
//取出现在的年份
String year = calendar.get(Calendar.YEAR)+"";
//判断条件是否为空
if(paramMap == null || paramMap.isEmpty()) return;
builder.appendSql(" where 1=1 ");
builder.appendSql(" and SERVICERERGISTERBILL.FCreateTime like ");
builder.appendSql(" '%"+year+"%' ");
// builder.appendSql(" '%"+FDCDateHelper.getSqlDate(new Date()).toString().substring(0, 4)+"%' ");
//判断项目名称是否为空
if(paramMap.get("projectName") != null ){
builder.appendSql(" and SELLPROJECT.FID = ? ");
builder.addParam(paramMap.get("projectName"));
}
//判断服务类型是否为空
if(paramMap.get("processName") != null ){
builder.appendSql(" and SRVPROCESSTYPE.FID = ? ");
builder.addParam(paramMap.get("processName"));
}
}







}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值