平安利顺项目复盘

涎涎原创约 2191 字大约 7 分钟...KingdeeKingdee

168-平安利顺项目复盘.mdopen in new window

注意

本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。

  1. 需求:增加受控人员清单功能;受控人员清单菜单只能在认证账号下才能看到,才可用添加和修改受控人员信息;认证账号可以添加受控人员,也可以修改和删除受控人员;
  • 实现功能:

备注:认证账号 authenadmin/12345678 路径:企业建模 --> 安全管理 --> 权限管理 --> 受控人员清单

  • 实现效果
  • 想要实现认证账号可见,其它账号不可见只需要在客户化菜单做设置即可
  1. 需求: 用户账号修改控制;修改用户账号时判断,如果该账号绑定的人员为受控人员清单中的人员时,则人员字段锁定不可修改,如果不为受控人员清单中的人员时,按现在可修改的逻辑控制;新增或者修改用户账号保存时,判断关联的人员在受控人员清单中时,再判断该人员是否有多个用户账号,如果存在多个用户账号时则不能保存,提示“受控人员不允许存在多个账号!”;关联的人员不在受控清单中时,按现在逻辑控制;

备注:路径: 企业建模 --> 安全管理 --> 权限管理 --> 用户管理

  • 编码实现
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);
		}
	}
}

  1. 需求:员工信息保存时判断姓名不能重复,保存时判断姓名前后不能有特殊符号。

备注: 路径: 企业建模 --> 辅助数据 --> 员工信息 --> 员工

  • 编码
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);
		}
	}
}

  1. 需求:员工信息修改时判断员工在受控清单中时,姓名和身份证号不允许修改,不在受控清单中时,姓名和身份证号允许修改,姓名还是受第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 对私支付银行账号控制
  1. 需求: 对私支付银行账号设置:在认证管理员下开发自动付款银行账号设置基础资料,只有认证管理员即郭总可以设置对私自动支付的招行账号;
  • 实现

与上述的受控人员一样,只需在客户化菜单里设置即可,用专门的账号登录

  • 编码
/**
 * 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