需求:
合同編碼邏輯:
地區簡寫+00+人員編碼+兩位數的流水
GZ+00+code+num(01)
分析:
兩個地方會涉及到新增簽訂合同的地方【合同進行中心】和【合同簽訂】
新增時需要系統帶出合同編碼,編碼規則:地區簡寫+00+人員編碼+兩位數的流水号
流水号是以個人簽訂合同次數作為流水,首次簽訂為01
代碼邏輯:系統原有的ZD編碼方式保留,建立邏輯類供調用
代碼:
合同新增規則類QueryMakeBillCode.java:
package nc.ui.hrcm.utils;
import java.util.*;
import nc.bs.framework.common.NCLocator;
import nc.bs.logging.Logger;
import nc.itf.uap.IUAPQueryBS;
import nc.jdbc.framework.processor.MapListProcessor;
import nc.vo.pub.BusinessException;
public class QueryMakeBillCode {
private IUAPQueryBS iUapQueryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class);
String maxCode = null;
public String getMaxCode(String tablename, String zdCodeBefore,
String pk_org) throws BusinessException {
String sql = "";
int length = ;
if(tablename.equalsIgnoreCase("hi_psndoc_ctrt"))
sql = (new StringBuilder()).append("select contractnum maxcontractnum from ").append(tablename).append(" where contractnum like '").append(zdCodeBefore).append("%' and length(contractnum) = ").append(length).append(" order by contractnum desc").toString();
else
sql = (new StringBuilder()).append("select contcode maxcontractnum from ").append(tablename).append(" where contcode like '").append(zdCodeBefore).append("%' and length(contcode) = ").append(length).append(" order by contcode desc").toString();
List listResult= (List) iUapQueryBS.executeQuery(sql.toString(), new MapListProcessor());
if (listResult != null) {
for(Iterator i$ = listResult.iterator(); i$.hasNext();)
{
HashMap map = (HashMap)i$.next();
String contcode = (String)map.get("maxcontractnum");
try
{
return contcode;
}
catch(NumberFormatException e)
{
Logger.error(e);
}
}
}
return null;
}
public String getNextCode(String codeStr,String maxCode)
{
if (maxCode == null) {
maxCode = (codeStr + "01");
} else {
maxCode= (maxCode.substring(, ) + getNextFlowNumBuCur(maxCode.substring()));
}
return maxCode;
}
public String getCodeStr(String pk_org,String psncode) {
String zdCodeBefore=""+psncode;
if ("00016H10000000000BH1".equals(pk_org)) {
zdCodeBefore="GZ00"+psncode;
}else if (pk_org=="00016H10000000000BHZ") {
zdCodeBefore="SZ00"+psncode;
}else if (pk_org=="00016H10000000000BGG") {
zdCodeBefore="BJ00"+psncode;
}else if (pk_org=="00016H10000000000BGQ") {
zdCodeBefore="DG00"+psncode;
}else if (pk_org=="00016H10000000000BHK") {
zdCodeBefore="SH00"+psncode;
}else if (pk_org=="00016H10000000000BHN") {
zdCodeBefore="SU00"+psncode;
}
return zdCodeBefore;
}
private String getNextFlowNumBuCur(String substring) {
int cur = Integer.parseInt(substring);
cur++;
String str = "";
if (cur < ) {
str = "0";
}
return str + cur;
}
}
合同編碼調用顯示類,即合同新增類:合同簽訂類PsnWizardStepListener
package nc.ui.hrcm.make.wizard.listener;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import nc.bs.framework.common.NCLocator;
import nc.bs.logging.Logger;
import nc.hr.utils.BillCodeHelper;
import nc.hr.utils.HRCMTermUnitUtils;
import nc.hr.utils.PubEnv;
import nc.hr.utils.ResHelper;
import nc.itf.hr.frame.IHrBillCode;
import nc.itf.hrcm.IQueryMakeService;
import nc.itf.hrcm.ITempletBatchQueryService;
import nc.pub.billcode.vo.BillCodeContext;
import nc.pub.tools.HRCMUtils;
import nc.pub.tools.HiCacheUtils;
import nc.ui.bd.ref.AbstractRefModel;
import nc.ui.hrcm.make.CMTemplateContainer;
import nc.ui.hrcm.make.MakeAppModelService;
import nc.ui.hrcm.make.factory.CMMethodFactory;
import nc.ui.hrcm.make.factory.WizardFirstInterface;
import nc.ui.hrcm.make.model.MakeAppModelDataManager;
import nc.ui.hrcm.make.model.MakeBillManageModel;
import nc.ui.hrcm.make.view.MakeUtil;
import nc.ui.hrcm.make.view.ShereBillForm;
import nc.ui.hrcm.make.wizard.panel.CtrtBillForm;
import nc.ui.hrcm.processor.CardCheckProcessorImpl;
import nc.ui.hrcm.utils.DefauteCode;
import nc.ui.hrcm.utils.QueryMakeBillCode;
import nc.ui.pub.beans.UIRefPane;
import nc.ui.pub.beans.wizard.IWizardStepListener;
import nc.ui.pub.beans.wizard.WizardModel;
import nc.ui.pub.beans.wizard.WizardStep;
import nc.ui.pub.beans.wizard.WizardStepEvent;
import nc.ui.pub.bill.BillCardPanel;
import nc.ui.pub.bill.BillItem;
import nc.ui.uif2.model.AbstractAppModel;
import nc.vo.hi.psndoc.CtrtVO;
import nc.vo.hrcm.contopinion.ContopinionVO;
import nc.vo.hrcm.share.PsnSelListVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.IAttributeMeta;
import nc.vo.pub.IVOMeta;
import nc.vo.pub.SuperVO;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.pub.lang.UFDate;
import nc.vo.pub.lang.UFDateTime;
import nc.vo.pub.lang.UFLiteralDate;
import nc.vo.uif2.LoginContext;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
public class PsnWizardStepListener
implements IWizardStepListener
{
private ITempletBatchQueryService templetBatchQueryService;
public void stepActived(WizardStepEvent event)
{
WizardStep prestep = event.getPreStep();
if (prestep == null) {
return;
}
WizardStep step0 = event.getStep();
WizardModel model = step0.getModel();
WizardStep step1 = (WizardStep)model.getSteps().get(model.getCurStepIndex() + );
CtrtBillForm form = (CtrtBillForm)step1.getComp();
AbstractAppModel outMode = form.getMode();
MakeBillManageModel makeMode = (MakeBillManageModel)outMode;
makeMode.rollBackCode();
}
private SuperVO[] getValidateVOs(PsnSelListVO[] selPsnInf)
{
String[] psndocPks = new String[selPsnInf.length];
for (int i = ; i < selPsnInf.length; i++) {
psndocPks[i] = selPsnInf[i].getPk_psndoc();
}
SuperVO[] vos = null;
try
{
vos = ((IQueryMakeService)NCLocator.getInstance().lookup(IQueryMakeService.class)).getValidateVOsByPsndocPks(psndocPks);
}
catch (BusinessException e)
{
Logger.error(e);
}
return vos;
}
public void stepDisactived(WizardStepEvent event)
{
WizardStep step0 = event.getStep();
WizardModel model = step0.getModel();
WizardStep step1 = (WizardStep)model.getSteps().get(model.getCurStepIndex() + );
PsnSelListVO[] selPsnInf = (PsnSelListVO[])step0.getAttr("psnSelectList");
step1.putAttr("psnList", selPsnInf);
SuperVO[] validateVOs = getValidateVOs(selPsnInf);
step1.putAttr("validateVOs", validateVOs);
CtrtBillForm form = (CtrtBillForm)step1.getComp();
AbstractAppModel outMode = form.getMode();
MakeBillManageModel makeMode = (MakeBillManageModel)outMode;
ShereBillForm billForm = form.getBillForm();
Object value = billForm.getValue();
BillCardPanel cardPanel = billForm.getBillCardPanel();
PsnSelListVO firstVO = selPsnInf[];
AbstractAppModel appModle = billForm.getModel();
String modeName = "hi_psndoc_ctrt";
if ((appModle instanceof MakeBillManageModel)) {
modeName = ((MakeBillManageModel)appModle).getModeName();
}
LoginContext context = appModle.getContext();
String pk_org = context.getPk_org();
String pk_group = context.getPk_group();
String nodecode = context.getNodeCode();
UFDateTime date = PubEnv.getServerTime();
UFLiteralDate literalDate = new UFLiteralDate(date.getDate().toStdString());
Integer conttype = Integer.valueOf(HRCMUtils.getNodeCodeTermType(appModle.getContext().getNodeCode()));
ContopinionVO[] contopinionVOs = (ContopinionVO[])step0.getAttr("contopinionVO");
setContCode((SuperVO)value, selPsnInf, modeName, context, cardPanel, makeMode);
PsnSelListVO pslvo = new PsnSelListVO();
if (!ArrayUtils.isEmpty(selPsnInf))
{
StringBuffer code = new StringBuffer();
StringBuffer name = new StringBuffer();
StringBuffer conractnum = new StringBuffer();
for (int i = ; i < selPsnInf.length; i++)
{
if (i == )
{
code.append("...");
name.append("...");
conractnum.append("...");
break;
}
code.append(",").append(selPsnInf[i].getPsncode());
name.append(",").append(selPsnInf[i].getPsnname());
conractnum.append(",").append(selPsnInf[i].getVcontractnum());
}
pslvo.setPsncode(code.toString().substring());
pslvo.setPsnname(name.toString().substring());
pslvo.setVcontractnum(conractnum.toString().substring());
}
if (("60110extend".equals(nodecode)) || ("60110change".equals(nodecode)) || ("60110release".equals(nodecode)) || ("60110finish".equals(nodecode)))
{
CMTemplateContainer template = (CMTemplateContainer)form.getBillForm().getTemplateContainer();
HashMap<String, Class<?>> protocolNodeKeyToClassMap = template.getProtocolNodeKeyToClassMap();
Class contClass = (Class)protocolNodeKeyToClassMap.get(form.getBillForm().getNodekey());
MakeAppModelService service = (MakeAppModelService)((MakeBillManageModel)appModle).getService();
IQueryMakeService queryService = service.getQueryService();
SuperVO svo = null;
try
{
svo = (SuperVO)queryService.queryByPk(firstVO.getPk_cont(), contClass);
if ("60110extend".equals(nodecode))
{
if (selPsnInf.length == )
{
UFLiteralDate oldEnddate = (UFLiteralDate)svo.getAttributeValue("enddate");
UFLiteralDate begindate = oldEnddate == null ? literalDate : ((UFLiteralDate)oldEnddate.clone()).getDateAfter();
if (ArrayUtils.isEmpty(contopinionVOs))
{
svo.setAttributeValue("begindate", begindate.clone());
String termtype = (String)svo.getAttributeValue("termtype");
if (StringUtils.isNotBlank(termtype)) {
if ("CM01".equals(termtype))
{
svo.setAttributeValue("enddate", null);
svo.setAttributeValue("termmonth", null);
}
else if (("CM02".equals(termtype)) || ("CM03".equals(termtype)))
{
svo.setAttributeValue("termmonth", null);
svo.setAttributeValue("enddate", null);
}
else
{
svo.setAttributeValue("termmonth", svo.getAttributeValue("termmonth"));
svo.setAttributeValue("enddate", svo.getAttributeValue("enddate"));
}
}
}
else
{
svo.setAttributeValue("termtype", contopinionVOs[].getTermtype());
svo.setAttributeValue("termmonth", contopinionVOs[].getItermmonth());
svo.setAttributeValue("begindate", begindate.clone());
svo.setAttributeValue("enddate", contopinionVOs[].getSedenddate());
}
oldEnddate = null;
begindate = null;
}
else if (selPsnInf.length > )
{
svo.setAttributeValue("begindate", null);
MakeUtil.getHeadItem(cardPanel, "begindate").setEnabled(Boolean.FALSE.booleanValue());
MakeUtil.getHeadItem(cardPanel, "begindate").setNull(false);
if (!ArrayUtils.isEmpty(contopinionVOs))
{
svo.setAttributeValue("termtype", contopinionVOs[].getTermtype());
svo.setAttributeValue("termmonth", contopinionVOs[].getItermmonth());
svo.setAttributeValue("enddate", contopinionVOs[].getSedenddate());
}
}
}
else
{
svo.setAttributeValue("begindate", svo.getAttributeValue("begindate"));
svo.setAttributeValue("enddate", svo.getAttributeValue("enddate"));
}
UFLiteralDate begin = (UFLiteralDate)svo.getAttributeValue("begindate");
UFLiteralDate end = (UFLiteralDate)svo.getAttributeValue("enddate");
if ((begin != null) && (end != null)) {
if (((UFLiteralDate)begin.clone()).after((UFLiteralDate)end.clone())) {
svo.setAttributeValue("enddate", null);
}
}
begin = null;
end = null;
SuperVO newVO = (SuperVO)contClass.newInstance();
newVO.setAttributeValue("conttype", conttype);
newVO.setAttributeValue("signdate", literalDate.clone());
newVO.setAttributeValue("begindate", svo.getAttributeValue("begindate"));
newVO.setAttributeValue("enddate", svo.getAttributeValue("enddate"));
newVO.setAttributeValue("pk_psndoc", svo.getAttributeValue("pk_psndoc"));
newVO.setAttributeValue("pk_psnorg", svo.getAttributeValue("pk_psnorg"));
newVO.setAttributeValue("assgid", svo.getAttributeValue("assgid"));
newVO.setAttributeValue("pk_psnjob", svo.getAttributeValue("pk_psnjob"));
newVO.setAttributeValue("pk_group", svo.getAttributeValue("pk_group"));
newVO.setAttributeValue("pk_conttext", svo.getAttributeValue("pk_conttext"));
newVO.setAttributeValue("pk_majorcorp", svo.getAttributeValue("pk_majorcorp"));
newVO.setAttributeValue("signaddr", svo.getAttributeValue("signaddr"));
newVO.setAttributeValue("creator", svo.getAttributeValue("creator"));
newVO.setAttributeValue("creationtime", svo.getAttributeValue("creationtime"));
newVO.setAttributeValue("contid", svo.getAttributeValue("contid"));
newVO.setAttributeValue("cont_unit", svo.getAttributeValue("cont_unit"));
if (svo.getAttributeValue("termmonth") != null) {
newVO.setAttributeValue("termmonth", svo.getAttributeValue("termmonth"));
}
if ("hi_psndoc_ctrt".equals(modeName))
{
newVO.setAttributeValue("contractnum", svo.getAttributeValue("contractnum"));
newVO.setAttributeValue("termtype", svo.getAttributeValue("termtype"));
newVO.setAttributeValue("continuetime", svo.getAttributeValue("continuetime"));
}
else
{
newVO.setAttributeValue("contcode", svo.getAttributeValue("contcode"));
}
setGlbdef(nodecode, svo, newVO);
if ("60110release".equals(nodecode))
{
if ("hi_psndoc_ctrt".equals(modeName))
{
newVO.setAttributeValue("presenter", "1");
String tablename = MakeUtil.getTablename(cardPanel);
UIRefPane pane = (UIRefPane)cardPanel.getHeadItem(tablename + ".pk_unchreason").getComponent();
pane.getRefModel().setPara1("1002Z71000000000PJRJ");
pane.getRefModel().setCacheEnabled(false);
pane.getRefModel().setRefNodeName(ResHelper.getString("6011make", "06011make0093"));
}
else
{
String tablename = MakeUtil.getTablename(cardPanel);
UIRefPane pane = (UIRefPane)cardPanel.getHeadItem(tablename + ".pk_unchreason").getComponent();
pane.getRefModel().setPara1("1002Z71000000000PJRM");
pane.getRefModel().setRefTitle(ResHelper.getString("6011make", "06011make0094"));
}
}
else if ("60110finish".equals(nodecode)) {
if ("hi_psndoc_ctrt".equals(modeName))
{
String tablename = MakeUtil.getTablename(cardPanel);
UIRefPane pane = (UIRefPane)cardPanel.getHeadItem(tablename + ".pk_unchreason").getComponent();
pane.getRefModel().setPara1("1002Z71000000000PJRK");
pane.getRefModel().setCacheEnabled(false);
pane.getRefModel().setRefNodeName(ResHelper.getString("6011make", "06011make0002"));
}
else
{
String tablename = MakeUtil.getTablename(cardPanel);
UIRefPane pane = (UIRefPane)cardPanel.getHeadItem(tablename + ".pk_unchreason").getComponent();
pane.getRefModel().setPara1("1002Z71000000000PJRL");
pane.getRefModel().setRefTitle(ResHelper.getString("6011make", "06011make0003"));
}
}
WizardFirstInterface firstFace = CMMethodFactory.getWizardFirstInterface(nodecode, modeName);
if (firstFace != null) {
firstFace.setNewVOinfo(svo, newVO);
}
form.getBillForm().setValue(newVO);
if (firstFace != null) {
firstFace.setHeadItem((MakeBillManageModel)appModle, cardPanel, selPsnInf);
}
}
catch (Exception e)
{
Logger.error(e);
}
}
else
{
billForm.setValue(null);
String vmodeltype = billForm.getModelDataManager().getInfosetPK();
String pk_conmodel = null;
CtrtVO ctrt = new CtrtVO();
try
{
pk_conmodel = getTempletBatchQueryService().queryDefautPKContmodelVOByOrg(context, vmodeltype);
}
catch (Exception e)
{
Logger.error(e);
}
ctrt.setPk_conttext(pk_conmodel);
if ("hi_psndoc_ctrt".equals(modeName))
{
ctrt.setPk_psnjob(firstVO.getPk_psnjob());
MakeUtil.getHeadItem(cardPanel, "pk_psnjob").setEnabled(false);
ctrt.setPk_psndoc(firstVO.getPk_psndoc());
MakeUtil.getHeadItem(cardPanel, "pk_psndoc").setEnabled(false);
ctrt.setIfprop(UFBoolean.TRUE);
ctrt.setConttype(conttype);
MakeUtil.getHeadItem(cardPanel, "conttype").setEnabled(false);
ctrt.setBegindate((UFLiteralDate)literalDate.clone());
ctrt.setProbegindate((UFLiteralDate)literalDate.clone());
ctrt.setSigndate((UFLiteralDate)literalDate.clone());
MakeUtil.getHeadItem(cardPanel, "signdate").setValue(literalDate.clone());
ctrt.setRecordnum(Integer.valueOf());
ctrt.setContinuetime(Integer.valueOf());
ctrt.setPk_majorcorp(pk_org);
ctrt.setTermtype("CM01");
Integer contUnit = Integer.valueOf(MakeUtil.getHeadItem(cardPanel, "cont_unit").getDefaultValueObject() == null ? HRCMTermUnitUtils.TERMUNIT_MONTH : Integer.parseInt((String)MakeUtil.getHeadItem(cardPanel, "cont_unit").getDefaultValueObject()));
ctrt.setCont_unit(contUnit);
MakeUtil.getHeadItem(cardPanel, "termmonth").setLength(HRCMTermUnitUtils.getLengthByTermUnit(contUnit.intValue()).intValue());
Integer propUnit = Integer.valueOf(MakeUtil.getHeadItem(cardPanel, "prop_unit").getDefaultValueObject() == null ? HRCMTermUnitUtils.TERMUNIT_MONTH : Integer.parseInt((String)MakeUtil.getHeadItem(cardPanel, "prop_unit").getDefaultValueObject()));
ctrt.setProp_unit(propUnit);
MakeUtil.getHeadItem(cardPanel, "promonth").setLength(HRCMTermUnitUtils.getLengthByTermUnit(propUnit.intValue()).intValue());
}
ctrt.setCreator(PubEnv.getPk_user());
ctrt.setCreationtime(date);
billForm.setValue(ctrt);
}
MakeUtil.getHeadItem(cardPanel, "pk_org").setValue(pk_org);
MakeUtil.getHeadItem(cardPanel, "pk_org").setEnabled(UFBoolean.FALSE.booleanValue());
MakeUtil.getHeadItem(cardPanel, "pk_group").setValue(pk_group);
MakeUtil.getHeadItem(cardPanel, "pk_group").setEnabled(UFBoolean.FALSE.booleanValue());
if (MakeUtil.getHeadItem(cardPanel, "code") != null) {
MakeUtil.getHeadItem(cardPanel, "code").setValue(pslvo.getPsncode());
}
if (MakeUtil.getHeadItem(cardPanel, "name") != null) {
MakeUtil.getHeadItem(cardPanel, "name").setValue(pslvo.getPsnname());
}
if (MakeUtil.getHeadItem(cardPanel, "contractnum") != null)
{
MakeUtil.getHeadItem(cardPanel, "contractnum").setValue(firstVO.getVcontractnum() + "...");
PsnSelListVO pslvo1 = new PsnSelListVO();
if (!ArrayUtils.isEmpty(selPsnInf))
{
StringBuffer conractnum = new StringBuffer();
for (int i = ; i < selPsnInf.length; i++)
{
if (i == )
{
conractnum.append("...");
break;
}
if (!StringUtils.isEmpty(selPsnInf[i].getVcontractnum())) {
conractnum.append(",").append(selPsnInf[i].getVcontractnum());
}
}
if (conractnum.length() >= ) {
pslvo1.setVcontractnum(conractnum.toString().substring());
}
}
MakeUtil.getHeadItem(cardPanel, "contractnum").setValue(pslvo1.getVcontractnum());
}
if (MakeUtil.getHeadItem(cardPanel, "contcode") != null) {
MakeUtil.getHeadItem(cardPanel, "contcode").setValue(pslvo.getVcontractnum());
}
if (MakeUtil.getHeadItem(cardPanel, "job_org") != null) {
MakeUtil.getHeadItem(cardPanel, "job_org").setValue(firstVO.getPk_org());
}
boolean isExtendPsn = ((MakeBillManageModel)appModle).isExtendPsn();
Integer extendtype = (Integer)step0.getAttr("extendtype");
if ((extendtype == null) && ("60110extend".equals(nodecode))) {
extendtype = Integer.valueOf();
} else if ((extendtype != null) && ("60110extend".equals(nodecode)) && (selPsnInf.length == )) {
extendtype = Integer.valueOf();
}
//initTermItem(modeName, cardPanel, pk_org, nodecode, isExtendPsn, !ArrayUtils.isEmpty(contopinionVOs), contopinionVOs[].getItermmonth() == null ? : ArrayUtils.isEmpty(contopinionVOs) ? : contopinionVOs[].getItermmonth().intValue(), extendtype);
initTermItem(modeName, cardPanel, pk_org, nodecode, isExtendPsn, !ArrayUtils.isEmpty(contopinionVOs), ArrayUtils.isEmpty(contopinionVOs) ? : contopinionVOs[].getItermmonth() != null ? contopinionVOs[].getItermmonth().intValue() : , extendtype);
billForm.setExtendtype(extendtype);
if ("60110extend".equals(nodecode)) {
if (selPsnInf.length > )
{
if (extendtype == null)
{
if ("hi_psndoc_ctrt".equals(modeName))
{
MakeUtil.getHeadItem(cardPanel, "enddate").setEnabled(Boolean.FALSE.booleanValue());
MakeUtil.getHeadItem(cardPanel, "termmonth").setEnabled(Boolean.FALSE.booleanValue());
}
}
else if ( == extendtype.intValue())
{
MakeUtil.getHeadItem(cardPanel, "enddate").setEnabled(Boolean.FALSE.booleanValue());
MakeUtil.getHeadItem(cardPanel, "enddate").setValue(null);
MakeUtil.getHeadItem(cardPanel, "enddate").setNull(false);
MakeUtil.getHeadItem(cardPanel, "termmonth").setValue(null);
}
else if ( == extendtype.intValue())
{
MakeUtil.getHeadItem(cardPanel, "termmonth").setEnabled(Boolean.FALSE.booleanValue());
MakeUtil.getHeadItem(cardPanel, "termmonth").setValue(null);
MakeUtil.getHeadItem(cardPanel, "termmonth").setNull(false);
MakeUtil.getHeadItem(cardPanel, "enddate").setValue(null);
}
}
else
{
MakeUtil.getHeadItem(cardPanel, "enddate").setEnabled(Boolean.TRUE.booleanValue());
MakeUtil.getHeadItem(cardPanel, "enddate").setValue(null);
MakeUtil.getHeadItem(cardPanel, "enddate").setNull(true);
MakeUtil.getHeadItem(cardPanel, "termmonth").setEnabled(Boolean.TRUE.booleanValue());
MakeUtil.getHeadItem(cardPanel, "termmonth").setValue(null);
MakeUtil.getHeadItem(cardPanel, "termmonth").setNull(true);
}
}
}
private void setGlbdef(String nodecode, SuperVO oldVO, SuperVO newVO)
{
IAttributeMeta[] attributes = oldVO.getMetaData().getAttributes();
for (IAttributeMeta attribute : attributes) {
if (!attribute.isStatic()) {
newVO.setAttributeValue(attribute.getName(), oldVO.getAttributeValue(attribute.getName()));
}
}
}
private void initTermItem(String modeName, BillCardPanel cardPanel, String pk_org, String nodecode, boolean isExtendPsn, boolean isFromContOpinion, int itemmonth, Integer extendtype)
{
BillItem item = MakeUtil.getHeadItem(cardPanel, "pk_post_dept");
if (item != null)
{
BillItem orgitem = MakeUtil.getHeadItem(cardPanel, "pk_post_org");
UIRefPane pane = (UIRefPane)item.getComponent();
if ((pane != null) && (pane.getRefModel() != null)) {
pane.getRefModel().setPk_org(orgitem.getValue());
}
}
item = MakeUtil.getHeadItem(cardPanel, "pk_post");
if (item != null)
{
BillItem org_orgitem = MakeUtil.getHeadItem(cardPanel, "pk_post_org");
BillItem orgitem = MakeUtil.getHeadItem(cardPanel, "pk_post_dept");
UIRefPane pane = (UIRefPane)item.getComponent();
if ((pane != null) && (pane.getRefModel() != null))
{
pane.getRefModel().setPk_org(org_orgitem.getValue());
pane.getRefModel().addWherePart(" and pk_dept = '" + orgitem.getValue() + "'");
}
}
if (!"hi_psndoc_ctrt".equals(modeName)) {
return;
}
if ("60110change".equals(nodecode))
{
MakeUtil.getHeadItem(cardPanel, "termmonth").setLength();
CardCheckProcessorImpl processor = new CardCheckProcessorImpl();
processor.setExtendPsn(isExtendPsn);
if (processor.getBillItem(cardPanel, "ifprop") != null)
{
boolean flag = processor.getBillItem(cardPanel, "ifprop").isShowFlag();
processor.setPropItem(cardPanel, flag);
}
}
if ((!"60110sign".equals(nodecode)) && (!"60110extend".equals(nodecode))) {
return;
}
CardCheckProcessorImpl processor = new CardCheckProcessorImpl();
processor.setPk_org(pk_org);
processor.setExtendPsn(isExtendPsn);
processor.setExtendtype(extendtype);
processor.refreshTermTypeStat(cardPanel, !"60110sign".equals(nodecode), isFromContOpinion, Integer.valueOf(itemmonth));
}
private void setContCodeEnabled(BillCardPanel cardPanel, String modeName, boolean enable)
{
String tablename = cardPanel.getHeadItems()[].getTableCode();
if ("hi_psndoc_ctrt".equals(tablename))
{
MakeUtil.getHeadItem(cardPanel, "contractnum").setEnabled(enable);
MakeUtil.getHeadItem(cardPanel, "contractnum").setNull(enable);
}
else
{
MakeUtil.getHeadItem(cardPanel, "contcode").setEnabled(enable);
MakeUtil.getHeadItem(cardPanel, "contcode").setNull(enable);
}
}
private void setContCode(SuperVO vo, PsnSelListVO[] psnSelVOs, String modeName, LoginContext context, BillCardPanel cardPanel, MakeBillManageModel makeMode)
{
try
{
int selLength = psnSelVOs.length;
if (("60110sign".equals(context.getNodeCode())) || ("60110extend".equals(context.getNodeCode())))
{
if ("60110extend".equals(context.getNodeCode()))
{
UFBoolean editable = (UFBoolean)makeMode.getContPara().get("HRCM0001");
if (!editable.booleanValue())
{
setContCodeEnabled(cardPanel, modeName, false);
return;
}
}
BillCodeContext billCodeContext = BillCodeHelper.getBillCodeContext(HRCMUtils.getBillCodeForTableName(modeName), context.getPk_group(), context.getPk_org());
String[] billCodeArr = new String[selLength];
DefauteCode defautCode = null;
if ((billCodeContext == null) && (selLength == ))
{
QueryMakeBillCode queryBC=new QueryMakeBillCode();
String codeStr=queryBC.getCodeStr(psnSelVOs[].getPk_org(), psnSelVOs[].getPsncode());
String maxCode = queryBC.getMaxCode(vo.getTableName(),codeStr,psnSelVOs[].getPk_org());
String code = queryBC.getNextCode(codeStr,maxCode);
psnSelVOs[].setVcontractnum(code);
setContCodeEnabled(cardPanel, modeName, true);
}
else if (billCodeContext != null)
{
boolean isEditable = billCodeContext.isEditable();
IHrBillCode ibillcode = (IHrBillCode)NCLocator.getInstance().lookup(IHrBillCode.class);
billCodeArr = ibillcode.getBillCode(HRCMUtils.getBillCodeForTableName(modeName), context.getPk_group(), context.getPk_org(), selLength);
makeMode.setAutoGeneratedCodes(billCodeArr);
for (int i = ; i < psnSelVOs.length; i++) {
psnSelVOs[i].setVcontractnum(billCodeArr[i]);
}
if (selLength > ) {
setContCodeEnabled(cardPanel, modeName, false);
} else {
setContCodeEnabled(cardPanel, modeName, isEditable);
}
}
else
{
MakeAppModelService service = (MakeAppModelService)makeMode.getService();
String tablename = vo.getTableName();
String maxZdCode = service.getQueryService().getMaxZDCode(tablename, DefauteCode.getDayStr());
defautCode = new DefauteCode(maxZdCode);
for (int i = ; i < psnSelVOs.length; i++)
{
//查詢已有的目前日期最大編碼流水号,改為查詢目前人員的最大流水号
//查資料庫
QueryMakeBillCode queryBC=new QueryMakeBillCode();
String codeStr=queryBC.getCodeStr(psnSelVOs[i].getPk_org(), psnSelVOs[i].getPsncode());
String maxCode = queryBC.getMaxCode(tablename,codeStr,psnSelVOs[i].getPk_org());
//String code = defautCode.getNextCode();
String code = queryBC.getNextCode(codeStr,maxCode);
psnSelVOs[i].setVcontractnum(code);
}
setContCodeEnabled(cardPanel, modeName, false);
}
}
else if ("60110extend".equals(context.getNodeCode()))
{
UFBoolean editable = (UFBoolean)makeMode.getContPara().get("HRCM0001");
if (!editable.booleanValue())
{
setContCodeEnabled(cardPanel, modeName, false);
return;
}
}
else
{
setContCodeEnabled(cardPanel, modeName, false);
}
if ("60110extend".equals(context.getNodeCode()))
{
UFBoolean editable = (UFBoolean)makeMode.getContPara().get("HRCM0001");
if ((editable.booleanValue()) && (selLength == ))
{
BillCodeContext billCodeContext = HiCacheUtils.getBillCodeContext("contract", context.getPk_group(), context.getPk_org());
boolean editableRule = billCodeContext == null ? true : billCodeContext.isEditable();
cardPanel.getHeadItem("hi_psndoc_ctrt.contractnum").setEdit(editableRule);
}
}
}
catch (Exception e)
{
Logger.error(e.getMessage());
}
}
private ITempletBatchQueryService getTempletBatchQueryService()
throws BusinessException
{
if (this.templetBatchQueryService == null) {
this.templetBatchQueryService = ((ITempletBatchQueryService)NCLocator.getInstance().lookup(ITempletBatchQueryService.class));
}
return this.templetBatchQueryService;
}
}
合同編碼調用顯示類,合同進行中心,新增合同類:CtrtOperateDlg.java
package nc.ui.hrcm.center.view;
import java.awt.Component;
import java.awt.Container;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Vector;
import javax.swing.JComponent;
import nc.bs.framework.common.NCLocator;
import nc.bs.logging.Logger;
import nc.bs.uif2.BusinessExceptionAdapter;
import nc.desktop.ui.WorkbenchEnvironment;
import nc.funcnode.ui.FuncletInitData;
import nc.funcnode.ui.FuncletWindowLauncher;
import nc.funcnode.ui.IFunclet;
import nc.funcnode.ui.IFuncletWindow;
import nc.hr.utils.BillCodeHelper;
import nc.hr.utils.HRCMTermUnitUtils;
import nc.hr.utils.PubEnv;
import nc.hr.utils.ResHelper;
import nc.itf.hr.frame.IHrBillCode;
import nc.itf.hrcm.IMakeService;
import nc.itf.hrcm.IQueryMakeService;
import nc.itf.hrcm.ITempletBatchQueryService;
import nc.itf.uap.busibean.SysinitAccessor;
import nc.pub.billcode.vo.BillCodeContext;
import nc.pub.tools.HRCMUtils;
import nc.pub.tools.HiCacheUtils;
import nc.ui.bd.ref.AbstractRefModel;
import nc.ui.hr.frame.dialog.HrDialog;
import nc.ui.hr.frame.util.BillPanelUtils;
import nc.ui.hrcm.agreement.action.AddAgreementAction;
import nc.ui.hrcm.agreement.model.AgreementAppModel;
import nc.ui.hrcm.agreement.model.AgreementModelService;
import nc.ui.hrcm.agreement.wizard.action.AgreementRefAction;
import nc.ui.hrcm.agreement.wizard.listener.FinishWizardDialogListener;
import nc.ui.hrcm.agreement.wizard.panel.AgreementPsnSelectPanel;
import nc.ui.hrcm.make.CMTemplateContainer;
import nc.ui.hrcm.make.factory.CMMethodFactory;
import nc.ui.hrcm.make.factory.CenterWizardInitDataInterface;
import nc.ui.hrcm.make.factory.WizardFirstInterface;
import nc.ui.hrcm.make.model.MakeBillManageModel;
import nc.ui.hrcm.make.view.ExtendAgreementDialog;
import nc.ui.hrcm.make.view.MakeUtil;
import nc.ui.hrcm.make.view.ViewAgreementDialog;
import nc.ui.hrcm.processor.CardCheckProcessorImpl;
import nc.ui.hrcm.processor.CheckException;
import nc.ui.hrcm.processor.CheckProcessorFactory;
import nc.ui.hrcm.processor.ICheckProcessor;
import nc.ui.hrcm.templet.model.ContModelRef;
import nc.ui.hrcm.utils.DataTransferObject;
import nc.ui.hrcm.utils.DefauteCode;
import nc.ui.hrcm.utils.QueryMakeBillCode;
import nc.ui.pub.beans.MessageDialog;
import nc.ui.pub.beans.UICheckBox;
import nc.ui.pub.beans.UIRefPane;
import nc.ui.pub.beans.wizard.WizardDialog;
import nc.ui.pub.beans.wizard.WizardModel;
import nc.ui.pub.beans.wizard.WizardStep;
import nc.ui.pub.bill.BillCardBeforeEditListener;
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.BillItemEvent;
import nc.ui.pub.bill.BillListData;
import nc.ui.pub.bill.BillListPanel;
import nc.ui.pub.bill.BillModel;
import nc.ui.sm.power.FuncRegisterCacheAccessor;
import nc.ui.uif2.ShowStatusBarMsgUtil;
import nc.ui.uif2.ToftPanelAdaptor;
import nc.vo.hr.infoset.InfoSetVO;
import nc.vo.hrcm.hrcm_center.AggPsnjobVO;
import nc.vo.hrcm.hrcm_center.CtrtVO;
import nc.vo.hrcm.share.PsnSelListVO;
import nc.vo.hrcm.templet.ContmodelVO;
import nc.vo.logging.Debug;
import nc.vo.pub.BusinessException;
import nc.vo.pub.BusinessRuntimeException;
import nc.vo.pub.CircularlyAccessibleValueObject;
import nc.vo.pub.IAttributeMeta;
import nc.vo.pub.IVOMeta;
import nc.vo.pub.SuperVO;
import nc.vo.pub.ValidationException;
import nc.vo.pub.bill.BillTabVO;
import nc.vo.pub.bill.BillTempletBodyVO;
import nc.vo.pub.bill.BillTempletHeadVO;
import nc.vo.pub.bill.BillTempletVO;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.pub.lang.UFDate;
import nc.vo.pub.lang.UFDateTime;
import nc.vo.pub.lang.UFLiteralDate;
import nc.vo.sm.funcreg.FuncRegisterVO;
import nc.vo.uif2.LoginContext;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
public class CtrtOperateDlg
extends HrDialog
implements BillEditListener, BillCardBeforeEditListener
{
private static final long serialVersionUID = L;
private BillCardPanel billCardPanel;
private final MakeBillManageModel model;
private AggPsnjobVO[] aggVOs;
private String nodeCode;
private String pk_org;
private PsnSelListVO[] psnList = null;
private int extendtype;
private final List<Integer> daysList = new ArrayList();
private boolean isOpenBusiFunc = false;
private CtrtVO[] ctrtVOs;
public static final String TAB_CODE_TREE_CONFIG = "tab_code_tree_config";
public static final String TAB_CODE_TREE_CONFIG_AFTER = "tab_code_tree_config_after";
public static final String TAB_CODE_HEAD_MAIN = "main";
private CMTemplateContainer templateContainer;
private String[] autoGeneratedCodes;
public CtrtOperateDlg(Container parent, MakeBillManageModel model)
{
super(parent, false);
this.model = model;
}
public CtrtOperateDlg(Container parent, MakeBillManageModel model, CMTemplateContainer templateContainer)
{
super(parent, false);
this.model = model;
this.templateContainer = templateContainer;
}
protected JComponent createCenterPanel()
{
this.billCardPanel = new BillCardPanel();
this.templateContainer.setContext(this.model.getContext());
BillData billData = null;
if (("60110extend".equals(this.nodeCode)) || ("60110change".equals(this.nodeCode)))
{
billData = getBillData(this.templateContainer, this.nodeCode);
}
else
{
BillTempletVO vo = this.templateContainer.getTemplate("hi_psndoc_ctrt");
billData = new BillData(getBillTempletVOWithMake(vo));
}
this.billCardPanel.setBillData(billData);
this.billCardPanel.getHeadItems();
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.contractnum").setEnabled(false);
return this.billCardPanel;
}
public void closeOK()
{
notNullValidate();
validateDate();
CtrtVO[] vos = (CtrtVO[])getValue();
if (("60110extend".equals(this.nodeCode)) && (this.psnList.length > )) {
validateTermmonth();
}
List<String> pk_contList = new ArrayList();
for (PsnSelListVO at : this.psnList)
{
String pk_psndoc = at.getPk_psndoc();
pk_contList.add(at.getPk_cont());
for (CtrtVO ctrtVO : vos)
{
String pk_psndoc_b = ctrtVO.getPk_psndoc();
if (pk_psndoc.equals(pk_psndoc_b)) {
at.setVcontractnum(ctrtVO.getContractnum());
}
}
}
IMakeService makeService = (IMakeService)NCLocator.getInstance().lookup(IMakeService.class);
if ("60110change".equals(this.nodeCode))
{
String[] editableItem = getEditItemName(this.billCardPanel);
List<Object> list = new ArrayList();
try
{
list = makeService.ctrtChangeValidation(pk_contList, editableItem, vos);
}
catch (BusinessException e)
{
Logger.error(e.getMessage());
}
String names = (String)list.get();
if (StringUtils.isNotBlank(names))
{
String message = MessageFormat.format(ResHelper.getString("6011make", "06011make0191"), new Object[] { names });
List<SuperVO> superVO = (List)list.get();
if ((superVO == null) || (superVO.size() == ))
{
message = message + ResHelper.getString("6011make", "06011make0192");
MessageDialog.showErrorDlg(null, null, message);
return;
}
if (superVO.size() < vos.length)
{
message = message + ResHelper.getString("6011make", "06011make0193");
if (MessageDialog.showYesNoDlg(null, ResHelper.getString("6011make", "06011make0228"), message) == ) {
return;
}
vos = (CtrtVO[])superVO.toArray(new CtrtVO[superVO.size()]);
}
}
}
String info = null;
try
{
info = makeService.saveValidate(vos, this.nodeCode, this.model.getContext());
}
catch (BusinessException e)
{
Logger.error(e.getMessage());
}
if (info != null)
{
if (info.startsWith("1"))
{
info = info.substring();
MessageDialog.showErrorDlg(null, null, info);
return;
}
if (MessageDialog.showYesNoDlg(null, ResHelper.getString("6011make", "06011make0228"), info) == ) {
return;
}
}
if ("60110sign".equals(this.nodeCode)) {
try
{
String[] pks = new String[vos.length];
for (int i = ; i < vos.length; i++) {
pks[i] = ((String)vos[i].getAttributeValue("pk_psnjob"));
}
String clerkcode = ((IQueryMakeService)NCLocator.getInstance().lookup(IQueryMakeService.class)).getPsnjobPKSetByOrgPK(this.pk_org, pks);
if (clerkcode != null)
{
String message = ResHelper.getString("6011make", "06011make0075", new String[] { clerkcode });
MessageDialog.showWarningDlg(this, null, message);
return;
}
}
catch (BusinessException e)
{
Logger.error(e.getMessage());
}
}
if (("60110release".equals(this.nodeCode)) || ("60110finish".equals(this.nodeCode)))
{
String title = "60110release".equals(this.nodeCode) ? ResHelper.getString("6011make", "06011make0055") : ResHelper.getString("common", "UC001-0000032");
String name = ResHelper.getString("6011make", "06011make0085");
if ( == MessageDialog.showYesNoDlg(this, ResHelper.getString("6011make", "06011make0227", new String[] { title }), MessageFormat.format(ResHelper.getString("6011make", "06011make0092"), new Object[] { name, title }))) {
return;
}
}
try
{
vos = (CtrtVO[])makeService.batchInsert(vos);
try
{
effective(vos);
}
catch (InstantiationException e)
{
Logger.error(e.getMessage());
}
catch (IllegalAccessException e)
{
Logger.error(e.getMessage());
}
}
catch (BusinessException e)
{
Logger.error(e.getMessage());
String msg = e.getMessage();
ShowStatusBarMsgUtil.showStatusBarMsg(msg, this.model.getContext());
MessageDialog.showErrorDlg(this, null, msg);
return;
}
super.closeOK();
}
public void closeCancel()
{
super.closeCancel();
if (!ArrayUtils.isEmpty(this.autoGeneratedCodes))
{
IHrBillCode hrBillCode = (IHrBillCode)NCLocator.getInstance().lookup(IHrBillCode.class);
try
{
hrBillCode.rollbackPreBillCodes(HRCMUtils.getBillCodeForTableName("hi_psndoc_ctrt"), this.model.getContext().getPk_group(), this.model.getContext().getPk_org(), this.autoGeneratedCodes);
this.autoGeneratedCodes = null;
}
catch (BusinessException e)
{
Debug.error(e.getMessage(), e);
throw new BusinessRuntimeException(e.getMessage(), e);
}
}
}
private void effective(CtrtVO[] vos)
throws BusinessException, InstantiationException, IllegalAccessException
{
boolean permission = this.model.isEffectBtnPermission();
if (permission)
{
String[] psnpks = new String[vos.length];
String[] jobpks = new String[vos.length];
for (int j = ; j < vos.length; j++)
{
psnpks[j] = ((String)vos[j].getAttributeValue("pk_psndoc"));
jobpks[j] = ((String)vos[j].getAttributeValue("pk_psnjob"));
}
for (CtrtVO evo : vos)
{
SuperVO svo = evo;
svo.setStatus();
svo.setAttributeValue("isrefer", UFBoolean.TRUE);
svo.setAttributeValue("lastflag", UFBoolean.TRUE);
}
if ("60110sign".equals(this.nodeCode))
{
ExtendAgreementDialog dialog = new ExtendAgreementDialog(this);
if (dialog.showYesNoDlg(this, ResHelper.getString("6011make", "06011make0226"), ResHelper.getString("6011make", "06011make0020")) == )
{
((IMakeService)NCLocator.getInstance().lookup(IMakeService.class)).effective(true, vos);
for (CtrtVO evo : vos)
{
SuperVO svo = evo;
svo.setStatus();
}
}
else
{
this.isOpenBusiFunc = true;
setCtrtVOs(vos);
}
boolean isSelected = dialog.getCheckBox().isSelected();
if (isSelected)
{
boolean isOpenBusiFunc = getSignDlg(this.model.getContext(), jobpks);
if (!isOpenBusiFunc)
{
DataTransferObject dto = new DataTransferObject();
dto.setPk_org(this.model.getContext().getPk_org());
FuncletInitData data = new FuncletInitData();
data.setInitData(dto);
IFuncletWindow window = WorkbenchEnvironment.getInstance().findOpenedFuncletWindow("60110agsign");
if (window != null)
{
IFunclet funclet = window.getCurrFunclet();
Component com = funclet.getControl();
ToftPanelAdaptor toft = (ToftPanelAdaptor)com;
toft.initData(data);
window.showWindow();
return;
}
FuncRegisterVO funcRegisterVO = FuncRegisterCacheAccessor.getInstance().getFuncRegisterVOByFunCode("60110agsign");
ToftPanelAdaptor adaptor = (ToftPanelAdaptor)this.model.getContext().getEntranceUI();
FuncletWindowLauncher.openFuncNodeInTabbedPane(adaptor, funcRegisterVO, data, null, false);
}
}
}
else if (MessageDialog.showYesNoDlg(this.billCardPanel, ResHelper.getString("6011make", "06011make0226"), ResHelper.getString("6011make", "06011make0020")) == )
{
((IMakeService)NCLocator.getInstance().lookup(IMakeService.class)).effective(true, vos);
if (("60110release".equals(this.nodeCode)) || ("60110finish".equals(this.nodeCode)))
{
List<String> nameList = ((IQueryMakeService)NCLocator.getInstance().lookup(IQueryMakeService.class)).queryPsnByEffectPortocol(psnpks);
if (!nameList.isEmpty())
{
PsnSelListVO[] agreementVOs = ((IQueryMakeService)NCLocator.getInstance().lookup(IQueryMakeService.class)).queryEffectAgreement(psnpks);
StringBuffer message = new StringBuffer();
message.append(ResHelper.getString("60110center", "06011center0062"));
for (int i = ; i < nameList.size(); i++) {
if (i == nameList.size() - ) {
message.append((String)nameList.get(i)).append(",");
} else {
message.append((String)nameList.get(i)).append(ResHelper.getString("60110center", "06011center0031"));
}
}
message.append(ResHelper.getString("60110center", "06011center0063"));
if (MessageDialog.showYesNoDlg(this, ResHelper.getString("60110center", "06011center0073"), message.toString()) == )
{
ViewAgreementDialog aggreementDialog = new ViewAgreementDialog(this, ResHelper.getString("60110center", "06011center0064"));
aggreementDialog.getAgreementListPanel().getBillListData().setHeaderValueVO(agreementVOs);
BillPanelUtils.dealWithRefShowNameByPk(aggreementDialog.getAgreementListPanel(), -);
Boolean isSelectedAll = Boolean.valueOf(true);
BillModel billModel = aggreementDialog.getAgreementListPanel().getHeadBillModel();
if (isSelectedAll.booleanValue()) {
for (int i = ; i < agreementVOs.length; i++) {
billModel.setRowState(i, );
}
}
if ( != aggreementDialog.showModal()) {
return;
}
PsnSelListVO[] psnVOList = (PsnSelListVO[])billModel.getBodySelectedVOs(PsnSelListVO.class.getName());
if ((psnVOList == null) || (psnVOList.length == ))
{
MessageDialog.showHintDlg(this, null, ResHelper.getString("60110center", "06011center0065"));
return;
}
Vector<PsnSelListVO> vSelPsnInf = new Vector();
for (int i = ; i < billModel.getRowCount(); i++) {
if (billModel.getRowState(i) == )
{
String pk_psnjob = billModel.getValueAt(i, "vcontractnum").toString();
for (PsnSelListVO psnSelListVO : psnVOList)
{
String pk_psnjob1 = psnSelListVO.getVcontractnum();
if (pk_psnjob.equals(pk_psnjob1))
{
vSelPsnInf.add(psnSelListVO);
break;
}
}
}
}
((IMakeService)NCLocator.getInstance().lookup(IMakeService.class)).finishOrReleaseAgreement(vSelPsnInf);
}
}
}
for (CtrtVO evo : vos)
{
SuperVO svo = evo;
svo.setStatus();
}
}
else
{
this.isOpenBusiFunc = true;
setCtrtVOs(vos);
}
}
else
{
this.isOpenBusiFunc = true;
setCtrtVOs(vos);
}
}
private boolean getSignDlg(LoginContext context, String[] jobpks)
throws InstantiationException, IllegalAccessException, BusinessException
{
AgreementAppModel agreementModel = new AgreementAppModel();
LoginContext loginContext = new LoginContext();
loginContext.setNodeCode("60110agsign");
loginContext.setEntranceUI(context.getEntranceUI());
loginContext.setPk_org(context.getPk_org());
loginContext.setPk_group(context.getPk_group());
loginContext.setPk_loginUser(context.getPk_loginUser());
agreementModel.setContext(loginContext);
agreementModel.setAgreementType("postcont");
agreementModel.setService(new AgreementModelService());
AddAgreementAction action = new AddAgreementAction();
action.setFromCtrtSign(true);
action.setModel(agreementModel);
WizardDialog dlg = action.getWizardDialog();
PsnSelListVO[] psn = new AgreementRefAction(action.getWizardDialog(), agreementModel).queryPsnjobInfo(jobpks, null);
BillListPanel list = ((AgreementPsnSelectPanel)((WizardStep)dlg.getModel().getSteps().get()).getComp()).getPsnListPanel();
list.setHeaderValueVO(psn);
BillPanelUtils.dealWithRefShowNameByPk(list, -);
((WizardStep)dlg.getModel().getSteps().get()).putAttr("psnList", psn);
for (int i = ; i < psn.length; i++) {
list.getHeadBillModel().setRowState(i, );
}
dlg.setWizardDialogListener(new FinishWizardDialogListener());
dlg.showModal();
boolean isOpenBusiFunc = agreementModel.isEffect();
return isOpenBusiFunc;
}
private void notNullValidate()
{
BillData data = this.billCardPanel.getBillData();
try
{
if (data != null) {
data.dataNotNullValidate();
}
}
catch (ValidationException e)
{
String msg = e.getMessage();
ShowStatusBarMsgUtil.showStatusBarMsg(msg, this.model.getContext());
MessageDialog.showErrorDlg(this, null, msg);
throw new BusinessExceptionAdapter(e);
}
}
private void validateDate()
{
CtrtVO ctrtVO = (CtrtVO)this.billCardPanel.getBillData().getChangeBillObjectByMetaData();
try
{
UFLiteralDate begindate = (UFLiteralDate)ctrtVO.getAttributeValue("begindate");
UFLiteralDate enddate = (UFLiteralDate)ctrtVO.getAttributeValue("enddate");
if ((enddate != null) && (enddate.toString().length() > )) {
throw new ValidationException(ResHelper.getString("6011make", "06011make0235"));
}
if ((begindate != null) && (enddate != null) && (!enddate.after(begindate))) {
throw new ValidationException(ResHelper.getString("6011make", "06011make0029"));
}
UFLiteralDate probegindate = (UFLiteralDate)ctrtVO.getAttributeValue("probegindate");
if ((begindate != null) && (probegindate != null) && (probegindate.before(begindate))) {
throw new ValidationException(ResHelper.getString("6011make", "06011make0194"));
}
UFLiteralDate probenddate = (UFLiteralDate)ctrtVO.getAttributeValue("probenddate");
if ((probegindate != null) && (probenddate != null) && (!probenddate.after(probegindate))) {
throw new ValidationException(ResHelper.getString("6011make", "06011make0030"));
}
}
catch (ValidationException e)
{
String msg = e.getMessage();
ShowStatusBarMsgUtil.showStatusBarMsg(msg, this.model.getContext());
MessageDialog.showErrorDlg(this, null, msg);
throw new BusinessExceptionAdapter(e);
}
}
private BillTempletVO getBillTempletVOWithMake(BillTempletVO clonedTemVO)
{
List<BillTempletBodyVO> arrListBodyVO = new ArrayList();
List<BillTempletBodyVO> templetVOs = getHeadBillTempletVO();
if (templetVOs != null) {
arrListBodyVO.addAll(templetVOs);
}
templetVOs = getBodyBillTempletVOofMake(clonedTemVO);
if (templetVOs != null) {
arrListBodyVO.addAll(templetVOs);
}
clonedTemVO.setChildrenVO((CircularlyAccessibleValueObject[])arrListBodyVO.toArray(new BillTempletBodyVO[]));
return clonedTemVO;
}
protected List<BillTempletBodyVO> getBodyBillTempletVOofMake(BillTempletVO clonedTemVO)
{
String tablename = clonedTemVO.getHeadVO().getPkBillTypeCode();
BillTempletBodyVO[] cloneBodyVOs = clonedTemVO.getBodyVO();
int showOrder = ;
List<BillTempletBodyVO> bodyVOs = new ArrayList();
BillTempletBodyVO templetBodyVO = new BillTempletBodyVO();
templetBodyVO.setCardflag(Boolean.valueOf(true));
templetBodyVO.setEditflag(Boolean.valueOf(false));
templetBodyVO.setItemtype(Integer.valueOf());
templetBodyVO.setNullflag(Boolean.valueOf(false));
templetBodyVO.setPos(Integer.valueOf());
templetBodyVO.setList(false);
templetBodyVO.setListflag(Boolean.valueOf(false));
templetBodyVO.setListshowflag(Boolean.FALSE);
templetBodyVO.setWidth(Integer.valueOf());
templetBodyVO.setShowflag(Boolean.valueOf(false));
templetBodyVO.setItemkey("111");
templetBodyVO.setDatatype(Integer.valueOf());
templetBodyVO.setDefaultshowname(ResHelper.getString("6011make", "06011make0074"));
templetBodyVO.setShoworder(Integer.valueOf(showOrder++));
bodyVOs.add(templetBodyVO);
for (BillTempletBodyVO bodyVO : cloneBodyVOs) {
if (!filterAuditItem(tablename, bodyVO))
{
templetBodyVO = (BillTempletBodyVO)bodyVO.clone();
bodyVOs.add(templetBodyVO);
}
}
for (BillTempletBodyVO bodyVO : cloneBodyVOs) {
if (filterAuditItem(tablename, bodyVO))
{
templetBodyVO = bodyVO;
templetBodyVO.setTable_name(ResHelper.getString("common", "UC001-0000095"));
templetBodyVO.setPos(Integer.valueOf());
bodyVOs.add(templetBodyVO);
}
}
return bodyVOs;
}
private boolean filterAuditItem(String tablename, BillTempletBodyVO bodyVO)
{
return (MakeUtil.equalsKey(bodyVO, tablename, "creator")) || (MakeUtil.equalsKey(bodyVO, tablename, "creationtime")) || (MakeUtil.equalsKey(bodyVO, tablename, "modifier")) || (MakeUtil.equalsKey(bodyVO, tablename, "modifiedtime"));
}
private BillData getBillData(CMTemplateContainer templateContainer, String nodecode)
{
String tabname = "60110extend".equals(nodecode) ? ResHelper.getString("6011make", "06011make0070") : ResHelper.getString("6011make", "06011make0071");
BillTempletVO vo = templateContainer.getTemplate("hi_psndoc_ctrt");
BillTempletVO cloneVO = (BillTempletVO)vo.clone();
BillData billData = new BillData(getBillTempletVO(cloneVO));
BillTabVO billTabVO = new BillTabVO();
billTabVO.setPos(Integer.valueOf());
billTabVO.setTabcode("tab_code_tree_config");
billTabVO.setTabindex(Integer.valueOf());
billTabVO.setTabname(MessageFormat.format(ResHelper.getString("6011make", "06011make0072"), new Object[] { tabname }));
billTabVO.setBasetab("main");
billTabVO.setMixindex(Integer.valueOf());
billData.addBodyTabVO(billTabVO);
BillTabVO afterBillTabVO = new BillTabVO();
afterBillTabVO.setPos(Integer.valueOf());
afterBillTabVO.setTabcode("tab_code_tree_config_after");
afterBillTabVO.setTabindex(Integer.valueOf());
afterBillTabVO.setTabname(MessageFormat.format(ResHelper.getString("6011make", "06011make0073"), new Object[] { tabname }));
afterBillTabVO.setBasetab("main");
afterBillTabVO.setMixindex(Integer.valueOf());
billData.addBodyTabVO(afterBillTabVO);
return billData;
}
private BillTempletVO getBillTempletVO(BillTempletVO clonedTemVO)
{
List<BillTempletBodyVO> arrListBodyVO = new ArrayList();
List<BillTempletBodyVO> templetVOs = getHeadBillTempletVO();
if (templetVOs != null) {
arrListBodyVO.addAll(templetVOs);
}
templetVOs = getBodyBillTempletVO(clonedTemVO);
if (templetVOs != null) {
arrListBodyVO.addAll(templetVOs);
}
clonedTemVO.setChildrenVO((CircularlyAccessibleValueObject[])arrListBodyVO.toArray(new BillTempletBodyVO[]));
return clonedTemVO;
}
protected List<BillTempletBodyVO> getHeadBillTempletVO()
{
return null;
}
protected List<BillTempletBodyVO> getBodyBillTempletVO(BillTempletVO clonedTemVO)
{
String tablename = clonedTemVO.getHeadVO().getPkBillTypeCode();
BillTempletBodyVO[] cloneBodyVOs = clonedTemVO.getBodyVO();
HashMap<String, BillTempletBodyVO> map = MakeUtil.billTempletBodyVOArrsToHashMap(cloneBodyVOs);
String contcodeKey = "hi_psndoc_ctrt".equals(tablename) ? "contractnum" : "contcode";
int showOrder = ;
List<BillTempletBodyVO> bodyVOs = new ArrayList();
BillTempletBodyVO templetBodyVO = new BillTempletBodyVO();
templetBodyVO.setCardflag(Boolean.valueOf(true));
templetBodyVO.setEditflag(Boolean.valueOf(false));
templetBodyVO.setItemtype(Integer.valueOf());
templetBodyVO.setNullflag(Boolean.valueOf(false));
templetBodyVO.setPos(Integer.valueOf());
templetBodyVO.setList(false);
templetBodyVO.setListflag(Boolean.valueOf(false));
templetBodyVO.setListshowflag(Boolean.FALSE);
templetBodyVO.setWidth(Integer.valueOf());
templetBodyVO.setShowflag(Boolean.valueOf(false));
templetBodyVO.setItemkey("111");
templetBodyVO.setDatatype(Integer.valueOf());
templetBodyVO.setDefaultshowname(ResHelper.getString("6011make", "06011make0074"));
templetBodyVO.setShoworder(Integer.valueOf(showOrder++));
bodyVOs.add(templetBodyVO);
for (BillTempletBodyVO bodyVO : cloneBodyVOs) {
if (!filterName(tablename, contcodeKey, bodyVO)) {
if (!bodyVO.getShowflag().booleanValue())
{
templetBodyVO = (BillTempletBodyVO)bodyVO.clone();
templetBodyVO.setCardflag(Boolean.valueOf(true));
templetBodyVO.setEditflag(Boolean.valueOf(false));
templetBodyVO.setItemtype(Integer.valueOf());
templetBodyVO.setPos(Integer.valueOf());
templetBodyVO.setList(false);
templetBodyVO.setListflag(Boolean.valueOf(false));
templetBodyVO.setListshowflag(Boolean.FALSE);
templetBodyVO.setWidth(Integer.valueOf());
templetBodyVO.setShowflag(Boolean.valueOf(false));
templetBodyVO.setShoworder(Integer.valueOf(showOrder++));
bodyVOs.add(templetBodyVO);
}
}
}
templetBodyVO = (BillTempletBodyVO)map.get(tablename + "." + contcodeKey);
if (templetBodyVO != null)
{
templetBodyVO.setShowflag(Boolean.valueOf(true));
templetBodyVO.setShoworder(Integer.valueOf(showOrder++));
templetBodyVO.setTable_code(null);
bodyVOs.add(templetBodyVO);
}
templetBodyVO = (BillTempletBodyVO)map.get(tablename + "." + "name");
if (templetBodyVO != null)
{
templetBodyVO.setShowflag(Boolean.valueOf(true));
templetBodyVO.setShoworder(Integer.valueOf(showOrder++));
templetBodyVO.setTable_code(null);
bodyVOs.add(templetBodyVO);
}
templetBodyVO = (BillTempletBodyVO)map.get(tablename + "." + "signdate");
if (templetBodyVO != null)
{
templetBodyVO.setShowflag(Boolean.valueOf(true));
templetBodyVO.setShoworder(Integer.valueOf(showOrder++));
templetBodyVO.setTable_code(null);
bodyVOs.add(templetBodyVO);
}
for (BillTempletBodyVO bodyVO : cloneBodyVOs) {
if (!filterName(tablename, contcodeKey, bodyVO)) {
if (bodyVO.getShowflag().booleanValue())
{
templetBodyVO = (BillTempletBodyVO)bodyVO.clone();
templetBodyVO.setTable_code("tab_code_tree_config_after");
templetBodyVO.setShowflag(Boolean.valueOf(true));
templetBodyVO.setShoworder(Integer.valueOf(showOrder++));
bodyVOs.add(templetBodyVO);
}
}
}
for (BillTempletBodyVO bodyVO : cloneBodyVOs) {
if (!filterName(tablename, contcodeKey, bodyVO)) {
if (bodyVO.getShowflag().booleanValue())
{
templetBodyVO = bodyVO;
templetBodyVO.setTable_code("tab_code_tree_config");
templetBodyVO.setItemkey(templetBodyVO.getItemkey() + "_old");
templetBodyVO.setEditflag(Boolean.valueOf(false));
templetBodyVO.setNullflag(Boolean.valueOf(false));
templetBodyVO.setShowflag(Boolean.valueOf(true));
templetBodyVO.setShoworder(Integer.valueOf(showOrder++));
bodyVOs.add(templetBodyVO);
}
}
}
for (BillTempletBodyVO bodyVO : cloneBodyVOs) {
if (filterAuditItem(tablename, bodyVO))
{
templetBodyVO = bodyVO;
templetBodyVO.setTable_name(ResHelper.getString("common", "UC001-0000095"));
templetBodyVO.setShoworder(Integer.valueOf(showOrder++));
templetBodyVO.setShowflag(Boolean.valueOf(true));
templetBodyVO.setPos(Integer.valueOf());
bodyVOs.add(templetBodyVO);
}
}
return bodyVOs;
}
private boolean filterName(String tablename, String contcodeKey, BillTempletBodyVO bodyVO)
{
return (MakeUtil.equalsKey(bodyVO, tablename, contcodeKey)) || (MakeUtil.equalsKey(bodyVO, tablename, "name")) || (MakeUtil.equalsKey(bodyVO, tablename, "signdate")) || (MakeUtil.equalsKey(bodyVO, tablename, "creator")) || (MakeUtil.equalsKey(bodyVO, tablename, "creationtime")) || (MakeUtil.equalsKey(bodyVO, tablename, "modifier")) || (MakeUtil.equalsKey(bodyVO, tablename, "modifiedtime"));
}
public Object getValue()
{
CtrtVO ctrtVO = (CtrtVO)this.billCardPanel.getBillData().getChangeBillObjectByMetaData();
Vector<CtrtVO> vec = new Vector();
if (this.psnList.length == ) {
this.psnList[].setVcontractnum(ctrtVO.getContractnum());
}
for (PsnSelListVO vo : this.psnList)
{
CtrtVO newVo = (CtrtVO)ctrtVO.clone();
String contractnum = vo.getVcontractnum() == null ? ctrtVO.getContractnum() : vo.getVcontractnum();
newVo.setContractnum(contractnum);
newVo.setPk_psndoc(vo.getPk_psndoc());
newVo.setPk_psnjob(vo.getPk_psnjob());
newVo.setPk_psnorg(vo.getPk_psnorg());
newVo.setAssgid(vo.getAssgid());
newVo.setPk_org(this.pk_org);
newVo.setContinuetime(vo.getContinuetime());
newVo.setRecordnum(Integer.valueOf());
newVo.setContid(vo.getContid());
if (("60110finish".equals(this.nodeCode)) || ("60110release".equals(this.nodeCode)))
{
newVo.setBegindate(vo.getCont_begindate());
newVo.setEnddate(vo.getCont_enddate());
newVo.setTermmonth(vo.getTermmonth());
newVo.setTermtype(vo.getTermtype());
}
boolean isBatchExtend = ("60110extend".equals(this.nodeCode)) && (this.psnList.length > );
if (isBatchExtend)
{
Integer termmonth = Integer.valueOf();
UFLiteralDate begindate = null;
UFLiteralDate enddate = null;
UFLiteralDate oldEnddate = vo.getCont_enddate();
int termUnit = getUnit("cont_unit");
if (this.extendtype == )
{
termmonth = (Integer)ctrtVO.getAttributeValue("termmonth");
begindate = oldEnddate.getDateAfter();
if ((begindate != null) && (termmonth != null)) {
enddate = HRCMTermUnitUtils.getDateAfterMonth(begindate, termmonth.intValue(), Integer.valueOf(termUnit));
}
}
else if (this.extendtype == )
{
begindate = oldEnddate.getDateAfter();
enddate = (UFLiteralDate)ctrtVO.getAttributeValue("enddate");
if ((begindate != null) && (enddate != null))
{
int days = UFLiteralDate.getDaysBetween(begindate, enddate);
this.daysList.add(Integer.valueOf(days));
try
{
termmonth = HRCMTermUnitUtils.getTermFromDays(termUnit, days);
}
catch (Exception e)
{
Logger.error(e.getMessage());
}
}
else
{
termmonth = null;
}
}
newVo.setAttributeValue("begindate", begindate);
newVo.setAttributeValue("enddate", enddate);
newVo.setAttributeValue("termmonth", termmonth);
begindate = null;
enddate = null;
oldEnddate = null;
}
newVo.setStatus();
vec.add(newVo);
}
Object[] obj = null;
obj = vec.toArray();
CtrtVO[] vos = new CtrtVO[obj.length];
for (int i = ; i < vos.length; i++) {
vos[i] = ((CtrtVO)obj[i]);
}
return vos;
}
public void setValue(Object objVO)
{
CtrtVO vo = (CtrtVO)objVO;
BillItem[] bilItems = this.billCardPanel.getHeadItems();
List<Object> list = new ArrayList();
SuperVO oldVO = null;
if (("60110change".equals(this.nodeCode)) || ("60110extend".equals(this.nodeCode)))
{
CircularlyAccessibleValueObject[] superVOs = (CircularlyAccessibleValueObject[])this.aggVOs[].getTableVO("hi_psndoc_ctrt");
for (int i = ; i < superVOs.length; i++)
{
SuperVO superVO_old = (SuperVO)superVOs[i];
UFBoolean lastFlag = (UFBoolean)superVO_old.getAttributeValue("lastflag");
if (lastFlag.booleanValue()) {
oldVO = superVO_old;
}
}
try
{
list = (List)((IQueryMakeService)NCLocator.getInstance().lookup(IQueryMakeService.class)).queryEffect(vo);
}
catch (BusinessException e)
{
Logger.error(e.getMessage());
}
oldVO = (SuperVO)list.get();
}
for (BillItem billItem : bilItems)
{
String key = billItem.getKey();
String attribute = key.substring(key.lastIndexOf(".") + );
if (billItem.getKey().endsWith("_old"))
{
if (billItem.getKey().endsWith("job_org_old"))
{
String orgPK = (String)this.aggVOs[].getParentVO().getAttributeValue("pk_org");
billItem.setValue(orgPK);
}
else
{
Object value = MakeUtil.getAttributeValueFilterTablename(oldVO, billItem.getKey().substring(, billItem.getKey().length() - ));
billItem.setValue(value);
}
}
else if (("pk_dept".equalsIgnoreCase(attribute)) || ("deptname".equalsIgnoreCase(attribute)))
{
this.billCardPanel.getHeadItem(key).setValue(this.psnList[].getPk_deptdoc());
}
else
{
if ((billItem.getKey().endsWith("hi_psndoc_ctrt.contractnum")) && ("60110extend".equals(this.nodeCode)))
{
UFBoolean para = UFBoolean.FALSE;
try
{
para = SysinitAccessor.getInstance().getParaBoolean(this.model.getContext().getPk_group(), "HRCM0001");
}
catch (BusinessException e)
{
Logger.error(e.getMessage(), e);
}
if ((para.booleanValue()) && (this.psnList != null) && (this.psnList.length == )) {
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.contractnum").setEdit(true);
}
}
this.billCardPanel.getHeadItem(key).setValue(vo.getAttributeValue(attribute));
}
}
BillItem[] tailItems = this.billCardPanel.getTailItems();
for (BillItem billItem : tailItems)
{
String key = billItem.getKey();
String attribute = key.substring(key.lastIndexOf(".") + );
this.billCardPanel.getTailItem(key).setValue(vo.getAttributeValue(attribute));
}
initTermItem(this.billCardPanel, this.pk_org, this.nodeCode, false, false, , Integer.valueOf(getExtendtype()));
if ("60110extend".equals(this.nodeCode)) {
if (this.psnList.length > )
{
if ( == this.extendtype)
{
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.enddate").setEnabled(Boolean.FALSE.booleanValue());
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.enddate").setValue(null);
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.enddate").setNull(false);
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.termmonth").setValue(null);
}
else if ( == this.extendtype)
{
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.termmonth").setEnabled(Boolean.FALSE.booleanValue());
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.termmonth").setValue(null);
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.termmonth").setNull(false);
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.enddate").setValue(null);
}
}
else
{
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.enddate").setEnabled(Boolean.TRUE.booleanValue());
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.enddate").setValue(null);
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.enddate").setNull(true);
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.termmonth").setEnabled(Boolean.TRUE.booleanValue());
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.termmonth").setValue(null);
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.termmonth").setNull(true);
}
}
}
public BillCardPanel getCenterPanel()
{
return (BillCardPanel)super.getCenterPanel();
}
public void initUI()
{
super.initUI();
this.billCardPanel.addEditListener(this);
this.billCardPanel.setBillBeforeEditListenerHeadTail(this);
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.termmonth").setLength();
setTitle(getTitle());
setSize(, );
CtrtVO vo = getCtrtVO();
if ("60110sign".equals(this.nodeCode)) {
setValue(vo);
}
}
public void setContCode(PsnSelListVO[] psnSelVOs, String modeName, LoginContext context, BillCardPanel cardPanel, MakeBillManageModel makeMode)
{
try
{
int selLength = psnSelVOs.length;
if (("60110sign".equals(context.getNodeCode())) || ("60110extend".equals(context.getNodeCode())))
{
if ("60110extend".equals(context.getNodeCode()))
{
UFBoolean editable = (UFBoolean)makeMode.getContPara().get("HRCM0001");
if (!editable.booleanValue())
{
setContCodeEnabled(cardPanel, modeName, false);
return;
}
}
BillCodeContext billCodeContext = BillCodeHelper.getBillCodeContext(HRCMUtils.getBillCodeForTableName(modeName), context.getPk_group(), context.getPk_org());
String[] billCodeArr = new String[selLength];
DefauteCode defautCode = null;
if ((billCodeContext == null) && (selLength == ))
{
//add by waite
QueryMakeBillCode queryBC=new QueryMakeBillCode();
String codeStr=queryBC.getCodeStr(psnSelVOs[].getPk_org(), psnSelVOs[].getPsncode());
String maxCode = queryBC.getMaxCode("hi_psndoc_ctrt",codeStr,psnSelVOs[].getPk_org());
String code = queryBC.getNextCode(codeStr,maxCode);
psnSelVOs[].setVcontractnum(code);
setContCodeEnabled(cardPanel, modeName, true);
}
else if (billCodeContext != null)
{
boolean isEditable = billCodeContext.isEditable();
IHrBillCode ibillcode = (IHrBillCode)NCLocator.getInstance().lookup(IHrBillCode.class);
billCodeArr = ibillcode.getBillCode(HRCMUtils.getBillCodeForTableName(modeName), context.getPk_group(), context.getPk_org(), selLength);
setAutoGeneratedCodes(billCodeArr);
for (int i = ; i < psnSelVOs.length; i++) {
psnSelVOs[i].setVcontractnum(billCodeArr[i]);
}
if (selLength > ) {
setContCodeEnabled(cardPanel, modeName, false);
} else {
setContCodeEnabled(cardPanel, modeName, isEditable);
}
}
else
{
String tablename = "hi_psndoc_ctrt";
String maxZdCode = ((IQueryMakeService)NCLocator.getInstance().lookup(IQueryMakeService.class)).getMaxZDCode(tablename, DefauteCode.getDayStr());
defautCode = new DefauteCode(maxZdCode);
for (int i = ; i < psnSelVOs.length; i++)
{
//update by waite
//String code = defautCode.getNextCode();
//查詢已有的目前日期最大編碼流水号,改為查詢目前人員的最大流水号
//查資料庫
QueryMakeBillCode queryBC=new QueryMakeBillCode();
String codeStr=queryBC.getCodeStr(psnSelVOs[i].getPk_org(), psnSelVOs[i].getPsncode());
String maxCode = queryBC.getMaxCode(tablename, codeStr,psnSelVOs[i].getPk_org());
String code = queryBC.getNextCode(codeStr,maxCode);
psnSelVOs[i].setVcontractnum(code);
}
setContCodeEnabled(cardPanel, modeName, false);
}
}
else if ("60110extend".equals(context.getNodeCode()))
{
UFBoolean editable = (UFBoolean)makeMode.getContPara().get("HRCM0001");
if (!editable.booleanValue())
{
setContCodeEnabled(cardPanel, modeName, false);
return;
}
}
else
{
setContCodeEnabled(cardPanel, modeName, false);
}
if ("60110extend".equals(context.getNodeCode()))
{
UFBoolean editable = (UFBoolean)makeMode.getContPara().get("HRCM0001");
if ((editable.booleanValue()) && (selLength == ))
{
BillCodeContext billCodeContext = HiCacheUtils.getBillCodeContext("contract", context.getPk_group(), context.getPk_org());
boolean editableRule = billCodeContext == null ? true : billCodeContext.isEditable();
cardPanel.getHeadItem("hi_psndoc_ctrt.contractnum").setEdit(editableRule);
}
}
}
catch (Exception e)
{
Logger.error(e.getMessage());
}
}
private static void setContCodeEnabled(BillCardPanel cardPanel, String modeName, boolean enable)
{
String tablename = cardPanel.getHeadItems()[].getTableCode();
if ("hi_psndoc_ctrt".equals(tablename))
{
MakeUtil.getHeadItem(cardPanel, "contractnum").setEnabled(enable);
MakeUtil.getHeadItem(cardPanel, "contractnum").setNull(enable);
}
else
{
MakeUtil.getHeadItem(cardPanel, "contcode").setEnabled(enable);
MakeUtil.getHeadItem(cardPanel, "contcode").setNull(enable);
}
}
private CtrtVO getCtrtVO()
{
this.psnList = getPsnSellist();
Integer conttype = Integer.valueOf(HRCMUtils.getNodeCodeTermType(this.nodeCode));
UFDateTime date = PubEnv.getServerTime();
UFLiteralDate literalDate = new UFLiteralDate(date.getDate().toStdString());
PsnSelListVO psnVO = this.psnList[];
CtrtVO ctrtVO = new CtrtVO();
setContCode(this.psnList, "hi_psndoc_ctrt", this.model.getContext(), this.billCardPanel, this.model);
if ("60110sign".equals(this.nodeCode)) {
setSignData(conttype, literalDate, psnVO, ctrtVO, date);
} else {
ctrtVO = setOtherBusiData(conttype, literalDate, psnVO, date);
}
return ctrtVO;
}
private CtrtVO setOtherBusiData(Integer conttype, UFLiteralDate literalDate, PsnSelListVO psnVO, UFDateTime date)
{
SuperVO svo = null;
for (int i = ; i < this.aggVOs[0].getTableVO("hi_psndoc_ctrt").length; i++)
{
UFBoolean isLast = (UFBoolean)((SuperVO)this.aggVOs[].getTableVO("hi_psndoc_ctrt")[i]).getAttributeValue("lastflag");
if (isLast.booleanValue()) {
svo = (SuperVO)this.aggVOs[].getTableVO("hi_psndoc_ctrt")[i];
}
}
if ("60110extend".equals(this.nodeCode))
{
if (this.psnList.length == )
{
UFLiteralDate oldEnddate = (UFLiteralDate)svo.getAttributeValue("enddate");
UFLiteralDate begindate = oldEnddate == null ? literalDate : ((UFLiteralDate)oldEnddate.clone()).getDateAfter();
svo.setAttributeValue("begindate", begindate.clone());
String termtype = (String)svo.getAttributeValue("termtype");
if (StringUtils.isNotBlank(termtype)) {
if ("CM01".equals(termtype))
{
svo.setAttributeValue("enddate", null);
svo.setAttributeValue("termmonth", null);
}
else if (("CM02".equals(termtype)) || ("CM03".equals(termtype)))
{
svo.setAttributeValue("termmonth", null);
svo.setAttributeValue("enddate", null);
}
else
{
svo.setAttributeValue("termmonth", svo.getAttributeValue("termmonth"));
svo.setAttributeValue("enddate", svo.getAttributeValue("enddate"));
}
}
}
else
{
svo.setAttributeValue("begindate", null);
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.begindate").setEnabled(Boolean.FALSE.booleanValue());
this.billCardPanel.getHeadItem("hi_psndoc_ctrt.begindate").setNull(false);
}
}
else
{
svo.setAttributeValue("begindate", svo.getAttributeValue("begindate"));
svo.setAttributeValue("enddate", svo.getAttributeValue("enddate"));
}
UFLiteralDate begin = (UFLiteralDate)svo.getAttributeValue("begindate");
UFLiteralDate end = (UFLiteralDate)svo.getAttributeValue("enddate");
if ((begin != null) && (end != null)) {
if (((UFLiteralDate)begin.clone()).after((UFLiteralDate)end.clone())) {
svo.setAttributeValue("enddate", null);
}
}
begin = null;
end = null;
SuperVO newVO = new CtrtVO();
newVO.setAttributeValue("conttype", conttype);
newVO.setAttributeValue("signdate", literalDate.clone());
newVO.setAttributeValue("begindate", svo.getAttributeValue("begindate"));
newVO.setAttributeValue("enddate", svo.getAttributeValue("enddate"));
newVO.setAttributeValue("pk_psndoc", svo.getAttributeValue("pk_psndoc"));
newVO.setAttributeValue("pk_psnorg", svo.getAttributeValue("pk_psnorg"));
newVO.setAttributeValue("assgid", svo.getAttributeValue("assgid"));
newVO.setAttributeValue("pk_psnjob", svo.getAttributeValue("pk_psnjob"));
newVO.setAttributeValue("pk_group", svo.getAttributeValue("pk_group"));
newVO.setAttributeValue("pk_org", this.pk_org);
newVO.setAttributeValue("pk_conttext", svo.getAttributeValue("pk_conttext"));
newVO.setAttributeValue("pk_majorcorp", svo.getAttributeValue("pk_majorcorp"));
newVO.setAttributeValue("signaddr", svo.getAttributeValue("signaddr"));
newVO.setAttributeValue("creator", PubEnv.getPk_user());
newVO.setAttributeValue("creationtime", date);
if (svo.getAttributeValue("termmonth") != null) {
newVO.setAttributeValue("termmonth", svo.getAttributeValue("termmonth"));
}
newVO.setAttributeValue("contractnum", svo.getAttributeValue("contractnum"));
newVO.setAttributeValue("termtype", svo.getAttributeValue("termtype"));
newVO.setAttributeValue("cont_unit", svo.getAttributeValue("cont_unit"));
newVO.setAttributeValue("continuetime", svo.getAttributeValue("continuetime"));
setGlbdef(this.nodeCode, svo, newVO);
if ("60110release".equals(this.nodeCode))
{
newVO.setAttributeValue("presenter", "1");
UIRefPane pane = (UIRefPane)this.billCardPanel.getHeadItem(CtrtVO.getDefaultTableName() + ".pk_unchreason").getComponent();
pane.getRefModel().setPara1("1002Z71000000000PJRJ");
pane.getRefModel().setCacheEnabled(false);
pane.getRefModel().setRefNodeName(ResHelper.getString("6011make", "06011make0093"));
}
else if ("60110finish".equals(this.nodeCode))
{
UIRefPane pane = (UIRefPane)this.billCardPanel.getHeadItem(CtrtVO.getDefaultTableName() + ".pk_unchreason").getComponent();
pane.getRefModel().setPara1("1002Z71000000000PJRK");
pane.getRefModel().setCacheEnabled(false);
pane.getRefModel().setRefNodeName(ResHelper.getString("6011make", "06011make0002"));
}
CtrtVO ctrtVO = (CtrtVO)newVO;
boolean isBatch = this.psnList.length > ;
ctrtVO.setAttributeValue("name", isBatch ? psnVO.getPsnname() + "..." : psnVO.getPsnname());
ctrtVO.setAttributeValue("code", isBatch ? psnVO.getPsncode() + "..." : psnVO.getPsncode());
ctrtVO.setContractnum(isBatch ? psnVO.getVcontractnum() + "..." : psnVO.getVcontractnum());
ctrtVO.setAttributeValue("job_org", psnVO.getPk_org());
WizardFirstInterface firstFace = CMMethodFactory.getWizardFirstInterface(this.nodeCode, CtrtVO.getDefaultTableName());
if (firstFace != null) {
firstFace.setNewVOinfo(svo, newVO);
}
setValue(newVO);
if (firstFace != null) {
firstFace.setHeadItem(this.model, this.billCardPanel, this.psnList);
}
return ctrtVO;
}
private void setSignData(Integer conttype, UFLiteralDate literalDate, PsnSelListVO psnVO, CtrtVO ctrtVO, UFDateTime date)
{
String vmodeltype = getInfosetPK();
String pk_conmodel = null;
try
{
ContmodelVO modelVO = ((ITempletBatchQueryService)NCLocator.getInstance().lookup(ITempletBatchQueryService.class)).queryDefautContmodelVOByOrg(this.model.getContext(), vmodeltype);
if (modelVO != null) {
pk_conmodel = modelVO.getPk_conmodel();
}
}
catch (Exception e)
{
Logger.error(e);
}
ctrtVO.setPk_conttext(pk_conmodel);
ctrtVO.setPk_psndoc(psnVO.getPk_psndoc());
ctrtVO.setPk_psnjob(psnVO.getPk_psnjob());
ctrtVO.setIfprop(UFBoolean.TRUE);
ctrtVO.setConttype(conttype);
ctrtVO.setBegindate(literalDate);
ctrtVO.setProbegindate(literalDate);
ctrtVO.setSigndate(literalDate);
ctrtVO.setRecordnum(Integer.valueOf());
ctrtVO.setContinuetime(Integer.valueOf());
ctrtVO.setTermtype("CM01");
ctrtVO.setCont_unit(Integer.valueOf(getUnit("cont_unit")));
ctrtVO.setProp_unit(Integer.valueOf(getUnit("prop_unit")));
ctrtVO.setCreator(PubEnv.getPk_user());
ctrtVO.setCreationtime(date);
ctrtVO.setPk_org(this.pk_org);
ctrtVO.setPk_group(this.model.getContext().getPk_group());
ctrtVO.setPk_majorcorp(this.pk_org);
boolean isBatch = this.psnList.length > ;
ctrtVO.setAttributeValue("name", isBatch ? psnVO.getPsnname() + "..." : psnVO.getPsnname());
ctrtVO.setAttributeValue("code", isBatch ? psnVO.getPsncode() + "..." : psnVO.getPsncode());
ctrtVO.setContractnum(isBatch ? psnVO.getVcontractnum() + "..." : psnVO.getVcontractnum());
ctrtVO.setAttributeValue("job_org", psnVO.getPk_org());
}
private int getUnit(String code)
{
return this.billCardPanel.getHeadItem(CtrtVO.getDefaultTableName() + "." + code).getDefaultValueObject() == null ? HRCMTermUnitUtils.TERMUNIT_MONTH : Integer.parseInt((String)this.billCardPanel.getHeadItem(CtrtVO.getDefaultTableName() + "." + code).getDefaultValueObject());
}
private PsnSelListVO[] getPsnSellist()
{
CenterWizardInitDataInterface initDataInterface = CMMethodFactory.getCenterWizardInitDataInterface(this.nodeCode, "hi_psndoc_ctrt");
try
{
this.psnList = initDataInterface.getPsnSelListVOs(this.aggVOs, this.pk_org);
}
catch (BusinessException e)
{
Logger.error(e.getMessage());
}
return this.psnList;
}
public String getInfosetPK()
{
try
{
if (this.model.getTableToInfosetPkMap().isEmpty())
{
StringBuffer where = new StringBuffer("pk_infoset_sort in (select pk_infoset_sort from hr_infoset_sort where sort_code = 'hrcm_cont') ");
where.append("order by showorder ");
InfoSetVO[] infosetVOs = ((IQueryMakeService)NCLocator.getInstance().lookup(IQueryMakeService.class)).queryInfoSet(this.model.getContext(), where.toString());
if ((infosetVOs != null) && (infosetVOs.length > ) && (infosetVOs[] != null)) {
for (InfoSetVO infosetVO : infosetVOs) {
this.model.getTableToInfosetPkMap().put(infosetVO.getTable_code(), infosetVO.getPk_infoset());
}
}
}
return (String)this.model.getTableToInfosetPkMap().get(this.model.getModeName());
}
catch (BusinessException ex)
{
throw new BusinessRuntimeException(ex.getMessage(), ex);
}
}
private void setGlbdef(String nodecode, SuperVO oldVO, SuperVO newVO)
{
IAttributeMeta[] attributes = oldVO.getMetaData().getAttributes();
for (IAttributeMeta attribute : attributes) {
if (!attribute.isStatic()) {
newVO.setAttributeValue(attribute.getName(), oldVO.getAttributeValue(attribute.getName()));
}
}
}
private void initTermItem(BillCardPanel cardPanel, String pk_org, String nodecode, boolean isExtendPsn, boolean isFromContOpinion, int itemmonth, Integer extendtype)
{
if ("60110change".equals(nodecode))
{
CardCheckProcessorImpl processor = new CardCheckProcessorImpl();
processor.setExtendPsn(isExtendPsn);
if (processor.getBillItem(cardPanel, "ifprop") != null)
{
processor.getBillItem(cardPanel, "ifprop").setEdit(true);
boolean flag = processor.getBillItem(cardPanel, "ifprop").isShowFlag();
processor.setPropItem(cardPanel, flag);
}
}
if ((!"60110sign".equals(nodecode)) && (!"60110extend".equals(nodecode))) {
return;
}
CardCheckProcessorImpl processor = new CardCheckProcessorImpl();
processor.setPk_org(pk_org);
processor.setExtendPsn(isExtendPsn);
processor.setExtendtype(extendtype);
processor.refreshTermTypeStat(cardPanel, !"60110sign".equals(nodecode), isFromContOpinion, Integer.valueOf(itemmonth));
}
public String getTitle()
{
String title = "";
if ("60110sign" == this.nodeCode) {
title = ResHelper.getString("6011make", "06011make0129");
} else if ("60110change" == this.nodeCode) {
title = ResHelper.getString("6011make", "06011make0131");
} else if ("60110extend" == this.nodeCode) {
title = ResHelper.getString("6011make", "06011make0133");
} else if ("60110finish" == this.nodeCode) {
title = ResHelper.getString("6011make", "06011make0137");
} else if ("60110release" == this.nodeCode) {
title = ResHelper.getString("6011make", "06011make0135");
}
return title;
}
private void validateTermmonth()
{
try
{
for (Integer days : this.daysList)
{
if (days.intValue() < ) {
throw new ValidationException(ResHelper.getString("6011make", "06011make0091"));
}
if (days.intValue() == ) {
throw new ValidationException(ResHelper.getString("6011make", "06011make0155"));
}
}
}
catch (ValidationException e)
{
String msg = e.getMessage();
ShowStatusBarMsgUtil.showStatusBarMsg(msg, this.model.getContext());
MessageDialog.showErrorDlg(this, null, msg);
throw new BusinessExceptionAdapter(e);
}
finally
{
this.daysList.clear();
}
}
public AggPsnjobVO[] getAggVOs()
{
return this.aggVOs;
}
public void setAggVOs(AggPsnjobVO[] aggVOs)
{
this.aggVOs = aggVOs;
}
public String getNodeCode()
{
return this.nodeCode;
}
public void setNodeCode(String nodeCode)
{
this.nodeCode = nodeCode;
}
public String getPk_org()
{
return this.pk_org;
}
public void setPk_org(String pk_org)
{
this.pk_org = pk_org;
}
public void afterEdit(BillEditEvent e)
{
try
{
CheckProcessorFactory.createCenterCheckProcessor(e, this.pk_org, false).handleProcessor(this.billCardPanel);
}
catch (CheckException e1)
{
MessageDialog.showWarningDlg(this, null, e1.getMessage());
Logger.error(e1);
}
}
public void bodyRowChange(BillEditEvent e) {}
public boolean isOpenBusiFunc()
{
return this.isOpenBusiFunc;
}
public void setOpenBusiFunc(boolean isOpenBusiFunc)
{
this.isOpenBusiFunc = isOpenBusiFunc;
}
public CtrtVO[] getCtrtVOs()
{
return this.ctrtVOs;
}
public void setCtrtVOs(CtrtVO[] ctrtVOs)
{
this.ctrtVOs = ctrtVOs;
}
public int getExtendtype()
{
return this.extendtype;
}
public void setExtendtype(int extendtype)
{
this.extendtype = extendtype;
}
public boolean beforeEdit(BillItemEvent e)
{
BillItem item = e.getItem();
if ((item.getComponent() instanceof UIRefPane))
{
UIRefPane refPane = (UIRefPane)item.getComponent();
if ((refPane != null) && (refPane.getRefModel() != null)) {
refPane.setPk_org(this.model.getContext().getPk_org());
}
}
String itemCode = item.getKey();
if (itemCode.contains("pk_conttext"))
{
UIRefPane pane = (UIRefPane)item.getComponent();
if ((pane != null) && (pane.getRefModel() != null))
{
ContModelRef refModel = (ContModelRef)pane.getRefModel();
refModel.setPk_org(this.model.getContext().getPk_org());
String orgSql = " hrcm_contmodel.pk_org in ('GLOBLE00000000000000', '" + this.model.getContext().getPk_group() + "', '" + this.model.getContext().getPk_org() + "')";
pane.getRefModel().addWherePart(" and vmodeltype = '" + getInfosetPK() + "' and " + orgSql);
}
}
return true;
}
private String[] getEditItemName(BillCardPanel cardPanel)
{
BillItem[] items = cardPanel.getHeadItems();
List<String> list = new ArrayList();
for (BillItem billItem : items) {
if (billItem.isEdit()) {
list.add(billItem.getKey().substring("hi_psndoc_ctrt.".length()));
}
}
return (String[])list.toArray(new String[list.size()]);
}
public String[] getAutoGeneratedCodes()
{
return this.autoGeneratedCodes;
}
public void setAutoGeneratedCodes(String[] autoGeneratedCodes)
{
this.autoGeneratedCodes = autoGeneratedCodes;
}
}