平安利顺项目复盘
原创约 2191 字大约 7 分钟...
168-平安利顺项目复盘.md
注意
本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。
- 需求:增加受控人员清单功能;受控人员清单菜单只能在认证账号下才能看到,才可用添加和修改受控人员信息;认证账号可以添加受控人员,也可以修改和删除受控人员;
- 实现功能:
备注:认证账号 authenadmin/12345678 路径:企业建模 --> 安全管理 --> 权限管理 --> 受控人员清单

- 实现效果

- 想要实现认证账号可见,其它账号不可见只需要在客户化菜单做设置即可

- 需求: 用户账号修改控制;修改用户账号时判断,如果该账号绑定的人员为受控人员清单中的人员时,则人员字段锁定不可修改,如果不为受控人员清单中的人员时,按现在可修改的逻辑控制;新增或者修改用户账号保存时,判断关联的人员在受控人员清单中时,再判断该人员是否有多个用户账号,如果存在多个用户账号时则不能保存,提示“受控人员不允许存在多个账号!”;关联的人员不在受控清单中时,按现在逻辑控制;
备注:路径: 企业建模 --> 安全管理 --> 权限管理 --> 用户管理



- 编码实现
package com.kingdee.eas.base.permission.client;
import java.awt.event.ActionEvent;
import com.kingdee.bos.dao.query.SQLExecutorFactory;
import com.kingdee.eas.common.EASBizException;
import com.kingdee.jdbc.rowset.IRowSet;
import com.kingdee.util.NumericExceptionSubItem;
/**
* <p>Title: 用户管理</p>
* <p>
* Description:
* </p>
* <p>Copyright: Copyright (c) 2020</p>
* @author DZ_yanb
* @date 2020-1-3
* @version 1.0
*/
public class UserEditUICTEx extends UserEditUI{
/**
* <p>Title: </p>
* <p>
* Description:
* </p>
* <p>Copyright: Copyright (c) 2020</p>
* @author DZ_yanb
* @date 2020-1-3
* @param param the bare_field_name
* @throws Exception
* @version 1.0
*/
public UserEditUICTEx() throws Exception {
super();
}
/**
* <p>Title: </p>
* <p>
* Description:
* </p>
* <p>Copyright: Copyright (c) 2020</p>
* @author DZ_yanb
* @date 2020-1-3
* @param param the bare_field_name
* @throws Exception
* @version 1.0
*/
@Override
public void onLoad() throws Exception {
super.onLoad();
/**
* 判断是否在受控人员清单中,若在则设置名称不可修改,若不在则可修改
*/
String sql = "select * from CT_BAS_Listofconperson where cfnewname = '" + this.pmtUserRelation.getValue() + "'";
IRowSet rowset = SQLExecutorFactory.getRemoteInstance(sql.toString()).executeSQL();
if(rowset.next()){
this.pmtUserRelation.setEnabled(false);
}else{
this.pmtUserRelation.setEnabled(true);
this.mlbUserRelation.setEnabled(true);
}
}
/**
* <p>Title: 提交方法</p>
* <p>
* Description:
* 新增或修改用户账号保存时,判断关联的人员在是否在受控人员清单中时,
* 再判断该人员是否有多个用户账号,如果存在多个用户账号时则不能保存
* 提示“受控人员不允许存在多个账号!”;关联的人员不在受控清单时,按现在逻辑控制;
* </p>
* <p>Copyright: Copyright (c) 2020</p>
* @author DZ_yanb
* @date 2020-1-3
* @param param the bare_field_name
* @param e
* @throws Exception
* @version 1.0
*/
@Override
public void actionSubmit_actionPerformed(ActionEvent e) throws Exception {
String sql = "select * from CT_BAS_Listofconperson where cfnewname = '" + this.pmtUserRelation.getValue() + "'";
IRowSet rowset = SQLExecutorFactory.getRemoteInstance(sql.toString()).executeSQL();
if(rowset.next()){//判断是否在受控人员清单中
// 判断是否有多个账号
String sql2 = "select * from T_PM_User where fname_l2 = '" + this.pmtUserRelation.getValue() + "'";
IRowSet rowset2 = SQLExecutorFactory.getRemoteInstance(sql2.toString()).executeSQL();
int count = 0;
while(rowset2.next()){
count++;
}
if(count > 1){
throw new EASBizException(new NumericExceptionSubItem("110","受控人员不允许存在多个账号!"));
}else{
super.actionSubmit_actionPerformed(e);
}
}else{
super.actionSubmit_actionPerformed(e);
}
}
}
- 需求:员工信息保存时判断姓名不能重复,保存时判断姓名前后不能有特殊符号。
备注: 路径: 企业建模 --> 辅助数据 --> 员工信息 --> 员工



