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();}@Overridepublic 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;}@Overridepublic 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" })@Overridepublic 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=- */elsesetFilterRefNodeName(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() {@Overridepublic String[] getFucCodes() {return new String[] { "10140PSN" };}@Overridepublic 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" };// 需要指定当前参照的nodeNameString refNodeName = "人员"/* -=notranslate=- */;RefSearchFieldSetting setting = new RefSearchFieldSetting(refNodeName, allFields, defaultSearchFields);setSearchFieldSetting(setting);// -------------------------------------------------------------------------------------------}@Overrideprotected 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;}@Overridepublic 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);}}}@Overridepublic 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();}@Overridepublic 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  lslsetHiddenFieldCode(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;}@Overridepublic 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" })@Overridepublic 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-29setClassTableName(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-29setDefaultFieldCount(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-29setRefCodeField("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-29if (!isMutiGroup())setFilterRefNodeName(new String[] { "业务单元" });/* -=notranslate=- */elsesetFilterRefNodeName(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() {@Overridepublic String[] getFucCodes() {return new String[] { "10140PSN" };}@Overridepublic 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" };// 需要指定当前参照的nodeNameString refNodeName = "人员"/* -=notranslate=- */;RefSearchFieldSetting setting = new RefSearchFieldSetting(refNodeName, allFields, defaultSearchFields);setSearchFieldSetting(setting);// -------------------------------------------------------------------------------------------}@Overrideprotected 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;}@Overridepublic 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);}}}@Overridepublic 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组织的综合部才可以查询到。

基础数据人员节点相关sql和个人银行账户节点人员编码参照代码相关推荐

  1. 【Android APT】注解处理器 ( Element 注解节点相关操作 )

    文章目录 一.获取被 注解 标注的节点 二.Element 注解节点类型 三.VariableElement 注解节点相关操作 四.注解处理器 完整代码示例 五.博客资源 Android APT 学习 ...

  2. selenium爬取淘宝商品基础数据以及商品详情(茶叶数据)

    selenium爬取淘宝商品基础数据以及商品详情 目录 网页分析 确定要爬取的数据 分析网页构成 爬取流程 登入 爬取基础数据以及商品详情 爬取基础数据 爬取商品详情 淘宝滑动验证码 保存EXCEL中 ...

  3. 数据库学习day_02:表格相关sql语句 / 表格数据相关sql语句 / sql中的数据类型 / 导入外部sql文件 / 去重.是否为null.and与or.in.[x,y]

    1.表相关的SQL语句 操作表相关的SQL 必须先使用某个数据库 create database mydb1; show create database mydb1; use mydb1; 如果默认不 ...

  4. c# 数组中的空值_C# 数据操作系列 - 1. SQL基础操作

    0.前言 前篇介绍了一些数据库的基本概念和以及一些常见的数据库,让我们对数据库有了一个初步的认识.这一篇我们将继续为C#数据操作的基础填上一个空白-SQL语句. SQL(Structured Quer ...

  5. 企业标准化产线建设_某企业拟新建一工业产品生产线,采用同等生产规模的标准化设计资料,项目可行性研究相关基础数据如下...

    简答题 [2018年真题]某企业拟新建一工业产品生产线,采用同等生产规模的标准化设计资料,项目可行性研究相关基础数据如下: 1.按现行价格计算的该项目生产线设备购置费为720万元,当地已建同类同等生产 ...

  6. 大数据与AI相关的技术历程

    掐指一算,从 OneAPM 离职也快一个月了,在 OneAPM 工作的种种,仿佛还像是在昨天.细数两年的工作经历,我很庆幸在恰当的时间点和这么一群有激情有活力的人共事.那么,是时候总结一下我在 One ...

  7. 针对开发人员的Microsoft SQL Server元数据

    Microsoft SQL Server 2016最近在关系数据库管理系统(RDBMS)中处于领先地位. 高性能,安全性,分析和云兼容性的结合使其成为领先的RDBMS . SQL Server 201 ...

  8. SQL Server 中WITH (NOLOCK)浅析 2014-08-30 11:58 by 潇湘隐者, 58264 阅读, 33 评论, 收藏, 编辑 概念介绍 开发人员喜欢在SQL脚本

    SQL Server 中WITH (NOLOCK)浅析 概念介绍 开发人员喜欢在SQL脚本中使用WITH(NOLOCK), WITH(NOLOCK)其实是表提示(table_hint)中的一种.它等同 ...

  9. 伍翀:大数据实时计算Flink SQL解密

    [IT168 专稿]本文根据伍翀老师在2018年5月12日[第九届中国数据库技术大会]现场演讲内容整理而成. 讲师简介: 伍翀,阿里巴巴高级研发工程师,花名"云邪",阿里巴巴计算平 ...

  10. 伍翀 :大数据实时计算Flink SQL解密

    [IT168 专稿]本文根据伍翀老师在2018年5月12日[第九届中国数据库技术大会]现场演讲内容整理而成. 讲师简介:  伍翀,阿里巴巴高级研发工程师,花名"云邪",阿里巴巴计算 ...

最新文章

  1. 手把手教你研发自己的智能无人机 谢谢您呀!
  2. 推荐10个安全又有实力的办公软件,极大提升办公效率
  3. linux中sort命令
  4. PL/pgSQL的anyelement例子
  5. 中国移动IM-飞信-0802上线新版本 试用手记
  6. 设计模式 责任链模式
  7. C语言字符型char和整型int的关系和示例
  8. 创业的两种方式,你适合哪一种?
  9. 初识java——Java程序的历史、开发和运行
  10. python全栈开发网络_Python 全栈开发:网络编程
  11. matlab padarray
  12. 税友软件公司java面试_税友集团java面试题
  13. Mysql 分组聚合实现 over partition by 功能
  14. 【java】打印一个对象即打印出该对象toString()返回值
  15. egg mysql insert_egg-mysql
  16. OSI七层网络协议(应用层:http协议、传输层:TCP协议、网络层:IP协议,数据链路层:ARP协议、网络下一跳,物理层:比特流)
  17. java线性方程组求解_java解线性方程组
  18. harry -考级复习2
  19. php amp 转义,HTML转义和反转义
  20. word转PDF图片失真

热门文章

  1. 火热报名中|墨菲安全发起首届 OSCS 软件供应链安全技术论坛
  2. python适合做网站吗_python做网站有什么弊端文章伪原创的注意事项
  3. 二十年遇到八句话(转)
  4. 事实证明中国制造更稳定可靠,苹果再度加码中国制造
  5. 关于Android中调用了post方法后貌似没有执行run方法的解释及解决办法
  6. 李践讲座免费在线学习 免费下载
  7. pandas numpy 实习小结
  8. java蓝桥杯练习 小计算器
  9. /bin/sh: -c: line 20: syntax error: unexpected end of file
  10. 职场小白必备!!!!!