?? 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 + -