- 编码
package com.kingdee.eas.basedata.person.client;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import com.kingdee.bos.BOSException;
import com.kingdee.bos.ctrl.swing.KDCheckBox;
import com.kingdee.bos.ctrl.swing.KDTabbedPane;
import com.kingdee.bos.dao.query.SQLExecutorFactory;
import com.kingdee.bos.util.BOSUuid;
import com.kingdee.eas.common.EASBizException;
import com.kingdee.eas.custom.pinganlishun.util.DEPUtils;
import com.kingdee.eas.custom.pinganlishun.util.TrainsportationUtil;
import com.kingdee.jdbc.rowset.IRowSet;
import com.kingdee.util.NumericExceptionSubItem;
/**
* <p>Title: </p>
* <p>
* Description:
* </p>
* <p>Copyright: Copyright (c) 2020</p>
* @author DZ_yanb
* @date 2020-1-9
* @version 1.0
*/
public class PersonEditUICTEx extends PersonEditUI {
private Object kdtTrainsportation;
public PersonEditUICTEx() throws Exception {
super();
//loadFields();
//onLoad();
}
/**
* (non-Javadoc)
* <p>Title: actionSubmit_actionPerformed</p>
* <p>
* Description:
* 1. 基础资料走的保存方法
* 2. 保存时验证名称前后是否有特殊符号
* 3. 保存时验证姓名不能重复
* </p>
* <p>Copyright: Copyright (c) 2019</p>
* @author DZ_yanb
* @date 2020-1-2
* @param arg0
* @throws Exception
* @see com.kingdee.eas.basedata.person.client.PersonEditUI#actionSubmit_actionPerformed(java.awt.event.ActionEvent)
*/
@Override
public void actionSubmit_actionPerformed(ActionEvent e) throws Exception {
/**
* 名称控件 DefaultTextField
* 思路:
* 1. 提交之前获取 名称 的值
* 2. 判断名名当中是否今有特殊符号,若有特殊符号则弹出提示,无则放行
* 3. 若上述验证通过,则去查数据库,看看其值是否有重,若有则弹出提示,无则放行
* 3.1 表名为,名称的字段为 T_BD_Person FName_L2
*/
String name = this.txtName2.getDefaultLangItemData().toString();
/**
* 判断是否只是由数字,中文,字母组成
*/
if(!isLetterDigitOrChinese(name)){
throw new EASBizException(new NumericExceptionSubItem("110","名称不能包含特殊字符"));
}
/**
* 判断名称是否唯一
*/
if(isOnly("T_BD_Person", "FName_L2", name,editData.getId())){
throw new EASBizException(new NumericExceptionSubItem("111", "名称不能重复!"));
}
super.actionSubmit_actionPerformed(e);
}
/**
* <p>Title: isOnly</p>
* <p>
* Description:
* 验证某字段是否唯一
* </p>
* <p>Copyright: Copyright (c) 2019</p>
* @author DZ_yanb
* @date 2020-1-3
* @param tableName
* @param colName
* @param name
* @param uuid
* @return
* @throws BOSException
* @throws SQLException
* @version 1.0
*/
public Boolean isOnly(String tableName,String colName,String name,BOSUuid uuid) throws BOSException,SQLException {
String sql = "select " + colName + " from " + tableName + " where fid <> '" + uuid + "'";
IRowSet rowset = SQLExecutorFactory.getRemoteInstance(sql.toString()).executeSQL();
Boolean result = false;
while (rowset.next()) {
if(name.equals(rowset.getString(colName))){
result = true;
}
}
return result;
}
/**
* <p>Title: isLetterDigitOrChinese</p>
* <p>
* Description:
* 判断字符串中是否仅包含字母数字和汉字
* 各种字符的unicode编码的范围:
* 汉字:[0x4e00,0x9fa5](或十进制[19968,40869])
* 数字:[0x30,0x39](或十进制[48, 57])
* 小写字母:[0x61,0x7a](或十进制[97, 122])
* 大写字母:[0x41,0x5a](或十进制[65, 90])
* </p>
* <p>Copyright: Copyright (c) 2019</p>
* @author DZ_yanb
* @date 2020-1-2
* @param str
* @return
* @version 1.0
*/
public static boolean isLetterDigitOrChinese(String str) {
String regex = "^[a-z0-9A-Z\u4e00-\u9fa5]+$";
return str.matches(regex);
}
/**
* (non-Javadoc)
* 实现 员工信息修改时判断员工在受控清单中时,姓名不允许修改,不在受控清单中时,姓名允许修改 功能
* @see com.kingdee.eas.basedata.person.client.PersonEditUI#onLoad()
*/
@Override
public void onLoad() throws Exception {
super.onLoad();
allowNameChange();
this.btnEdit.setVisible(false);//设置双击时编辑按钮不可见
}
/**
* 判断是否允许修改名字
* 实现 员工信息修改时判断员工在受控清单中时,姓名不允许修改,不在受控清单中时,姓名允许修改 功能
* @throws SQLException
* @throws BOSException
*/
private void allowNameChange() throws SQLException, BOSException {
String sql = "select * from CT_BAS_Listofconperson where cfnewname = '" + this.txtName2.getDefaultLangItemData().toString() + "'";
IRowSet rowset = SQLExecutorFactory.getRemoteInstance(sql.toString()).executeSQL();
if(rowset.next()){
this.txtName2.setEnabled(false);
}
}
}
- 需求:员工信息修改时判断员工在受控清单中时,姓名和身份证号不允许修改,不在受控清单中时,姓名和身份证号允许修改,姓名还是受第11点不允许重复的控制。
需求有误,已核对,没有身份证。

