1、人员节点sql
获取跨组织跨部门离退人员:
--把人员421从B组织的综合部门调出到A组织的离退休部门进行退休,用以下sql可以查询到在A组织中421这个人员
--未选择任何部门
select pk_psndoc, bd_psndoc.code, bd_psndoc.name, bd_psndoc.pk_org, org_orgs.code, org_orgs.name from bd_psndoc inner join org_orgs on bd_psndoc.pk_org = org_orgs.pk_org where not exists ( select pk_psndoc from bd_psnjob where bd_psnjob.pk_psndoc = bd_psndoc.pk_psndoc and pk_org = N'0001A110000000007LBY' ) and bd_psndoc.pk_org = N'0001A110000000007LBY' order by bd_psndoc.code, bd_psndoc.name
--选择离退休部门
select pk_psndoc, bd_psndoc.code, bd_psndoc.name, bd_psndoc.pk_org, org_orgs.code, org_orgs.name from bd_psndoc inner join org_orgs on bd_psndoc.pk_org = org_orgs.pk_org where not exists ( select pk_psndoc from bd_psnjob where bd_psnjob.pk_psndoc = bd_psndoc.pk_psndoc and pk_org = N'0001A110000000007LBY' and pk_dept in ( N'1001A110000000000NGN' )) and bd_psndoc.pk_org = N'0001A110000000007LBY' order by bd_psndoc.code, bd_psndoc.name
2、个人银行账户节点人员编码参照代码
个人银行账户节点卡片界面代码:
package nc.ui.bd.psnbankacc.view;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.Action;
import javax.swing.JComponent;
import javax.swing.SwingUtilities;
import nc.bs.framework.common.NCLocator;
import nc.bs.logging.Logger;
import nc.bs.uif2.BusinessExceptionAdapter;
import nc.desktop.ui.WorkbenchEnvironment;
import nc.itf.bd.bankdoc.IBankdocQueryService;
import nc.itf.uap.IUAPQueryBS;
import nc.ui.bd.bankacc.iban.BankaccnumRefPane;
import nc.ui.bd.bankacc.iban.IbanUtil;
import nc.ui.bd.psnbankacc.model.PsnBankaccAppModel;
import nc.ui.bd.ref.AbstractRefModel;
import nc.ui.bd.ref.model.BankDocDefaultRefTreeModel;
import nc.ui.bd.ref.model.NetbankTemplateDefaultRefModel;
import nc.ui.bd.ref.model.PsndocDefaultRefModel;
import nc.ui.pub.beans.UIButton;
import nc.ui.pub.beans.UIRefPane;
import nc.ui.pub.beans.UITextField;
import nc.ui.pub.bill.BillCardPanel;
import nc.ui.pub.bill.BillData;
import nc.ui.pub.bill.BillEditEvent;
import nc.ui.pub.bill.BillEditListener;
import nc.ui.pub.bill.BillItem;
import nc.ui.pub.bill.BillModel;
import nc.ui.pub.bill.BillScrollPane;
import nc.ui.uif2.AppEvent;
import nc.ui.uif2.IFunNodeClosingListener;
import nc.ui.uif2.components.AutoShowUpEventSource;
import nc.ui.uif2.components.IAutoShowUpComponent;
import nc.ui.uif2.components.IAutoShowUpEventListener;
import nc.ui.uif2.components.IComponentWithActions;
import nc.ui.uif2.components.ITabbedPaneAwareComponent;
import nc.ui.uif2.components.ITabbedPaneAwareComponentListener;
import nc.ui.uif2.components.TabbedPaneAwareCompnonetDelegate;
import nc.ui.uif2.editor.BillForm;
import nc.ui.uif2.model.AbstractAppModel;
import nc.vo.bd.bankaccount.BankAccbasVO;
import nc.vo.bd.bankdoc.BankdocVO;
import nc.vo.bd.banktype.BanktypeCodeConst;
import nc.vo.bd.psnbankacc.PsnBankaccUnionVO;
import nc.vo.org.GroupVO;
import nc.vo.org.OrgQueryUtil;
import nc.vo.org.OrgVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.ValidationException;
import nc.vo.pub.lang.UFDateTime;
import nc.vo.uap.rbac.FuncSubInfo;
import nc.vo.uif2.LoginContext;
import org.apache.commons.lang.StringUtils;
public class PsnBankaccEditor extends BillForm implements IAutoShowUpComponent, ITabbedPaneAwareComponent, BillEditListener, IComponentWithActions {
private static final long serialVersionUID = 1L;
private IAutoShowUpComponent autoShowUpComponent;
private ITabbedPaneAwareComponent tabbedPaneAwareComponent;
private IFunNodeClosingListener closingListener;
private IBankdocQueryService bankDocQueryService;
private IUAPQueryBS queryService;
private List<Action> actions = null;
private Map<String, String> map = new HashMap();
private BankaccnumRefPane ibanRefPane = null;
public PsnBankaccEditor() {
this.autoShowUpComponent = new AutoShowUpEventSource(this);
this.tabbedPaneAwareComponent = new TabbedPaneAwareCompnonetDelegate();
}
public void initUI() {
super.initUI();
resetAccnumComponent();
this.billCardPanel.addEditListener(this);
UIRefPane areacodeRef = (UIRefPane) this.billCardPanel.getHeadItem("a.areacode").getComponent();
areacodeRef.setNotLeafSelectedEnabled(false);
UIRefPane bankaccbasRef = (UIRefPane) this.billCardPanel.getHeadItem("pk_bankaccbas").getComponent();
bankaccbasRef.getRefModel().setMutilLangNameRef(false);
initOrgRef();
getBillCardPanel().setBillData(getBillCardPanel().getBillData());
}
private void resetAccnumComponent() {
UIRefPane ibanRef = getIbanRefPane();
ibanRef.getUITextField().setTextType("TextAccountStr");
ibanRef.getUIButton().setEnabled(false);
getBillCardPanel().getHeadItem("a.accnum").setComponent(ibanRef);
getBillCardPanel().getHeadItem("a.accnum").setEdit(false);
}
private void initOrgRef() {
UIRefPane orgPane = (UIRefPane) getBillCardPanel().getHeadItem("pk_org").getComponent();
orgPane.getRefModel().setUseDataPower(true);
String[] pkorgs = OrgQueryUtil.filterPkorgsByOrgType("ADMINORGTYPE00000000", getModel().getContext().getFuncInfo().getFuncPermissionPkorgs());
orgPane.getRefModel().setFilterPks(pkorgs);
}
protected void setDefaultValue() {
String pk_org = getModel().getContext().getPk_org();
String pk_group = WorkbenchEnvironment.getInstance().getGroupVO().getPrimaryKey();
this.billCardPanel.setHeadItem("pk_org", pk_org);
this.billCardPanel.setHeadItem("a.pk_org", pk_org);
this.billCardPanel.setHeadItem("a.pk_group", pk_group);
this.billCardPanel.setHeadItem("pk_group", pk_group);
this.billCardPanel.setHeadItem("a.accopendate", WorkbenchEnvironment.getServerTime().getDate());
if (!StringUtils.isBlank(getModel().getContext().getPk_org())) {
setRequestFocus(false);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
BillItem psndoc = PsnBankaccEditor.this.getBillCardPanel().getHeadItem("pk_psndoc");
psndoc.setEnabled(true);
psndoc.getComponent().requestFocus(true);
PsnBankaccEditor.this.setRequestFocus(true);
}
});
}
}
protected void onAdd() {
super.onAdd();
showMeUp();
UIRefPane psndocRefPane = (UIRefPane) this.billCardPanel.getHeadItem("pk_psndoc").getComponent();
if (((PsnBankaccAppModel) getModel()).isPsndoc()) {
psndocRefPane.setRefNodeName("人员");
} else {
psndocRefPane.setRefNodeName("HR相关人员");
}
((PsndocDefaultRefModel) psndocRefPane.getRefModel()).setLeavePowerUI(true);
((PsndocDefaultRefModel) psndocRefPane.getRefModel()).setLeavePower(true);
setBankaccNumEdit(true);
setRefitemsWhenAdd();
setAccnumRefVisible();
boolean isAutoAddLine = this.billCardPanel.getBodyPanel().isAutoAddLine();
this.billCardPanel.setBodyAutoAddLine(false);
this.billCardPanel.addLine();
this.billCardPanel.setBodyAutoAddLine(isAutoAddLine);
}
protected void onNotEdit() {
super.onNotEdit();
resetPsnRefWherePart();
}
private void setRefitemsWhenAdd() {
String pk_org = (String) getBillCardPanel().getHeadItem("pk_org").getValueObject();
if (!StringUtils.isBlank(pk_org)) {
setRefwhereByOrg(pk_org);
}
UIRefPane bankdocRef = (UIRefPane) this.billCardPanel.getHeadItem("a.pk_bankdoc").getComponent();
((BankDocDefaultRefTreeModel) bankdocRef.getRefModel()).setClassWherePart(BanktypeCodeConst.BANKTYPEREFWHEREPART);
UIRefPane banktypeRef = (UIRefPane) this.billCardPanel.getHeadItem("a.pk_banktype").getComponent();
banktypeRef.setWhereString("(" + BanktypeCodeConst.BANKTYPEREFWHEREPART + ")");
}
private void setRefwhereByOrg(String pk_org) {
UIRefPane psndocRef = (UIRefPane) this.billCardPanel.getHeadItem("pk_psndoc").getComponent();
psndocRef.getRefModel().setPk_org(pk_org);
if (psndocRef.getRefNodeName().equals("人员")) {
// begin 2023-08-25 add lsl
((PsndocDefaultRefModel) psndocRef.getRefModel()).setWherePart("bd_psnjob.pk_org='" + pk_org + "'");//人员工作信息任职行政组织
// ((PsndocDefaultRefModel1) psndocRef.getRefModel()).setWherePart("hi_psnjob.pk_org='" + pk_org + "'");//人员工作记录任职行政组织
// end 2023-08-25 add lsl
((PsndocDefaultRefModel) psndocRef.getRefModel()).setMatchPkWithWherePart(true);
}
}
private void resetPsnRefWherePart() {
UIRefPane psndocRef = (UIRefPane) this.billCardPanel.getHeadItem("pk_psndoc").getComponent();
if (psndocRef.getRefNodeName().equals("人员")) {
((PsndocDefaultRefModel) psndocRef.getRefModel()).setWherePart(null);
((PsndocDefaultRefModel) psndocRef.getRefModel()).setMatchPkWithWherePart(false);
}
if (!((PsnBankaccAppModel) getModel()).isPsndoc()) {
psndocRef.setRefNodeName("人员");
}
}
protected void onEdit() {
super.onEdit();
showMeUp();
setRefitemsWhenEdit();
this.billCardPanel.getHeadItem("pk_org").setEnabled(false);
setRefwhereByOrg(this.billCardPanel.getHeadItem("pk_org").getValue());
if (1 != ((PsnBankaccUnionVO) getModel().getSelectedData()).getBankaccbasVO().getEnablestate().intValue()) {
this.billCardPanel.getHeadItem("a.accnum").setEnabled(false);
this.billCardPanel.getHeadItem("pk_psndoc").setEnabled(false);
}
setAccnumRefVisible();
setBankaccNumEdit(false);
}
private void setRefitemsWhenEdit() {
PsnBankaccUnionVO uninVO = (PsnBankaccUnionVO) getModel().getSelectedData();
String pk_banktype = uninVO.getBankaccbasVO().getPk_banktype();
if (pk_banktype != null) {
UIRefPane netBankTemplet = (UIRefPane) this.billCardPanel.getHeadItem("a.pk_netbankinftp").getComponent();
netBankTemplet.setWhereString("pk_banktype='" + pk_banktype + "'");
}
UIRefPane bankdocRef = (UIRefPane) this.billCardPanel.getHeadItem("a.pk_bankdoc").getComponent();
((BankDocDefaultRefTreeModel) bankdocRef.getRefModel()).setClassWherePart(BanktypeCodeConst.BANKTYPEREFWHEREPART);
UIRefPane banktypeRef = (UIRefPane) this.billCardPanel.getHeadItem("a.pk_banktype").getComponent();
banktypeRef.setWhereString("(" + BanktypeCodeConst.BANKTYPEREFWHEREPART + ")");
}
public void handleEvent(AppEvent event) {
super.handleEvent(event);
if (event.getType().equals("Show_Editor")) {
showMeUp();
}
}
private void setBankaccNumEdit(boolean isAdd) {
if (isAdd) {
this.billCardPanel.getHeadItem("a.accnum").setEdit(true);
} else {
int enablestate = ((Integer) this.billCardPanel.getHeadItem("a.enablestate").getValueObject()).intValue();
if (1 != enablestate) {
this.billCardPanel.getHeadItem("a.accnum").setEdit(false);
} else {
this.billCardPanel.getHeadItem("a.accnum").setEdit(true);
}
}
}
public void setAutoShowUpEventListener(IAutoShowUpEventListener l) {
this.autoShowUpComponent.setAutoShowUpEventListener(l);
}
public void showMeUp() {
PsnBankaccAppModel appModel = (PsnBankaccAppModel) getModel();
appModel.setViewType("editor");
this.autoShowUpComponent.showMeUp();
}
public void addTabbedPaneAwareComponentListener(ITabbedPaneAwareComponentListener l) {
this.tabbedPaneAwareComponent.addTabbedPaneAwareComponentListener(l);
}
public boolean canBeHidden() {
if (this.closingListener != null) {
return this.closingListener.canBeClosed();
}
return this.tabbedPaneAwareComponent.canBeHidden();
}
public boolean isComponentVisible() {
return this.tabbedPaneAwareComponent.isComponentVisible();
}
public void setComponentVisible(boolean visible) {
this.tabbedPaneAwareComponent.setComponentVisible(visible);
}
public void afterEdit(BillEditEvent e) {
if (e.getKey().equals("pk_org")) {
String pk_org = (String) this.billCardPanel.getHeadItem("pk_org").getValueObject();
if (!StringUtils.isBlank(pk_org)) {
setRefwhereByOrg(pk_org);
UIRefPane bankdocRef = (UIRefPane) this.billCardPanel.getHeadItem("a.pk_bankdoc").getComponent();
bankdocRef.setPk_org(pk_org);
if (!StringUtils.isBlank((String) this.map.get(pk_org))) {
this.billCardPanel.getBillModel().setValueAt(this.map.get(pk_org), 0, "pk_currtype_ID");
this.billCardPanel.getBillModel().loadLoadRelationItemValue(0, "pk_currtype");
} else {
try {
OrgVO vo = (OrgVO) getQueryBS().retrieveByPK(OrgVO.class, pk_org, new String[] { "pk_currtype" });
if ((vo != null) && (vo.getPk_currtype() != null)) {
this.billCardPanel.getBillModel().setValueAt(vo.getPk_currtype(), 0, "pk_currtype_ID");
this.billCardPanel.getBillModel().loadLoadRelationItemValue(0, "pk_currtype");
}
} catch (BusinessException ex) {
Logger.error(ex);
}
}
String pk_psndoc = (String) this.billCardPanel.getHeadItem("pk_psndoc").getValueObject();
String psndoc_name = this.billCardPanel.getHeadItem("pk_psndoc.name").getValue();
if (!StringUtils.isBlank(pk_psndoc)) {
this.billCardPanel.getHeadItem("pk_psndoc").setValue(null);
}
if (!StringUtils.isBlank(psndoc_name)) {
this.billCardPanel.getHeadItem("pk_psndoc.name").setValue(null);
}
}
if (getBillCardPanel().getBillData().isImporting()) {
UIRefPane psndocRef = (UIRefPane) this.billCardPanel.getHeadItem("pk_psndoc").getComponent();
PsndocDefaultRefModel psnRefModel = (PsndocDefaultRefModel) psndocRef.getRefModel();
psnRefModel.setPk_org(pk_org);
String classWhere = " org_dept.pk_org='" + pk_org + "'";
psnRefModel.setClassWherePart(classWhere);
psnRefModel.setMatchPkWithWherePart(true);
// begin 2023-08-25 add lsl
((PsndocDefaultRefModel) psndocRef.getRefModel()).setWherePart("bd_psnjob.pk_org='" + pk_org + "'");//人员工作信息任职行政组织
// ((PsndocDefaultRefModel1) psndocRef.getRefModel()).setWherePart("hi_psnjob.pk_org='" + pk_org + "'");//人员工作记录任职行政组织
// end 2023-08-25 add lsl
}
} else if ("a.pk_bankdoc".equals(e.getKey())) {
setAccnumRefVisible();
Object bankdocObj = this.billCardPanel.getHeadItem("a.pk_bankdoc").getValueObject();
UIRefPane bankdocRef = (UIRefPane) this.billCardPanel.getHeadItem("a.pk_bankdoc").getComponent();
BillItem banktypeItem = this.billCardPanel.getHeadItem("a.pk_banktype");
if (bankdocObj != null) {
Object pk_banktype = bankdocRef.getRefValue("pk_banktype");
banktypeItem.setValue(pk_banktype);
banktypeItem.setEnabled(false);
try {
BankdocVO bankdocVO = getBankDocService().getBankdocVOByPk(bankdocObj.toString());
if (bankdocVO != null) {
this.billCardPanel.getHeadItem("a.areacode").setValue(bankdocVO.getAreacode());
this.billCardPanel.getHeadItem("a.combinenum").setValue(bankdocVO.getCombinenum());
this.billCardPanel.getHeadItem("a.orgnumber").setValue(bankdocVO.getOrgnumber());
this.billCardPanel.getHeadItem("a.bankarea").setValue(bankdocVO.getBankarea());
this.billCardPanel.getHeadItem("a.province").setValue(bankdocVO.getProvince());
this.billCardPanel.getHeadItem("a.city").setValue(bankdocVO.getCity());
this.billCardPanel.getHeadItem("a.customernumber").setValue(bankdocVO.getCustomernumber());
this.billCardPanel.getHeadItem("a.issigned").setValue(bankdocVO.getIssigned());
}
} catch (BusinessException be) {
Logger.error(be.getMessage(), be);
}
} else {
banktypeItem.setValue(null);
banktypeItem.setEnabled(true);
this.billCardPanel.getHeadItem("a.areacode").setValue(null);
this.billCardPanel.getHeadItem("a.combinenum").setValue(null);
this.billCardPanel.getHeadItem("a.orgnumber").setValue(null);
this.billCardPanel.getHeadItem("a.bankarea").setValue(null);
this.billCardPanel.getHeadItem("a.province").setValue(null);
this.billCardPanel.getHeadItem("a.city").setValue(null);
this.billCardPanel.getHeadItem("a.customernumber").setValue(null);
this.billCardPanel.getHeadItem("a.issigned").setValue(null);
}
} else if ("a.pk_banktype".equals(e.getKey())) {
BillItem bankdocItem = getBillCardPanel().getHeadTailItem("a.pk_bankdoc");
BillItem banknetItem = getBillCardPanel().getHeadTailItem("a.pk_netbankinftp");
Object banktypeObj = this.billCardPanel.getHeadItem("a.pk_banktype").getValueObject();
UIRefPane bankdocRef = (UIRefPane) bankdocItem.getComponent();
UIRefPane netBankRef = (UIRefPane) banknetItem.getComponent();
if (banktypeObj != null) {
String pk_banktype = banktypeObj.toString();
banknetItem.setValue(null);
bankdocItem.setValue(null);
((BankDocDefaultRefTreeModel) bankdocRef.getRefModel()).setClassWherePart(" bd_banktype.pk_banktype='" + pk_banktype + "'");
((NetbankTemplateDefaultRefModel) netBankRef.getRefModel()).setWherePart("bd_netbankinftp.pk_banktype='" + pk_banktype + "'");
} else {
((BankDocDefaultRefTreeModel) bankdocRef.getRefModel()).setClassWherePart(null);
((NetbankTemplateDefaultRefModel) netBankRef.getRefModel()).setWherePart(null);
}
}
}
public void bodyRowChange(BillEditEvent e) {
}
public IFunNodeClosingListener getClosingListener() {
return this.closingListener;
}
public void setClosingListener(IFunNodeClosingListener closingListener) {
this.closingListener = closingListener;
}
private IBankdocQueryService getBankDocService() {
if (null == this.bankDocQueryService) {
this.bankDocQueryService = ((IBankdocQueryService) NCLocator.getInstance().lookup(IBankdocQueryService.class));
}
return this.bankDocQueryService;
}
private IUAPQueryBS getQueryBS() {
if (this.queryService == null)
this.queryService = ((IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class));
return this.queryService;
}
public List<Action> getActions() {
return this.actions;
}
public void setActions(List<Action> actions) {
this.actions = actions;
}
private BankaccnumRefPane getIbanRefPane() {
if (this.ibanRefPane == null) {
this.ibanRefPane = new BankaccnumRefPane(this, "a.pk_bankdoc");
this.ibanRefPane.setFuncode(getModel().getContext().getFuncInfo().getFuncode());
}
return this.ibanRefPane;
}
private void setAccnumRefVisible() {
IbanUtil.setAccnumRefVisible(this, "a.accnum", "a.pk_bankdoc");
}
protected void beforeGetValue() {
super.beforeGetValue();
try {
this.billCardPanel.dataNotNullValidate();
} catch (ValidationException e) {
throw new BusinessExceptionAdapter(e);
}
}
}
字段 人员编码 参照代码
原版,即根据人员工作信息关联查询(bd_psnjob)
package nc.ui.bd.ref.model;
import java.util.Map;
import java.util.Vector;
import javax.swing.tree.DefaultMutableTreeNode;
import nc.bs.IconResources;
import nc.bs.sec.esapi.NCESAPI;
import nc.jdbc.framework.util.DBConsts;
import nc.ui.bd.ref.AbstractRefModel;
import nc.vo.bd.psn.PsnjobVO;
import nc.vo.bd.pub.IPubEnumConst;
import nc.vo.org.DeptVO;
import nc.vo.org.OrgVO;
import nc.vo.org.util.OrgTreeCellRendererIconPolicy;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.relation.AdminDeptVO;
import nc.vo.relation.BusiFuncVO;
import nc.vo.util.SqlWhereUtil;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
/**
* 人员档案参照 <br>
* <b>注:<b> 可显示公司参照过滤数据(请设置UIRefPane.setMultiCorpRef(true)),否则,需设置pk_org为具体某一公司
* 如果是跨集团的话,需设置setIsMutiGroup(true),否则默认的集团是登陆集团
*
* @author jiangjuna
*/
public class PsndocDefaultNCRefModel extends PsndocDefaultRefModel {
private String busifuncode = null;
private String[] orgFilterPks;
private Map<String, AbstractRefModel> filterRefMap;
public String[] getOrgFilterPks() {
return this.orgFilterPks;
}
public void setOrgFilterPks(String[] orgFilterPks) {
this.orgFilterPks = orgFilterPks;
}
public PsndocDefaultNCRefModel() {
reset();
}
@Override
public void reset() {
super.reset();
if (StringUtils.isNotBlank(getBusifuncode())) {
setClassFieldCode(new String[] { OrgVO.CODE, OrgVO.NAME, OrgVO.PK_ORG, OrgVO.PK_FATHERORG, OrgVO.ISBUSINESSUNIT });
setFatherField(DeptVO.PK_FATHERORG);
setChildField(PsnjobVO.PK_DEPT);
setClassTableName("(select " + OrgVO.CODE + " ," + OrgVO.NAME + "," + OrgVO.NAME2 + "," + OrgVO.NAME3 + "," + OrgVO.NAME4 + "," + OrgVO.NAME5 + "," + OrgVO.NAME6 + "," + OrgVO.PK_ORG + ",case when " + OrgVO.ORGTYPE3 + " = 'Y' and isnull(" + OrgVO.PK_FATHERORG + ", '~') = '~' then " + OrgVO.PK_OWNORG + " else " + OrgVO.PK_FATHERORG + " end as " + OrgVO.PK_FATHERORG + "," + OrgVO.ISBUSINESSUNIT + "," + OrgVO.ENABLESTATE + "," + OrgVO.PK_OWNORG + " , " + OrgVO.ORGTYPE3 + " from " + OrgVO.getDefaultTableName() + " where (" + OrgVO.ORGTYPE3 + " = 'Y' or " + OrgVO.ISBUSINESSUNIT + " = 'Y')) temp_dept");
// setClassDataPower(false);
setClassJoinField(OrgVO.PK_ORG);
}
this.setTreeIconPolicy(new OrgTreeCellRendererIconPolicy(IconResources.ICON_Bu) {
public String getSpecialNodeIcon(Object curTreeNode) {
if (curTreeNode instanceof DefaultMutableTreeNode && StringUtils.isNotBlank(getBusifuncode())) {
DefaultMutableTreeNode n = (DefaultMutableTreeNode) curTreeNode;
Object o = n.getUserObject();
if (o instanceof Vector) {
@SuppressWarnings("rawtypes")
Vector v = ((Vector) o);
String isbusinessunit = (String) v.get(getClassFieldIndex(OrgVO.ISBUSINESSUNIT));
if (UFBoolean.valueOf(isbusinessunit).booleanValue()) {
return IconResources.ICON_Bu;
} else {
return IconResources.ICON_Department;
}
}
}
return null;
}
});
// 显示人员工作信息的任职部门
setFieldCode(new String[] { "bd_psndoc.code", "bd_psndoc.name", "bd_psnjob.pk_dept" });
setFieldName(new String[] { nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0065")/*人员编码*/, nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0066")/*人员姓名*/, nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0085")/*部门名称*/ });// "编码","姓名","部门"
// 显示人员工作信息的任职部门
String deptFomula = "getMLCValue(" + DeptVO.getDefaultTableName() + ", " + DeptVO.NAME + ", " + DeptVO.PK_DEPT + ", " + "bd_psnjob.pk_dept" + ")";
setFormulas(new String[][] { { "bd_psnjob.pk_dept", deptFomula } });
setHiddenFieldCode(new String[] { "bd_psndoc.pk_psndoc", "bd_psnjob.pk_psnjob", "bd_psndoc.idtype", "bd_psndoc.id" });
setDefaultFieldCount(3);
// if (!ArrayUtils.isEmpty(orgFilterPks)) {
// this.getFilterRefModel("业务单元").setFilterPks(orgFilterPks);/*
// -=notranslate=- */
// }
}
public void setFilterRefMap(Map<String, AbstractRefModel> filterRefMap) {
this.filterRefMap = filterRefMap;
if (!ArrayUtils.isEmpty(orgFilterPks) && this.getFilterRefModel("业务单元") != null) {
this.getFilterRefModel("业务单元").setFilterPks(orgFilterPks);/*
* -=notranslate= -
*/
}
}
public AbstractRefModel getFilterRefModel(String refNodeName) {
if (this.filterRefMap == null) {
return null;
}
return this.filterRefMap.get(refNodeName);
}
public void setBusifuncode(String busifuncode) {
this.busifuncode = busifuncode;
reset();
}
public String getBusifuncode() {
if (getKeyValueExtendMap() != null) {
if (getKeyValueExtendMap().get(IBusiConst.BUSIFUNCODE) != null) {
return getKeyValueExtendMap().get(IBusiConst.BUSIFUNCODE).toLowerCase();
}
}
return busifuncode;
}
@Override
public String getClassWherePart() {
if (StringUtils.isNotBlank(getBusifuncode())) {
SqlWhereUtil sw = new SqlWhereUtil();
sw.and(OrgVO.ENABLESTATE + " = " + IPubEnumConst.ENABLESTATE_ENABLE);
sw.and();
sw.l();
sw.s(OrgVO.PK_ORG + " in (select " + AdminDeptVO.PK_ADMINORG + " from " + AdminDeptVO.getDefaultTableName() + " where (enablestate = 2) and " + getBusifuncCondition() + ")");
sw.or(" (" + OrgVO.PK_OWNORG + " in (select " + AdminDeptVO.PK_ADMINORG + " from " + AdminDeptVO.getDefaultTableName() + " where (enablestate = 2) and " + getBusifuncCondition() + " and isnull(" + AdminDeptVO.PK_DEPT + ", '" + DBConsts.NULL_WAVE + "') = '" + DBConsts.NULL_WAVE + "') and " + OrgVO.ORGTYPE3 + " = 'Y')");
sw.or(OrgVO.PK_ORG + " in (select " + AdminDeptVO.PK_DEPT + " from " + AdminDeptVO.getDefaultTableName() + " where (enablestate = 2) and " + getBusifuncCondition() + " )");
sw.or(OrgVO.PK_ORG + " = '" + getPk_org() + "'");
sw.or(OrgVO.PK_OWNORG + " = '" + getPk_org() + "'");
sw.r();
return sw.getSQLWhere();
} else {
return super.getClassWherePart();
}
}
protected String getEnvWherePart() {
if (StringUtils.isNotBlank(getBusifuncode())) {
SqlWhereUtil sw = new SqlWhereUtil();
sw.and();
sw.l();
sw.and(PsnjobVO.getDefaultTableName() + "." + PsnjobVO.PK_ORG + " in (select " + AdminDeptVO.PK_ADMINORG + " from " + AdminDeptVO.getDefaultTableName() + " where " + getBusifuncCondition() + " and isnull(" + AdminDeptVO.PK_DEPT + ", '" + DBConsts.NULL_WAVE + "') = '" + DBConsts.NULL_WAVE + "')");
sw.or(PsnjobVO.getDefaultTableName() + "." + PsnjobVO.PK_DEPT + " in (select " + AdminDeptVO.PK_DEPT + " from " + AdminDeptVO.getDefaultTableName() + " where " + getBusifuncCondition() + " )");
sw.or(PsnjobVO.getDefaultTableName() + "." + PsnjobVO.PK_ORG + " = '" + NCESAPI.clientSqlEncode(getPk_org()) + "'");
sw.r();
return sw.getSQLWhere() + getIsLeaveCondition();
} else {
return super.getEnvWherePart();
}
}
private String getBusifuncCondition() {
// 使用all是因为构造安装盘使用的NC_HOME是19号之前的, IPubEnumConst中不包含all常量
if (getBusifuncode().equals("all")) {
return AdminDeptVO.PK_BUSIROLE + " in (select " + BusiFuncVO.PK_BUSICHILD + " from " + BusiFuncVO.getDefaultTableName() + " where " + BusiFuncVO.PK_ORG + " = '" + NCESAPI.clientSqlEncode(getPk_org()) + "')";
} else {
return AdminDeptVO.PK_BUSIROLE + " in (select " + BusiFuncVO.PK_BUSICHILD + " from " + BusiFuncVO.getDefaultTableName() + " where " + BusiFuncVO.PK_ORG + " = '" + NCESAPI.clientSqlEncode(getPk_org()) + "' and " + BusiFuncVO.ORG_FUNCTION + " like '%" + NCESAPI.clientSqlEncode(getBusifuncode()) + "%')";
}
}
}
package nc.ui.bd.ref.model;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Map;
import java.util.Set;
import java.util.Vector;
import nc.itf.bd.pub.IBDResourceIDConstBasic;
import nc.itf.org.IOrgResourceCodeConstBasic;
import nc.ui.bd.ref.AbstractRefGridTreeBigDataModel;
import nc.ui.bd.ref.IRefConst;
import nc.ui.bd.ref.IRefDocEdit;
import nc.ui.bd.ref.IRefMaintenanceHandler;
import nc.ui.bd.ref.RefSearchFieldSetting;
import nc.ui.pub.beans.ValueChangedEvent;
import nc.vo.bd.psn.PsndocVO;
import nc.vo.bd.psn.PsnjobVO;
import nc.vo.bd.psn.util.GetBusiDateUtil;
import nc.vo.org.DeptVO;
import nc.vo.pub.lang.UFLiteralDate;
import nc.vo.util.SqlWhereUtil;
/**
* 人员档案参照 <br>
* <b>注:<b> 可显示公司参照过滤数据(请设置UIRefPane.setMultiCorpRef(true)),否则,需设置pk_org为具体某一公司
* 如果是跨集团的话,需设置setIsMutiGroup(true),否则默认的集团是登陆集团
*
* @author jiangjuna
*
*/
public class PsndocDefaultRefModel extends AbstractRefGridTreeBigDataModel {
private boolean isMutiGroup = false;
// 显示离职人员在界面上的开关,默认不开启
private boolean leavePowerUI = false;
/* 离职人员开关,默认为false,即不显示离职人员,true为显示离职人员 */
private boolean leavePower = false;
// 获取业务日期
private UFLiteralDate nowDate = getNowDate();
public PsndocDefaultRefModel() {
reset();
}
@SuppressWarnings({ "unchecked", "static-access" })
@Override
public void reset() {
setRefNodeName("人员");/* -=notranslate=- */
if (isLeavePowerUI()) {
setUiControlComponentClassName("nc.ui.bd.psn.psndoc.ref.busi.PsndocRefModelWithLeavedSelectedPanel");
}
setRootName(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0085"));// 部门
setClassFieldCode(new String[] { DeptVO.CODE, DeptVO.NAME, DeptVO.PK_DEPT, DeptVO.PK_FATHERORG });
setFatherField(DeptVO.PK_FATHERORG);
setChildField(PsnjobVO.PK_DEPT);
setClassJoinField(PsnjobVO.PK_DEPT);
setClassTableName(new DeptVO().getDefaultTableName());
setClassDefaultFieldCount(2);
setClassDataPower(true);
setFieldCode(new String[] { "bd_psndoc.code", "bd_psndoc.name", "bd_psnjob.pk_dept" });
setFieldName(new String[] { nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0065"), nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0066"), nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0085") });// "编码", "姓名", "部门"
setDefaultFieldCount(3);
// 不增加隐藏的pk_dept字段,匹配时不能直接选中相应的树节点
setHiddenFieldCode(new String[] { "bd_psndoc.pk_psndoc", "bd_psndoc.idtype", "bd_psndoc.id" });
setTableName("bd_psndoc left join bd_psnjob on bd_psndoc.pk_psndoc = bd_psnjob.pk_psndoc");
setPkFieldCode("bd_psndoc.pk_psndoc");
setDocJoinField("bd_psnjob.pk_dept");
setRefCodeField("bd_psndoc.code");
setRefNameField("bd_psndoc.name");
// setCommonDataBasDocTableName(new PsnjobVO().getTableName());
// setCommonDataBasDocPkField("bd_psnjob.pk_psnjob");
setCommonDataTableName(new PsndocVO().getTableName());
String strFomula = "getmlcvalue(\"org_dept\",\"name\",\"pk_dept\",bd_psnjob.pk_dept)";
setFormulas(new String[][] { { "bd_psnjob.pk_dept", strFomula } });
if (!isMutiGroup())
setFilterRefNodeName(new String[] { "业务单元" });/* -=notranslate=- */
else
setFilterRefNodeName(new String[] { "集团", "业务单元" /* -=notranslate=- */ });
setResourceID(IBDResourceIDConstBasic.PSNDOC);
setClassResouceID(IOrgResourceCodeConstBasic.DEPT);
setAddEnableStateWherePart(true);
// 过滤重复数据
setStrPatch(IRefConst.DISTINCT);
resetFieldName();
Hashtable content = new Hashtable();
content.put("0", nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0098"));// 身份证
content.put("1", nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0099"));// 军官证
content.put("2", nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0100"));// 护照
Hashtable convert = new Hashtable();
convert.put("bd_psndoc.idtype", content);
setDispConvertor(convert);
setBlurQueryTableName("bd_psndoc");
setRefMaintenanceHandler(new IRefMaintenanceHandler() {
@Override
public String[] getFucCodes() {
return new String[] { "10140PSN" };
}
@Override
public IRefDocEdit getRefDocEdit() {
return null;
}
});
// ------------------------------------------指定全文检索相关的设置信息-------------------------
// 所有的搜索列及列描述
Map<String, String> allFields = new HashMap<String, String>();
allFields.put("name", nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0066")/* 姓名 */);
allFields.put("code", nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0065")/* 编码 */);
// 黙认的搜索列,按顺序进行搜索
String[] defaultSearchFields = new String[] { "code", "name" };
// 需要指定当前参照的nodeName
String refNodeName = "人员"/* -=notranslate=- */;
RefSearchFieldSetting setting = new RefSearchFieldSetting(refNodeName, allFields, defaultSearchFields);
setSearchFieldSetting(setting);
// -------------------------------------------------------------------------------------------
}
@Override
protected Vector getConvertedData(boolean isDataFromCache, Vector v, boolean isDefConverted) {
Vector rows = super.getConvertedData(isDataFromCache, v, isDefConverted);
if (rows == null || rows.size() == 0) {
return rows;
}
int pkIndex = getFieldIndex(getPkFieldCode());
Set<String> existPkSet = new HashSet<String>();
Vector<Vector> newRows = new Vector<Vector>();
for (int i = 0; i < rows.size(); i++) {
Vector row = (Vector) rows.get(i);
if (!existPkSet.contains(row.get(pkIndex))) {
existPkSet.add((String) row.get(pkIndex));
newRows.add(row);
}
}
return newRows;
}
@Override
public void filterValueChanged(ValueChangedEvent changedValue) {
String[] pk_orgs = (String[]) changedValue.getNewValue();
if (pk_orgs != null && pk_orgs.length > 0 && pk_orgs[0] != null) {
if (!pk_orgs[0].equals(getFilterRefModel("业务单元"/* -=notranslate=- */).getPkValue())) {
getFilterRefModel("业务单元"/* -=notranslate=- */).setPk_group(pk_orgs[0]);
getFilterRefModel("业务单元"/* -=notranslate=- */).reloadData();
setPk_org(null);
} else {
setPk_org(pk_orgs[0]);
}
} else {
if (getFilterRefModel("业务单元"/* -=notranslate=- */).getPkValue() != null) {
getFilterRefModel("业务单元"/* -=notranslate=- */).setPk_group(null);
setPk_org(null);
} else {
setPk_org(null);
}
}
}
@Override
public String getClassWherePart() {
SqlWhereUtil sw = new SqlWhereUtil(super.getClassWherePart());
sw.and(DeptVO.PK_ORG + " = '" + getPk_org() + "' and " + DeptVO.ENABLESTATE + "=2");
return sw.getSQLWhere();
}
protected String getEnvWherePart() {
// 按工作信息的任职业务单元过滤显示的数据
return "bd_psnjob.pk_org = '" + getPk_org() + "'" + getIsLeaveCondition();
}
protected String getIsLeaveCondition() {
if (isLeavePowerUI()) {// 界面开关开启
if (isLeavePower()) {
// 显示离职人员,包括停用人员,不在这里设置,否则界面输入的值要被清空
// setDisabledDataShow(true);
return "";
} else {
// 显示在职的人员,是否停用由参照统一控制
return " and bd_psnjob.indutydate <='" + nowDate + "' and (bd_psnjob.enddutydate >='" + nowDate + "' or bd_psnjob.enddutydate ='~'" + " or bd_psnjob.enddutydate is null)";
}
} else {// 界面开关不开启,显示在职的已启用人员
return " and bd_psnjob.indutydate <='" + nowDate + "' and (bd_psnjob.enddutydate >='" + nowDate + "' or bd_psnjob.enddutydate ='~'" + " or bd_psnjob.enddutydate is null)";
}
}
public boolean isMutiGroup() {
return isMutiGroup;
}
public void setMutiGroup(boolean isMutiGroup) {
this.isMutiGroup = isMutiGroup;
if (isMutiGroup()) {
setFilterRefNodeName(new String[] { "集团", "业务单元"/* -=notranslate=- */ });
} else {
setFilterRefNodeName(new String[] { "业务单元" });/* -=notranslate=- */
}
}
public boolean isLeavePower() {
return leavePower;
}
public void setLeavePower(boolean leavePower) {
this.leavePower = leavePower;
}
public void setNowDate(UFLiteralDate nowDate) {
this.nowDate = nowDate;
}
private UFLiteralDate getNowDate() {
if (nowDate == null) {
nowDate = new GetBusiDateUtil().getNowDate();
}
return nowDate;
}
public boolean isLeavePowerUI() {
return leavePowerUI;
}
public void setLeavePowerUI(boolean leavePowerUI) {
this.leavePowerUI = leavePowerUI;
reset();
}
}
根据 人员任职记录 关联查询(hi_psnjob)
package nc.ui.bd.ref.model;
import java.util.Map;
import java.util.Vector;
import javax.swing.tree.DefaultMutableTreeNode;
import nc.bs.IconResources;
import nc.bs.sec.esapi.NCESAPI;
import nc.jdbc.framework.util.DBConsts;
import nc.ui.bd.ref.AbstractRefModel;
import nc.vo.bd.psn.PsnjobVO;
import nc.vo.bd.pub.IPubEnumConst;
import nc.vo.org.DeptVO;
import nc.vo.org.OrgVO;
import nc.vo.org.util.OrgTreeCellRendererIconPolicy;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.relation.AdminDeptVO;
import nc.vo.relation.BusiFuncVO;
import nc.vo.util.SqlWhereUtil;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
/**
* 人员档案参照 <br>
* <b>注:<b> 可显示公司参照过滤数据(请设置UIRefPane.setMultiCorpRef(true)),否则,需设置pk_org为具体某一公司
* 如果是跨集团的话,需设置setIsMutiGroup(true),否则默认的集团是登陆集团
*
* @author jiangjuna
*/
public class PsndocDefaultNCRefModel1 extends PsndocDefaultRefModel1 {
private String busifuncode = null;
private String[] orgFilterPks;
private Map<String, AbstractRefModel> filterRefMap;
public String[] getOrgFilterPks() {
return this.orgFilterPks;
}
public void setOrgFilterPks(String[] orgFilterPks) {
this.orgFilterPks = orgFilterPks;
}
public PsndocDefaultNCRefModel1() {
reset();
}
@Override
public void reset() {
super.reset();
if (StringUtils.isNotBlank(getBusifuncode())) {
setClassFieldCode(new String[] { OrgVO.CODE, OrgVO.NAME, OrgVO.PK_ORG, OrgVO.PK_FATHERORG, OrgVO.ISBUSINESSUNIT });
setFatherField(DeptVO.PK_FATHERORG);
setChildField(PsnjobVO.PK_DEPT);
setClassTableName("(select " + OrgVO.CODE + " ," + OrgVO.NAME + "," + OrgVO.NAME2 + "," + OrgVO.NAME3 + "," + OrgVO.NAME4 + "," + OrgVO.NAME5 + "," + OrgVO.NAME6 + "," + OrgVO.PK_ORG + ",case when " + OrgVO.ORGTYPE3 + " = 'Y' and isnull(" + OrgVO.PK_FATHERORG + ", '~') = '~' then " + OrgVO.PK_OWNORG + " else " + OrgVO.PK_FATHERORG + " end as " + OrgVO.PK_FATHERORG + "," + OrgVO.ISBUSINESSUNIT + "," + OrgVO.ENABLESTATE + "," + OrgVO.PK_OWNORG + " , " + OrgVO.ORGTYPE3 + " from " + OrgVO.getDefaultTableName() + " where (" + OrgVO.ORGTYPE3 + " = 'Y' or " + OrgVO.ISBUSINESSUNIT + " = 'Y')) temp_dept");
// setClassDataPower(false);
setClassJoinField(OrgVO.PK_ORG);
}
this.setTreeIconPolicy(new OrgTreeCellRendererIconPolicy(IconResources.ICON_Bu) {
public String getSpecialNodeIcon(Object curTreeNode) {
if (curTreeNode instanceof DefaultMutableTreeNode && StringUtils.isNotBlank(getBusifuncode())) {
DefaultMutableTreeNode n = (DefaultMutableTreeNode) curTreeNode;
Object o = n.getUserObject();
if (o instanceof Vector) {
@SuppressWarnings("rawtypes")
Vector v = ((Vector) o);
String isbusinessunit = (String) v.get(getClassFieldIndex(OrgVO.ISBUSINESSUNIT));
if (UFBoolean.valueOf(isbusinessunit).booleanValue()) {
return IconResources.ICON_Bu;
} else {
return IconResources.ICON_Department;
}
}
}
return null;
}
});
//begin 2023-08-29 add lsl
// 显示人员工作信息的任职部门
// setFieldCode(new String[] { "bd_psndoc.code", "bd_psndoc.name", "bd_psnjob.pk_dept" });
// 显示人员任职记录的任职部门
setFieldCode(new String[] { "bd_psndoc.code", "bd_psndoc.name", "hi_psnjob.pk_dept" });
setFieldName(new String[] { nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0065")/*人员编码*/, nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0066")/*人员姓名*/, nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0085")/*部门名称*/ });// "编码","姓名","部门"
// 显示人员工作信息的任职部门
// String deptFomula = "getMLCValue(" + DeptVO.getDefaultTableName() + ", " + DeptVO.NAME + ", " + DeptVO.PK_DEPT + ", " + "bd_psnjob.pk_dept" + ")";
// setFormulas(new String[][] { { "bd_psnjob.pk_dept", deptFomula } });
// 显示人员任职记录的任职部门
String deptFomula = "getMLCValue(" + DeptVO.getDefaultTableName() + ", " + DeptVO.NAME + ", " + DeptVO.PK_DEPT + ", " + "hi_psnjob.pk_dept" + ")";
setFormulas(new String[][] { { "hi_psnjob.pk_dept", deptFomula } });
//end 2023-08-29 add lsl
setHiddenFieldCode(new String[] { "bd_psndoc.pk_psndoc", "bd_psnjob.pk_psnjob", "bd_psndoc.idtype", "bd_psndoc.id" });
setDefaultFieldCount(3);
// if (!ArrayUtils.isEmpty(orgFilterPks)) {
// this.getFilterRefModel("业务单元").setFilterPks(orgFilterPks);/*
// -=notranslate=- */
// }
}
public void setFilterRefMap(Map<String, AbstractRefModel> filterRefMap) {
this.filterRefMap = filterRefMap;
if (!ArrayUtils.isEmpty(orgFilterPks) && this.getFilterRefModel("业务单元") != null) {
this.getFilterRefModel("业务单元").setFilterPks(orgFilterPks);/*
* -=notranslate= -
*/
}
}
public AbstractRefModel getFilterRefModel(String refNodeName) {
if (this.filterRefMap == null) {
return null;
}
return this.filterRefMap.get(refNodeName);
}
public void setBusifuncode(String busifuncode) {
this.busifuncode = busifuncode;
reset();
}
public String getBusifuncode() {
if (getKeyValueExtendMap() != null) {
if (getKeyValueExtendMap().get(IBusiConst.BUSIFUNCODE) != null) {
return getKeyValueExtendMap().get(IBusiConst.BUSIFUNCODE).toLowerCase();
}
}
return busifuncode;
}
@Override
public String getClassWherePart() {
if (StringUtils.isNotBlank(getBusifuncode())) {
SqlWhereUtil sw = new SqlWhereUtil();
sw.and(OrgVO.ENABLESTATE + " = " + IPubEnumConst.ENABLESTATE_ENABLE);
sw.and();
sw.l();
sw.s(OrgVO.PK_ORG + " in (select " + AdminDeptVO.PK_ADMINORG + " from " + AdminDeptVO.getDefaultTableName() + " where (enablestate = 2) and " + getBusifuncCondition() + ")");
sw.or(" (" + OrgVO.PK_OWNORG + " in (select " + AdminDeptVO.PK_ADMINORG + " from " + AdminDeptVO.getDefaultTableName() + " where (enablestate = 2) and " + getBusifuncCondition() + " and isnull(" + AdminDeptVO.PK_DEPT + ", '" + DBConsts.NULL_WAVE + "') = '" + DBConsts.NULL_WAVE + "') and " + OrgVO.ORGTYPE3 + " = 'Y')");
sw.or(OrgVO.PK_ORG + " in (select " + AdminDeptVO.PK_DEPT + " from " + AdminDeptVO.getDefaultTableName() + " where (enablestate = 2) and " + getBusifuncCondition() + " )");
sw.or(OrgVO.PK_ORG + " = '" + getPk_org() + "'");
sw.or(OrgVO.PK_OWNORG + " = '" + getPk_org() + "'");
sw.r();
return sw.getSQLWhere();
} else {
return super.getClassWherePart();
}
}
protected String getEnvWherePart() {
if (StringUtils.isNotBlank(getBusifuncode())) {
SqlWhereUtil sw = new SqlWhereUtil();
sw.and();
sw.l();
sw.and(PsnjobVO.getDefaultTableName() + "." + PsnjobVO.PK_ORG + " in (select " + AdminDeptVO.PK_ADMINORG + " from " + AdminDeptVO.getDefaultTableName() + " where " + getBusifuncCondition() + " and isnull(" + AdminDeptVO.PK_DEPT + ", '" + DBConsts.NULL_WAVE + "') = '" + DBConsts.NULL_WAVE + "')");
sw.or(PsnjobVO.getDefaultTableName() + "." + PsnjobVO.PK_DEPT + " in (select " + AdminDeptVO.PK_DEPT + " from " + AdminDeptVO.getDefaultTableName() + " where " + getBusifuncCondition() + " )");
sw.or(PsnjobVO.getDefaultTableName() + "." + PsnjobVO.PK_ORG + " = '" + NCESAPI.clientSqlEncode(getPk_org()) + "'");
sw.r();
return sw.getSQLWhere() + getIsLeaveCondition();
} else {
return super.getEnvWherePart();
}
}
private String getBusifuncCondition() {
// 使用all是因为构造安装盘使用的NC_HOME是19号之前的, IPubEnumConst中不包含all常量
if (getBusifuncode().equals("all")) {
return AdminDeptVO.PK_BUSIROLE + " in (select " + BusiFuncVO.PK_BUSICHILD + " from " + BusiFuncVO.getDefaultTableName() + " where " + BusiFuncVO.PK_ORG + " = '" + NCESAPI.clientSqlEncode(getPk_org()) + "')";
} else {
return AdminDeptVO.PK_BUSIROLE + " in (select " + BusiFuncVO.PK_BUSICHILD + " from " + BusiFuncVO.getDefaultTableName() + " where " + BusiFuncVO.PK_ORG + " = '" + NCESAPI.clientSqlEncode(getPk_org()) + "' and " + BusiFuncVO.ORG_FUNCTION + " like '%" + NCESAPI.clientSqlEncode(getBusifuncode()) + "%')";
}
}
}
package nc.ui.bd.ref.model;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Map;
import java.util.Set;
import java.util.Vector;
import nc.itf.bd.pub.IBDResourceIDConstBasic;
import nc.itf.org.IOrgResourceCodeConstBasic;
import nc.ui.bd.ref.AbstractRefGridTreeBigDataModel;
import nc.ui.bd.ref.IRefConst;
import nc.ui.bd.ref.IRefDocEdit;
import nc.ui.bd.ref.IRefMaintenanceHandler;
import nc.ui.bd.ref.RefSearchFieldSetting;
import nc.ui.pub.beans.ValueChangedEvent;
import nc.vo.bd.psn.PsndocVO;
import nc.vo.bd.psn.PsnjobVO;
import nc.vo.hi.psndoc.PsnJobVO;
import nc.vo.bd.psn.util.GetBusiDateUtil;
import nc.vo.org.DeptVO;
import nc.vo.pub.lang.UFLiteralDate;
import nc.vo.util.SqlWhereUtil;
/**
* 人员档案参照 <br>
*
* 关联人员任职记录即hi_psnjob查询,这样查询就可以到跨组织跨部门退休的人,比如B组织 综合部421这个人退休了,挂在A组织的离退休部门下。<br>
* 如果是关联人员工作信息即表bd_psnjob,做了退休事件后,在人员银行账户新增的时候,所属业务单元(组织)选择是A,然后在人员编码这个字段参照中,部门选择为离退休时,查询不到421这个人,需要选B组织的综合部才可以查询到。<br>
*
* <b>注:<b> 可显示公司参照过滤数据(请设置UIRefPane.setMultiCorpRef(true)),否则,需设置pk_org为具体某一公司
* 如果是跨集团的话,需设置setIsMutiGroup(true),否则默认的集团是登陆集团
*
* @author jiangjuna
*
*/
public class PsndocDefaultRefModel1 extends AbstractRefGridTreeBigDataModel {
private boolean isMutiGroup = false;
// 显示离职人员在界面上的开关,默认不开启
private boolean leavePowerUI = false;
/* 离职人员开关,默认为false,即不显示离职人员,true为显示离职人员 */
private boolean leavePower = false;
// 获取业务日期
private UFLiteralDate nowDate = getNowDate();
public PsndocDefaultRefModel1() {
reset();
}
@SuppressWarnings({ "unchecked", "static-access" })
@Override
public void reset() {
setRefNodeName("人员任职记录");/* -=notranslate=- */
if (isLeavePowerUI()) {
setUiControlComponentClassName("nc.ui.bd.psn.psndoc.ref.busi.PsndocRefModelWithLeavedSelectedPanel");
}
setRootName(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0085"));// 部门
setClassFieldCode(new String[] { DeptVO.CODE, DeptVO.NAME, DeptVO.PK_DEPT, DeptVO.PK_FATHERORG });
setFatherField(DeptVO.PK_FATHERORG);
//begin 把人员工作信息的部门换成人员任职记录的部门 add lsl 2023-08-29
// setChildField(PsnjobVO.PK_DEPT);
// setClassJoinField(PsnjobVO.PK_DEPT);
setChildField(PsnJobVO.PK_DEPT);
setClassJoinField(PsnJobVO.PK_DEPT);
//end 把人员工作信息的部门换成人员任职记录的部门 add lsl 2023-08-29
setClassTableName(new DeptVO().getDefaultTableName());
setClassDefaultFieldCount(2);
setClassDataPower(true);
//begin 把人员工作信息的部门换成人员任职记录的部门 add lsl 2023-08-29
// setFieldCode(new String[] { "bd_psndoc.code", "bd_psndoc.name", "bd_psnjob.pk_dept" });
// setFieldName(new String[] { nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0065"), nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0066"), nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0085") });// "编码", "姓名", "部门"
setFieldCode(new String[] { "bd_psndoc.code", "bd_psndoc.name", "hi_psnjob.pk_dept" });
setFieldName(new String[] { nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0065"), nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0066"), nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0085") });// "编码", "姓名", "部门"
//end 把人员工作信息的部门换成人员任职记录的部门 add lsl 2023-08-29
setDefaultFieldCount(3);
// 不增加隐藏的pk_dept字段,匹配时不能直接选中相应的树节点
setHiddenFieldCode(new String[] { "bd_psndoc.pk_psndoc", "bd_psndoc.idtype", "bd_psndoc.id" });
setTableName("bd_psndoc left join bd_psnjob on bd_psndoc.pk_psndoc = bd_psnjob.pk_psndoc left join hi_psnjob on bd_psndoc.pk_psndoc = hi_psnjob.pk_psndoc");
setPkFieldCode("bd_psndoc.pk_psndoc");
//begin 把人员工作信息的部门换成人员任职记录的部门 add lsl 2023-08-29
// setDocJoinField("bd_psnjob.pk_dept");
setDocJoinField("hi_psnjob.pk_dept");
//end 把人员工作信息的部门换成人员任职记录的部门 add lsl 2023-08-29
setRefCodeField("bd_psndoc.code");
setRefNameField("bd_psndoc.name");
// setCommonDataBasDocTableName(new PsnjobVO().getTableName());
// setCommonDataBasDocPkField("bd_psnjob.pk_psnjob");
setCommonDataTableName(new PsndocVO().getTableName());
//begin 把人员工作信息的部门换成人员任职记录的部门 add lsl 2023-08-29
// String strFomula = "getmlcvalue(org_dept, name,pk_dept, bd_psnjob.pk_dept)";
// setFormulas(new String[][] { { "bd_psnjob.pk_dept", strFomula } });
String strFomula = "getmlcvalue(org_dept, name, pk_dept, hi_psnjob.pk_dept)";
setFormulas(new String[][] { { "hi_psnjob.pk_dept", strFomula } });
//begin 把人员工作信息的部门换成人员任职记录的部门 add lsl 2023-08-29
if (!isMutiGroup())
setFilterRefNodeName(new String[] { "业务单元" });/* -=notranslate=- */
else
setFilterRefNodeName(new String[] { "集团", "业务单元" /* -=notranslate=- */ });
setResourceID(IBDResourceIDConstBasic.PSNDOC);
setClassResouceID(IOrgResourceCodeConstBasic.DEPT);
setAddEnableStateWherePart(true);
// 过滤重复数据
setStrPatch(IRefConst.DISTINCT);
resetFieldName();
Hashtable content = new Hashtable();
content.put("0", nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0098"));// 身份证
content.put("1", nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0099"));// 军官证
content.put("2", nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0100"));// 护照
Hashtable convert = new Hashtable();
convert.put("bd_psndoc.idtype", content);
setDispConvertor(convert);
setBlurQueryTableName("bd_psndoc");
setRefMaintenanceHandler(new IRefMaintenanceHandler() {
@Override
public String[] getFucCodes() {
return new String[] { "10140PSN" };
}
@Override
public IRefDocEdit getRefDocEdit() {
return null;
}
});
// ------------------------------------------指定全文检索相关的设置信息-------------------------
// 所有的搜索列及列描述
Map<String, String> allFields = new HashMap<String, String>();
allFields.put("name", nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0066")/* 姓名 */);
allFields.put("code", nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("10140psn", "010140psn0065")/* 编码 */);
// 黙认的搜索列,按顺序进行搜索
String[] defaultSearchFields = new String[] { "code", "name" };
// 需要指定当前参照的nodeName
String refNodeName = "人员"/* -=notranslate=- */;
RefSearchFieldSetting setting = new RefSearchFieldSetting(refNodeName, allFields, defaultSearchFields);
setSearchFieldSetting(setting);
// -------------------------------------------------------------------------------------------
}
@Override
protected Vector getConvertedData(boolean isDataFromCache, Vector v, boolean isDefConverted) {
Vector rows = super.getConvertedData(isDataFromCache, v, isDefConverted);
if (rows == null || rows.size() == 0) {
return rows;
}
int pkIndex = getFieldIndex(getPkFieldCode());
Set<String> existPkSet = new HashSet<String>();
Vector<Vector> newRows = new Vector<Vector>();
for (int i = 0; i < rows.size(); i++) {
Vector row = (Vector) rows.get(i);
if (!existPkSet.contains(row.get(pkIndex))) {
existPkSet.add((String) row.get(pkIndex));
newRows.add(row);
}
}
return newRows;
}
@Override
public void filterValueChanged(ValueChangedEvent changedValue) {
String[] pk_orgs = (String[]) changedValue.getNewValue();
if (pk_orgs != null && pk_orgs.length > 0 && pk_orgs[0] != null) {
if (!pk_orgs[0].equals(getFilterRefModel("业务单元"/* -=notranslate=- */).getPkValue())) {
getFilterRefModel("业务单元"/* -=notranslate=- */).setPk_group(pk_orgs[0]);
getFilterRefModel("业务单元"/* -=notranslate=- */).reloadData();
setPk_org(null);
} else {
setPk_org(pk_orgs[0]);
}
} else {
if (getFilterRefModel("业务单元"/* -=notranslate=- */).getPkValue() != null) {
getFilterRefModel("业务单元"/* -=notranslate=- */).setPk_group(null);
setPk_org(null);
} else {
setPk_org(null);
}
}
}
@Override
public String getClassWherePart() {
SqlWhereUtil sw = new SqlWhereUtil(super.getClassWherePart());
sw.and(DeptVO.PK_ORG + " = '" + getPk_org() + "' and " + DeptVO.ENABLESTATE + "=2");
return sw.getSQLWhere();
}
protected String getEnvWherePart() {
// begin 2023-08-24 add lsl
// 按工作信息的任职业务单元过滤显示的数据
// return "bd_psnjob.pk_org = '" + getPk_org() + "'" + getIsLeaveCondition();
// 按人员任职记录的任职组织单元过滤显示的数据
return "hi_psnjob.pk_org = '" + getPk_org() + "'" + getIsLeaveCondition();
// end 2023-08-24 add lsl
}
protected String getIsLeaveCondition() {
if (isLeavePowerUI()) {// 界面开关开启
if (isLeavePower()) {
// 显示离职人员,包括停用人员,不在这里设置,否则界面输入的值要被清空
// setDisabledDataShow(true);
return "";
} else {
// 显示在职的人员,是否停用由参照统一控制
return " and bd_psnjob.indutydate <='" + nowDate + "' and (bd_psnjob.enddutydate >='" + nowDate + "' or bd_psnjob.enddutydate ='~'" + " or bd_psnjob.enddutydate is null)";
}
} else {// 界面开关不开启,显示在职的已启用人员
return " and bd_psnjob.indutydate <='" + nowDate + "' and (bd_psnjob.enddutydate >='" + nowDate + "' or bd_psnjob.enddutydate ='~'" + " or bd_psnjob.enddutydate is null)";
}
}
public boolean isMutiGroup() {
return isMutiGroup;
}
public void setMutiGroup(boolean isMutiGroup) {
this.isMutiGroup = isMutiGroup;
if (isMutiGroup()) {
setFilterRefNodeName(new String[] { "集团", "业务单元"/* -=notranslate=- */ });
} else {
setFilterRefNodeName(new String[] { "业务单元" });/* -=notranslate=- */
}
}
public boolean isLeavePower() {
return leavePower;
}
public void setLeavePower(boolean leavePower) {
this.leavePower = leavePower;
}
public void setNowDate(UFLiteralDate nowDate) {
this.nowDate = nowDate;
}
private UFLiteralDate getNowDate() {
if (nowDate == null) {
nowDate = new GetBusiDateUtil().getNowDate();
}
return nowDate;
}
public boolean isLeavePowerUI() {
return leavePowerUI;
}
public void setLeavePowerUI(boolean leavePowerUI) {
this.leavePowerUI = leavePowerUI;
reset();
}
}
--必须在bd_refinfo表中注册参照类,在元数据操作界面中设置参照,注册参照类示例sql脚本如下:
insert into BD_REFINFO (CODE, DR, ISNEEDPARA, ISSPECIALREF, layer, metadatanamespace, METADATATYPENAME, MODULENAME, NAME, PARA1, PARA2, PARA3, PK_REFINFO, REFCLASS, REFSYSTEM, REFTYPE, RESERV1, RESERV2, RESERV3, RESID, RESIDPATH, TS, WHEREPART) values ('600069', 0, null, null, 0, 'uapbd', 'psndoc', 'uapbd', '人员任职', null, null, null, '0001Z0100000001TRAIN', 'nc.ui.bd.ref.model.PsndocDefaultNCRefModel1', null, 2, 'nc.ui.bd.psn.psndoc.ref.busi.PsndocDefaultRefModelDlg', null, null, 'UC000-0000129', 'common', '2023-08-29 22:57:13', null);
--NAME字段需全局唯一,不可重复
--PK_REFINFO字段需长度为20,且全局唯一
--REFTYPE字段是参照类型:0 列表参照 1 树型参照 2 树表参照
- 关联人员任职记录即hi_psnjob查询,这样查询就可以到跨组织跨部门退休的人,比如B组织 综合部421这个人退休了,挂在A组织的离退休部门下。
- 如果是关联人员工作信息即表bd_psnjob,做了退休事件后,在人员银行账户新增的时候,所属业务单元(组织)选择是A,然后在人员编码这个字段参照中,部门选择为离退休时,查询不到421这个人,需要选B组织的综合部才可以查询到。