基础数据人员节点相关sql和个人银行账户节点人员编码参照代码
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和个人银行账户节点人员编码参照代码相关推荐
- 【Android APT】注解处理器 ( Element 注解节点相关操作 )
文章目录 一.获取被 注解 标注的节点 二.Element 注解节点类型 三.VariableElement 注解节点相关操作 四.注解处理器 完整代码示例 五.博客资源 Android APT 学习 ...
- selenium爬取淘宝商品基础数据以及商品详情(茶叶数据)
selenium爬取淘宝商品基础数据以及商品详情 目录 网页分析 确定要爬取的数据 分析网页构成 爬取流程 登入 爬取基础数据以及商品详情 爬取基础数据 爬取商品详情 淘宝滑动验证码 保存EXCEL中 ...
- 数据库学习day_02:表格相关sql语句 / 表格数据相关sql语句 / sql中的数据类型 / 导入外部sql文件 / 去重.是否为null.and与or.in.[x,y]
1.表相关的SQL语句 操作表相关的SQL 必须先使用某个数据库 create database mydb1; show create database mydb1; use mydb1; 如果默认不 ...
- c# 数组中的空值_C# 数据操作系列 - 1. SQL基础操作
0.前言 前篇介绍了一些数据库的基本概念和以及一些常见的数据库,让我们对数据库有了一个初步的认识.这一篇我们将继续为C#数据操作的基础填上一个空白-SQL语句. SQL(Structured Quer ...
- 企业标准化产线建设_某企业拟新建一工业产品生产线,采用同等生产规模的标准化设计资料,项目可行性研究相关基础数据如下...
简答题 [2018年真题]某企业拟新建一工业产品生产线,采用同等生产规模的标准化设计资料,项目可行性研究相关基础数据如下: 1.按现行价格计算的该项目生产线设备购置费为720万元,当地已建同类同等生产 ...
- 大数据与AI相关的技术历程
掐指一算,从 OneAPM 离职也快一个月了,在 OneAPM 工作的种种,仿佛还像是在昨天.细数两年的工作经历,我很庆幸在恰当的时间点和这么一群有激情有活力的人共事.那么,是时候总结一下我在 One ...
- 针对开发人员的Microsoft SQL Server元数据
Microsoft SQL Server 2016最近在关系数据库管理系统(RDBMS)中处于领先地位. 高性能,安全性,分析和云兼容性的结合使其成为领先的RDBMS . SQL Server 201 ...
- SQL Server 中WITH (NOLOCK)浅析 2014-08-30 11:58 by 潇湘隐者, 58264 阅读, 33 评论, 收藏, 编辑 概念介绍 开发人员喜欢在SQL脚本
SQL Server 中WITH (NOLOCK)浅析 概念介绍 开发人员喜欢在SQL脚本中使用WITH(NOLOCK), WITH(NOLOCK)其实是表提示(table_hint)中的一种.它等同 ...
- 伍翀:大数据实时计算Flink SQL解密
[IT168 专稿]本文根据伍翀老师在2018年5月12日[第九届中国数据库技术大会]现场演讲内容整理而成. 讲师简介: 伍翀,阿里巴巴高级研发工程师,花名"云邪",阿里巴巴计算平 ...
- 伍翀 :大数据实时计算Flink SQL解密
[IT168 专稿]本文根据伍翀老师在2018年5月12日[第九届中国数据库技术大会]现场演讲内容整理而成. 讲师简介: 伍翀,阿里巴巴高级研发工程师,花名"云邪",阿里巴巴计算 ...
最新文章
- 手把手教你研发自己的智能无人机 谢谢您呀!
- 推荐10个安全又有实力的办公软件,极大提升办公效率
- linux中sort命令
- PL/pgSQL的anyelement例子
- 中国移动IM-飞信-0802上线新版本 试用手记
- 设计模式 责任链模式
- C语言字符型char和整型int的关系和示例
- 创业的两种方式,你适合哪一种?
- 初识java——Java程序的历史、开发和运行
- python全栈开发网络_Python 全栈开发:网络编程
- matlab padarray
- 税友软件公司java面试_税友集团java面试题
- Mysql 分组聚合实现 over partition by 功能
- 【java】打印一个对象即打印出该对象toString()返回值
- egg mysql insert_egg-mysql
- OSI七层网络协议(应用层:http协议、传输层:TCP协议、网络层:IP协议,数据链路层:ARP协议、网络下一跳,物理层:比特流)
- java线性方程组求解_java解线性方程组
- harry -考级复习2
- php amp 转义,HTML转义和反转义
- word转PDF图片失真
热门文章
- 火热报名中|墨菲安全发起首届 OSCS 软件供应链安全技术论坛
- python适合做网站吗_python做网站有什么弊端文章伪原创的注意事项
- 二十年遇到八句话(转)
- 事实证明中国制造更稳定可靠,苹果再度加码中国制造
- 关于Android中调用了post方法后貌似没有执行run方法的解释及解决办法
- 李践讲座免费在线学习 免费下载
- pandas numpy 实习小结
- java蓝桥杯练习 小计算器
- /bin/sh: -c: line 20: syntax error: unexpected end of file
- 职场小白必备!!!!!