- 编码实现
上面的 allowNameChange 方法
a. 后续被充需求,基础资料添加到受控人员清单时不允许重复
编码实现
/**
* output package name
*/
package com.kingdee.eas.custom.pinganlishun.permisapproval.basedata.client;
import java.awt.event.ActionEvent;
import org.apache.log4j.Logger;
import com.kingdee.bos.dao.query.SQLExecutorFactory;
import com.kingdee.bos.ui.face.CoreUIObject;
import com.kingdee.eas.common.EASBizException;
import com.kingdee.jdbc.rowset.IRowSet;
import com.kingdee.util.NumericExceptionSubItem;
/**
* <p>Title: </p>
* <p>
* Description:
* 受控人员清单编辑页面
* </p>
* <p>Copyright: Copyright (c) 2020</p>
* @author DZ_yanb
* @date 2020-1-8
* @version 1.0
*/
public class ListofconpersonEditUI extends AbstractListofconpersonEditUI
{
/**
* (non-Javadoc)
* 保存时不让人员重复
* @see com.kingdee.eas.framework.client.EditUI#actionSubmit_actionPerformed(java.awt.event.ActionEvent)
*/
@Override
public void actionSubmit_actionPerformed(ActionEvent arg0) throws Exception {
String sql = "select * from CT_BAS_Listofconperson where cfnewname = '" + this.prmtpersonNum.getValue() + "'";
IRowSet rowset = SQLExecutorFactory.getRemoteInstance(sql.toString()).executeSQL();
if(rowset.next()){
//重复给出提示
throw new EASBizException(new NumericExceptionSubItem("11", this.prmtpersonNum.getValue() + " 已被添加到受控人员清单,不可重复添加!"));
}else{
super.actionSubmit_actionPerformed(arg0);
}
}
}
- 1.4.2 对私支付银行账号控制
- 需求: 对私支付银行账号设置:在认证管理员下开发自动付款银行账号设置基础资料,只有认证管理员即郭总可以设置对私自动支付的招行账号;
- 实现
与上述的受控人员一样,只需在客户化菜单里设置即可,用专门的账号登录


- 编码
/**
* output package name
*/
package com.kingdee.eas.custom.pinganlishun.permisapproval.banknumber.client;
import java.awt.event.ActionEvent;
import java.sql.SQLException;
import org.apache.log4j.Logger;
import com.kingdee.bos.BOSException;
import com.kingdee.bos.dao.query.SQLExecutorFactory;
import com.kingdee.bos.ui.face.CoreUIObject;
import com.kingdee.bos.util.BOSUuid;
import com.kingdee.eas.common.EASBizException;
import com.kingdee.jdbc.rowset.IRowSet;
import com.kingdee.util.NumericExceptionSubItem;
/**
* <p>Title: </p>
* <p>
* Description:
* 对私支付账户清单编辑页面
* </p>
* <p>Copyright: Copyright (c) 2020</p>
* @author DZ_yanb
* @date 2020-1-8
* @version 1.0
*/
public class PrivatepanumberEditUI extends AbstractPrivatepanumberEditUI
{
/**
* (non-Javadoc)
* @see com.kingdee.eas.framework.client.EditUI#actionSubmit_actionPerformed(java.awt.event.ActionEvent)
* CT_BAN_Privatepanumber cfbankaccount
*/
@Override
public void actionSubmit_actionPerformed(ActionEvent e) throws Exception {
String bankaccount = this.txtbankaccount.getText();
BOSUuid uuid = editData.getId();
//编辑
if(isOnly("CT_BAN_Privatepanumber", "cfbankaccount", bankaccount, uuid)){
//成立则银行账号重复
throw new EASBizException(new NumericExceptionSubItem("110", "银行账号不能重复!"));
}
super.actionSubmit_actionPerformed(e);
}
/**
* <p>Title: isOnly</p>
* <p>
* Description:
* 验证某字段是否唯一
* </p>
* <p>Copyright: Copyright (c) 2019</p>
* @param tableName 表名
* @param colName 列名
* @param colNVal 列值
* @param uuid id值
* @return
* @throws BOSException
* @throws SQLException
*/
public Boolean isOnly(String tableName,String colName,String colNVal,BOSUuid uuid) throws BOSException,SQLException {
String sql = "";
if(uuid != null){//编辑
sql = "select " + colName + " from " + tableName + " where fid <> '" + uuid + "'";
}else{//新增
sql = "select " + colName + " from " + tableName + " where " + colName + "= '" + colNVal + "'";
}
IRowSet rowset = SQLExecutorFactory.getRemoteInstance(sql.toString()).executeSQL();
Boolean result = false;
while (rowset.next()) {
if(colNVal.equals(rowset.getString(colName))){
result = true;
}
}
return result;
}
}
分割线
相关信息
以上就是我关于 平安利顺项目复盘 知识点整理与总结的全部内容,希望对你有帮助。。。。。。。
Powered by Waline v2.15.4