📄 jkyjckyjxxblh.java
字号:
package gov.gdlt.ssgly.taxcore.taxblh.jkyj;
import gov.gdlt.ssgly.taxcore.comm.blh.BaseBizLogicHandler;
import gov.gdlt.ssgly.taxcore.comm.event.RequestEvent;
import gov.gdlt.ssgly.taxcore.comm.event.ResponseEvent;
import gov.gdlt.ssgly.taxcore.comm.exception.TaxBaseBizException;
import gov.gdlt.ssgly.taxcore.comm.exception.TaxBaseSystemException;
import gov.gdlt.ssgly.taxcore.taxevent.jkyj.*;
import gov.gdlt.ssgly.taxcore.comm.log.LogWritter;
import gov.gdlt.ssgly.taxcore.taxdao.jkyj.JKYJjkyjsjDAO;
import gov.gdlt.ssgly.taxcore.taxdao.zbgl.ZBGLzbsjDAO;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import gov.gdlt.ssgly.taxcore.taxevent.flgl.FLGLnsrflxxVO;
/**
*
* <p>Title: 查看预警信息BLH</p>
*
* <p>Description: 广东地税税收管理员工作平台</p>
*
* <p>Copyright: Copyright (c) 2005 广东省地方税务局,广州市地方税务局</p>
*
* <p>Company: 广州地税</p>
*
* @author 郑毅晖
* @version 1.0
*/
public class JKYJckyjxxBLH extends BaseBizLogicHandler {
public JKYJckyjxxBLH() {
}
////////////////// 抽象方法实现 /////////////////////
/**
* validateData 实现具体的业务数据规则校验
* req : RequestEvent, 客户端请求数具
* conn : Connection 数据库连结
* 返回:boolean true:数据校验成功 false:数据校验不成功
*/
protected ResponseEvent validateData(RequestEvent req) throws
Exception {
return null;
}
/**
* 此方法实现了业务逻辑的处理过程,处理具体业务逻辑的过程中,
* 在出现异常的时侯, 必须向上抛出异常,异常的处理在
* BaseBizLogicHandler实现异常的处理,事务处理和日志的记录;具体要的异常的定义根据
* 具体的业务来确定。返回的参数的对象类型必须是ResponseEvent类型的对象实例,
* 如果捕捉到业务上的异常,并对具体的业务的异常进行处理,如根据TaxBaseBizException
* 以及它的扩展类的异常,写应用日志信息,异常捕获后,相应地要向上抛以下几种异常
* 1.TaxBaseSystemException
* 2.TaxBaseBizException
* 3.Throwable
* 输入参数:
* req : RequestEvent, 客户端请求的数据对象实例
* 返回:ResponseEvent 返回给客户端的数据对象实例
*/
protected ResponseEvent performTask(RequestEvent req) throws
TaxBaseSystemException, TaxBaseBizException {
// String sessionID = req.getSessionID(); //获取用户ID
// String channelType = req.getChannelType(); //获取请求来源
String dealMethod = req.getDealMethod(); //业务处理标志
ResponseEvent resEvn = new ResponseEvent(); //创建ResponseEvent对象resEvn
//强制造型转换
JKYJckyjxxReqEvent reqEvent = (JKYJckyjxxReqEvent) req;
if ("getYjlb".equals(dealMethod)) {
if(reqEvent.getCxtj()==null || "".equals(reqEvent.getCxtj())){
resEvn = this.getYjlb(reqEvent);
}
else{
resEvn = this.getYjlbByQuers(reqEvent);
}
} else
if ("getYjmx".equals(dealMethod)) {
// resEvn = this.getYjmx(reqEvent);
} else
if ("setTsbj".equals(dealMethod)) {
resEvn = this.setTsbj(reqEvent);
} else {
throw new TaxBaseBizException("YCJKYJ01001:调用了不存在的 " + dealMethod + " 方法!");
}
return resEvn;
}
/**
* 取得某个分类下所有纳税人的预警事件列表(以二维表形式返回)
* 参数:
* fl_xh:BigDecimal 分类管理中使用的分类序号
* st_dm : String 监控台视图的视图代码
* @param req:RWGLckrwReqEvent
* @return ResponseEvent
*/
private ResponseEvent getYjlb(JKYJckyjxxReqEvent req) throws
TaxBaseBizException {
// String sessionID = req.getSessionID(); //获取用户ID
// String channelType = req.getChannelType(); //获取请求来源
ArrayList jkyjsjList = null;
ArrayList zbsjList = null;
ArrayList zbxxList = null;
ArrayList tsxxList = null;
//LogWritter.sysDebug("test get userID=" + (String)WebUtil.eval("#{user.userID}")); //just for test
BigDecimal fl_xh = req.getFl_xh();
String st_dm = req.getSt_dm();
//与DAO交互,得到监控预警事件的List和指标数据的List
JKYJjkyjsjDAO jkyjsjDAO = new JKYJjkyjsjDAO();
jkyjsjList = jkyjsjDAO.findAllByFlxhStdm(fl_xh, st_dm);
if (jkyjsjList == null) {
throw new TaxBaseBizException("YCJKYJ01002: 读取监控预警事件错误!");
}
ZBGLzbsjDAO zbsjDAO = new ZBGLzbsjDAO();
zbsjList = zbsjDAO.findAllByFlxhStdm(fl_xh, st_dm);
if (zbsjList == null) {
throw new TaxBaseBizException("YCJKYJ01003: 读取指标数据错误!");
}
zbxxList = zbsjDAO.findZbxxByStdm(st_dm);
if (zbxxList == null) {
throw new TaxBaseBizException("YCJKYJ01004: 读取指标信息错误!");
}
tsxxList = zbsjDAO.findTsxxByFlxhStdm(fl_xh, st_dm);
if (tsxxList == null) {
throw new TaxBaseBizException("YCJKYJ01005: 读取提示信息错误!");
}
JKYJtsxxVO tsxxVO = null;
//转换监控台预警指标列头
ArrayList headerList = new ArrayList();
JKYJzbxxVO zbxxVO = null;
for (int i = 0; i < zbxxList.size(); i++) {
zbxxVO = (JKYJzbxxVO) zbxxList.get(i);
headerList.add(zbxxVO);
}
//转换监控台预警指标数据列表
//必须之前已按照纳税人内部码、指标代码等对预警事件、指标数据等进行了排序
ArrayList yjlbList = new ArrayList(); //按纳税人来排列的预警列表数据
FLGLnsrflxxVO nsrflxxVO = null;
JKYJyjlbVO yjlbVO = null; //预警列表VO
JKYJyjjlVO yjjlVO = null; //预警记录VO
ArrayList yjzbData = null; //预警指标数据Map
ArrayList nsrflxxList = jkyjsjDAO.findAllNsrByFlxh(fl_xh); //找到某个分类下的纳税人列表
if (nsrflxxList == null) {
throw new TaxBaseBizException("YCJKYJ01006: 读取该分类下的纳税人列表错误!");
}
int p_zbsj = 0; //用于遍历预警指标数据的指针
int p_yjsj = 0; //用于遍历预警事件数据的指针
int p_tsxx = 0; //用于遍历提示信息数据的指针
boolean found_flag; //找到数据的标志
BigDecimal nsrnbm = null; //记录当前的行的纳税人内部码
int colIdx = -1; //列序号
String zb_dm = null; //指标代码
String cfy_mc = null; //触发源名称
LogWritter.sysDebug("nsrflxxList size=" + nsrflxxList.size());
LogWritter.sysDebug("zbxxList size=" + zbxxList.size());
LogWritter.sysDebug("zbsjList size=" + zbsjList.size());
LogWritter.sysDebug("jkyjsjList size=" + jkyjsjList.size());
for (int i = 0; i < nsrflxxList.size(); i++) {
nsrflxxVO = (FLGLnsrflxxVO) nsrflxxList.get(i);
nsrnbm = nsrflxxVO.getNsrnbm();
// LogWritter.sysDebug("nsrnbm=" + nsrnbm + ", fl_xh=" + nsrflxxVO.getFl_xh()); //for debug
yjlbVO = new JKYJyjlbVO();
yjlbVO.setNsrnbm(nsrnbm);
yjlbVO.setHasYjjl(false); //初始化为没有预警记录
//预警指标和异常记录统一存放版本,适用于一个指标仅对应一条预警记录(或多条预警记录合并存放)的做法
//构造一行的预警指标数据
yjzbData = new ArrayList();
////初始化所有指标值为"0"
for (int j = 0; j < zbxxList.size(); j++) {
zbxxVO = (JKYJzbxxVO) zbxxList.get(j);
yjjlVO = new JKYJyjjlVO();
yjjlVO.setZbz("0");
yjjlVO.setDm_decode(zbxxVO.getDm_decode());
yjzbData.add(yjjlVO);
}
////把有数据的指标填入相应的列
// p_zbsj = 0; //reset
// found_flag = false; //reset
while (p_zbsj < zbsjList.size()) {
zbsjDAO = (ZBGLzbsjDAO) zbsjList.get(p_zbsj);
if (zbsjDAO.getNsrnbm().equals(nsrnbm)) {
zb_dm = zbsjDAO.getZb_dm();
colIdx = findColIdxByZbdm(zb_dm, headerList);
if (colIdx >= 0) {
yjjlVO = (JKYJyjjlVO) yjzbData.get(colIdx);
yjjlVO.setZbz(zbsjDAO.getZbz());
yjzbData.set(colIdx, yjjlVO);
}
// found_flag = true; //已找到指标数据
} else {
// if (found_flag) break; //已找到需填入的指标数据,跳出while循环
break;
}
p_zbsj++; //指针移到下一个记录
}
////把提示信息填入相应的列
found_flag = false; //reset
while (p_tsxx < tsxxList.size()) {
tsxxVO = (JKYJtsxxVO) tsxxList.get(p_tsxx);
if (tsxxVO.getNsrnbm().equals(nsrnbm)) {
zb_dm = tsxxVO.getZb_dm();
colIdx = findColIdxByZbdm(zb_dm, headerList);
if (colIdx >= 0) {
yjjlVO = (JKYJyjjlVO) yjzbData.get(colIdx);
yjjlVO.setZb_tsxx(tsxxVO.getTsxx()); //把指标提示信息设到监控台每个单元数据里(没有指标数据的是否要显示提示?)
yjzbData.set(colIdx, yjjlVO);
}
found_flag = true; //已找到提示信息数据
} else {
if (found_flag) break; //已找到需填入的提示信息数据,跳出while循环
}
p_tsxx++; //指针移到下一个记录
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -