已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
个贷项目设计说明书浦发个贷管理系统设计说明书编码规范浦发个贷项目组2005年3月目 录1程序风格31.1Eclipse设置31.2命名规范31.2.1Package命名31.2.2Class命名41.2.3Method命名41.2.4Variable命名41.2.5JSP命名41.2.6命名使用单词51.3Comments52程序模板62.1Action模板62.2Operation模板72.3Service模板93公共程序133.1系统常量133.2异常处理133.3下拉框Getter133.4日期计算函数143.5格式转换143.6公共类和方法143.7JS公共函数173.8其它说明171 程序风格1.1 Eclipse设置设置Java代码风格:1. 选择菜单WindowsPreferencesJavaCode StyleCode Formatter,点击Edit,弹出对话框后,选择Comments标签,使Enable comment formatting复选框处于未选中状态。2. 选择菜单WindowsPreferencesJavaCode StyleCode Templates:a) 编辑Types的Pattern为:/* * author yourname * date $date * desc */b) 编辑New Java files的Pattern为:/* * = * The Huateng Software License * * Copyright (c) 2004-2005 Huateng Software System. All rights * reserved. * = */$package_declaration$typecomment$type_declaration1.2 命名规范1.2.1 Package命名addloanapply 加按贷款申请agentservice 办证服务archive 档案管理combloanapply 组合贷款申请common 通用模块coresys 核心接口creditadjust 额度调整creditapply 额度申请creditauth 额度审批使用custcorp 特约商户custindv 客户管理guarantee 权利品管理inquiryprint 查询打印loanapply 贷款申请loanauth 贷款审批发放loancomm 贷款通用模块parammng 参数管理postloanalter 贷后变更postloanmng 贷后管理project 合作项目statistics 统计分析1.2.2 Class命名类名应该是名词,可以由多个单词组成,每个单词的首字母大写。类名要简单并且有描述性。尽量避免使用只取首字母的缩写词或缩略语(除非缩略语比长格式用得更广,比如说URL或HTML)。所有Action以Action为后缀,所有Operation以Operation为后缀,所有Service以Service为后缀,所有DAO以DAO为后缀。1.2.3 Method命名方法名应该是动词,首字母是小写,后继的每个单词的第一个字母大写。1.2.4 Variable命名所有变量和实例都是以小写字母打头,内部的单词的第一个字母大写。变量名不要以下划线(_)或美元符($)打头,即使这样做是允许的。变量名应该简短而有意义,尽量不要简写,除非变量名太长了。选择的变量名应该有助于记忆,能使代码阅读者了解变量的含义。除非是临时的局部变量,最好不要使用单字符变量。通常用i、j、k、m、k和n表示整数临时变量;用c、d和e来表示字符临时变量。一般使用类名作为实例名,只是将首字母改为小写。例如:Bctl bctl = new Bctl();BctlDAO bctlDAO = DAOUtils.getBctlDAO();BctlService bctlService = BctlService.getInstance();1.2.5 JSP命名JSP命名规范:“实体名称”“相关动作名称”+“页面序号”,其中页面序号为可选项,首字母是小写,后继的每个单词的第一个字母大写。例如:userMng.jsp代表用户管理主页,userReg1.jsp代表用户注册第一个页面,userReg2.jsp代表第二个页面。JSP、Action、Operation的命名应保持一致。1.2.6 命名使用单词程序中所有命名的单词应参考数据字典以及SystemConstant.java中使用的单词。其它常用单词举例如下:增加:create修改:modify删除:delete变更:alter调整:adjust申请:apply复核:check审查:audit审批:approve终审:final approve确认:affirm放款:grant额度:credit1.3 Comments注释应给出代码的总的说明,提供代码所不能给出的额外的信息。其目的是为了便于阅读和理解程序。除此之外的信息不应包含在内(如package是如何建立的,程序所在的目录等等信息,特别是被注释掉的大段的代码)。有必要就一些重要的及不明确的设计做讨论,但应该避免在代码中的冗余注释信息。通常很容易发生注释与代码的不同步现象,注释应随着代码的更新而更新,不应保留过期的注释。过于频繁出现注释,从另一个侧面反映出较差的代码质量。当你感到不得不增加注释时,应该考虑重写代码,让代码更明了。注释不应封装在用特殊的字符(如*)组成的大盒子里。程序中可以包含4种格式的注释:块注释,单行注释,跟踪注释,行尾注释。为每个方法体增加注释时需要说明每个输入参数的含义及输出,如果输出是容器类型,如List,则还需说明容器中所包含的类型。尽可能使用Eclipse的Format功能对Java代码格式化。在Java代码区域右键点击鼠标,选择“Source”,然后选择“Format”。也可使用快捷键CTRL+SHIFT+F。2 程序模板2.1 Action模板/* * = * The Huateng Software License * * Copyright (c) 2004-2005 Huateng Software System. All rights * reserved. * = */package com.huateng.ebank.web.custcorp;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import mons.logging.Log;import mons.logging.LogFactory;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import com.extra.update.Dataset;import com.extra.update.UpdateManager;import com.huateng.ebank.business.custcorp.bean.CorpBasicInfoView;import com.huateng.ebank.business.custcorp.getter.CorpBasicInfoGetter;import com.huateng.ebank.business.custcorp.operation.NewCbivBasicInfoOperation;import com.huateng.ebank.extra.utils.DataObjectUtils;import com.huateng.ebank.framework.exceptions.CommonException;import com.huateng.ebank.framework.operation.OPCaller;import com.huateng.ebank.framework.operation.OperationContext;import com.huateng.ebank.framework.web.struts.BaseAction;/* * author Liu Wen * date 2004-11-16 * desc 创建基本的特约商户信息 */public class NewCorpBasicInfo1Action extends BaseAction private static Log log = LogFactory.getLog(NewCorpBasicInfo1Action.class); public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception this.init(request); UpdateManager um = UpdateManager.getInstance(request); Dataset ds = um.getDataset(dsBasicInfo); CorpBasicInfoView cbiv = new CorpBasicInfoView(); DataObjectUtils.recordToObject(cbiv, ds); checkValidation(cbiv); OperationContext oc = new OperationContext(); oc.setAttribute(NewCbivBasicInfoOperation.IN_PARAM, cbiv); OPCaller.call(custcorp.NewCbivBasicInfoOperation, oc); cbiv = (CorpBasicInfoView) oc .getAttribute(NewCbivBasicInfoOperation.OUT_PARAM); request.setAttribute(CorpBasicInfoGetter.CORP_BASIC_INFO_VIEW, cbiv); request.setAttribute(custcd, cbiv.getCustomerInfo().getCustcd(); return mapping.findForward(success); private void checkValidation(CorpBasicInfoView cbiv) throws CommonException 2.2 Operation模板/* * = * The Huateng Software License * * Copyright (c) 2004-2005 Huateng Software System. All rights * reserved. * = */package com.huateng.ebank.business.custcorp.operation;import mons.lang.StringUtils;import mons.logging.Log;import mons.logging.LogFactory;import mon.GlobalInfo;import mon.SystemConstant;import com.huateng.ebank.business.custcorp.CustCorpService;import com.huateng.ebank.business.custcorp.bean.CorpBasicInfoView;import com.huateng.ebank.entity.data.CorpBasicInfo;import com.huateng.ebank.entity.data.CustomerInfo;import com.huateng.ebank.framework.exceptions.CommonException;import com.huateng.ebank.framework.operation.IOperation;import com.huateng.ebank.framework.operation.OperationContext;/* * author Liu Wen * date 2004-11-16 * desc 查询CorpBasicInfo信息 */public class NewCbivBasicInfoOperation implements IOperation private static Log log = LogFactory.getLog(NewCbivBasicInfoOperation.class); public final static String IN_PARAM = IN_PARAM; public final static String OUT_PARAM = OUT_PARAM; public void beforeProc(OperationContext context) throws CommonException public void execute(OperationContext context) throws CommonException if (log.isDebugEnabled() log.debug(enter into execute); GlobalInfo globalInfo = GlobalInfo.getCurrentInstance(); CorpBasicInfoView cbiv = (CorpBasicInfoView) context .getAttribute(IN_PARAM); CustomerInfo ci = cbiv.getCustomerInfo(); CorpBasicInfo cbi = cbiv.getCorpBasicInfo(); String custcd = ci.getCustcd(); /设置客户类型为法人类型 ci.setCustType(SystemConstant.CUST_TYPE_ARTIFICIAL); CustCorpService ccs = CustCorpService.getInstance(); if (DataFormat.isEmpty(custcd) /客户号为空, 新建客户 ci.setBranchBrcode(globalInfo.getBranchBrcode(); ccs.createCustCorp(ci, cbi); else /客户号不为空, 修改客户信息 cbi.setCustcd(custcd); ci.setCustcd(custcd); ccs.updateCustCorp(ci, cbi); context.setAttribute(OUT_PARAM, cbiv); public void afterProc(OperationContext context) throws CommonException 2.3 Service模板/* * = * The Huateng Software License * * Copyright (c) 2004-2005 Huateng Software System. All rights * reserved. * = */package com.huateng.ebank.business.loancomm;import java.util.List;import mon.ErrorCode;import mon.SystemConstant;import com.huateng.ebank.entity.data.Phasesdtl;import com.huateng.ebank.framework.exceptions.CommonException;import com.huateng.ebank.framework.util.ExceptionUtil;/* * author valley * date 2004-11-16 * usage 贷款公共service */public class LoanCommonService private static LoanCommonService single = null; protected LoanCommonService() /* * Get instance of service * return */ public synchronized static LoanCommonService getInstance() if (null = single) single = new LoanCommonService(); return single; /* * 阶段还款检查 * param grantMode 放款方式 * param rtnType 还款方式 * param lnamt 贷款金额 * param totperi 贷款总期数 * param phaseFlag 分段还款标志 * param phaseNo 分段数 * param phases 包含Phasesdtl的List * return * throws CommonException * desc 检查内容: * 1 分段标志为不分段时,分段数应为0;分段标志为分段时,分段数必须在2到5之间 * 2 分段数应等于List.size() * 3 分段还款时还款方式必须为等额还款方式 * 4 多次发放的贷款不允许分段还款 * 5 每段的期数之和应等于贷款总期数 * 6 每段还款额之和应等于贷款金额 */ public void phasesChk(String grantMode, String rtnType, double lnamt, int totperi, String phaseFlag, int phaseNo, List phases) throws CommonException if (phaseFlag.equals(SystemConstant.PHASE_FLAG_OFF) / 分段标志为不分段时,分段数应为0 if (phaseNo != 0) ExceptionUtil .throwCommonException(ErrorCode.ERROR_CODE_PHASENO_SHOULD_BE_ZERO); else / 分段数必须在2到5之间 if (phaseNo 5) ExceptionUtil .throwCommonException(ErrorCode.ERROR_CODE_PHASENO_ERR); / 分段数应等于List.size() if (phaseNo != phases.size() ExceptionUtil .throwCommonException(ErrorCode.ERROR_CODE_PHASENO_NOT_MATCH); / 分段还款时还款方式必须为等额还款方式 if (!rtnType.equals(SystemConstant.RTN_TYPE_BAL_EQUAL) & !rtnType.equals(SystemConstant.RTN_TYPE_BALINT_EQUAL) ExceptionUtil .throwCommonException(ErrorCode.ERROR_CODE_PHASE_RTNTYPE_ERR); / 多次发放的贷款不允许分段还款 if (!grantMode.equals(SystemConstant.GRANT_MODE_ONE_OFF) ExceptionUtil .throwCommonException(ErrorCode.ERROR_CODE_PHASE_CANT_MULTI_GRANT); / 每段还款额之和应等于贷款金额 int phasePeriSum = 0; double phaseAmtSum = 0; for (int i = 0; i phaseNo; i+) double rtnamt = (Phasesdtl) phases.get(i).getRtnamt(); if (rtnamt = 0) ExceptionUtil .throwCommonException(ErrorCode.ERROR_CODE_PHASE_NULL_RTNAMT); phaseAmtSum += rtnamt; double periCnt = (Phasesdtl) phases.get(i).getPeriCnt(); if (periCnt = 0) ExceptionUtil .throwCommonException(ErrorCode.ERROR_CODE_PHASE_NULL_PERI); phasePeriSum += periCnt; if (phaseAmtSum != lnamt) ExceptionUtil .throwCommonException(ErrorCode.ERROR_CODE_PHASE_RTNAMT_SUM_ERR); if (phasePeriSum != totperi) ExceptionUtil .throwCommonException(ErrorCode.ERROR_CODE_PHASE_PERI_SUM_ERR); return; 3 公共程序3.1 系统常量所有需要使用到的系统常量定义于SystemConstant类中,由我统一维护。3.2 异常处理所有可能要抛出异常的地方,都统一抛出CommonException异常。抛出异常的方式有三种:ExceptionUtil.throwCommonException(String errCode);ExceptionUtil.throwCommonException(String errMsg, String errCode);ExceptionUtil.throwCommonException(String errMsg, String errCode, Throwable t);其中errCode为在ErrorCode类中定义的错误代码,errMsg为需要额外说明的错误描述,t为捕捉到的异常实例。抛出的每个异常都必须有相应的errCode,系统会将errCode所代表的错误信息和errMsg拼接在一起显示在页面上。3.3 下拉框GetterDomainExtra.dataGetterClassParameters数据字典mon.getter.DataDicGetterdataTypeNo:数据类型编号贷款支行mon.getter.BctlGetterbrcode:交易行号下属机构 mon.getter.BlnBctlGetterbrcode:交易行号保险公司com.huateng.ebank.business.custcorp.getter.InsurerGetter特约商户com.huateng.ebank.business.custcorp.getter.CustCorpGettercorpType:特约商户类型(如不填则查本分行全部特约商户)合作项目ject.getter.ProjectGetterbrcode:所属支行lntype:贷款大类(如不填则查全部合作项目)担保合作项目ject.getter.Project2Getterbrcode:所属支行custcd:特约商户内部编码(如不填则查所属支行全部担保合作项目)贷款大类com.huateng.ebank.business.parammng.getter.LoanTypeGetter贷款种类com.huateng.ebank.business.parammng.getter.LoanIDGetter贷款大类com.huateng.ebank.business.parammng.getter.RptLoanTypeGetter统计分析时使用,000表示不限贷款种类com.huateng.ebank.business.parammng.getter.RptLoanIDGetter统计分析时使用,000000表示不限贷款大类com.huateng.ebank.business.parammng.getter.MngLoanTypeGetter参数设置时使用,000表示不限,999表示授信贷款贷款种类com.huateng.ebank.business.parammng.getter.MngLoanIDGetter参数设置时使用,000000表示不限,999999表示授信贷款档案要素com.huateng.ebank.business.parammng.getter.ArchiveIDGetter楼盘com.huateng.ebank.business.loancomm.getter.HouseGetter3.4 日期计算函数DateUtil类包含了所有可能需要用到的日期计算函数,如日期和字符串的相互转换,计算相隔天数、月数,根据起始日期和相隔天数计算终止日期,根据终止日期和相隔天数计算起始日期,取某月份的第一天、最后一天等。如果需要增加其它日期计算函数,由我统一增加。3.5 格式转换DateFormat类包含了所有可能需要用到的格式转换的函数,如各种日期格式、字符串格式、数值格式、金额格式的转换。如果需要增加其它格式转换函数,由我统一增加。3.6 公共类和方法系统中所有公共方法(即不只在一个模块中使用的方法)都应在此说明,未在此说明的方法禁止在模块以外使用。PackageClassMethodMethod commentsdaoHQLDAOqueryByQL根据HQL查询delete根据HQL删除DataDicDAOquery根据业务主键查询getDataByTypeNo根据数据字典类型返回字典列表CustomerInfoDAOquery根据户名、证件等业务主键查询getByCorpType查询特约商户列表getInsurerList查询保险公司列表PhasesdtlDAOqueryPhaseList根据借据号查询阶段列表commonCommonServicegetAppno生成申请编号getCustcd生成客户内部编码getContractno生成贷款合同号getCreditno生成授信合同号getCino生成借据号getProjectno生成合作项目编号getHouseno生成楼盘编号getAccumFundActno生成公积金帐号getArchiveID生成档案要素编号getSeqno得到序号ApproveServicequeryHistoryAppInfo查询审批历史意见updateHistoryWhenUntread审批退回时更新审批历史意见DataDicServicemapInToOut数据字典编码转换getValueByDataNo根据数据编号取得对应的值getNameByDataNo根据数据编号取得对应的描述getDataNoByRange根据数据值取得对应的数据编号BctlServicegetHeadBranch得到总行号getBranchBrcode得到分行号getBrclass得到机构级别getBranchName得到机构名称isSubBrcode判断输入的机构是否为支行isBlnBrcode判断一个机构是否在另一个机构的管辖范围内isInSameBranch判断两个机构是否同属一个个贷中心getBranchList得到分行列表getBlnBrcodeList得到下属机构列表getAllBlnBrcodeList得到所有下属机构列表(包含自己)getSubBrcodeList取得直属下属支行列表,如果本身就是支行,则返回自己getAllSubBrcodeList取得所有下属支行列表,如果本身就是支行,则返回自己getAllPLCenterList取得所有下属个贷中心和分中心列表getAllSubBrcodeStr取得所有下属支行列表,如果本身就是支行,则返回自己(返回形为xxxx, xxxx, xxxx的字符串,用于HQL查询语句中)getInqSubBrcodeStr取得所有下属支行列表,如果本身就是支行,则返回同一个个贷中心下所有支行(返回形为xxxx, xxxx, xxxx的字符串,用于贷款HQL查询语句中查询权限的控制)getAllPLCenterStr取得所有下属个贷中心和分中心(返回形为xxxx, xxxx, xxxx的字符串,用于合作项目HQL查询语句中)getAllBlnBrcodeStr得到所有下属机构列表(包含自己)(返回形式为xxxx, xxxx, xxxx的字符串,用于HQL查询语句中)coresysComm2HostServicequeryCoreActInfo查询核心帐户信息queryLoanStatus查询核心贷款状态preCalcRtnPlan还款计划试算queryLoanRtnPlan向核心查询贷款还款计划表preCalcLoanInt贷款利息试算preCalcOweInt欠款利息试算preCalcAdvRtnInt提前还款利息试算queryCorpInfo查询法人客户信息queryIndvInfo查询自然人客户信息createIndvInfo向核心建立自然人客户信息queryAssetsOwes向核心查询客户资产负债情况createLoanInfo向核心建立贷款信息alterClrMode五级分类方式变更alterClrClass五级分类createAdvRtnInfo提前还款createTrmAdjInfo手工转呆滞/呆帐alterIntrate贷款利率变更alterLoanTerm贷款期限变更alterRtnType还款方式变更alterRtnDate约定扣款日变更alterPhaseInfo阶段还款变更信息alterRtnActno还款帐号/卡号变更eduLoanExtend助学贷款展期alterEduLoanTrsfDate助学贷款转等额日变更custindvCustIndvServicequeryIndvInfo根据客户号、姓名、证件查询查询自然人客户信息custcorpCustCorpServicegetCustCropName得到特约商户名称loancommLoanCommonServicequeryLoanBasicInfo查询贷款合同基本信息queryLnciBasicInfo查询贷款借据基本信息phasesChk阶段还款检查getCurrentPhase对于阶段还款贷款,返回当前还款阶段calcPeriAmt计算每期还款额,也用于检查不等额还款金额是否正确calcTotPeri计算贷款总期数getHouseList得到分行楼盘列表getHouseName得到楼盘名称getLoanAdditionalPage得到贷款附属信息页编号checkAssureMutually自然人担保时检查担保人与借款人是否互相担保parammngParamMngServicegetIntrate根据利率代码和期限取基准利率getBranchMngParam得到机构管理参数getLntypeInfoList得到贷款大类列表getLoanParamList得到贷款种类列表getLntypeName根据贷款大类得到大类名称getLoanIDName根据贷款种类得到种类名称getArchiveIDList得到档案要素列表LoanParamServicegetGuatLimitParam得到担保额度参数checkGuarantyRatio抵质押比例检查checkLoanRatio担保额度检查getLoanParam得到机构适用的贷款产品参数定义checkTransPermit检查该机构是否可开办该贷款产品checkLoanParam贷款申请时产品参数检查checkAdditionAllowed检查是否允许加按checkTransferAllowed检查是否允许转按checkPartAdvRtnParam提前还款参数检查TellerServicegetTellerApproveLimit获取柜员审批权限getTellerBrcode获取柜员所属机构getTellerRoleList获取柜员岗位列表checkTellerFuncRight判断柜员是否可做该交易projectProjectServicegetProjectList根据客户内部编码得到合作项目列表getProjectListByType根据贷款大类得到合作项目列表get
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年消防中控员考试测试题及参考答案(共三套)
- 2026年高端鲜花定制公司成本核算与控制管理制度
- 玉米的营养与价值
- 人体营养菌群科普
- 武大海商法讲义第6章 船舶碰撞
- 心肌梗塞症状解析及护理培训
- 呼吸功能训练讲课
- 点球颜色训练小班
- 亲子拓展训练活动大纲
- 2025浙江台州市温岭市交通旅游集团有限公司招聘编外人员1人考试笔试模拟试题及答案解析
- 读书分享读书交流会《青铜葵花》
- 大学生面试礼仪和技巧课件
- EPC项目-装饰装修EPC总承包工程-技术标(实施方案、实施技术方案、实施管理组织方案)
- 业务连续性管理实务
- GB/T 5680-2023奥氏体锰钢铸件
- 数控车床基本操作按钮
- EIM Starter Unit 8 Dont do that单元知识要点
- 美丽乡村建设项目重点难点施工区技术措施
- 05.辩论的基础知识
- 第六单元 中华民族的抗日战争 复习课件 部编版八年级历史上册
- 《细胞工程学》考试复习题库(带答案)
评论
0/150
提交评论