ソースを参照

浙江农业NCCjava项目

zthwr 3 年 前
コミット
cf57b8f30b
56 ファイル変更6027 行追加0 行削除
  1. 26 0
      zjcmp_cd/.classpath
  2. 1 0
      zjcmp_cd/.gitignore
  3. 29 0
      zjcmp_cd/.project
  4. 7 0
      zjcmp_cd/META-INF/module.xml
  5. 36 0
      zjcmp_cd/META-INF/setup.ini
  6. 590 0
      zjcmp_cd/cmp/src/private/nccloud/bs/cmp/informer/NCCInformerBS.java
  7. 1 0
      zjcmp_cd/zjcmp_cd/classes/.gitignore
  8. BIN
      zjcmp_cd/zjcmp_cd/classes/nc/bs/icdmc/icdmc/repayprcpl/ace/rule/AceRepayPrcplDatacheckAndFillRule.class
  9. 130 0
      zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/cdmc/cdm/repayprcpl/config/action/NCCRepayPrcpl.xml
  10. 69 0
      zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/cdmc/cdm/repayprcpl/config/authorize/repayrecpl.xml
  11. 139 0
      zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/cdmc/financepay/config/action/NCCfinancepay.xml.xml
  12. 56 0
      zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/cdmc/financepay/config/authorize/financepay.xml
  13. 104 0
      zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/cdmc/repayintst/config/action/NCCrepayintst.xml
  14. 44 0
      zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/cdmc/repayintst/config/authorize/repayintst.xml
  15. 117 0
      zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/ifm/investapply/config/action/NCCApply.xml
  16. 34 0
      zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/ifm/investapply/config/authorize/authorize_investapply.xml
  17. 118 0
      zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/ifm/redeem/config/action/NCCredeem.xml
  18. 37 0
      zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/ifm/redeem/config/authorize/authorize_redeem.xml
  19. 3 0
      zjcmp_cd/zjcmp_cd/component.xml
  20. 3 0
      zjcmp_cd/zjcmp_cd/script/conf/initdata/items.xml
  21. 90 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/bond/bondmanage/repayprinciple/handler/RepayPrcplOrgChangeEditAfterHandler.java
  22. 315 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/financepay/action/FinancepaySaveAction.java
  23. 78 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/financepay/action/InformerToFinancepayAction.java
  24. 77 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/repayinterest/action/InformerToRepayintstAction.java
  25. 162 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/repayinterest/action/RepayIntstSaveAction.java
  26. 80 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/repayprcpl/action/LinkBillToRepayprcplAction.java
  27. 39 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/repayprcpl/action/RepayPrcplAddAction.java
  28. 102 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/repayprcpl/action/RepayPrcplCommitAction.java
  29. 122 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/repayprcpl/action/RepayPrcplSaveAction.java
  30. 27 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/repayprcpl/handler/RepayPrcplCardAfterEditHandler.java
  31. 66 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/repayprcpl/handler/RepayPrcplOrgEditHandler.java
  32. 53 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/repayinterest/action/LinkBillToRepayintstAction.java
  33. 57 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cmp/informer/informer/action/InformerLinkBill.java
  34. 188 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cmp/informer/informer/action/ListCancelGenerateAction.java
  35. 84 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/icdmc/icdmc/repayprcpl/action/DeliveryToRepayPrcplAction.java
  36. 171 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/ifm/apply/handler/ApplyOrgChangeEditAfterHandler.java
  37. 90 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/ifm/investapply/action/ApplyCommitAction.java
  38. 64 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/ifm/investapply/action/LinkBillToApplyAction.java
  39. 85 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/ifm/redeem/action/InformerToRedeemAction.java
  40. 242 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/ifm/redeem/action/RedeemSaveAction.java
  41. 70 0
      zjcmp_cd/zjcmp_cd/src/client/nccloud/web/ifm/redeem/action/RedeemSubmitAction.java
  42. 130 0
      zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/cdmc/cdm/repayprcpl/config/action/NCCRepayPrcpl.xml
  43. 69 0
      zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/cdmc/cdm/repayprcpl/config/authorize/repayrecpl.xml
  44. 139 0
      zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/cdmc/financepay/config/action/NCCfinancepay.xml.xml
  45. 56 0
      zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/cdmc/financepay/config/authorize/financepay.xml
  46. 104 0
      zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/cdmc/repayintst/config/action/NCCrepayintst.xml
  47. 44 0
      zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/cdmc/repayintst/config/authorize/repayintst.xml
  48. 117 0
      zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/ifm/investapply/config/action/NCCApply.xml
  49. 34 0
      zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/ifm/investapply/config/authorize/authorize_investapply.xml
  50. 118 0
      zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/ifm/redeem/config/action/NCCredeem.xml
  51. 37 0
      zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/ifm/redeem/config/authorize/authorize_redeem.xml
  52. 59 0
      zjcmp_cd/zjcmp_cd/src/private/nccloud/pubimpl/riadc/splitrule/info/SplitRuleRegisterServiceImpl.java
  53. 532 0
      zjcmp_cd/zjcmp_cd/src/test/nc/bs/icdmc/icdmc/repayprcpl/ace/rule/AceRepayPrcplDatacheckAndFillRule.java
  54. 252 0
      zjcmp_cd/zjcmp_cd/src/test/nccloud/web/cmp/informer/action/InformerAction.java
  55. 275 0
      zjcmp_cd/zjcmp_cd/src/test/nccloud/web/riaam/user/action/UserCardAction.java
  56. 255 0
      zjcmp_cd/zjcmp_cd/src/test/nccloud/web/riaam/user/action/UserCardSaveAction.java

+ 26 - 0
zjcmp_cd/.classpath

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="zjcmp_cd/classes" path="zjcmp_cd/src/public"/>
+	<classpathentry kind="src" output="zjcmp_cd/classes" path="zjcmp_cd/src/client"/>
+	<classpathentry kind="src" output="zjcmp_cd/classes" path="zjcmp_cd/src/private"/>
+	<classpathentry kind="src" output="zjcmp_cd/classes" path="zjcmp_cd/src/test"/>
+	<classpathentry kind="src" output="zjcmp_cd/classes" path="zjcmp_cd/resources"/>
+	<classpathentry kind="src" path="cmp/src/private"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Ant_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Product_Common_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Middleware_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Framework_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Module_Public_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Module_Client_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Module_Private_Library">
+		<accessrules>
+			<accessrule kind="accessible" pattern="**"/>
+		</accessrules>
+	</classpathentry>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Module_Lang_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Generated_EJB"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/NCCloud_Library"/>
+	<classpathentry kind="lib" path="C:/Users/Administrator/Desktop/icdmc_icdmc.jar"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

+ 1 - 0
zjcmp_cd/.gitignore

@@ -0,0 +1 @@
+/bin/

+ 29 - 0
zjcmp_cd/.project

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>zjcmp_cd</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.yonyou.studio.udt.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.yonyou.ria.g2.riabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>com.yonyou.studio.udt.core.nature</nature>
+		<nature>com.yonyou.ria.g2.rianature</nature>
+	</natures>
+</projectDescription>

+ 7 - 0
zjcmp_cd/META-INF/module.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="gb2312"?>
+<module name="zjcmp_cd">
+    <public>
+    </public>
+    <private>
+    </private>
+</module>

+ 36 - 0
zjcmp_cd/META-INF/setup.ini

@@ -0,0 +1,36 @@
+#code
+code=${code}
+#name
+name=${name}
+#version
+version=${version}
+#setup disk type,examples: new(disk) or patch(patch disk)
+disk.type=new
+#Master be install ,values: true or false
+must.selected=false
+#Depend on previous version, Supported wildcards: * or ?
+preversion=
+#Depend on other products [code,name, version1, version2,...]&[code,name, version1, version2,...]
+required.related.module=
+db.create.script=dbcreate
+bill.templet.script=billtemplet
+query.templet.script=querytemplet
+report.templet.script=reporttemplet
+print.templet.script=printtemplet
+sys.templet.script=systemtemplet
+bill.type.script=billtype
+metadata.script=metadata
+busi.type.script=
+system.type.script=systemtype
+subj.class.script=
+voucher.templet.script=
+project.templet.script=
+business.script=business
+menu.script=funcregister
+ml.script=lang
+ddc.initdata=
+hasdynamictempletdata=
+need_deploy_ejb=
+containproductcode=
+dbml.script=dbml
+blob.script=querytemplet

+ 590 - 0
zjcmp_cd/cmp/src/private/nccloud/bs/cmp/informer/NCCInformerBS.java

@@ -0,0 +1,590 @@
+package nccloud.bs.cmp.informer;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import nc.bs.cmp.informer.validate.InformerSysFlagUtil;
+import nc.bs.cmp.pub.IsExistRecordResultSetProcessor;
+import nc.bs.dao.BaseDAO;
+import nc.bs.framework.common.NCLocator;
+import nc.bs.tmpub.pub.MapResultSetProcessor;
+import nc.itf.cmp.transformbill.ITransformBillMaintainService;
+import nc.jdbc.framework.SQLParameter;
+import nc.md.persist.framework.IMDPersistenceQueryService;
+import nc.pubitf.arap.gathering.IArapGatheringBillPubService;
+import nc.pubitf.arap.pay.IArapPayBillPubService;
+import nc.pubitf.cmp.changebill.ICmpChangeBillPubService;
+import nc.pubitf.cmp.paybill.ICmpPayBillPubService;
+import nc.pubitf.cmp.recbill.ICmpRecBillPubService;
+import nc.pubitf.fts.commissiongathering.ICommissionGatherForInformerService;
+import nc.pubitf.fts.commissionpayment.ICommissionPaymentForInformerService;
+import nc.pubitf.org.IFundOrgPubService;
+import nc.pubitf.sf.allocate.IAllocateForInformerService;
+import nc.pubitf.sf.delivery.IDeliveryForInformerService;
+import nc.vo.cmp.informer.GenerateFlagEnum;
+import nc.vo.cmp.informer.InformerAppendVO;
+import nc.vo.cmp.informer.InformerReleaseVO;
+import nc.vo.cmp.informer.InformerVO;
+import nc.vo.ml.NCLangRes4VoTransl;
+import nc.vo.org.FundOrgVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.ISuperVO;
+import nc.vo.pub.lang.UFBoolean;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.pub.lang.UFDateTime;
+import nc.vo.pub.lang.UFDouble;
+import nc.vo.pubapp.AppContext;
+import nc.vo.tmpub.datemanage.DateManageQueryVO;
+import nc.vo.tmpub.initdate.CommInitDateCheck;
+import nc.vo.tmpub.util.SqlUtil;
+import nc.vo.tmpub.util.StringUtil;
+
+public class NCCInformerBS {
+	private IMDPersistenceQueryService mdQueryService;
+	private static String modifier = "";
+
+	public InformerAppendVO noGenerateBill(InformerVO vo) throws BusinessException {
+		InformerAppendVO ret = new InformerAppendVO();
+		InformerVO newvo = (InformerVO) this.getMDQueryService().queryBillOfVOByPK(InformerVO.class,
+				vo.getPk_informer(), false);
+		InformerSysFlagUtil.checkInformerOperSysFlag("NCC", new InformerVO[]{vo});
+		if (!newvo.getTs().equals(vo.getTs())) {
+			ret.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0088"));
+			return ret;
+		} else if (!GenerateFlagEnum.HASNOGENERATE.getGenerateFlag().equals(newvo.getGenerateflag())) {
+			ret.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0103"));
+			return ret;
+		} else {
+			newvo.setGenerateflag(GenerateFlagEnum.NOGENERATE.getGenerateFlag());
+			BaseDAO dao = new BaseDAO();
+			dao.updateVO(newvo);
+			return ret;
+		}
+	}
+
+	public InformerAppendVO reGenerateBill(InformerVO vo) throws BusinessException {
+		InformerAppendVO ret = new InformerAppendVO();
+		InformerVO newvo = (InformerVO) this.getMDQueryService().queryBillOfVOByPK(InformerVO.class,
+				vo.getPk_informer(), false);
+		InformerSysFlagUtil.checkInformerOperSysFlag("NCC", new InformerVO[]{vo});
+		if (!newvo.getTs().equals(vo.getTs())) {
+			ret.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0088"));
+			return ret;
+		} else if (!GenerateFlagEnum.NOGENERATE.getGenerateFlag().equals(newvo.getGenerateflag())) {
+			ret.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0102"));
+			return ret;
+		} else {
+			newvo.setGenerateflag(GenerateFlagEnum.HASNOGENERATE.getGenerateFlag());
+			BaseDAO dao = new BaseDAO();
+			dao.updateVO(newvo);
+			return ret;
+		}
+	}
+
+	public void updatervo(InformerVO rvo, ISuperVO vo) throws BusinessException {
+		rvo.setPk_lower(vo.getPrimaryKey());
+		String billtype = (String) vo.getAttributeValue("pk_billtype");
+		if (null == billtype) {
+			billtype = (String) vo.getAttributeValue("pk_billtypecode");
+		}
+
+		if (null == billtype) {
+			billtype = (String) vo.getAttributeValue("bill_type");
+		}
+
+		rvo.setUsemoney(rvo.getMoneyy());
+		rvo.setPk_org((String) vo.getAttributeValue("pk_org"));
+		rvo.setPk_org_v((String) vo.getAttributeValue("pk_org_v"));
+		rvo.setLowerbilltype(billtype);
+		rvo.setGenerateflag(GenerateFlagEnum.HASGENERATE.getGenerateFlag());
+		rvo.setStatus(1);
+		BaseDAO dao = new BaseDAO();
+		dao.updateVO(rvo);
+	}
+
+	public InformerAppendVO cancelMakeBill(InformerVO vo) throws BusinessException {
+		InformerAppendVO ret = this.validateCancelData(vo);
+		if (ret.getErrorMessage() != null) {
+			return ret;
+		} else {
+			String billtype = vo.getLowerbilltype();
+			String pk_lower = vo.getPk_lower();
+			modifier = vo.getModifier();
+			if ("36J7".equals(billtype)) {
+				this.updateInformerNoGenerate(vo.getPk_lower());
+				this.getCommisionGatherService().cancelGenerateGather(pk_lower);
+				return ret;
+			} else if ("36J5".equals(billtype)) {
+				this.updateInformerNoGenerate(vo.getPk_lower());
+				this.getCommisionPayService().cancelGeneratePayment(pk_lower);
+				return ret;
+			} else if ("36K4".equals(billtype)) {
+				this.updateInformerNoGenerate(pk_lower);
+				this.getDeliveryService().cancelGenerateDeliveryForInform(pk_lower);
+				return ret;
+			} else if ("36K2".equals(billtype)) {
+				this.updateInformerNoGenerate(pk_lower);
+				this.getAllocateService().cancelGenerateAllocate(pk_lower);
+				return ret;
+			} else if ("F4".equals(billtype)) {
+				this.updateInformerNoGenerate(pk_lower);
+				this.getSJService().deleteInformerBill(new String[]{vo.getPk_lower()});
+				return ret;
+			} else if ("F5".equals(billtype)) {
+				this.updateInformerNoGenerate(pk_lower);
+				this.getFJService().deleteInformerBill(new String[]{vo.getPk_lower()});
+				return ret;
+			} else if ("F6".equals(billtype)) {
+				this.updateInformerNoGenerate(pk_lower);
+				this.getHJService().deleteInformerBill(new String[]{vo.getPk_lower()});
+				return ret;
+			} else if ("F3".equals(billtype)) {
+				this.updateInformerNoGenerate(pk_lower);
+				this.getFKService().deleteBillBySourcePK(new String[]{vo.getPk_informer()});
+				return ret;
+			} else if ("F2".equals(billtype)) {
+				this.updateInformerNoGenerate(pk_lower);
+				this.getSKService().deleteBillBySourcePK(new String[]{vo.getPk_informer()});
+				return ret;
+			} else if ("36S4".equals(billtype)) {
+				this.updateInformerNoGenerate(vo.getPk_lower());
+				this.getNewHJService().deleteBills(new String[]{vo.getPk_lower()});
+				return ret;
+			} else if ("36Z3".equals(billtype)) {
+				this.updateInformerNoGenerate(vo.getPk_lower());
+				this.getNewHJService().deleteBills(new String[]{vo.getPk_lower()});
+				return ret;
+			} else if ("3641".equals(billtype)) {
+				this.updateInformerNoGenerate(vo.getPk_lower());
+				this.getNewHJService().deleteBills(new String[]{vo.getPk_lower()});
+				return ret;
+			} else if ("3642".equals(billtype)) {
+				this.updateInformerNoGenerate(vo.getPk_lower());
+				this.getNewHJService().deleteBills(new String[]{vo.getPk_lower()});
+				return ret;
+			} else if ("36Z4".equals(billtype)) {
+				this.updateInformerNoGenerate(vo.getPk_lower());
+				this.getNewHJService().deleteBills(new String[]{vo.getPk_lower()});
+				return ret;
+			} else if ("36Z5".equals(billtype)) {
+				this.updateInformerNoGenerate(vo.getPk_lower());
+				this.getNewHJService().deleteBills(new String[]{vo.getPk_lower()});
+				return ret;
+			} 
+			else {
+				return ret;
+			}
+		}
+	}
+
+	public void updateInformerNoGenerate(String pk_lower) throws BusinessException {
+		String sql = " pk_lower = '" + pk_lower + "' and generateflag='hasgenerate' ";
+		String excistSql = " select count(*) from cmp_informer where pk_lower = ? and generateflag='hasgenerate'";
+		SQLParameter parameter = new SQLParameter();
+		parameter.addParam(pk_lower);
+		BaseDAO baseDAO = new BaseDAO();
+		UFBoolean ifResult = (UFBoolean) baseDAO.executeQuery(excistSql, parameter,
+				new IsExistRecordResultSetProcessor());
+		if (!UFBoolean.FALSE.equals(ifResult)) {
+			Collection<?> result = ((IMDPersistenceQueryService) NCLocator.getInstance()
+					.lookup(IMDPersistenceQueryService.class)).queryBillOfVOByCond(InformerVO.class, sql, true, false);
+			if (result != null && result.size() != 0) {
+				InformerVO[] vos = (InformerVO[]) result.toArray(new InformerVO[0]);
+				List<String> pkInformerList = new ArrayList();
+				InformerVO[] var10 = vos;
+				int var11 = vos.length;
+
+				for (int var12 = 0; var12 < var11; ++var12) {
+					InformerVO vo = var10[var12];
+					pkInformerList.add(vo.getPk_informer());
+				}
+
+				String inPkInformerSql = SqlUtil.buildSqlForIn("pk_informer",
+						(String[]) pkInformerList.toArray(new String[0]));
+				String sumsql = " select pk_informer,sum(isnull(ly_money,0)) ljlyje from cmp_informerrelease where "
+						+ inPkInformerSql + " group by pk_informer ";
+				Map<String, String> totoalmap = (Map) baseDAO.executeQuery(sumsql, new MapResultSetProcessor());
+				InformerVO[] var21 = vos;
+				int var14 = vos.length;
+
+				for (int var15 = 0; var15 < var14; ++var15) {
+					InformerVO vo = var21[var15];
+					vo.setPk_lower((String) null);
+					String usemoney = totoalmap.get(vo.getPk_informer()) == null
+							? "0"
+							: (String) totoalmap.get(vo.getPk_informer());
+					vo.setUsemoney(new UFDouble(usemoney));
+					vo.setLowerbilltype((String) null);
+					vo.setGenerateflag(this.getGenerateFlag(vo));
+					vo.setCreator((String) null);
+					vo.setCreationtime((UFDateTime) null);
+				}
+
+				BaseDAO dao = new BaseDAO();
+				dao.updateVOArray(vos);
+			}
+		}
+	}
+
+	public void updateInformerNoGenerateOut(String pk_lower) throws BusinessException {
+		String sql = " pk_lower = '" + pk_lower + "' and generateflag='hasgenerate' ";
+		String excistSqlInform = " select count(*) from cmp_informer where pk_lower = ? and generateflag='hasgenerate'";
+		String excistSqlRelease = " select count(*) from cmp_informerrelease where pk_lower = ? and generateflag='hasgenerate'";
+		SQLParameter parameter = new SQLParameter();
+		parameter.addParam(pk_lower);
+		BaseDAO baseDAO = new BaseDAO();
+		UFBoolean ifResult = (UFBoolean) baseDAO.executeQuery(excistSqlInform, parameter,
+				new IsExistRecordResultSetProcessor());
+		int var13;
+		if (UFBoolean.TRUE.equals(ifResult)) {
+			Collection<?> result = ((IMDPersistenceQueryService) NCLocator.getInstance()
+					.lookup(IMDPersistenceQueryService.class)).queryBillOfVOByCond(InformerVO.class, sql, true, false);
+			if (result == null || result.size() == 0) {
+				return;
+			}
+
+			InformerVO[] vos = (InformerVO[]) result.toArray(new InformerVO[0]);
+			List<String> pkInformerList = new ArrayList();
+			InformerVO[] var11 = vos;
+			int var12 = vos.length;
+
+			for (var13 = 0; var13 < var12; ++var13) {
+				InformerVO vo = var11[var13];
+				pkInformerList.add(vo.getPk_informer());
+			}
+
+			String inPkInformerSql = SqlUtil.buildSqlForIn("pk_informer",
+					(String[]) pkInformerList.toArray(new String[0]));
+			String sumsql = " select pk_informer,sum(isnull(ly_money,0)) ljlyje from cmp_informerrelease where "
+					+ inPkInformerSql + " group by pk_informer ";
+			Map<String, String> totoalmap = (Map) baseDAO.executeQuery(sumsql, new MapResultSetProcessor());
+			InformerVO[] var27 = vos;
+			int var15 = vos.length;
+
+			for (int var16 = 0; var16 < var15; ++var16) {
+				InformerVO vo = var27[var16];
+				vo.setPk_lower((String) null);
+				String usemoney = totoalmap.get(vo.getPk_informer()) == null
+						? "0"
+						: (String) totoalmap.get(vo.getPk_informer());
+				vo.setUsemoney(new UFDouble(usemoney));
+				vo.setLowerbilltype((String) null);
+				vo.setGenerateflag(this.getGenerateFlag(vo));
+				vo.setCreator((String) null);
+				vo.setCreationtime((UFDateTime) null);
+			}
+
+			baseDAO.updateVOArray(vos);
+		} else {
+			SQLParameter releaseparameter = new SQLParameter();
+			releaseparameter.addParam(pk_lower);
+			UFBoolean isexist = (UFBoolean) baseDAO.executeQuery(excistSqlRelease, parameter,
+					new IsExistRecordResultSetProcessor());
+			if (UFBoolean.TRUE.equals(isexist)) {
+				Collection<?> releasevos = ((IMDPersistenceQueryService) NCLocator.getInstance()
+						.lookup(IMDPersistenceQueryService.class)).queryBillOfVOByCond(InformerReleaseVO.class, sql,
+								true, false);
+				if (releasevos == null || releasevos.size() == 0) {
+					return;
+				}
+
+				InformerReleaseVO[] vos = (InformerReleaseVO[]) releasevos.toArray(new InformerReleaseVO[0]);
+				InformerReleaseVO[] var25 = vos;
+				var13 = vos.length;
+
+				for (int var28 = 0; var28 < var13; ++var28) {
+					InformerReleaseVO vo = var25[var28];
+					vo.setPk_lower((String) null);
+					vo.setLowerbilltype((String) null);
+					vo.setCreator((String) null);
+					vo.setCreationtime((UFDateTime) null);
+					vo.setGenerateflag(GenerateFlagEnum.HASCLAIM.getGenerateFlag());
+				}
+
+				baseDAO.updateVOArray(vos);
+			}
+		}
+
+	}
+
+	private void updatervo(InformerVO vo) throws BusinessException {
+		vo.setPk_lower((String) null);
+		vo.setLowerbilltype((String) null);
+		vo.setGenerateflag(this.getGenerateFlag(vo));
+		BaseDAO dao = new BaseDAO();
+		dao.updateVO(vo);
+	}
+
+	public boolean isRelease(InformerVO vo) throws BusinessException {
+		String excistRelaseSql = " select count(*) from cmp_informerrelease where pk_informer = ? ";
+		BaseDAO baseDAO = new BaseDAO();
+		SQLParameter pk_informparam = new SQLParameter();
+		pk_informparam.addParam(vo.getPk_informer());
+		UFBoolean isrelse = (UFBoolean) baseDAO.executeQuery(excistRelaseSql, pk_informparam,
+				new IsExistRecordResultSetProcessor());
+		return isrelse.booleanValue();
+	}
+
+	public String getGenerateFlag(InformerVO vo) throws BusinessException {
+		if (vo.getUsemoney() != null && vo.getUsemoney().compareTo(UFDouble.ZERO_DBL) > 0) {
+			return GenerateFlagEnum.HASRELEASE.getGenerateFlag();
+		} else {
+			return this.isRelease(vo)
+					? GenerateFlagEnum.HASRELEASE.getGenerateFlag()
+					: GenerateFlagEnum.HASNOGENERATE.getGenerateFlag();
+		}
+	}
+
+	private InformerAppendVO validateCancelData(InformerVO rvo) throws BusinessException {
+		InformerAppendVO dvo = new InformerAppendVO();
+		InformerVO newvo = (InformerVO) this.getMDQueryService().queryBillOfVOByPK(InformerVO.class,
+				rvo.getPk_informer(), false);
+		if (!newvo.getTs().equals(rvo.getTs()) && !rvo.getModifier().equals(newvo.getModifier())) {
+			dvo.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0088"));
+			return dvo;
+		} else if (GenerateFlagEnum.HASNOGENERATE.getGenerateFlag().equals(rvo.getGenerateflag())) {
+			dvo.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0096"));
+			return dvo;
+		} else if (GenerateFlagEnum.NOGENERATE.getGenerateFlag().equals(newvo.getGenerateflag())) {
+			dvo.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0097"));
+			return dvo;
+		} else if (rvo.getPk_lower() != null && rvo.getLowerbilltype() != null) {
+			if (!"36J7".equals(rvo.getLowerbilltype()) && !"36J5".equals(rvo.getLowerbilltype())
+					&& !"36K4".equals(rvo.getLowerbilltype()) && !"36K2".equals(rvo.getLowerbilltype())
+					&& !"F4".equals(rvo.getLowerbilltype()) && !"F5".equals(rvo.getLowerbilltype())
+					&& !"F6".equals(rvo.getLowerbilltype()) && !"36S4".equals(rvo.getLowerbilltype())
+					&& !"F3".equals(rvo.getLowerbilltype()) && !"F2".equals(rvo.getLowerbilltype())
+					&& !"36Z3".equals(rvo.getLowerbilltype())&& !"3641".equals(rvo.getLowerbilltype())
+					&& !"3642".equals(rvo.getLowerbilltype())&& !"36Z4".equals(rvo.getLowerbilltype())
+					&& !"36Z5".equals(rvo.getLowerbilltype())) {
+				dvo.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0101",
+						(String) null, new String[]{rvo.getLowerbilltype()}));
+				return dvo;
+			} else {
+				return dvo;
+			}
+		} else {
+			dvo.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0098",
+					(String) null, new String[]{rvo.getPk_lower(), rvo.getLowerbilltype()}));
+			return dvo;
+		}
+	}
+
+	public void validateCommonData(InformerVO rvo, InformerAppendVO dvo) throws BusinessException {
+		if (null == rvo) {
+			dvo.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0087"));
+		} else {
+			if (rvo.getRowno() != null) {
+				dvo.setRowNO(rvo.getRowno());
+			} else {
+				dvo.setRowNO(1);
+			}
+
+			InformerVO newvo = (InformerVO) this.getMDQueryService().queryBillOfVOByPK(InformerVO.class,
+					rvo.getPk_informer(), false);
+			if (!newvo.getTs().equals(rvo.getTs())) {
+				dvo.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0088"));
+			} else if (GenerateFlagEnum.HASGENERATE.getGenerateFlag().equals(newvo.getGenerateflag())) {
+				dvo.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607informercmp_ncc_0",
+						"03607informercmp_ncc-0024"));
+			} else if (GenerateFlagEnum.NOGENERATE.getGenerateFlag().equals(newvo.getGenerateflag())) {
+				dvo.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0090"));
+			} else {
+				if (newvo.getMoneyy()
+						.compareTo(newvo.getUsemoney() == null ? UFDouble.ZERO_DBL : newvo.getUsemoney()) <= 0) {
+					dvo.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607informercmp_ncc_0",
+							"03607informercmp_ncc-0025") + rvo.getVbillno());
+				}
+
+			}
+		}
+	}
+
+	public Map<String, InformerAppendVO> validateCommonData(InformerVO[] rvos, InformerAppendVO informerAppendVO)
+			throws BusinessException {
+		Map<String, InformerAppendVO> informerAppendVOs = new HashMap();
+		String[] pks = new String[rvos.length];
+
+		for (int i = 0; i < rvos.length; ++i) {
+			pks[i] = rvos[i].getPk_informer();
+		}
+
+		Collection<InformerVO> newvos = this.getMDQueryService().queryBillOfVOByPKs(InformerVO.class, pks, false);
+		Map<String, InformerVO> informerVOs = new HashMap();
+		Iterator var7 = newvos.iterator();
+
+		while (var7.hasNext()) {
+			InformerVO informerVO = (InformerVO) var7.next();
+			informerVOs.put(informerVO.getPrimaryKey(), informerVO);
+		}
+
+		InformerVO[] var14 = rvos;
+		int var15 = rvos.length;
+
+		for (int var9 = 0; var9 < var15; ++var9) {
+			InformerVO rvo = var14[var9];
+			InformerAppendVO dvo = informerAppendVO.clone();
+			InformerVO newvo = (InformerVO) informerVOs.get(rvo.getPrimaryKey());
+			if (null == rvos) {
+				dvo.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0087"));
+			}
+
+			if (!newvo.getTs().equals(rvo.getTs())) {
+				dvo.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0088"));
+			}
+
+			if (GenerateFlagEnum.HASGENERATE.getGenerateFlag().equals(newvo.getGenerateflag())) {
+				dvo.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0123",
+						(String) null, new String[]{rvo.getVbillno()}));
+			}
+
+			if (GenerateFlagEnum.NOGENERATE.getGenerateFlag().equals(newvo.getGenerateflag())) {
+				dvo.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0090"));
+			}
+
+			informerAppendVOs.put(rvo.getPrimaryKey(), dvo);
+		}
+
+		return informerAppendVOs;
+	}
+
+	public void validateCommisionData(InformerAppendVO dvo, InformerVO rvo) throws BusinessException {
+		if (rvo.getPk_org() == null) {
+			dvo.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0085"));
+		} else if (!this.isFundOrg(rvo.getPk_org())) {
+			dvo.setErrorMessage(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0086"));
+		}
+	}
+
+	private boolean isFundOrg(String pk_org) throws BusinessException {
+		return this.getFundOrgService().isFundOrg(pk_org);
+	}
+
+	public void validateFundOrg(InformerVO rvo, InformerAppendVO dvo) throws BusinessException {
+		String pk_currFundOrg = rvo.getPk_org();
+		String pk_fundOrg = dvo.getPk_FundOrg();
+		if (!pk_currFundOrg.equals(pk_fundOrg)) {
+			HashMap<String, ArrayList<FundOrgVO>> fundOrgsMap = this.getFundOrgService()
+					.querySameFatherFundOrgPathMapByFundOrgIDS(pk_currFundOrg, pk_fundOrg);
+			if (fundOrgsMap == null) {
+				throw new BusinessException(
+						NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf1_0", "03607inf1-0055"));
+			} else {
+				Iterator var6 = ((ArrayList) fundOrgsMap.get(pk_currFundOrg)).iterator();
+
+				FundOrgVO fundOrgVO;
+				while (var6.hasNext()) {
+					fundOrgVO = (FundOrgVO) var6.next();
+					if (pk_fundOrg.equals(fundOrgVO.getPk_fatherorg())
+							&& fundOrgVO.getPrimaryKey().equals(pk_currFundOrg)) {
+						return;
+					}
+
+					if (pk_fundOrg.equals(fundOrgVO.getPk_fatherorg())) {
+						break;
+					}
+				}
+
+				var6 = ((ArrayList) fundOrgsMap.get(pk_fundOrg)).iterator();
+
+				while (var6.hasNext()) {
+					fundOrgVO = (FundOrgVO) var6.next();
+					if (pk_currFundOrg.equals(fundOrgVO.getPk_fatherorg())
+							&& fundOrgVO.getPrimaryKey().equals(pk_fundOrg)) {
+						return;
+					}
+
+					if (pk_currFundOrg.equals(fundOrgVO.getPk_fatherorg())) {
+						break;
+					}
+				}
+
+				if (dvo.getPk_FinanceOrg() == null) {
+					throw new BusinessException(
+							NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf1_0", "03607inf1-0056"));
+				} else if (dvo.getPk_accid() == null) {
+					throw new BusinessException(
+							NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf1_0", "03607inf1-0057"));
+				}
+			}
+		}
+	}
+
+	public void validateProcessDate(InformerVO rvo, InformerAppendVO dvo, String moduleID) throws BusinessException {
+		DateManageQueryVO queryVO = new DateManageQueryVO();
+		queryVO.setCurrentBusiDate(rvo.getInfodate());
+		if (!StringUtil.isNull(rvo.getPk_group())) {
+			queryVO.setPk_group(rvo.getPk_group());
+		} else {
+			queryVO.setPk_group(AppContext.getInstance().getPkGroup());
+		}
+
+		queryVO.setPk_org(rvo.getPk_org());
+		queryVO.setMaxBillDate((UFDate) null);
+		queryVO.setDateName(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607inf_0", "03607inf-0115"));
+		UFDate busiDate = AppContext.getInstance().getBusiDate();
+		String result = CommInitDateCheck.checkInitDate(busiDate, rvo.getPk_org(), moduleID);
+		if (!StringUtil.isNull(result)) {
+			dvo.setErrorMessage(result);
+		}
+	}
+
+	private IFundOrgPubService getFundOrgService() {
+		return (IFundOrgPubService) NCLocator.getInstance().lookup(IFundOrgPubService.class);
+	}
+
+	public IMDPersistenceQueryService getMDQueryService() {
+		if (this.mdQueryService == null) {
+			this.mdQueryService = (IMDPersistenceQueryService) NCLocator.getInstance()
+					.lookup(IMDPersistenceQueryService.class);
+		}
+
+		return this.mdQueryService;
+	}
+
+	public IAllocateForInformerService getAllocateService() {
+		return (IAllocateForInformerService) NCLocator.getInstance().lookup(IAllocateForInformerService.class);
+	}
+
+	public IDeliveryForInformerService getDeliveryService() {
+		return (IDeliveryForInformerService) NCLocator.getInstance().lookup(IDeliveryForInformerService.class);
+	}
+
+	public ICommissionGatherForInformerService getCommisionGatherService() {
+		return (ICommissionGatherForInformerService) NCLocator.getInstance()
+				.lookup(ICommissionGatherForInformerService.class);
+	}
+
+	public ICommissionPaymentForInformerService getCommisionPayService() {
+		return (ICommissionPaymentForInformerService) NCLocator.getInstance()
+				.lookup(ICommissionPaymentForInformerService.class);
+	}
+
+	public ICmpRecBillPubService getSJService() {
+		return (ICmpRecBillPubService) NCLocator.getInstance().lookup(ICmpRecBillPubService.class);
+	}
+
+	public ICmpPayBillPubService getFJService() {
+		return (ICmpPayBillPubService) NCLocator.getInstance().lookup(ICmpPayBillPubService.class);
+	}
+
+	@Deprecated
+	public ICmpChangeBillPubService getHJService() {
+		return (ICmpChangeBillPubService) NCLocator.getInstance().lookup(ICmpChangeBillPubService.class);
+	}
+
+	public ITransformBillMaintainService getNewHJService() {
+		return (ITransformBillMaintainService) NCLocator.getInstance().lookup(ITransformBillMaintainService.class);
+	}
+
+	public IArapPayBillPubService getFKService() {
+		return (IArapPayBillPubService) NCLocator.getInstance().lookup(IArapPayBillPubService.class);
+	}
+
+	public IArapGatheringBillPubService getSKService() {
+		return (IArapGatheringBillPubService) NCLocator.getInstance().lookup(IArapGatheringBillPubService.class);
+	}
+}

+ 1 - 0
zjcmp_cd/zjcmp_cd/classes/.gitignore

@@ -0,0 +1 @@
+/nccloud/

BIN
zjcmp_cd/zjcmp_cd/classes/nc/bs/icdmc/icdmc/repayprcpl/ace/rule/AceRepayPrcplDatacheckAndFillRule.class


+ 130 - 0
zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/cdmc/cdm/repayprcpl/config/action/NCCRepayPrcpl.xml

@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<actions>
+	<action>
+		<name>cdmc.repayprcpl.repayadd</name>
+		<label>新增保存</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplAddAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repaycopy</name>
+		<label>复制</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplCopyAction</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repaysave</name>
+		<label>修改保存</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplSaveAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repaydelete</name>
+		<label>删除</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplDeleteAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repaycommit</name>
+		<label>提交</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplCommitAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repayuncommit</name>
+		<label>收回</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplUnCommitAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repayrefresh</name>
+		<label>刷新</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplRefreshAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repayprcplcardqry</name>
+		<label>查询卡片</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplQueryCardAction</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repaylistqry</name>
+		<label>查询</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplListQueryAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repayprcplqrybypks</name>
+		<label>状态查询</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplQueryByPksAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repaysaveadd</name>
+		<label>保存新增</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repaysavecommit</name>
+		<label>保存提交</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplSaveCommitAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repayprint</name>
+		<label>打印</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplPrintAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repaymakebill</name>
+		<label>制证</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplMakeBillAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repayunmakebill</name>
+		<label>取消制证</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplUnMakeBillAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.cardeditafter</name>	
+		<label>卡片编辑</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.handler.RepayPrcplCardAfterEditHandler</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.bodyeditafter</name>	
+		<label>卡片表体编辑</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.handler.RepayPrcplCardBodyAfterEditHandler</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.voucherlinkedbill</name>	
+		<label>还本凭证联查单据</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplVoucherLinkedBillAction</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.vouchermake</name>	
+		<label>还本制证</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplVoucherMakeAction</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.vouchercancel</name>	
+		<label>取消制证</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplVoucherCancelAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.repayprcpl.linkntb</name>
+	  <label>单据联查预算</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplLinkNtbAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.repayprcpl.ntblinkbill</name>
+	  <label>预算联查单据</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplNtbLinkBillAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.repayprcpl.LinkBillToRepayprcplAction</name>
+	  <label>到账通知发布生成贷款还本</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayprcpl.action.LinkBillToRepayprcplAction</clazz>
+	</action>
+</actions>

+ 69 - 0
zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/cdmc/cdm/repayprcpl/config/authorize/repayrecpl.xml

@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<authorizes>
+	<authorize>
+		<appcode>36630BLP,36630BLPL</appcode>
+		<actions>
+			<action>cdmc.repayprcpl.repayadd</action>
+			<action>cdmc.repayprcpl.repaysave</action>
+			<action>cdmc.repayprcpl.repaydelete</action>
+			<action>cdmc.repayprcpl.repaycommit</action>
+			<action>cdmc.repayprcpl.repayuncommit</action>
+			<action>cdmc.repayprcpl.repayrefresh</action>
+			<action>cdmc.repayprcpl.repayprcplcardqry</action>
+			<action>cdmc.repayprcpl.repaylistqry</action>
+			<action>cdmc.repayprcpl.repayprcplqrybypks</action>
+			<action>cdmc.repayprcpl.repaysaveadd</action>
+			<action>cdmc.repayprcpl.repaysavecommit</action>
+			<action>cdmc.repayprcpl.repayprint</action>
+			<action>cdmc.repayprcpl.repaymakebill</action>
+			<action>cdmc.repayprcpl.repayunmakebill</action>
+			<action>cdmc.repayprcpl.repaylinkntb</action>
+			<action>cdmc.repayprcpl.cardeditafter</action>
+			<action>cdmc.repayprcpl.bodyeditafter</action>
+			<!--<action>cdmc.common.appregisterurlquery</action>凭证-->
+			
+			<action>cdmc.common.loanlinkbill</action>
+			
+			<!--凭证联查单据 -->
+			<action>cdmc.repayprcpl.voucherlinkedbill</action>
+			<!--凭证制证 -->
+			<action>cdmc.repayprcpl.vouchermake</action>
+			<!--取消制证 -->
+			<action>cdmc.repayprcpl.vouchercancel</action>
+			<!--联查合同和放款 -->
+			<action>cdmc.contract.contractcardqry</action>
+			<action>cdmc.financepay.financepaycardqry</action>
+			<action>cdmc.repayprcpl.repaycopy</action>
+			
+		</actions>
+	</authorize>
+	<authorize>
+		<appcode>*</appcode>
+		<actions>
+			<!--单据联查预算 -->
+			<action>cdmc.repayprcpl.linkntb</action>
+			<!--预算联查单据 -->
+			<action>cdmc.repayprcpl.ntblinkbill</action>
+			<action>cdmc.repayprcpl.repayprcplcardqry</action>
+			<action>cdmc.repayprcpl.repaylistqry</action>
+			<action>cdmc.repayprcpl.repayprcplqrybypks</action>
+			<action>cdmc.repayprcpl.repayrefresh</action>
+			<action>cdmc.repayprcpl.repayprint</action>
+			<action>cdmc.repayprcpl.LinkBillToRepayprcplAction</action>
+		</actions>
+	</authorize>
+	<authorize>
+		<!--  审批联查授权 -->
+		<appcode>36630BLPA</appcode>
+		<actions>
+			<action>cdmc.repayprcpl.repayprcplcardqry</action>
+			<action>cdmc.repayprcpl.repaylistqry</action>
+			<action>cdmc.repayprcpl.repayprcplqrybypks</action>
+			<action>cdmc.repayprcpl.repayrefresh</action>
+			<action>cdmc.repayprcpl.repayprint</action>
+			<!--联查合同和放款 -->
+			<action>cdmc.contract.contractcardqry</action>
+			<action>dmc.financepay.financepaycardqry</action>
+		</actions>
+	</authorize>
+</authorizes>

+ 139 - 0
zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/cdmc/financepay/config/action/NCCfinancepay.xml.xml

@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<actions>
+	
+	<action>
+	  <name>cdmc.financepay.financepaysave</name>
+	  <label>贷款放款新增/修改</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepaySaveAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepaycopy</name>
+	  <label>贷款放款复制</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayCopyAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepaycardqry</name>
+	  <label>贷款放款卡片查询</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayQueryCardAction</clazz>
+	</action>
+    
+  	<action>
+	  <name>cdmc.financepay.financepaylistqry</name>
+	  <label>贷款放款列表查询</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayListQueryAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepayqrybypks</name>
+	  <label>贷款放款列表根据主键查询</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayQueryByPksAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepaydelete</name>
+	  <label>贷款放款删除</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayDeleteAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepaycommit</name>
+	  <label>贷款放款提交</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayCommitAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepaysavecommit</name>
+	  <label>贷款放款保存提交</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepaySaveCommitAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepayuncommit</name>
+	  <label>贷款放款收回</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayUnCommitAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepayterminate</name>
+	  <label>贷款放款终止</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayTerminateAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepayunterminate</name>
+	  <label>贷款放款取消终止</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayUnTerminateAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepayprint</name>
+	  <label>贷款放款打印</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayPrintAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepayafteredit</name>
+	  <label>贷款放款编辑后事件</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayAfterEditAciton</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepaydelversion</name>
+	  <label>贷款放款删除版本</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayDelVersionAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.common.appregisterurlquery</name>
+	  <label>贷款放款付息还本凭证</label>
+	  <clazz>nccloud.web.cdmc.cdm.contract.action.AppregisterUrlQueryAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepayversionlist</name>
+	  <label>贷款放款版本记录</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayQueryVersionListAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepayversiondetail</name>
+	  <label>贷款放款版本详情</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayQueryVersionCardAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.financepay.voucherlinkedbill</name>
+	  <label>放款凭证联查单据</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayVoucherLinkedBillAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.financepay.vouchermake</name>
+	  <label>放款制证</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayVoucherMakeAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.financepay.vouchercancel</name>
+	  <label>放款取消制证</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayVoucherCancelAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.financepay.linkntb</name>
+	  <label>单据联查预算</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayLinkNtbAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.financepay.ntblinkbill</name>
+	  <label>预算联查单据</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayNtbLinkBillAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.financepay.comparedate</name>
+	  <label>贷款放款展期增行日期校验</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayCompareDateAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.financepay.InformerToFinancepayAction</name>
+	  <label>到账通知生成贷款放款</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.InformerToFinancepayAction</clazz>
+	</action>
+</actions>

+ 56 - 0
zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/cdmc/financepay/config/authorize/financepay.xml

@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<authorizes>
+	<authorize>
+		<appcode>36630BDLC,36630BDLCL</appcode>
+		<actions>
+			<action>cdmc.financepay.financepaysave</action>
+			<action>cdmc.financepay.financepaycardqry</action>
+			<action>cdmc.financepay.financepaylistqry</action>
+			<action>cdmc.financepay.financepayqrybypks</action>
+			<action>cdmc.financepay.financepaydelete</action>
+			<action>cdmc.financepay.financepaycommit</action>
+			<action>cdmc.financepay.financepaysavecommit</action>
+			<action>cdmc.financepay.financepayuncommit</action>
+			<action>cdmc.financepay.financepayterminate</action>
+			<action>cdmc.financepay.financepayunterminate</action>
+			<action>cdmc.financepay.financepayprint</action>
+			<action>cdmc.financepay.financepayafteredit</action>
+			<action>cdmc.financepay.financepaydelversion</action>
+			<!--<action>cdmc.common.appregisterurlquery</action>凭证-->
+			<action>cdmc.common.loanlinkbill</action>
+			<action>cdmc.financepay.financepayversionlist</action>
+			<action>cdmc.financepay.financepayversiondetail</action>
+			<!--合同卡片查询 -->
+			<action>cdmc.contract.contractcardqry</action>
+			<!--凭证联查单据 -->
+			<action>cdmc.financepay.voucherlinkedbill</action>
+			<!--放款制证 -->
+			<action>cdmc.financepay.vouchermake</action>
+			<!--放款取消制证 -->
+			<action>cdmc.financepay.vouchercancel</action>
+			<action>ccc.bankprotocol.balance</action>
+			<action>cdmc.financepay.financepaycopy</action>
+			<action>cdmc.financepay.InformerToFinancepayAction</action>
+		</actions>
+	</authorize>
+	<authorize>
+		<appcode>*</appcode>
+		<actions>
+			<action>cdmc.financepay.financepaycardqry</action>
+			<action>cdmc.financepay.financepaylistqry</action>
+			<action>cdmc.financepay.financepayqrybypks</action>
+			<action>cdmc.financepay.financepayprint</action>
+			<action>cdmc.financepay.financepayversionlist</action>
+			<action>cdmc.financepay.financepayversiondetail</action>
+			<!--单据联查预算 -->
+			<action>cdmc.financepay.linkntb</action>
+			<!--预算联查单据 -->
+			<action>cdmc.financepay.ntblinkbill</action>
+			<!-- 还款方式查询 -->
+   			<action>tmpub.tmbd.repaymentmethodquerybypks</action>
+			<!--贷款放款展期增行日期校验 -->
+   			<action>cdmc.financepay.comparedate</action>
+			<action>cdmc.financepay.InformerToFinancepayAction</action>
+		</actions>
+	</authorize>
+</authorizes>

+ 104 - 0
zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/cdmc/repayintst/config/action/NCCrepayintst.xml

@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<actions>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstsave</name>
+	  <label>银行贷款付息新增/修改</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstSaveAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstcopy</name>
+	  <label>银行贷款付息复制</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstCopyAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstcardqry</name>
+	  <label>银行贷款付息卡片查询</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstQueryCardAction</clazz>
+	</action>
+    
+  	<action>
+	  <name>cdmc.repayintst.repayintstlistqry</name>
+	  <label>银行贷款付息列表查询</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstListQueryAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstqrybypks</name>
+	  <label>银行贷款付息列表根据主键查询</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstQueryByPksAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstdelete</name>
+	  <label>银行贷款付息删除</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstDeleteAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstcommit</name>
+	  <label>银行贷款付息提交</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstCommitAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstsavecommit</name>
+	  <label>银行贷款付息保存提交</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstSaveCommitAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstuncommit</name>
+	  <label>银行贷款付息收回</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstUnCommitAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstprint</name>
+	  <label>银行贷款付息打印</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstPrintAction</clazz>
+	</action>
+	
+	<action>
+		<name>cdmc.repayintst.cardeditafter</name>
+		<label>银行贷款付息编辑后事件</label>
+		<clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstCardAfterEditAction</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayintst.voucherlinkedbill</name>
+		<label>银行贷款付息凭证联查单据</label>
+		<clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstVoucherLinkedBillAction</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayintst.vouchercancel</name>
+		<label>银行贷款付息取消制证</label>
+		<clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstVoucherCancelAction</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayintst.vouchermake</name>
+		<label>银行贷款付息制证</label>
+		<clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstVoucherMakeAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.repayintst.linkntb</name>
+	  <label>单据联查预算</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstLinkNtbAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.repayintst.ntblinkbill</name>
+	  <label>预算联查单据</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstNtbLinkBillAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.common.loanlinkbill</name>
+	  <label>公共的单据联查凭证</label>
+	  <clazz>nccloud.web.cdmc.common.action.LoanBillLinkVoucherQueryAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.repayintst.InformerToRepayintstAction</name>
+	  <label>到账通知发布生成贷款付息</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.InformerToRepayintstAction</clazz>
+	</action>
+</actions>

+ 44 - 0
zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/cdmc/repayintst/config/authorize/repayintst.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<authorizes>
+	<authorize>
+		<appcode>36630BLPI,36630BLPIL</appcode>
+		<actions>
+			<action>cdmc.repayintst.repayintstsave</action>
+			<action>cdmc.repayintst.repayintstcardqry</action>
+			<action>cdmc.repayintst.repayintstlistqry</action>
+			<action>cdmc.repayintst.repayintstqrybypks</action>
+			<action>cdmc.repayintst.repayintstdelete</action>
+			<action>cdmc.repayintst.repayintstcommit</action>
+			<action>cdmc.repayintst.repayintstsavecommit</action>
+			<action>cdmc.repayintst.repayintstuncommit</action>
+			<action>cdmc.common.appregisterurlquery</action><!--凭证-->
+			<action>cdmc.common.loanlinkbill</action>
+			<action>cdmc.repayintst.repayintstprint</action>
+			<action>cdmc.repayintst.cardeditafter</action>
+			<!--凭证联查单据 -->
+			<action>cdmc.repayintst.voucherlinkedbill</action>
+			<action>cdmc.common.loanlinkbill</action>
+			<!--取消制证 -->
+			<action>cdmc.repayintst.vouchercancel</action>
+			<!--制证 -->
+			<action>cdmc.repayintst.vouchermake</action>
+			<action>cdmc.repayintst.repayintstcopy</action>
+			<action>cdmc.repayintst.InformerToRepayintstAction</action>
+		</actions>
+	</authorize>
+	
+	<authorize>
+		<appcode>*</appcode>
+		<actions>
+			<action>cdmc.repayintst.repayintstcardqry</action>
+			<action>cdmc.repayintst.repayintstlistqry</action>
+			<action>cdmc.repayintst.repayintstqrybypks</action>
+			<action>cdmc.repayintst.repayintstprint</action>
+			<!--单据联查预算 -->
+			<action>cdmc.repayintst.linkntb</action>
+			<!--预算联查单据 -->
+			<action>cdmc.repayintst.ntblinkbill</action>
+			<action>cdmc.repayintst.InformerToRepayintstAction</action>
+		</actions>
+	</authorize>
+</authorizes>

+ 117 - 0
zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/ifm/investapply/config/action/NCCApply.xml

@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<actions>
+	<action>
+		<name>ifm.apply.applysave</name>
+		<label>保存</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplySaveAction</clazz>
+	</action>
+
+	<action>
+		<name>ifm.apply.applylistqry</name>
+		<label>列表查询</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyListQueryAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.apply.applydelete</name>
+		<label>删除</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyDeleteAction</clazz>
+	</action>
+
+	<action>
+		<name>ifm.apply.applypageqry</name>
+		<label>分页查询</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyPageQuery</clazz>
+	</action>
+
+	<action>
+		<name>ifm.apply.applycommit</name>
+		<label>提交</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyCommitAction</clazz>
+	</action>
+
+	<action>
+		<name>ifm.apply.applycardqry</name>
+		<label>卡片查询</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyCardQueryAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.apply.savecommit</name>
+		<label>保存提交</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplySaveCommitAction</clazz>
+	</action>
+
+	<action>
+		<name>ifm.apply.applyuncommit</name>
+		<label>收回</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyUnCommitAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.apply.print</name>
+		<label>打印</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyPrintAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.apply.cardeditafter</name>
+		<label>编辑后事件</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyCardAfterAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.apply.init</name>
+		<label>初始化</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyInitAction</clazz>
+	</action>
+	<action>
+		<name>ifm.apply.applyvoucherlinkbill</name>
+		<label>凭证联查单据特转付款</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyLinkBillAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.apply.applyformlinkifm</name>
+		<label>报表联查理财单据</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyIfmQueryAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.apply.linkprint</name>
+		<label>联查申购打印</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyLinkPrintAction</clazz>
+	</action>
+		<action>
+		<name>ifm.apply.linkntb</name>
+		<label>联查计划预算</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyLinkNtbPlanAction</clazz>
+	</action>
+	<action>
+		<name>ifm.apply.ntblinkbill</name>
+		<label>预算联查单据</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyNtbLinkBillAction</clazz>
+	</action>
+	<action>
+	  <name>ifm.apply.vouchermake</name>
+	  <label>理财申购制证操作</label>
+	  <clazz>nccloud.web.ifm.investapply.action.ApplyVoucherMakeAction</clazz>
+	</action>
+	<action>
+	  <name>ifm.apply.vouchercancel</name>
+	  <label>理财申购取消制证</label>
+	  <clazz>nccloud.web.ifm.investapply.action.ApplyVoucherCancelAction</clazz>
+	</action>
+	<action>
+		<name>ifm.apply.copy</name>
+		<label>理财申购复制</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyCopyAction</clazz>
+	</action>
+	<action>
+		<name>ifm.apply.LinkBillToApplyAction</name>
+		<label>到账通知发布生成理财申购</label>
+		<clazz>nccloud.web.ifm.investapply.action.LinkBillToApplyAction</clazz>
+	</action>
+	
+</actions>
+

+ 34 - 0
zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/ifm/investapply/config/authorize/authorize_investapply.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<authorizes>
+	<authorize>
+	<!--投资申购-->
+		<appcode>36670AP,36670APA,36660FMC</appcode>
+		<actions>
+			<action>ifm.apply.init</action>
+			<action>ifm.apply.applysave</action>
+			<action>ifm.apply.applylistqry</action>
+			<action>ifm.apply.applydelete</action>
+			<action>ifm.apply.applypageqry</action>
+			<action>ifm.apply.applycommit</action>
+			<action>ifm.apply.applycardqry</action>
+			<action>ifm.apply.savecommit</action>
+			<action>ifm.apply.applyuncommit</action>
+			<action>ifm.apply.print</action>
+			<action>ifm.apply.cardeditafter</action>
+			<action>ifm.apply.applyvoucherlinkbill</action>
+			<action>ifm.apply.applyformlinkifm</action>
+			<action>ifm.apply.linkprint</action>
+			<action>ifm.apply.vouchermake</action>
+			<action>ifm.apply.vouchercancel</action>
+			<action>ifm.apply.copy</action>
+		</actions>
+	</authorize>
+	<authorize>
+		<appcode>*</appcode>
+		<actions>
+			<action>ifm.apply.linkntb</action>
+			<action>ifm.apply.ntblinkbill</action>
+			<action>ifm.apply.LinkBillToApplyAction</action>
+		</actions>
+	</authorize>
+</authorizes>

+ 118 - 0
zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/ifm/redeem/config/action/NCCredeem.xml

@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<actions>
+	<action>
+		<name>ifm.redeem.init</name>
+		<label>单据构造</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemInitAction</clazz>
+	</action>
+	<action>
+	  <name>ifm.redeem.redeemsave</name>
+	  <label>资金赎回保存</label>
+	  <clazz>nccloud.web.ifm.redeem.action.RedeemSaveAction</clazz>
+	</action>
+	<action>
+	  <name>ifm.redeem.savecommit</name>
+	  <label>资金赎回保存提交</label>
+	  <clazz>nccloud.web.ifm.redeem.action.RedeemSaveSubmitAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.querybypk</name>
+		<label>卡片按照pk查询</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemCardQryAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.querylist</name>
+		<label>列表查询</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemListQueryAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.redeem.querypage</name>
+		<label>分页查询</label> 
+		<clazz>nccloud.web.ifm.redeem.action.RedeemPageQueryAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.delete</name>
+		<label>删除</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemDeleteAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.commit</name>
+		<label>提交</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemSubmitAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.uncommit</name>
+		<label>收回</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemUnSubmitAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.IFMAPPLYGridRef</name>
+		<label>投资产品参照</label>
+		<clazz>nccloud.web.ifm.ref.action.IFMApplyGridRefAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.redeem.IFMRedeemGridRef</name>
+		<label>投资赎回参照</label>
+		<clazz>nccloud.web.ifm.ref.action.IFMRedeemGridRefAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.querybypkapply</name>
+		<label>申请快捷按钮到赎回卡片</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemCardQryByPkapplyAction</clazz>
+	</action>
+	<action>
+	
+		<name>ifm.redeem.redeemcardafter</name>
+		<label>编辑产品代码后事件</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemCardAfterEditAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.print</name>
+		<label>打印</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemPrintAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.linkntb</name>
+		<label>联查计划预算</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemLinkNtbPlanAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.ntblinkbill</name>
+		<label>预算联查单据</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemNtbLinkBillAction</clazz>
+	</action>
+	<action>
+		<name>ifm.cash.appregisterurlquery</name>
+		<label>查询小应用URL</label>
+		<clazz>nccloud.web.ifm.redeem.action.BillLinkVoucharQueryAction</clazz>
+	</action>
+		<action>
+		<name>ifm.redeem.redeemvoucherlinkbill</name>
+		<label>凭证联查单据</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemLinkBillAction</clazz>
+	</action>
+	<action>
+	  <name>ifm.redeem.vouchermake</name>
+	  <label>理财赎回制证操作</label>
+	  <clazz>nccloud.web.ifm.redeem.action.RedeemVoucherMakeAction</clazz>
+	</action>
+	<action>
+	  <name>ifm.redeem.vouchercancel</name>
+	  <label>理财赎回取消制证</label>
+	  <clazz>nccloud.web.ifm.redeem.action.RedeemVoucherCancelAction</clazz>
+	</action>
+	<action>
+	  <name>ifm.redeem.copy</name>
+	  <label>理财赎回复制</label>
+	  <clazz>nccloud.web.ifm.redeem.action.RedeemCopyAction</clazz>
+	</action>
+	<!-- ZTH  -->
+	<action>
+	  <name>ifm.redeem.InformerToRedeemAction</name>
+	  <label>到账通知发布到理财赎回</label>
+	  <clazz>nccloud.web.ifm.redeem.action.InformerToRedeemAction</clazz>
+	</action>
+	
+</actions>

+ 37 - 0
zjcmp_cd/zjcmp_cd/classes/yyconfig/modules/ifm/redeem/config/authorize/authorize_redeem.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<authorizes>
+	<authorize>
+	<!--投资赎回-->
+		<appcode>36670RED,36670AP,36670IPR,36670REDA,36660FMC</appcode>
+		<actions>
+			<action>ifm.redeem.init</action>
+			<action>ifm.redeem.redeemsave</action>
+			<action>ifm.redeem.savecommit</action>
+			<action>ifm.redeem.querybypk</action>
+			<action>ifm.redeem.querylist</action>
+			<action>ifm.redeem.querypage</action>
+			<action>ifm.redeem.delete</action>
+			<action>ifm.redeem.commit</action>
+			<action>ifm.redeem.uncommit</action>
+			<action>ifm.redeem.querybypkapply</action>
+			<action>ifm.redeem.redeemcardafter</action>
+			<action>ifm.redeem.print</action>
+			<action>ifm.redeem.redeemvoucherlinkbill</action>
+			<action>ifm.redeem.vouchermake</action>
+			<action>ifm.redeem.vouchercancel</action>
+			<action>ifm.redeem.copy</action>
+		</actions>
+	</authorize>
+	<authorize>
+		<appcode>*</appcode>
+		<actions>
+			<action>ifm.redeem.IFMAPPLYGridRef</action>
+			<action>ifm.redeem.IFMRedeemGridRef</action>
+			<action>ifm.redeem.linkntb</action>
+			<action>ifm.redeem.ntblinkbill</action>
+			<action>ifm.cash.appregisterurlquery</action>
+			<!-- ZTH 到账通知发布到理财赎回 -->
+			<action>ifm.redeem.InformerToRedeemAction</action>
+		</actions>
+	</authorize>
+</authorizes>

+ 3 - 0
zjcmp_cd/zjcmp_cd/component.xml

@@ -0,0 +1,3 @@
+<component name="zjcmp_cd" displayname="zjcmp_cd">
+  <dependencies/>
+</component>

+ 3 - 0
zjcmp_cd/zjcmp_cd/script/conf/initdata/items.xml

@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<items>
+</items>

+ 90 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/bond/bondmanage/repayprinciple/handler/RepayPrcplOrgChangeEditAfterHandler.java

@@ -0,0 +1,90 @@
+package nccloud.web.bond.bondmanage.repayprinciple.handler;
+
+import nc.vo.bd.bankdoc.BankdocVO;
+import nc.vo.bond.bondmanage.repayprinciple.AggBondRepayPrcplVO;
+import nc.vo.bond.bondmanage.repayprinciple.BondRepayPrcplConst;
+import nc.vo.bond.bondmanage.repayprinciple.BondRepayPrcplVO;
+import nc.vo.bond.bondmanage.repayprinciple.RepaymentBillStatusEnum;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.pub.pf.BillStatusEnum;
+import nc.vo.tmpub.util.StringUtil;
+import nccloud.commons.lang.StringUtils;
+import nccloud.framework.web.container.SessionContext;
+import nccloud.framework.web.convert.translate.Translator;
+import nccloud.framework.web.processor.template.ExtBillCardConvertProcessor;
+import nccloud.framework.web.ui.pattern.extbillcard.ExtBillCard;
+import nccloud.framework.web.ui.pattern.extbillcard.ExtBillCardFormulaHandler;
+import nccloud.framework.web.ui.pattern.extbillcard.ExtCardHeadAfterEditEvent;
+import nccloud.web.bond.bondmanage.repayprinciple.util.BondPrcplRecaculateUtil;
+import nccloud.web.bond.bondmanage.utils.BondUtil;
+import nccloud.web.tmpub.afteredit.bean.UIProp;
+import nccloud.web.tmpub.handler.AbstractCommonAfterEditHandler;
+import nccloud.web.tmpub.pub.translate.ExtraTranslator;
+import nccloud.web.tmpub.util.NCCFrontPrecisionUtil;
+
+public class RepayPrcplOrgChangeEditAfterHandler
+		extends
+			AbstractCommonAfterEditHandler<ExtCardHeadAfterEditEvent, ExtBillCard> {
+	protected ExtBillCard processAfterEdit(ExtCardHeadAfterEditEvent event, UIProp uiProp) throws BusinessException {
+		ExtBillCard card = event.getCard();
+		ExtBillCardConvertProcessor processor = new ExtBillCardConvertProcessor();
+		AggBondRepayPrcplVO vo = (AggBondRepayPrcplVO) processor.fromExtBillCard(card);
+		this.loadBaseInforByOrg(vo);
+		if (StringUtil.isNotNull(vo.getParentVO().getPk_currtype())) {
+			vo = BondPrcplRecaculateUtil.recaculate(vo, true);
+		}
+
+		card = AggvoConvertTOExtBIllCard.doReturn(vo);
+		NCCFrontPrecisionUtil.processExtBillCardPrecision(card, BondRepayPrcplConst.getHeadPrecisionFields(),
+				BondRepayPrcplConst.getBodyPrecisionFields());
+		return card;
+	}
+
+	protected AggBondRepayPrcplVO loadBaseInforByOrg(AggBondRepayPrcplVO vo) throws BusinessException {
+		String pk_org = vo.getParentVO().getPk_org();
+		if (StringUtils.isBlank(pk_org)) {
+			return vo;
+		} else {
+			this.setBondRepayPrcplDefaultValue(vo);
+			return vo;
+		}
+	}
+
+	protected void setBondRepayPrcplDefaultValue(AggBondRepayPrcplVO vo) throws BusinessException {
+		BondRepayPrcplVO pvo = vo.getParentVO();
+		BondRepayPrcplVO newvo = new BondRepayPrcplVO();
+		newvo.setPk_org(pvo.getPk_org());
+		if (StringUtils.isBlank(pvo.getPk_repayprcpl())) {
+			String billmaker = SessionContext.getInstance().getClientInfo().getUserid();
+			UFDate billmakedate = new UFDate(SessionContext.getInstance().getClientInfo().getBizDateTime());
+			newvo.setBillmaker(billmaker);
+			newvo.setBillmakedate(billmakedate);
+			newvo.setPk_billtypecode(this.getBillTypeCode());
+		}
+
+		newvo.setVbillstatus(BillStatusEnum.FREE.toIntValue());
+		newvo.setBusistatus(RepaymentBillStatusEnum.SAVE.toIntValue());
+		newvo.setPk_group(BondUtil.getGroupByOrg(pvo.getPk_org()));
+		newvo.setIssuer(newvo.getPk_org());
+		
+		newvo.setVdef4(pvo.getVdef4());//到账通知发布主键
+		newvo.setVdef5(pvo.getVdef5());//对账标识
+		vo.setParentVO(newvo);
+	}
+
+	protected ExtBillCard doReturn(AggBondRepayPrcplVO vo) {
+		ExtBillCardConvertProcessor processor = new ExtBillCardConvertProcessor();
+		ExtBillCard billCard = processor.convert(BondRepayPrcplConst.CONST_PAGECODE_REPAYPRCPL_CARD, vo);
+		Translator translator = new Translator();
+		translator.translate(billCard);
+		(new ExtraTranslator()).addExtraTransField("reporg", "name", BankdocVO.class).translate(billCard);
+		ExtBillCardFormulaHandler handler = new ExtBillCardFormulaHandler(billCard);
+		handler.handleLoadFormula();
+		return billCard;
+	}
+
+	protected String getBillTypeCode() {
+		return BondRepayPrcplConst.CONST_BILLTYPE_REPAYPRCPL;
+	}
+}

+ 315 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/financepay/action/FinancepaySaveAction.java

@@ -0,0 +1,315 @@
+package nccloud.web.cdmc.cdm.financepay.action;
+
+import java.util.List;
+import java.util.Map;
+
+import nc.bs.dao.BaseDAO;
+import nc.bs.framework.common.NCLocator;
+import nc.itf.cdmc.cdm.contract.IContractQueryService;
+import nc.itf.cdmc.cdm.pub.IPubQueryService;
+import nc.itf.uap.IUAPQueryBS;
+import nc.vo.cdmc.cdm.contract.AggContractVO;
+import nc.vo.cdmc.cdm.contract.ContractVO;
+import nc.vo.cdmc.cdm.financepay.AggFinancepayVO;
+import nc.vo.cdmc.cdm.financepay.BankGroupInfoVO;
+import nc.vo.cdmc.cdm.financepay.FinAuthInfoVO;
+import nc.vo.cdmc.cdm.financepay.FinStatusEnum;
+import nc.vo.cdmc.cdm.financepay.FinancepayVO;
+import nc.vo.cdmc.cdm.financepay.PlanRepayVO;
+import nc.vo.cdmc.cdm.financepay.RegenplanEnum;
+import nc.vo.cdmc.cdm.util.RepayPrcplNCUtil;
+import nc.vo.cdmc.pub.RepayMethodTypeEnum;
+import nc.vo.cdmc.pub.adapter.FinancepaySagaInfoAdapter;
+import nc.vo.cdmc.pub.constants.CdmcPubConst;
+import nc.vo.ml.NCLangRes4VoTransl;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.CircularlyAccessibleValueObject;
+import nc.vo.pub.ISuperVO;
+import nc.vo.pub.lang.UFBoolean;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.pub.lang.UFDouble;
+import nc.vo.tmpub.util.ModuleEnum;
+import nccloud.dto.cdmc.financepay.utils.FinancepayPrecisionUtil;
+import nccloud.framework.core.exception.ExceptionUtils;
+import nccloud.framework.service.ServiceLocator;
+import nccloud.framework.web.container.ClientInfo;
+import nccloud.framework.web.container.SessionContext;
+import nccloud.pubitf.tmpub.pub.IModuleEnableCheckService;
+import nccloud.pubitf.tmpub.pub.ISagasBizService;
+import nccloud.pubitf.tmpub.pub.ITMPrecisionServiceForNCC;
+import nccloud.vo.tmpub.precison.PrecisionField;
+import nccloud.web.cdmc.cdm.contract.util.ContractQueryUtil;
+import nccloud.web.cdmc.cdm.financepay.util.FinancepayPubUtil;
+import nccloud.web.cdmc.common.action.CommonSaveAction;
+import nccloud.web.tmpub.pub.ms.util.SagasBizUtil;
+import nccloud.web.tmpub.pub.translate.ExtraTranslator;
+
+public class FinancepaySaveAction extends CommonSaveAction<AggFinancepayVO> {
+	private IPubQueryService pubQueryService = (IPubQueryService) ServiceLocator.find(IPubQueryService.class);
+	IModuleEnableCheckService checkservice = (IModuleEnableCheckService) ServiceLocator
+			.find(IModuleEnableCheckService.class);
+
+	protected AggFinancepayVO doBusinessSave(AggFinancepayVO operaVO) throws BusinessException {
+		this.validateBeforeSave(operaVO);
+		this.checkPlanMny(operaVO);
+		this.doBefore(operaVO);
+		FinancepayVO head = operaVO.getParentVO();
+		String vdef7 = head.getVdef7();//上游金额
+		String pk_src = head.getPk_srcbill();//上游单据主键
+		String billmaker = head.getBillmaker();//制单人
+//		UFDate billmaketime = head.getBillmaketime();//制单时间
+		if(vdef7!=null&&vdef7!=""&&pk_src!="") {
+			UFDouble headmoney = new UFDouble(vdef7);
+			UFDouble loanmny = head.getLoanmny();
+			if(!loanmny.equals(headmoney)) {
+				ExceptionUtils.wrapBusinessException("放款金额和到账通知的金额不等,请检验。");
+				return null;
+			}
+		}
+		
+		SagasBizUtil.setOperInfo("36630BDLC_CARD", "change");
+		Object result = super.callActionScript(CdmcPubConst.CONST_ACTION_SAVEBASE,
+				CdmcPubConst.CONST_BILLTYPE_FINANCEPAY, new AggFinancepayVO[]{operaVO});
+		AggFinancepayVO[] saveVOs = (AggFinancepayVO[]) ((AggFinancepayVO[]) result);
+		saveVOs = (AggFinancepayVO[]) ((AggFinancepayVO[]) ((ITMPrecisionServiceForNCC) ServiceLocator
+				.find(ITMPrecisionServiceForNCC.class)).processAggVOPrecision(saveVOs,
+						FinancepayPrecisionUtil.getHeadPrecisionFields(),
+						FinancepayPrecisionUtil.getBodyPrecisionFieldsVOMap(), false, true));
+		RepayPrcplNCUtil.sortFinancepayVOs(saveVOs);
+		AggFinancepayVO savevo = saveVOs[0];
+		String pk_lower = savevo.getParentVO().getPk_financepay();
+		String ts = savevo.getParentVO().getTs().toString();
+		String pk_billtypecode = savevo.getParentVO().getPk_billtypecode();
+		
+		try {
+			String sql = "update cmp_informer set generateflag = 'hasgenerate',usemoney = '"+vdef7+"',pk_claimer='"+billmaker+"',claimdate='"+ts+"',pk_lower = '"+pk_lower+"',lowerbilltype='"+pk_billtypecode+"' where dr=0 and pk_informer = '"+pk_src+"'";
+			int count = new BaseDAO().executeUpdate(sql);
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		return saveVOs[0];
+	}
+
+	protected String getPageCode() {
+		return CdmcPubConst.CONST_PAGECODE_FINANCEPAY_CARD;
+	}
+
+	private void validateBeforeSave(AggFinancepayVO operaVO) throws BusinessException {
+		FinancepayVO head = operaVO.getParentVO();
+		String pk_contract = head.getContractid();
+		
+		
+		AggContractVO[] aggcontractvos = ((IContractQueryService) ServiceLocator.find(IContractQueryService.class))
+				.getAggVOsByPKs(new String[]{pk_contract});
+		if (aggcontractvos != null && aggcontractvos.length > 0) {
+			ContractVO contractvo = aggcontractvos[0].getParentVO();
+			if (contractvo.getVbillstatus() != null && contractvo.getVbillstatus() != 1) {
+				ExceptionUtils.wrapBusinessException(
+						NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0105"));
+			}
+		}
+
+		UFBoolean initflag = head.getInitflag();
+		if (!UFBoolean.TRUE.equals(initflag)) {
+			UFDate fuhedate = this.pubQueryService.getQiChuYuEFuHeDate(head.getPk_org(), head.getDebitunitacctid());
+			if (null != fuhedate && head.getLoandate().beforeDate(fuhedate)) {
+				ExceptionUtils.wrapBusinessException(
+						NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0106"));
+			}
+		}
+
+		try {
+			if (head.getPk_financepay() != null) {
+				FinancepaySagaInfoAdapter adapter = new FinancepaySagaInfoAdapter();
+				ISagasBizService sagaService = (ISagasBizService) ServiceLocator.find(ISagasBizService.class);
+				String pk_financepay = head.getPk_financepay();
+				sagaService.checkFrozen(adapter, pk_financepay);
+			}
+		} catch (Exception var9) {
+			ExceptionUtils.wrapException(var9);
+		}
+
+		if (UFDouble.ZERO_DBL.compareTo(head.getLoanmny()) >= 0) {
+			ExceptionUtils.wrapBusinessException(
+					NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0032"));
+		}
+
+		if (head.getUnloanmny() != null && head.getUnloanmny().doubleValue() < 0.0D) {
+			ExceptionUtils.wrapBusinessException(
+					NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0096"));
+		}
+
+		this.checkUnRuleRepayPlan(operaVO);
+		if (!UFBoolean.TRUE.equals(head.getIsautogenrepayplan()) && (operaVO.getChildren(PlanRepayVO.class) == null
+				|| operaVO.getChildren(PlanRepayVO.class).length == 0)) {
+			ExceptionUtils.wrapBusinessException(
+					NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0033"));
+		}
+
+		if (head.getContenddate() != null && head.getLoandate().asBegin().after(head.getContenddate().asBegin())) {
+			ExceptionUtils.wrapBusinessException(
+					NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0034"));
+		}
+
+		ISuperVO[] authVOs = operaVO.getChildren(FinAuthInfoVO.class);
+		if (authVOs == null || authVOs.length == 0) {
+			if (UFBoolean.TRUE.equals(head.getPayreleaseauth())) {
+				ExceptionUtils.wrapBusinessException(
+						NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0035"));
+			}
+
+			if (UFBoolean.TRUE.equals(head.getIspayusecc())) {
+				ExceptionUtils.wrapBusinessException(
+						NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0036"));
+			}
+		}
+
+		ISuperVO[] bankGroupVOs = operaVO.getChildren(BankGroupInfoVO.class);
+		if (UFBoolean.TRUE.equals(head.getAgentbankmgt()) && (bankGroupVOs == null || bankGroupVOs.length == 0)) {
+			ExceptionUtils.wrapBusinessException(
+					NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0037"));
+		}
+
+	}
+
+	public void checkUnRuleRepayPlan(AggFinancepayVO operaVO) {
+		FinancepayVO head = operaVO.getParentVO();
+		if (!UFBoolean.TRUE.equals(head.getEnablerule())
+				&& RepayMethodTypeEnum.UNRULE.getValue().equals(head.getRepaytype())) {
+			ISuperVO[] planSuperVOs = operaVO.getChildren(PlanRepayVO.class);
+			if (planSuperVOs != null && planSuperVOs.length != 0) {
+				PlanRepayVO[] planVOs = (PlanRepayVO[]) ((PlanRepayVO[]) planSuperVOs);
+				PlanRepayVO[] var5 = planVOs;
+				int var6 = planVOs.length;
+
+				for (int var7 = 0; var7 < var6; ++var7) {
+					PlanRepayVO planVO = var5[var7];
+					UFDouble preMny = planVO.getPremny() == null ? UFDouble.ZERO_DBL : planVO.getPremny();
+					UFDouble repayAmount = planVO.getRepayamount() == null
+							? UFDouble.ZERO_DBL
+							: planVO.getRepayamount();
+					UFDouble advanceMny = planVO.getAdvancemny() == null ? UFDouble.ZERO_DBL : planVO.getAdvancemny();
+					if (preMny.compareTo(repayAmount.add(advanceMny)) < 0) {
+						ExceptionUtils.wrapBusinessException(
+								NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0075")
+										+ planVO.getPlanrepaycode() + NCLangRes4VoTransl.getNCLangRes()
+												.getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0076")
+										+ repayAmount.add(advanceMny) + "]");
+					}
+				}
+			} else {
+				ExceptionUtils.wrapBusinessException(
+						NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0074"));
+			}
+		}
+
+	}
+
+	private void doBefore(AggFinancepayVO operaVO) {
+		String pk_group = SessionContext.getInstance().getClientInfo().getPk_group();
+		ClientInfo clientInfo = SessionContext.getInstance().getClientInfo();
+		FinancepayVO head = (FinancepayVO) operaVO.getParent();
+		String pk_contract = head.getContractid();
+
+		try {
+			if (head.getDebittoloan().booleanValue()) {
+				this.checkservice.isEnableByGroup(pk_group, ModuleEnum.ICDMC, true);
+			}
+
+			AggContractVO[] aggContractVOs = ContractQueryUtil.queryBillsByPks(new String[]{pk_contract});
+			if (aggContractVOs != null && aggContractVOs.length == 1) {
+				ContractVO contract = aggContractVOs[0].getParentVO();
+				if (head.getContractname() == null || head.getContractmny() == null
+						|| head.getContractmny().doubleValue() == 0.0D) {
+					head.setContractname(contract.getContractname());
+					head.setContractmny(contract.getLoanmny());
+				}
+			}
+		} catch (BusinessException var12) {
+			;
+		}
+
+		if (head.getPk_financepay() == null) {
+			head.setCreator(clientInfo.getUserid());
+			head.setPk_group(clientInfo.getPk_group());
+			head.setPk_billtypecode(CdmcPubConst.CONST_BILLTYPE_FINANCEPAY);
+			head.setPk_billtypeid(CdmcPubConst.CONST_BILLTYPEPK_FINANCEPAY);
+			head.setBusistatus(FinStatusEnum.NOCOMMIT.toIntValue());
+			head.setVersiontime(head.getLoandate());
+			this.setXietong(head);
+			head.setRegenrepayplan((String) null);
+		} else {
+			if (FinStatusEnum.NOCOMMIT.toIntValue() == head.getBusistatus() && -1 == head.getVbillstatus()) {
+				head.setVersiontime(head.getLoandate());
+			}
+
+			head.setModifier(clientInfo.getUserid());
+			CircularlyAccessibleValueObject[] allChildren = operaVO.getAllChildrenVO();
+			if (allChildren != null && allChildren.length > 0) {
+				String pk_parent = head.getPk_financepay();
+				CircularlyAccessibleValueObject[] var8 = allChildren;
+				int var9 = allChildren.length;
+
+				for (int var10 = 0; var10 < var9; ++var10) {
+					CircularlyAccessibleValueObject child = var8[var10];
+					if (child.getAttributeValue("pk_financepay") == null
+							|| "".equals(child.getAttributeValue("pk_financepay").toString())) {
+						child.setAttributeValue("pk_financepay", pk_parent);
+					}
+				}
+			}
+		}
+
+	}
+
+	private void setXietong(FinancepayVO head) {
+		head.setCanloan(head.getLoanmny());
+		head.setAlreadyloan(UFDouble.ZERO_DBL);
+		head.setUnpaymny(head.getLoanmny());
+	}
+
+	protected ExtraTranslator getExtraTranslator() {
+		return FinancepayPubUtil.buildExtraTranslator();
+	}
+
+	protected Map<String, List<PrecisionField>> getBodyPrecisionFields() {
+		return FinancepayPrecisionUtil.getBodyPrecisionFields();
+	}
+
+	protected List<PrecisionField> getHeadPrecisionFields() {
+		return FinancepayPrecisionUtil.getHeadPrecisionFields();
+	}
+
+	private void checkPlanMny(AggFinancepayVO aggVO) {
+		FinancepayVO head = aggVO.getParentVO();
+		if ((!UFBoolean.TRUE.equals(head.getEnablerule()) || !Integer.valueOf(-1).equals(head.getVbillstatus())
+				|| !Integer.valueOf(-1).equals(head.getBusistatus()))
+				&& (RepayMethodTypeEnum.UNRULE.getValue().equals(head.getRepaytype())
+						|| RegenplanEnum.UNREGENREPAYPLAN.getValue().equals(head.getRegenrepayplan()))) {
+			PlanRepayVO[] planVOs = (PlanRepayVO[]) ((PlanRepayVO[]) aggVO.getChildren(PlanRepayVO.class));
+			UFDouble preSumMny = UFDouble.ZERO_DBL;
+			if (planVOs != null && planVOs.length >= 1) {
+				PlanRepayVO[] var5 = planVOs;
+				int var6 = planVOs.length;
+
+				for (int var7 = 0; var7 < var6; ++var7) {
+					PlanRepayVO plan = var5[var7];
+					if (plan.getStatus() != 3) {
+						UFDouble preMny = plan.getPremny() == null ? UFDouble.ZERO_DBL : plan.getPremny();
+						preSumMny = preSumMny.add(preMny);
+					}
+				}
+
+				if (!preSumMny.equals(head.getLoanmny())) {
+					ExceptionUtils.wrapBusinessException(
+							NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0095"));
+				}
+			} else {
+				ExceptionUtils.wrapBusinessException(
+						NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0033"));
+			}
+		}
+
+	}
+}

+ 78 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/financepay/action/InformerToFinancepayAction.java

@@ -0,0 +1,78 @@
+package nccloud.web.cdmc.cdm.financepay.action;
+
+import nccloud.dto.ifac.common.bean.IfacOperatorParam;
+import nccloud.framework.core.exception.ExceptionUtils;
+import nccloud.framework.web.action.itf.ICommonAction;
+import nccloud.framework.web.container.IRequest;
+import nccloud.framework.web.convert.translate.Translator;
+import nccloud.framework.web.processor.template.BillCardConvertProcessor;
+import nccloud.framework.web.ui.pattern.billcard.BillCard;
+import nccloud.framework.web.ui.pattern.billcard.BillCardFormulaHandler;
+import nccloud.web.ifac.pub.util.NCCPageInfoUtil;
+import nccloud.web.sf.allocation.allocate.util.AllocateDefaultValue4NCCUtil;
+//import nc.vo.cmp.informer.AggInformerMappingVO;
+import nc.vo.cmp.informer.InformerVO;
+import nc.vo.pub.BusinessException;
+import nc.bs.framework.common.NCLocator;
+import nc.itf.uap.IUAPQueryBS;
+import nc.itf.uap.pf.IPfExchangeService;
+import nc.jdbc.framework.processor.BeanListProcessor;
+import nc.jdbc.framework.processor.BeanProcessor;
+import nc.laf.persistence.BeanPersistence;
+import nc.vo.cdmc.cdm.financepay.AggFinancepayVO;
+import nc.vo.cdmc.cdm.financepay.FinancepayVO;
+import nc.itf.cmp.informer.IInformerQueryService;
+/**
+ * 
+ * 到账通知发布生成贷款放款
+ * 
+ * @author pcy
+ *
+ */
+
+public class InformerToFinancepayAction implements ICommonAction{
+
+	@Override
+	public Object doAction(IRequest request) {
+		// TODO Auto-generated method stub
+		IfacOperatorParam parm = (IfacOperatorParam) NCCPageInfoUtil.getParam(request, IfacOperatorParam.class);
+		IPfExchangeService exchange = NCLocator.getInstance().lookup(
+				IPfExchangeService.class);
+		BillCard billCard = null;
+		String[] pks = parm.getPks();
+		String pk = pks[0];
+		
+		InformerVO informervo = new InformerVO();
+		FinancepayVO financepayvo = new FinancepayVO();
+		AggFinancepayVO aggfinancepayvo = new AggFinancepayVO();
+		String sql = "select * from cmp_informer where dr=0 and pk_informer = '"+pk+"'";
+		IUAPQueryBS iuap=(IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());
+		try {
+			informervo = (InformerVO) iuap.executeQuery(sql, new BeanProcessor(InformerVO.class));
+		} catch (BusinessException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		
+		financepayvo.setPk_srcbill(pk);
+		financepayvo.setPk_group(informervo.getPk_group());
+		financepayvo.setPk_org(informervo.getPk_org());
+		financepayvo.setPk_org_v(informervo.getPk_org_v());
+		financepayvo.setSrcbillno(informervo.getVbillno());
+		aggfinancepayvo.setParent(financepayvo);
+		BillCardConvertProcessor processor = new BillCardConvertProcessor();
+		billCard = processor.convert("36630BDLC_CARD", aggfinancepayvo);
+		Translator translator = new Translator();
+		translator.translate(billCard);
+		BillCardFormulaHandler handler = new BillCardFormulaHandler(billCard);
+		handler.handleLoadFormula();
+		handler.handleBodyLoadFormula();
+		try {
+			AllocateDefaultValue4NCCUtil.setAllocateDefaultValue(billCard, true, false);
+		} catch (BusinessException var15) {
+			ExceptionUtils.wrapException(var15);
+		}
+		return billCard;
+	}
+
+}

+ 77 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/repayinterest/action/InformerToRepayintstAction.java

@@ -0,0 +1,77 @@
+package nccloud.web.cdmc.cdm.repayinterest.action;
+
+import nc.bs.framework.common.NCLocator;
+import nc.itf.uap.IUAPQueryBS;
+import nc.itf.uap.pf.IPfExchangeService;
+import nc.jdbc.framework.processor.BeanProcessor;
+import nc.vo.cdmc.cdm.repayintst.AggRepayIntstVO;
+import nc.vo.cdmc.cdm.repayintst.RepayIntstVO;
+import nc.vo.cmp.informer.InformerVO;
+import nc.vo.pub.BusinessException;
+import nccloud.dto.ifac.common.bean.IfacOperatorParam;
+import nccloud.framework.core.exception.ExceptionUtils;
+import nccloud.framework.web.action.itf.ICommonAction;
+import nccloud.framework.web.container.IRequest;
+import nccloud.framework.web.convert.translate.Translator;
+import nccloud.framework.web.processor.template.BillCardConvertProcessor;
+import nccloud.framework.web.ui.pattern.billcard.BillCard;
+import nccloud.framework.web.ui.pattern.billcard.BillCardFormulaHandler;
+import nccloud.web.ifac.pub.util.NCCPageInfoUtil;
+import nccloud.web.sf.allocation.allocate.util.AllocateDefaultValue4NCCUtil;
+/**
+ * 
+ * 到账通知发布生成贷款付息
+ * 
+ * @author pcy
+ *
+ */
+public class InformerToRepayintstAction implements ICommonAction{
+
+	@Override
+	public Object doAction(IRequest request) {
+		// TODO Auto-generated method stub
+		IfacOperatorParam parm = (IfacOperatorParam) NCCPageInfoUtil.getParam(request, IfacOperatorParam.class);
+		IPfExchangeService exchange = NCLocator.getInstance().lookup(
+				IPfExchangeService.class);
+		BillCard billCard = null;
+		String[] pks = parm.getPks();
+		String pk = pks[0];
+		
+		InformerVO informervo = new InformerVO();
+		RepayIntstVO repayintstvo = new RepayIntstVO();
+		AggRepayIntstVO aggrepayintstvo = new AggRepayIntstVO();
+		String sql = "select * from cmp_informer where dr=0 and pk_informer = '"+pk+"'";
+		IUAPQueryBS iuap=(IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());
+		try {
+			informervo = (InformerVO) iuap.executeQuery(sql, new BeanProcessor(InformerVO.class));
+		} catch (BusinessException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		repayintstvo.setPk_currtype("1002Z0100000000001K1");
+		repayintstvo.setBusistatus(-1);
+		repayintstvo.setVbillstatus(-1);
+		repayintstvo.setPk_srcbill(pk);
+		repayintstvo.setPk_group(informervo.getPk_group());
+		repayintstvo.setPk_org(informervo.getPk_org());
+		repayintstvo.setPk_org_v(informervo.getPk_org_v());
+		repayintstvo.setSrcbillno(informervo.getVbillno());
+		repayintstvo.setVdef7(informervo.getMoneyy().toString());//上游金额
+		repayintstvo.setVdef4(informervo.getBankrelated_code());//对账标识码
+		aggrepayintstvo.setParent(repayintstvo);
+		BillCardConvertProcessor processor = new BillCardConvertProcessor();
+		billCard = processor.convert("36630BLPI_CARD", aggrepayintstvo);
+		Translator translator = new Translator();
+		translator.translate(billCard);
+		BillCardFormulaHandler handler = new BillCardFormulaHandler(billCard);
+		handler.handleLoadFormula();
+		handler.handleBodyLoadFormula();
+		try {
+			AllocateDefaultValue4NCCUtil.setAllocateDefaultValue(billCard, true, false);
+		} catch (BusinessException var15) {
+			ExceptionUtils.wrapException(var15);
+		}
+		return billCard;
+	}
+
+}

+ 162 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/repayinterest/action/RepayIntstSaveAction.java

@@ -0,0 +1,162 @@
+package nccloud.web.cdmc.cdm.repayinterest.action;
+
+import java.util.List;
+import java.util.Map;
+
+import nc.bs.dao.BaseDAO;
+import nc.itf.cdmc.cdm.financepay.IFinancepayQueryService;
+import nc.ui.ls.MessageBox;
+import nc.vo.cdmc.cdm.financepay.AggFinancepayVO;
+import nc.vo.cdmc.cdm.financepay.FinStatusEnum;
+import nc.vo.cdmc.cdm.financepay.FinancepayVO;
+import nc.vo.cdmc.cdm.repayintst.AggRepayIntstVO;
+import nc.vo.cdmc.cdm.repayintst.RepayIntstVO;
+import nc.vo.cdmc.pub.adapter.FinancepaySagaInfoAdapter;
+import nc.vo.cdmc.pub.adapter.RepayIntstSagaInfoAdapter;
+import nc.vo.cdmc.pub.constants.CdmcPubConst;
+import nc.vo.ml.NCLangRes4VoTransl;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.CircularlyAccessibleValueObject;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.pub.lang.UFDouble;
+import nccloud.framework.core.exception.ExceptionUtils;
+import nccloud.framework.service.ServiceLocator;
+import nccloud.framework.web.container.ClientInfo;
+import nccloud.framework.web.container.SessionContext;
+import nccloud.pubitf.tmpub.pub.ISagasBizService;
+import nccloud.vo.tmpub.precison.PrecisionField;
+import nccloud.web.cdmc.cdm.repayinterest.util.RepayIntstPubUtil;
+import nccloud.web.cdmc.common.action.CommonSaveAction;
+import nccloud.web.tmpub.pub.translate.ExtraTranslator;
+
+public class RepayIntstSaveAction extends CommonSaveAction<AggRepayIntstVO> {
+	protected AggRepayIntstVO doBusinessSave(AggRepayIntstVO operaVO) throws BusinessException {
+		this.doBefore(operaVO);
+		RepayIntstVO headvo =  operaVO.getParentVO();
+		String vdef7 = headvo.getVdef7();//上游金额
+		String pk_src = headvo.getPk_srcbill();//上游单据主键
+		String billmaker = headvo.getBillmaker();//制单人
+		if(vdef7!=null&&vdef7!=""&&pk_src!="") {
+			UFDouble headmoney = new UFDouble(vdef7);
+			UFDouble payintmoney = headvo.getPayintmoney();
+			if(!payintmoney.equals(headmoney)) {
+				ExceptionUtils.wrapBusinessException("付息金额和到账通知的金额不等,请检验。");
+				return null;
+			}
+		}
+		Object result = super.callActionScript(CdmcPubConst.CONST_ACTION_SAVEBASE,
+				CdmcPubConst.CONST_BILLTYPE_REPAYINTST, new AggRepayIntstVO[]{operaVO});
+		AggRepayIntstVO[] saveVOs = (AggRepayIntstVO[]) ((AggRepayIntstVO[]) result);
+		AggRepayIntstVO savevo = saveVOs[0];
+		String pk_lower = savevo.getParentVO().getPk_repayintst();
+		String ts = savevo.getParentVO().getTs().toString();
+		String pk_billtypecode = savevo.getParentVO().getPk_billtypecode();
+		try {
+			String sql = "update cmp_informer set generateflag = 'hasgenerate',usemoney = '"+vdef7+"',pk_claimer='"+billmaker+"',claimdate='"+ts+"',pk_lower = '"+pk_lower+"',lowerbilltype='"+pk_billtypecode+"' where dr=0 and pk_informer = '"+pk_src+"'";
+			int count = new BaseDAO().executeUpdate(sql);
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		return saveVOs[0];
+	}
+
+	protected String getPageCode() {
+		return CdmcPubConst.CONST_PAGECODE_REPAYINTST_CARD;
+	}
+
+	private void validateBeforeSave(AggRepayIntstVO operaVO) {
+		RepayIntstVO head = (RepayIntstVO) operaVO.getParent();
+		String srctype = head.getPk_srcbilltypeid();
+		if (CdmcPubConst.CONST_BILLTYPE_REPAYPRCPL.equals(srctype)) {
+			ExceptionUtils.wrapBusinessException(
+					NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0049"));
+			
+			
+			
+		}
+
+	}
+
+	private void doBefore(AggRepayIntstVO operaVO) {
+		ClientInfo clientInfo = SessionContext.getInstance().getClientInfo();
+		RepayIntstVO head = (RepayIntstVO) operaVO.getParent();
+		if (head.getPk_repayintst() == null) {
+			head.setCreator(clientInfo.getUserid());
+			head.setBillmakedate(new UFDate(clientInfo.getBizDateTime()));
+			head.setPk_group(clientInfo.getPk_group());
+			head.setPk_billtypecode(CdmcPubConst.CONST_BILLTYPE_REPAYINTST);
+			head.setPk_billtypeid(CdmcPubConst.CONST_BILLTYPEPK_REPAYINTST);
+			head.setBusistatus(-1);
+		} else {
+			try {
+				RepayIntstSagaInfoAdapter adapter = new RepayIntstSagaInfoAdapter();
+				ISagasBizService sagaService = (ISagasBizService) ServiceLocator.find(ISagasBizService.class);
+				sagaService.checkFrozen(adapter, head.getPrimaryKey());
+				FinancepaySagaInfoAdapter adapterFinancePay = new FinancepaySagaInfoAdapter();
+				if (head.getLoancode() != null) {
+					sagaService.checkFrozen(adapterFinancePay, head.getLoancode());
+				}
+			} catch (Exception var9) {
+				ExceptionUtils.wrapBusinessException(var9.getMessage());
+			}
+
+			head.setModifier(clientInfo.getUserid());
+			CircularlyAccessibleValueObject[] allchildren = operaVO.getAllChildrenVO();
+			if (allchildren != null) {
+				CircularlyAccessibleValueObject[] var13 = allchildren;
+				int var15 = allchildren.length;
+
+				for (int var7 = 0; var7 < var15; ++var7) {
+					CircularlyAccessibleValueObject obj = var13[var7];
+					obj.setAttributeValue("pk_repayintst", head.getPk_repayintst());
+				}
+			}
+		}
+
+		if (head.getShdpayintmny().compareTo(head.getPayintmoney()) < 0) {
+			ExceptionUtils.wrapBusinessException(
+					NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0050"));
+		}
+
+		try {
+			AggFinancepayVO[] payVOS = ((IFinancepayQueryService) ServiceLocator.find(IFinancepayQueryService.class))
+					.getAggVOsByPKs(new String[]{head.getLoancode()});
+			if (payVOS == null || payVOS.length == 0) {
+				ExceptionUtils.wrapBusinessException(
+						NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0040"));
+				
+				
+				
+			}
+
+			FinancepayVO financepayVO = payVOS[0].getParentVO();
+			if (FinStatusEnum.TERMINATE.toIntValue() == financepayVO.getBusistatus()
+					|| FinStatusEnum.FINISH.toIntValue() == financepayVO.getBusistatus()) {
+				ExceptionUtils.wrapBusinessException(
+						NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0051"));
+			}
+
+			if (financepayVO.getUnrepayintstmny() == null
+					|| financepayVO.getUnrepayintstmny().compareTo(UFDouble.ZERO_DBL) == 0) {
+				ExceptionUtils.wrapBusinessException(
+						NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0052"));
+			}
+		} catch (Exception var10) {
+			ExceptionUtils.wrapException(var10);
+		}
+
+	}
+
+	protected ExtraTranslator getExtraTranslator() {
+		return RepayIntstPubUtil.buildExtraTranslator();
+	}
+
+	protected Map<String, List<PrecisionField>> getBodyPrecisionFields() {
+		return RepayIntstPubUtil.getBodyPrecisionFields();
+	}
+
+	protected List<PrecisionField> getHeadPrecisionFields() {
+		return RepayIntstPubUtil.getHeadPrecisionFields();
+	}
+}

+ 80 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/repayprcpl/action/LinkBillToRepayprcplAction.java

@@ -0,0 +1,80 @@
+package nccloud.web.cdmc.cdm.repayprcpl.action;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import nc.impl.pubapp.pattern.data.vo.VOQuery;
+import nc.vo.cdmc.cdm.repayprcpl.AggRepayPrcplVO;
+import nc.vo.cdmc.cdm.repayprcpl.RepayPrcplVO;
+import nc.vo.cdmc.pub.constants.CdmcPubConst;
+import nc.vo.cmp.informer.InformerVO;
+import nc.vo.pub.lang.UFDate;
+import nccloud.dto.ifac.common.bean.IfacOperatorParam;
+import nccloud.framework.web.action.itf.ICommonAction;
+import nccloud.framework.web.container.ClientInfo;
+import nccloud.framework.web.container.IRequest;
+import nccloud.framework.web.container.SessionContext;
+import nccloud.framework.web.ui.pattern.billcard.BillCard;
+import nccloud.web.ifac.pub.util.NCCPageInfoUtil;
+import nccloud.web.sf.common.NCCUIDataModuleUtil;
+
+/**
+ * 到账通知发布生成贷款还本
+ * @author YY
+ *
+ */
+public class LinkBillToRepayprcplAction implements ICommonAction{
+
+	@Override
+	public Object doAction(IRequest request) {
+		try {
+			IfacOperatorParam parm = (IfacOperatorParam) NCCPageInfoUtil.getParam(request, IfacOperatorParam.class);
+			List<String> pksaleorder = new ArrayList<String>();//到账通知发布主键集合
+			String[] pks= parm.getPks();
+			pksaleorder.add(pks[0]);
+			
+			//获取单据VO
+			VOQuery<InformerVO> querysordr = new VOQuery<InformerVO>(InformerVO.class);
+			InformerVO[] informerVO = null; //到账通知发布主表
+			informerVO = querysordr.query(pksaleorder.toArray(new String[0]));
+			
+			AggRepayPrcplVO aggRepayPrcplVO = new AggRepayPrcplVO();
+			RepayPrcplVO repayPrcplVO = new RepayPrcplVO();
+			//来源单据主键
+			repayPrcplVO.setVdef4(pks[0]);
+			//财务组织
+			repayPrcplVO.setPk_org(informerVO[0].getPk_org());
+			//财务组织版本
+			repayPrcplVO.setPk_org_v(informerVO[0].getPk_org_v());
+			//对账标识
+			repayPrcplVO.setVdef5(informerVO[0].getBankrelated_code());
+			
+			ClientInfo clientInfo = SessionContext.getInstance().getClientInfo();
+
+			String billmaker = clientInfo.getUserid();
+			UFDate billmakedate = new UFDate(clientInfo.getBizDateTime());
+			repayPrcplVO.setBillmaker(billmaker);
+			repayPrcplVO.setBillmakedate(billmakedate);
+			repayPrcplVO.setRepaydate(billmakedate);
+			repayPrcplVO.setVbillstatus(-1);
+			repayPrcplVO.setBusistatus(0);
+			repayPrcplVO.setPk_group(clientInfo.getPk_group());
+			repayPrcplVO.setPk_billtypecode(CdmcPubConst.CONST_BILLTYPE_REPAYPRCPL);
+			repayPrcplVO.setPk_billtypeid(CdmcPubConst.CONST_BILLTYPEPK_REPAYPRCPL);
+			
+			
+			
+//			repayPrcplVO.setSrcbilltypecode(informerVO[0].getPk_billtypecode());//来源单据类型编码
+//			repayPrcplVO.setPk_srcbilltype(informerVO[0].getPk_billtypeid());//来源单据类型 到账通知 36S3
+			aggRepayPrcplVO.setParent(repayPrcplVO);
+			BillCard billCard = null;
+			billCard = NCCUIDataModuleUtil.buildCardDataFormula(aggRepayPrcplVO, "36630BLPI_CARD", "add");
+			return billCard;
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return null;
+		
+	}
+
+}

+ 39 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/repayprcpl/action/RepayPrcplAddAction.java

@@ -0,0 +1,39 @@
+package nccloud.web.cdmc.cdm.repayprcpl.action;
+
+import java.util.List;
+import java.util.Map;
+import nc.vo.cdmc.cdm.repayprcpl.AggRepayPrcplVO;
+import nc.vo.cdmc.pub.constants.CdmcPubConst;
+import nc.vo.pub.BusinessException;
+import nccloud.dto.cdmc.repayprcpl.utils.RepayPrcplUtil;
+import nccloud.vo.tmpub.precison.PrecisionField;
+import nccloud.web.cdmc.common.action.CommonSaveAction;
+
+public class RepayPrcplAddAction extends CommonSaveAction<AggRepayPrcplVO> {
+	protected AggRepayPrcplVO doBusinessSave(AggRepayPrcplVO operaVO) throws BusinessException {
+		this.validateBeforeSave(operaVO);
+		this.doBefore(operaVO);
+		Object result = super.callActionScript(CdmcPubConst.CONST_ACTION_SAVEBASE,
+				CdmcPubConst.CONST_BILLTYPE_REPAYPRCPL, new AggRepayPrcplVO[]{operaVO});
+		AggRepayPrcplVO[] saveVOs = (AggRepayPrcplVO[]) ((AggRepayPrcplVO[]) result);
+		return saveVOs[0];
+	}
+
+	protected String getPageCode() {
+		return CdmcPubConst.CONST_PAGECODE_REPAYPRCPL_CARD;
+	}
+
+	private void validateBeforeSave(AggRepayPrcplVO operaVO) {
+	}
+
+	private void doBefore(AggRepayPrcplVO operaVO) {
+	}
+
+	protected Map<String, List<PrecisionField>> getBodyPrecisionFields() {
+		return RepayPrcplUtil.getBodyPrecisionFields();
+	}
+
+	protected List<PrecisionField> getHeadPrecisionFields() {
+		return RepayPrcplUtil.getHeadPrecisionFields();
+	}
+}

+ 102 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/repayprcpl/action/RepayPrcplCommitAction.java

@@ -0,0 +1,102 @@
+package nccloud.web.cdmc.cdm.repayprcpl.action;
+
+import java.util.List;
+import java.util.Map;
+
+import nc.bs.framework.common.NCLocator;
+import nc.itf.cdmc.cdm.repayprcpl.IRepayPrcplQueryService;
+import nc.itf.uap.IUAPQueryBS;
+import nc.vo.cdmc.cdm.repayprcpl.AggRepayPrcplVO;
+import nc.vo.cdmc.cdm.repayprcpl.RepayPrcplVO;
+import nc.vo.cdmc.pub.adapter.FinancepaySagaInfoAdapter;
+import nc.vo.cdmc.pub.adapter.RepayPrcplSagaInfoAdapter;
+import nc.vo.cdmc.pub.constants.CdmcPubConst;
+import nc.vo.ml.NCLangRes4VoTransl;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.lang.UFDate;
+import nccloud.dto.cdmc.repayprcpl.utils.RepayPrcplUtil;
+import nccloud.framework.core.exception.ExceptionUtils;
+import nccloud.framework.service.ServiceLocator;
+import nccloud.framework.web.container.SessionContext;
+import nccloud.pub.tmpub.ms.vo.TMSagasBizInfoAdapter;
+import nccloud.pubitf.tmpub.pub.ISagasBizService;
+import nccloud.vo.tmpub.precison.PrecisionField;
+import nccloud.web.cdmc.common.action.CommonCommitAction;
+import nccloud.web.tmpub.pub.ms.util.SagasBizUtil;
+
+public class RepayPrcplCommitAction extends CommonCommitAction<AggRepayPrcplVO> {
+	private IRepayPrcplQueryService service = (IRepayPrcplQueryService) ServiceLocator
+			.find(IRepayPrcplQueryService.class);
+
+	protected AggRepayPrcplVO[] queryBillsByPks(String[] operaPks) throws BusinessException {
+		AggRepayPrcplVO[] aggvos = this.service.queryAggRepayPrcplByPks(operaPks);
+		if (aggvos == null || aggvos.length == 0) {
+			ExceptionUtils.wrapBusinessException(
+					NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_cdm001_0", "0cdmc_cdm001-0230"));
+		}
+
+		return aggvos;
+	}
+
+	protected String getActionCode() {
+		return CdmcPubConst.CONST_ACTION_SAVE;
+	}
+
+	protected String getBillTypeCode() {
+		return CdmcPubConst.CONST_BILLTYPE_REPAYPRCPL;
+	}
+
+	protected Object doBusinessProcess(AggRepayPrcplVO[] operaVOs, Object userobj) throws BusinessException {
+		try {
+			RepayPrcplSagaInfoAdapter adapter = new RepayPrcplSagaInfoAdapter();
+			String userId = SessionContext.getInstance().getClientInfo().getUserid();
+			ISagasBizService sagaService = (ISagasBizService) ServiceLocator.find(ISagasBizService.class);
+			AggRepayPrcplVO[] var6 = operaVOs;
+			int var7 = operaVOs.length;
+
+			for (int var8 = 0; var8 < var7; ++var8) {
+				AggRepayPrcplVO commitVO = var6[var8];
+				commitVO.getParentVO().setSubmitter(userId);
+				commitVO.getParentVO().setSubmitdate(new UFDate());
+				RepayPrcplVO parentVO = commitVO.getParentVO();
+				if (parentVO != null && parentVO.getPk_financepay() != null) {
+					FinancepaySagaInfoAdapter adapterFinancePay = new FinancepaySagaInfoAdapter();
+					sagaService.checkFrozen(adapterFinancePay, parentVO.getPk_financepay());
+				}
+			}
+
+			IUAPQueryBS iuap = NCLocator.getInstance().lookup(IUAPQueryBS.class);
+			//给银行对账-单位日记账标识码赋值
+			String sql ="update cmp_bankaccdetail "
+					+ "set bankrelated_code = '"+operaVOs[0].getParent().getAttributeValue("vdef5").toString()+"'   "
+							+ "where vbillno = '"+operaVOs[0].getParent().getAttributeValue("vbillno").toString()+"' and nvl(dr,0)=0";
+			iuap.executeQuery(sql, null);
+			
+			
+			
+			return super.doCommitProcess(operaVOs, userobj, new TMSagasBizInfoAdapter[]{adapter});
+		} catch (BusinessException var12) {
+			ExceptionUtils
+					.wrapException(NCLangRes4VoTransl.getNCLangRes().getStrByID("cdmc_ncc003_0", "0cdmc_ncc003-0039")
+							+ var12.getMessage(), var12);
+			return null;
+		}
+	}
+
+	protected Map<String, List<PrecisionField>> getBodyPrecisionFields() {
+		return RepayPrcplUtil.getBodyPrecisionFields();
+	}
+
+	protected List<PrecisionField> getHeadPrecisionFields() {
+		return RepayPrcplUtil.getHeadPrecisionFields();
+	}
+
+	protected void setOprBtnCode() {
+		try {
+			SagasBizUtil.setOperInfo((String) null, "commit");
+		} catch (BusinessException var2) {
+			ExceptionUtils.wrapException(var2);
+		}
+
+	}
+}

+ 122 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/repayprcpl/action/RepayPrcplSaveAction.java

@@ -0,0 +1,122 @@
+package nccloud.web.cdmc.cdm.repayprcpl.action;
+
+import java.util.List;
+import java.util.Map;
+
+import nc.bs.framework.common.NCLocator;
+import nc.impl.pubapp.pattern.data.vo.VOQuery;
+import nc.itf.uap.IVOPersistence;
+import nc.vo.cdmc.cdm.repayprcpl.AggRepayPrcplVO;
+import nc.vo.cdmc.cdm.repayprcpl.RePayBillStatusEnum;
+import nc.vo.cdmc.cdm.repayprcpl.RepayPrcplPlanVO;
+import nc.vo.cdmc.cdm.repayprcpl.RepayPrcplVO;
+import nc.vo.cdmc.pub.adapter.FinancepaySagaInfoAdapter;
+import nc.vo.cdmc.pub.adapter.RepayPrcplSagaInfoAdapter;
+import nc.vo.cdmc.pub.constants.CdmcPubConst;
+import nc.vo.cmp.informer.InformerVO;
+import nc.vo.ifm.redeem.InvestRedeemVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.ISuperVO;
+import nccloud.dto.cdmc.repayprcpl.utils.RepayPrcplUtil;
+import nccloud.framework.core.exception.ExceptionUtils;
+import nccloud.framework.service.ServiceLocator;
+import nccloud.framework.web.container.ClientInfo;
+import nccloud.framework.web.container.SessionContext;
+import nccloud.pubitf.tmpub.pub.ISagasBizService;
+import nccloud.pubitf.tmpub.pub.ITMPrecisionServiceForNCC;
+import nccloud.vo.tmpub.precison.PrecisionField;
+import nccloud.web.cdmc.common.action.CommonSaveAction;
+
+public class RepayPrcplSaveAction extends CommonSaveAction<AggRepayPrcplVO> {
+	protected AggRepayPrcplVO doBusinessSave(AggRepayPrcplVO operaVO) throws BusinessException {
+		this.validateBeforeSave(operaVO);
+		this.doBefore(operaVO);
+		ISuperVO[] children = operaVO.getChildren(RepayPrcplPlanVO.class);
+
+		for (int i = 0; i < children.length; ++i) {
+			children[i].setAttributeValue("pk_repprcpl_plan", (Object) null);
+			children[i].setStatus(2);
+		}
+
+		Object result = super.callActionScript(CdmcPubConst.CONST_ACTION_SAVEBASE,
+				CdmcPubConst.CONST_BILLTYPE_REPAYPRCPL, new AggRepayPrcplVO[]{operaVO});
+		AggRepayPrcplVO[] saveVOs = (AggRepayPrcplVO[]) ((AggRepayPrcplVO[]) result);
+		saveVOs = (AggRepayPrcplVO[]) ((AggRepayPrcplVO[]) ((ITMPrecisionServiceForNCC) ServiceLocator
+				.find(ITMPrecisionServiceForNCC.class)).processAggVOPrecision(saveVOs, this.getHeadPrecisionFields(),
+						RepayPrcplUtil.getBodyPrecisionFields4VO(), false, true));
+		
+		
+		/*******保存回写数据到到账发布****************/
+		
+		  RepayPrcplVO headvo=operaVO.getParentVO();
+			if (null != headvo.getVdef4()) {
+	    	 VOQuery<InformerVO> querysordr = new VOQuery<InformerVO>(InformerVO.class);
+	         //到账通知发布主表
+	    	 String [] pks=new String[] {headvo.getVdef4()};
+	   	    InformerVO[] informerVO = querysordr.query(pks);
+	   	    
+	    	 informerVO[0].setGenerateflag("hasgenerate");//已生成
+//	    	 informerVO[0].setUsemoney(headvo.getRedeemmoney());//赎回金额
+	    	 informerVO[0].setPk_claimer(headvo.getBillmaker());//认证人
+	    	 informerVO[0].setClaimdate(headvo.getBillmakedate());//认证日期
+	    	 informerVO[0].setPk_lower(headvo.getPk_repayprcpl());//主键
+	    	 informerVO[0].setLowerbilltype("36CX");
+	    	 informerVO[0].setDr(0);
+	    //	 informerVO[0].setSubfamily("3642");
+	    	 
+	    	 IVOPersistence ivopce=(IVOPersistence) NCLocator.getInstance().lookup(IVOPersistence.class.getName());
+	    	 
+	    	 try {
+				ivopce.updateVO(informerVO[0]);
+			} catch (BusinessException e) {
+				// TODO Auto-generated catch block
+				ExceptionUtils.wrapBusinessException(e.getMessage());
+			}
+	    	 
+	    }
+		
+		/*********************************************************************************************/
+		
+		return saveVOs[0];
+	}
+
+	protected String getPageCode() {
+		return CdmcPubConst.CONST_PAGECODE_REPAYPRCPL_CARD;
+	}
+
+	private void validateBeforeSave(AggRepayPrcplVO operaVO) {
+	}
+
+	private void doBefore(AggRepayPrcplVO operaVO) {
+		ClientInfo clientInfo = SessionContext.getInstance().getClientInfo();
+		RepayPrcplVO parentVO = operaVO.getParentVO();
+
+		try {
+			if (parentVO != null && parentVO.getPrimaryKey() != null) {
+				RepayPrcplSagaInfoAdapter adapter = new RepayPrcplSagaInfoAdapter();
+				ISagasBizService sagaService = (ISagasBizService) ServiceLocator.find(ISagasBizService.class);
+				sagaService.checkFrozen(adapter, parentVO.getPrimaryKey());
+				if (parentVO.getPk_financepay() != null) {
+					FinancepaySagaInfoAdapter adapterFinancePay = new FinancepaySagaInfoAdapter();
+					sagaService.checkFrozen(adapterFinancePay, parentVO.getPk_financepay());
+				}
+			}
+		} catch (Exception var7) {
+			ExceptionUtils.wrapBusinessException(var7.getMessage());
+		}
+
+		parentVO.setPk_billtypecode(CdmcPubConst.CONST_BILLTYPE_REPAYPRCPL);
+		parentVO.setPk_billtypeid(CdmcPubConst.CONST_BILLTYPEPK_REPAYPRCPL);
+		parentVO.setPk_group(clientInfo.getPk_group());
+		parentVO.setVbillstatus(-1);
+		parentVO.setBusistatus(RePayBillStatusEnum.SAVE.toIntValue());
+	}
+
+	protected Map<String, List<PrecisionField>> getBodyPrecisionFields() {
+		return RepayPrcplUtil.getBodyPrecisionFields();
+	}
+
+	protected List<PrecisionField> getHeadPrecisionFields() {
+		return RepayPrcplUtil.getHeadPrecisionFields();
+	}
+}

+ 27 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/repayprcpl/handler/RepayPrcplCardAfterEditHandler.java

@@ -0,0 +1,27 @@
+package nccloud.web.cdmc.cdm.repayprcpl.handler;
+
+import java.util.HashMap;
+import java.util.Map;
+import nccloud.framework.web.ui.pattern.extbillcard.ExtBillCard;
+import nccloud.framework.web.ui.pattern.extbillcard.ExtCardHeadAfterEditEvent;
+import nccloud.web.tmpub.handler.AbstractCommonAfterEditHandler;
+
+public class RepayPrcplCardAfterEditHandler extends RepayPrcplAbstractEditHandler {
+	private static final String EVENT_DEFAULTVALUE = "event_defaultvalue";
+	private static Map<String, AbstractCommonAfterEditHandler<ExtCardHeadAfterEditEvent, ExtBillCard>> handlermap = new HashMap();
+
+	protected Map<String, AbstractCommonAfterEditHandler<ExtCardHeadAfterEditEvent, ExtBillCard>> getHandlerMap() {
+		return handlermap;
+	}
+
+	static {
+		handlermap.put("pk_org", new RepayPrcplOrgEditHandler());
+		handlermap.put("pk_financepay", new RepayPrcplFinPayEditHandler());
+		handlermap.put("repaydate", new RepayPrcplRepayDateEditHandler());
+		handlermap.put("pk_currtype", new RepayPrcplCurrtypeEditHandler());
+		handlermap.put("repaymny", new RepayPrcplRepayMnyEditHandler());
+		handlermap.put("olcrate", new RepayPrcplOlcrateEditHandler());
+		handlermap.put("glcrate", new RepayPrcplOlcrateEditHandler());
+		handlermap.put("gllcrate", new RepayPrcplOlcrateEditHandler());
+	}
+}

+ 66 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/cdm/repayprcpl/handler/RepayPrcplOrgEditHandler.java

@@ -0,0 +1,66 @@
+package nccloud.web.cdmc.cdm.repayprcpl.handler;
+
+import nc.vo.cdmc.cdm.repayprcpl.AggRepayPrcplVO;
+import nc.vo.cdmc.cdm.repayprcpl.RepayPrcplVO;
+import nc.vo.cdmc.pub.constants.CdmcPubConst;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.lang.UFDate;
+import nccloud.framework.web.container.ClientInfo;
+import nccloud.framework.web.container.SessionContext;
+import nccloud.web.cdmc.cdm.repayprcpl.event.RepayPrcplEditEvent;
+
+public class RepayPrcplOrgEditHandler extends RepayPrcplCommonAfterEditHandler {
+	protected AggRepayPrcplVO processNew(AggRepayPrcplVO repayAggvo, Object oldvalue) throws BusinessException {
+		this.setDefaultValue(repayAggvo);
+		return repayAggvo;
+	}
+
+	protected AggRepayPrcplVO clearInfo(AggRepayPrcplVO repayAggvo) throws BusinessException {
+		RepayPrcplVO pvo = repayAggvo.getParentVO();
+		String[] fields = new String[]{"pk_repayprcpl", "pk_group", "pk_org", "pk_org_v", "pk_billtypeid",
+				"pk_billtypecode", "busistatus", "vbillstatus", "pk_financepay", "vbillno", "voucherflag", "repaydate",
+				"memo", "approver", "dapprovedate", "approvenote", "creator", "creationtime", "modifier",
+				"modifiedtime", "billmaker", "billmakedate", "billmaketime", "makervuser", "makevdate", "makevtime",
+				"vdef1", "vdef2", "vdef3", "vdef4", "vdef5", "vdef6", "vdef7", "vdef8", "vdef9", "vdef10", "vdef11",
+				"vdef12", "vdef13", "vdef14", "vdef15", "vdef16", "vdef17", "vdef18", "vdef19", "vdef20"};
+		String[] var4 = fields;
+		int var5 = fields.length;
+
+		for (int var6 = 0; var6 < var5; ++var6) {
+			String field = var4[var6];
+			this.setAttrValue(pvo, field, (Object) null);
+		}
+
+		repayAggvo = this.processFinPayInfo(repayAggvo, (String) null);
+		return repayAggvo;
+	}
+
+	private AggRepayPrcplVO processFinPayInfo(AggRepayPrcplVO repayAggvo, String pk_finpay) throws BusinessException {
+		RepayPrcplFinPayEditHandler finPayhandler = new RepayPrcplFinPayEditHandler();
+		RepayPrcplEditEvent<AggRepayPrcplVO> event = new RepayPrcplEditEvent("pk_financepay", repayAggvo, pk_finpay,
+				(Object) null);
+		return finPayhandler.processEvent(event);
+	}
+
+	protected void setDefaultValue(AggRepayPrcplVO vo) throws BusinessException {
+		ClientInfo clientInfo = SessionContext.getInstance().getClientInfo();
+		RepayPrcplVO pvo = vo.getParentVO();
+		String billmaker = clientInfo.getUserid();
+		UFDate billmakedate = new UFDate(clientInfo.getBizDateTime());
+		pvo.setBillmaker(billmaker);
+		pvo.setBillmakedate(billmakedate);
+		pvo.setRepaydate(billmakedate);
+		pvo.setVbillstatus(-1);
+		pvo.setBusistatus(0);
+		pvo.setPk_group(clientInfo.getPk_group());
+		pvo.setPk_billtypecode(CdmcPubConst.CONST_BILLTYPE_REPAYPRCPL);
+		pvo.setPk_billtypeid(CdmcPubConst.CONST_BILLTYPEPK_REPAYPRCPL);
+		
+		
+		pvo.setPk_financepay((String) null);
+	}
+
+	public AggRepayPrcplVO processEvent(RepayPrcplEditEvent<AggRepayPrcplVO> event) {
+		return null;
+	}
+}

+ 53 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cdmc/repayinterest/action/LinkBillToRepayintstAction.java

@@ -0,0 +1,53 @@
+//package nccloud.web.cdmc.repayinterest.action;
+//
+//import java.util.ArrayList;
+//import java.util.List;
+//
+//import nc.impl.pubapp.pattern.data.vo.VOQuery;
+//import nc.vo.cdmc.cdm.repayintst.AggRepayIntstVO;
+//import nc.vo.cdmc.cdm.repayintst.RepayIntstVO;
+//import nc.vo.cmp.informer.InformerVO;
+//import nccloud.dto.ifac.common.bean.IfacOperatorParam;
+//import nccloud.framework.web.action.itf.ICommonAction;
+//import nccloud.framework.web.container.IRequest;
+//import nccloud.framework.web.ui.pattern.billcard.BillCard;
+//import nccloud.web.ifac.pub.util.NCCPageInfoUtil;
+//import nccloud.web.sf.common.NCCUIDataModuleUtil;
+///**
+// * 到账通知发布生成贷款付息
+// * @author YY
+// *
+// */
+//public class LinkBillToRepayintstAction implements ICommonAction{
+//
+//	@Override
+//	public Object doAction(IRequest request) {
+//	try {
+//		IfacOperatorParam parm = (IfacOperatorParam) NCCPageInfoUtil.getParam(request, IfacOperatorParam.class);
+//		List<String> pksaleorder = new ArrayList<String>();//到账通知发布主键集合
+//		String[] pks= parm.getPks();
+//		pksaleorder.add(pks[0]);
+//		
+//		//获取单据VO
+//		VOQuery<InformerVO> querysordr = new VOQuery<InformerVO>(InformerVO.class);
+//		InformerVO[] informerVO = null; //到账通知发布主表
+//		informerVO = querysordr.query(pksaleorder.toArray(new String[0]));
+//		AggRepayIntstVO aggRepayIntstVO = new AggRepayIntstVO();
+//		RepayIntstVO repayIntstVO = new RepayIntstVO();
+//		//来源单据主键
+//		repayIntstVO.setPk_srcbill(pks[0]);
+//		//财务组织
+//		repayIntstVO.setPk_org(informerVO[0].getPk_org());
+//		//财务组织版本
+//		repayIntstVO.setPk_org_v(informerVO[0].getPk_org_v());
+//		aggRepayIntstVO.setParent(repayIntstVO);
+//		BillCard billCard = null;
+//		billCard = NCCUIDataModuleUtil.buildCardDataFormula(aggRepayIntstVO, "36630BLPI_CARD", "add");
+//		return billCard;
+//	} catch (Exception e) {
+//		e.printStackTrace();
+//	}
+//		return null;
+//	}
+//
+//}

+ 57 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cmp/informer/informer/action/InformerLinkBill.java

@@ -0,0 +1,57 @@
+package nccloud.web.cmp.informer.informer.action;
+
+import java.util.Collection;
+
+import nc.md.persist.framework.IMDPersistenceQueryService;
+import nc.vo.cmp.informer.InformerVO;
+import nc.vo.ml.NCLangRes4VoTransl;
+import nc.vo.pub.BusinessException;
+import nccloud.dto.cmp.informer.vo.InformerLinkBillInfo;
+import nccloud.dto.tmpub.bean.LinkInfor;
+import nccloud.framework.core.exception.ExceptionUtils;
+import nccloud.framework.core.json.IJson;
+import nccloud.framework.service.ServiceLocator;
+import nccloud.framework.web.action.itf.ICommonAction;
+import nccloud.framework.web.container.IRequest;
+import nccloud.framework.web.json.JsonFactory;
+import nccloud.web.tmpub.pub.util.NCCLinkAppUtil;
+
+public class InformerLinkBill implements ICommonAction {
+	public Object doAction(IRequest request) {
+		try {
+			String read = request.read();
+			IJson json = JsonFactory.create();
+			InformerLinkBillInfo info = (InformerLinkBillInfo) json.fromJson(read, InformerLinkBillInfo.class);
+			//add by ZTH
+			
+			String where = " pk_lower = '" + info.getPk() + "'";
+			Collection<?> bills = null;
+			bills = ((IMDPersistenceQueryService) ServiceLocator.find(IMDPersistenceQueryService.class))
+					.queryBillOfVOByCond(InformerVO.class, where, true, false);
+			InformerVO[] informervVO = (InformerVO[]) bills.toArray(new InformerVO[0]);
+			String billtype=info.getBilltype();
+//			if(informervVO.length>0) {
+//				String subfamily=informervVO[0].getSubfamily();
+//				if("3642".equals(subfamily)) {
+//					billtype="3642";
+//				}
+//				
+//				
+//			}
+			/*********************************/
+			
+			LinkInfor buildLinkInfor = NCCLinkAppUtil.buildLinkInfor(new String[]{info.getPk()}, billtype);
+			if (buildLinkInfor.getUrl() != null && !buildLinkInfor.getUrl().equals("")) {
+				buildLinkInfor.setUrl(buildLinkInfor.getUrl().substring(18));
+				return buildLinkInfor;
+			} else {
+				throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607nccloud_ncc_0",
+						"03607nccloud_ncc-0247") + info.getBilltype()
+						+ NCLangRes4VoTransl.getNCLangRes().getStrByID("3607nccloud_ncc_0", "03607nccloud_ncc-0248"));
+			}
+		} catch (BusinessException var6) {
+			ExceptionUtils.wrapException(var6);
+			return null;
+		}
+	}
+}

+ 188 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/cmp/informer/informer/action/ListCancelGenerateAction.java

@@ -0,0 +1,188 @@
+package nccloud.web.cmp.informer.informer.action;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import nc.vo.cdmc.cdm.repayintst.AggRepayIntstVO;
+import nc.vo.cdmc.cdm.repayprcpl.AggRepayPrcplVO;
+import nc.bs.framework.common.NCLocator;
+import nc.bs.framework.json.core.exception.BusinessException;
+import nc.impl.pubapp.pattern.data.vo.VOQuery;
+import nc.itf.obm.ebank.cjzf.IEbankYhhd;
+import nc.itf.uap.IUAPQueryBS;
+import nc.itf.uap.IVOPersistence;
+import nc.itf.uap.pf.IPFBusiAction;
+import nc.jdbc.framework.processor.BeanProcessor;
+import nc.md.persist.framework.IMDPersistenceQueryService;
+import nc.ui.trade.business.HYPubBO_Client;
+import nc.vo.cdmc.cdm.contract.ContractVO;
+import nc.vo.cdmc.cdm.contract.PayPlanVO;
+import nc.vo.cdmc.cdm.financepay.AggFinancepayVO;
+import nc.vo.cdmc.cdm.financepay.FinancepayVO;
+import nc.vo.cmp.informer.GenerateFlagEnum;
+import nc.vo.cmp.informer.InformerAppendVO;
+import nc.vo.cmp.informer.InformerVO;
+import nc.vo.ifm.apply.AggInvestApplyVO;
+import nc.vo.ifm.redeem.AggInvestRedeemVO;
+import nc.vo.ifm.redeem.InvestRedeemVO;
+import nc.vo.ml.AbstractNCLangRes;
+import nc.vo.ml.NCLangRes4VoTransl;
+import nc.vo.pub.lang.UFBoolean;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.pub.lang.UFDouble;
+import nc.vo.pub.workflownote.WorkflownoteVO;
+import nccloud.framework.core.exception.ExceptionUtils;
+import nccloud.framework.service.ServiceLocator;
+import nccloud.framework.web.action.itf.ICommonAction;
+import nccloud.framework.web.container.IRequest;
+import nccloud.framework.web.ui.pattern.grid.Grid;
+import nccloud.pubitf.cmp.informer.INCCInformerManageService;
+import nccloud.web.cmp.informer.action.InformerAction;
+
+public class ListCancelGenerateAction extends InformerAction
+implements ICommonAction
+{
+public Object doAction(IRequest request)
+{
+  try
+  {
+    IEbankYhhd IEbankYhhdservice = (IEbankYhhd)ServiceLocator.find(IEbankYhhd.class);
+
+    InformerVO[] informvos = getOperateInformerVOs(request);
+
+    InformerVO[] cancelvos = getRelationVO(informvos);
+
+    List list = new ArrayList();
+
+    InformerAppendVO[] appendvos = new InformerAppendVO[cancelvos.length];
+    if ((appendvos == null) || (appendvos.length == 0)) {
+      ExceptionUtils.wrapBusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607nccloud_ncc1_0", "03607nccloud_ncc1-0025"));
+    }
+    IUAPQueryBS iuap = NCLocator.getInstance().lookup(IUAPQueryBS.class);
+    WorkflownoteVO Workflownote = new WorkflownoteVO();
+    IMDPersistenceQueryService service = NCLocator.getInstance().lookup(IMDPersistenceQueryService.class);
+    IPFBusiAction ipf = NCLocator.getInstance().lookup(IPFBusiAction.class);
+    HashSet hs = new HashSet();
+    IVOPersistence IVOPersistence = (IVOPersistence) NCLocator.getInstance().lookup(IVOPersistence.class);
+    for (int i = 0; i < cancelvos.length; i++) {
+
+			/**
+			 * 
+			 * 取消生单的理财赎回删除
+			 * 
+			 */
+
+			if ("3642".equals(cancelvos[i].getLowerbilltype())) {
+//	            IVOPersistence.deleteByClause(InvestRedeemVO.class, "pk_redeem='" + cancelvos[i].getPk_lower() + "' and dr=0 ");
+				//删除理财赎回单据
+				AggInvestRedeemVO redeemaggvo = (AggInvestRedeemVO) service.queryBillOfNCObjectByPK(AggInvestRedeemVO.class, cancelvos[i].getPk_lower()).getContainmentObject();
+				ipf.processAction("DELETE", "3642", null, redeemaggvo, null, null);
+//	   	    	cancelvos[i].setGenerateflag("hasnogenerate");//未生成
+//	   	    	cancelvos[i].setUsemoney(UFDouble.ZERO_DBL);//赎回金额
+				cancelvos[i].setPk_claimer("");// 认证人
+				cancelvos[i].setClaimdate(null);// 认证日期
+//	   	    	cancelvos[i].setPk_lower("");//主键
+//	   	    	cancelvos[i].setLowerbilltype("");//单据类型---暂时处理解决  【不能识别下游单据3642】
+//	   	    	cancelvos[i].setDr(0);
+//	   	    	cancelvos[i].setSubfamily("");
+				IVOPersistence.updateVO(cancelvos[i]);
+			}
+
+			/**
+			 * 
+			 * 取消生单的理财申购删除
+			 * 
+			 */
+			if ("3641".equals(cancelvos[i].getLowerbilltype())) {
+				AggInvestApplyVO aggInvestApplyVO = (AggInvestApplyVO) service.queryBillOfNCObjectByPK(AggInvestApplyVO.class, cancelvos[i].getPk_lower()).getContainmentObject();
+				ipf.processAction("DELETE", "3641", Workflownote, aggInvestApplyVO, null, null);
+//				try {
+//					String sql = "update cmp_informer set Pk_claimer='',Claimdate='' where pk_informer = '"+ cancelvos[i].getPk_informer() + "' and nvl(dr,0)=0";
+//					iuap.executeQuery(sql, null);
+//				} catch (BusinessException localBusinessException) {
+//					// TODO: handle exception
+//				}
+				
+				cancelvos[i].setPk_claimer("");// 认证人
+				cancelvos[i].setClaimdate(null);// 认证日期
+				IVOPersistence.updateVO(cancelvos[i]);
+				
+			}
+			
+
+			list.add(cancelvos[i].getPk_informer());
+			appendvos[i] = getInformerManageService().cancelMakeBill(cancelvos[i]);
+			
+      
+      /**
+       * 取消生单的贷款放款删除
+       */
+		if("36Z3".equals(cancelvos[i].getLowerbilltype())) {
+      	try {
+	    		AggFinancepayVO aggfinancepayvo = (AggFinancepayVO) service.queryBillOfNCObjectByPK(AggFinancepayVO.class,cancelvos[i].getPk_lower()).getContainmentObject();
+				ipf.processAction("DELETE", "36Z3", null, aggfinancepayvo, null, null);//删除贷款付款单
+			} catch (Exception e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+      	
+      	cancelvos[i].setGenerateflag("hasnogenerate");
+      	cancelvos[i].setUsemoney(new UFDouble(0));
+      	cancelvos[i].setPk_claimer("");
+      	cancelvos[i].setUsemoney(new UFDouble(0));
+      	cancelvos[i].setClaimdate(null);
+      	cancelvos[i].setPk_lower("");
+      	cancelvos[i].setLowerbilltype("");
+      	IVOPersistence.updateVO(cancelvos[i]);//修改到账通知单
+      }
+			if("36Z5".equals(cancelvos[i].getLowerbilltype())) {
+	        	try {
+	        		AggRepayIntstVO aggrepayintstvo = (AggRepayIntstVO) service.queryBillOfNCObjectByPK(AggRepayIntstVO.class,cancelvos[i].getPk_lower()).getContainmentObject();
+					ipf.processAction("DELETE", "36Z5", null, aggrepayintstvo, null, null);//删除贷款付息单
+				} catch (Exception e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				}
+	        	
+	        	cancelvos[i].setGenerateflag("hasnogenerate");
+	        	cancelvos[i].setUsemoney(new UFDouble(0));
+	        	cancelvos[i].setPk_claimer("");
+	        	cancelvos[i].setUsemoney(new UFDouble(0));
+	        	cancelvos[i].setClaimdate(null);
+	        	cancelvos[i].setPk_lower("");
+	        	cancelvos[i].setLowerbilltype("");
+	        	IVOPersistence.updateVO(cancelvos[i]);//修改到账通知单
+	        }
+			
+			//内贷还本
+			if("36CX".equals(cancelvos[i].getLowerbilltype())) {
+				AggRepayPrcplVO repaaycpggvo = (AggRepayPrcplVO) service.queryBillOfNCObjectByPK(AggRepayPrcplVO.class, cancelvos[i].getPk_lower()).getContainmentObject();
+				ipf.processAction("DELETE", "36CX", null, repaaycpggvo, null, null);
+				cancelvos[i].setPk_claimer("");// 认证人
+				cancelvos[i].setClaimdate(null);// 认证日期
+				IVOPersistence.updateVO(cancelvos[i]);
+			}
+			
+			
+
+			if (cancelvos[i].getTranserial() != null) {
+				hs.add(cancelvos[i].getTranserial());
+			}
+		}
+    
+    String[] transerials = (String[])hs.toArray(new String[0]);
+
+    IEbankYhhdservice.DzdAutoLinkCancel(transerials);
+
+    String[] status = { GenerateFlagEnum.HASNOGENERATE
+      .getGenerateFlag(), GenerateFlagEnum.HASRELEASE
+      .getGenerateFlag() };
+    Grid grid = getResultGrid(status, list, request);
+    return getResultVO(cancelvos, appendvos, grid);
+  } catch (Exception e) {
+    ExceptionUtils.wrapException(e);
+  }
+
+  return null;
+}
+}

+ 84 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/icdmc/icdmc/repayprcpl/action/DeliveryToRepayPrcplAction.java

@@ -0,0 +1,84 @@
+package nccloud.web.icdmc.icdmc.repayprcpl.action;
+
+import nc.bs.framework.common.NCLocator;
+import nc.itf.ifac.IFixedDateWithdrawMaintain;
+import nc.itf.sf.delivery.IDeliveryQueryService;
+import nc.itf.sf.deliveryreceipt.IDeliveryReceiptQueryService;
+import nc.itf.uap.pf.IPfExchangeService;
+import nc.vo.icdmc.icdmc.repayprcpl.AggRepayPrcplVO;
+import nc.vo.ifac.fixeddatewithdraw.AggFixedDateWithdrawVO;
+import nc.vo.ml.NCLangRes4VoTransl;
+import nc.vo.pub.BusinessException;
+import nc.vo.pubapp.pattern.model.entity.bill.AbstractBill;
+import nc.vo.sf.allocate.AggAllocateVO;
+import nc.vo.sf.delivery.AggDeliveryVO;
+import nc.vo.sf.deliveryreceipt.AggDeliveryReceiptVO;
+import nccloud.dto.ifac.common.bean.IfacOperatorParam;
+import nccloud.framework.core.exception.ExceptionUtils;
+import nccloud.framework.service.ServiceLocator;
+import nccloud.framework.web.action.itf.ICommonAction;
+import nccloud.framework.web.container.IRequest;
+import nccloud.framework.web.processor.template.BillCardConvertProcessor;
+import nccloud.framework.web.ui.pattern.billcard.BillCard;
+import nccloud.web.ifac.pub.util.NCCPageInfoUtil;
+import nccloud.web.sf.allocation.allocate.util.AllocateDefaultValue4NCCUtil;
+import nccloud.web.sf.common.NCCUIDataModuleUtil;
+/**
+ * 资金上收单生成内贷还本单
+ * @author 游德香
+ *
+ */
+public class DeliveryToRepayPrcplAction implements ICommonAction {
+	IDeliveryQueryService query = (IDeliveryQueryService) ServiceLocator
+			.find(IDeliveryQueryService.class);
+	@Override
+	public Object doAction(IRequest request) {
+	
+		IfacOperatorParam parm = (IfacOperatorParam) NCCPageInfoUtil.getParam(request, IfacOperatorParam.class);
+		// 调用单据转换规则服务
+				IPfExchangeService exchange = NCLocator.getInstance().lookup(
+						IPfExchangeService.class);
+				BillCard billCard = null;
+				AggRepayPrcplVO aggRepayPrcplVO=null;//内贷还本-聚合vo
+				AggDeliveryVO aggvo = null;
+				try {
+					aggvo = this.query(parm.getPks());
+				} catch (BusinessException e1) {
+					// TODO Auto-generated catch block
+					e1.printStackTrace();
+				}
+				try {
+					aggRepayPrcplVO= (AggRepayPrcplVO) exchange.runChangeData("36K4","36CX", aggvo, null);
+//					BillCardConvertProcessor processor = new BillCardConvertProcessor();
+//					billCard = processor.convert("36360IRP_CARD", aggRepayPrcplVO);
+					try {
+//						AllocateDefaultValue4NCCUtil.setAllocateDefaultValue(billCard, true, false);
+						
+						billCard = NCCUIDataModuleUtil.buildCardDataFormula(aggRepayPrcplVO, "36360IRP_CARD", "add");
+						
+					} catch (Exception var15) {
+						ExceptionUtils.wrapException(var15);
+					}
+				} catch (BusinessException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				}
+				
+				
+				
+		// TODO Auto-generated method stub
+				
+		System.out.println(billCard);
+		return billCard;
+		
+	}
+	private AggDeliveryVO query(String[] pks) throws BusinessException {
+		if (null==this.query.queryDeliveryByPk(pks[0])) {
+			ExceptionUtils.wrapBusinessException(
+					NCLangRes4VoTransl.getNCLangRes().getStrByID("3634nccloud_ncc_0", "03634nccloud_ncc-0029"));
+			return null;
+		} else {
+			return this.query.queryDeliveryByPk(pks[0]);
+		}
+	}
+}

+ 171 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/ifm/apply/handler/ApplyOrgChangeEditAfterHandler.java

@@ -0,0 +1,171 @@
+package nccloud.web.ifm.apply.handler;
+
+import java.util.List;
+import nc.itf.fi.rateconfig.IRateconfigQueryService;
+import nc.vo.ifm.DividendMethodEnum;
+import nc.vo.ifm.EvenEnum;
+import nc.vo.ifm.IncomeDiviMethodEnum;
+import nc.vo.ifm.LimitPropertyEnum;
+import nc.vo.ifm.ProductStatusEnum;
+import nc.vo.ifm.RedeemMethodEnum;
+import nc.vo.ifm.RiskEnum;
+import nc.vo.ifm.apply.AggInvestApplyVO;
+import nc.vo.ifm.apply.InvestApplyVO;
+import nc.vo.imf.constants.TMIMFConst;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.lang.UFDate;
+import nccloud.framework.core.exception.ExceptionUtils;
+import nccloud.framework.service.ServiceLocator;
+import nccloud.framework.web.container.ClientInfo;
+import nccloud.framework.web.container.SessionContext;
+import nccloud.framework.web.convert.translate.Translator;
+import nccloud.framework.web.processor.template.BillCardConvertProcessor;
+import nccloud.framework.web.ui.model.GridModel;
+import nccloud.framework.web.ui.model.row.Cell;
+import nccloud.framework.web.ui.model.row.Row;
+import nccloud.framework.web.ui.pattern.billcard.BillCard;
+import nccloud.framework.web.ui.pattern.billcard.BillCardFormulaHandler;
+import nccloud.framework.web.ui.pattern.billcard.CardHeadAfterEditEvent;
+import nccloud.framework.web.ui.pattern.form.Form;
+import nccloud.impl.platform.common.util.StringUtils;
+import nccloud.web.ifm.investapply.util.ApplyPubUtil;
+import nccloud.web.ifm.investapply.util.ApplyQueryUtil;
+import nccloud.web.tmpub.afteredit.bean.UIProp;
+import nccloud.web.tmpub.handler.AbstractCommonAfterEditHandler;
+import nccloud.web.tmpub.util.NCCFrontPrecisionUtil;
+
+public class ApplyOrgChangeEditAfterHandler extends AbstractCommonAfterEditHandler<CardHeadAfterEditEvent, BillCard>
+{
+  protected BillCard processAfterEdit(CardHeadAfterEditEvent event, UIProp uiProp)
+    throws BusinessException
+  {
+    BillCard card = event.getCard();
+    BillCardConvertProcessor processor = new BillCardConvertProcessor();
+    AggInvestApplyVO vo = (AggInvestApplyVO)processor.fromBillCard(card);
+    loadBaseInforByOrg(vo);
+    card = doReturn(vo);
+    return card;
+  }
+
+  protected AggInvestApplyVO loadBaseInforByOrg(AggInvestApplyVO vo)
+    throws BusinessException
+  {
+    String pk_org = vo.getParentVO().getPk_org();
+    if (StringUtils.isBlank(pk_org)) {
+      return vo;
+    }
+    setApplyDefaultValue(vo);
+    return vo;
+  }
+
+  protected void setApplyDefaultValue(AggInvestApplyVO vo)
+    throws BusinessException
+  {
+    InvestApplyVO pvo = vo.getParentVO();
+    InvestApplyVO newvo = new InvestApplyVO();
+    newvo.setPk_org(pvo.getPk_org());
+    UFDate billmakedate = new UFDate(SessionContext.getInstance().getClientInfo().getBizDateTime());
+    if (StringUtils.isBlank(pvo.getPk_apply())) {
+      String billmaker = SessionContext.getInstance().getClientInfo().getUserid();
+      newvo.setBillmaker(billmaker);
+      newvo.setBillmakedate(billmakedate);
+      newvo.setPk_billtypecode(getBillTypeCode());
+    }
+
+    newvo.setInterestday("1");
+    newvo.setVbillstatus(Integer.valueOf(-1));
+    newvo.setBillstatus(Integer.valueOf(0));
+    newvo.setVdef5(pvo.getVdef5());
+    newvo.setVdef6(pvo.getVdef6());
+    newvo.setProductstatus(ProductStatusEnum.APPLYING.toStringValue());
+    
+    
+    newvo.setBoundary(Integer.valueOf(1));
+    newvo.setPaytype(Integer.valueOf(1));
+    newvo.setPk_group(ApplyQueryUtil.getGroupByOrg(pvo.getPk_org()));
+    newvo.setPk_olccurr(ApplyQueryUtil.getOrgStandardCurrtype(pvo.getPk_org()));
+    newvo.setPk_currtype(ApplyQueryUtil.getOrgStandardCurrtype(pvo.getPk_org()));
+    newvo = (InvestApplyVO)ApplyQueryUtil.processPrecision(newvo, true, getBusiDate());
+
+    newvo.setLimit_property(LimitPropertyEnum.FIXED_LIMIT.toStringValue());
+
+    newvo.setEventype(Integer.valueOf(EvenEnum.NONGUA_MAYBE_PROFIT.toIntValue()));
+
+    newvo.setRisk(Integer.valueOf(RiskEnum.R1.toIntValue()));
+
+    newvo.setPurchasedate(billmakedate);
+  
+
+    newvo.setRedeemmethod(Integer.valueOf(RedeemMethodEnum.MONEYREDEEM.toIntValue()));
+
+    newvo.setDividendmethod(Integer.valueOf(DividendMethodEnum.BONDDIVID.toIntValue()));
+
+    newvo.setIncomedivimethod(Integer.valueOf(IncomeDiviMethodEnum.ONEPAYMENT.toIntValue()));
+    
+    
+    newvo.setSettleaccount(pvo.getSettleaccount());
+
+    vo.setParentVO(newvo);
+  }
+
+  protected BillCard doReturn(AggInvestApplyVO vo)
+  {
+    BillCardConvertProcessor processor = new BillCardConvertProcessor();
+    BillCard billCard = processor.convert(TMIMFConst.CONST_PAGECODE_ADJUST_CARD, vo);
+
+    Translator translator = new Translator();
+    translator.translate(billCard);
+
+    BillCardFormulaHandler handler = new BillCardFormulaHandler(billCard);
+    handler.handleLoadFormula();
+
+    List headPrecisionFields = ApplyPubUtil.getHeadPrecisionFields();
+    try {
+      NCCFrontPrecisionUtil.processBillCardPrecision(billCard, headPrecisionFields, null);
+    }
+    catch (BusinessException e) {
+      ExceptionUtils.wrapException(e);
+    }
+
+    int ratedigit = getRateDigit();
+    Form form = billCard.getHead();
+    if (form == null) {
+      return billCard;
+    }
+    GridModel grid = form.getModel();
+    if (grid == null) {
+      return billCard;
+    }
+    List<Row> rows = grid.getListRows();
+    if ((rows != null) && (rows.size() > 0)) {
+      for (Row r : rows) {
+        Cell cell = r.getCell("expectedrate");
+        if (cell != null) {
+          cell.setScale(ratedigit);
+        }
+      }
+    }
+    return billCard;
+  }
+
+  private int getRateDigit() {
+    IRateconfigQueryService service = (IRateconfigQueryService)ServiceLocator.find(IRateconfigQueryService.class);
+    int digits = 0;
+    try {
+      digits = service.queryRateSysParaInt().intValue();
+    } catch (BusinessException e) {
+      ExceptionUtils.wrapException(e);
+    }
+    return digits;
+  }
+
+  protected String getBillTypeCode()
+  {
+    return TMIMFConst.CONST_BILLTYPE_APPLY;
+  }
+
+  private UFDate getBusiDate()
+  {
+    return new UFDate(SessionContext.getInstance().getClientInfo().getBizDateTime());
+  }
+}

+ 90 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/ifm/investapply/action/ApplyCommitAction.java

@@ -0,0 +1,90 @@
+package nccloud.web.ifm.investapply.action;
+
+import java.util.List;
+
+import nc.bs.framework.common.NCLocator;
+import nc.itf.uap.IUAPQueryBS;
+import nc.vo.ifm.adapter.InvestApplySagaInfoAdapter;
+import nc.vo.ifm.apply.AggInvestApplyVO;
+import nc.vo.imf.constants.TMIMFConst;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.lang.UFDate;
+import nccloud.framework.web.container.SessionContext;
+import nccloud.vo.tmpub.precison.PrecisionField;
+import nccloud.web.ifm.investapply.util.ApplyPubUtil;
+import nccloud.web.ifm.investapply.util.ApplyQueryUtil;
+import nccloud.web.tmpub.pub.ms.util.SagasBizUtil;
+import nccloud.web.tmpub.tmc.util.CommonCommitAction;
+
+/**
+ * 【理财申购】应用【提交】操作按钮
+ *
+ * @since 2019年5月28日 上午9:58:56
+ * @version 1.0.0
+ * @author wangweiak
+ */
+public class ApplyCommitAction extends CommonCommitAction<AggInvestApplyVO> {
+	
+	@Override
+	protected AggInvestApplyVO[] queryBillsByPks(String[] operaPks) {
+		AggInvestApplyVO[] vos = ApplyQueryUtil.getApplyVO(operaPks);
+		setDefaultValue(vos);
+		return vos;
+	}
+
+	@Override
+	protected Object doBusinessProcess(AggInvestApplyVO[] operaVOs,Object userobj) 
+			throws BusinessException {
+		 IUAPQueryBS iuap = NCLocator.getInstance().lookup(IUAPQueryBS.class);
+		// saga错误中心按钮
+		SagasBizUtil.setOperInfo(null,"Commit");
+		//校验数据冻结态
+		InvestApplySagaInfoAdapter adapter =
+				new InvestApplySagaInfoAdapter();
+		Object result = super.doCommitProcess(operaVOs, userobj,adapter);
+		try {
+			//给银行对账-单位日记账标识码赋值
+			String sql ="update cmp_bankaccdetail "
+					+ "set bankrelated_code = '"+operaVOs[0].getParent().getAttributeValue("vdef6").toString()+"'   "
+							+ "where vbillno = '"+operaVOs[0].getParent().getAttributeValue("vbillno").toString()+"' and nvl(dr,0)=0";
+			iuap.executeQuery(sql, null);
+		} catch (Exception e) {
+			// TODO: handle exception
+		}
+		return result;
+	}
+
+	@Override
+	protected String getActionCode() {
+		return TMIMFConst.CONST_ACTION_SAVE;
+	}
+		
+	@Override
+	protected String getBillTypeCode() {
+		return TMIMFConst.CONST_BILLTYPE_APPLY;
+	}
+	
+	/**
+	 * 补充提交人、提交日期
+	 * @param commitVOs
+	 */
+	protected void setDefaultValue(AggInvestApplyVO[] commitVOs) {
+		String userId = SessionContext.getInstance().getClientInfo().getUserid();
+		long bizDateTime = SessionContext.getInstance().getClientInfo().getBizDateTime();
+		UFDate busiDate = new UFDate(bizDateTime);
+		for (AggInvestApplyVO commitVO : commitVOs) {
+			commitVO.getParentVO().setSubmitter(userId);
+			commitVO.getParentVO().setSubmitdate(busiDate);
+		}
+	}
+	/**
+	 * 表头精度处理字段列表
+	 *
+	 * @return
+	 */
+	@Override
+	protected List<PrecisionField> getHeadPrecisionFields() {
+		return ApplyPubUtil.getHeadPrecisionFields();
+	}
+
+}

+ 64 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/ifm/investapply/action/LinkBillToApplyAction.java

@@ -0,0 +1,64 @@
+package nccloud.web.ifm.investapply.action;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import nc.impl.pubapp.pattern.data.vo.VOQuery;
+import nc.vo.cmp.informer.InformerVO;
+import nc.vo.ifm.apply.AggInvestApplyVO;
+import nc.vo.ifm.apply.InvestApplyVO;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.pubapp.AppContext;
+import nccloud.dto.ifac.common.bean.IfacOperatorParam;
+import nccloud.framework.web.action.itf.ICommonAction;
+import nccloud.framework.web.container.IRequest;
+import nccloud.framework.web.ui.pattern.billcard.BillCard;
+import nccloud.web.ifac.pub.util.NCCPageInfoUtil;
+import nccloud.web.sf.common.NCCUIDataModuleUtil;
+
+/**
+ * 到账通知发布生成理财申购
+ * @author YY
+ *
+ */
+public class LinkBillToApplyAction implements ICommonAction{
+
+	@Override
+	public Object doAction(IRequest request) {
+		BillCard billCard = null;
+		try {
+			IfacOperatorParam parm = (IfacOperatorParam) NCCPageInfoUtil.getParam(request, IfacOperatorParam.class);
+			List<String> pksaleorder = new ArrayList<String>();//到账通知发布主键集合
+			String[] pks= parm.getPks();
+			pksaleorder.add(pks[0]);
+			
+			//获取单据VO
+			VOQuery<InformerVO> querysordr = new VOQuery<InformerVO>(InformerVO.class);
+			InformerVO[] informerVO = null; //到账通知发布主表
+			informerVO = querysordr.query(pksaleorder.toArray(new String[0]));
+			
+			AggInvestApplyVO aggInvestApplyVO = new AggInvestApplyVO();
+			InvestApplyVO investApplyVO = new InvestApplyVO();
+			//来源单据主键
+			investApplyVO.setVdef5(pks[0]);
+			//财务组织 	
+			investApplyVO.setPk_org(informerVO[0].getPk_org());
+			//财务组织版本
+			investApplyVO.setPk_org_v(informerVO[0].getPk_org_v());
+			//结算账户
+			investApplyVO.setSettleaccount(informerVO[0].getPk_acc_sub());
+//			
+//			investApplyVO.setVbillstatus(-1);
+//			investApplyVO.setBoundary(1);
+//			investApplyVO.setProductstatus("applying");
+//			investApplyVO.setPurchasedate(AppContext.getInstance().getBusiDate());
+			aggInvestApplyVO.setParent(investApplyVO);
+			billCard = NCCUIDataModuleUtil.buildCardDataFormula(aggInvestApplyVO, "36670AP_CARD", "add");
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return billCard;
+	}
+	
+}

+ 85 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/ifm/redeem/action/InformerToRedeemAction.java

@@ -0,0 +1,85 @@
+package nccloud.web.ifm.redeem.action;
+
+import nccloud.framework.web.action.itf.ICommonAction;
+import nccloud.framework.web.container.IRequest;
+import nccloud.framework.web.convert.translate.Translator;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+
+import nccloud.framework.service.ServiceLocator;
+import nc.md.persist.framework.IMDPersistenceQueryService;
+import nc.vo.cmp.informer.InformerVO;
+import nc.vo.ifm.redeem.AggInvestRedeemVO;
+import nc.vo.ifm.redeem.InvestRedeemVO;
+import nc.vo.pub.lang.UFDouble;
+import nccloud.framework.core.json.IJson;
+import nccloud.framework.web.ui.pattern.grid.Grid;
+import nccloud.framework.web.json.JsonFactory;
+import nccloud.framework.web.processor.template.BillCardConvertProcessor;
+import nccloud.framework.core.exception.ExceptionUtils;
+import nccloud.framework.web.ui.pattern.billcard.BillCard;
+import nccloud.framework.web.ui.pattern.billcard.BillCardFormulaHandler;
+import nccloud.web.sf.allocation.allocate.util.AllocateDefaultValue4NCCUtil;
+import nccloud.web.sf.common.NCCUIDataModuleUtil;
+/**
+ * 到账通知发布到理财赎回
+ * @author ZTH
+ *
+ */
+
+public class InformerToRedeemAction implements ICommonAction {
+
+	@Override
+	public Object doAction(IRequest request) {
+		BillCard billCard = null;
+		AggInvestRedeemVO aggvo=new AggInvestRedeemVO();//理财赎回aggvo
+		String read = request.read();
+		IJson json = JsonFactory.create();
+
+		try {
+			HashMap<String, Object> map = (HashMap) json.fromJson(read, HashMap.class);
+			List<String> pk_informers = (List<String>) map.get("pks");
+			String where = " pk_informer = '" + pk_informers.get(0) + "'";
+			Collection<?> bills = null;
+			bills = ((IMDPersistenceQueryService) ServiceLocator.find(IMDPersistenceQueryService.class))
+					.queryBillOfVOByCond(InformerVO.class, where, true, false);
+			InformerVO[] informervVO = (InformerVO[]) bills.toArray(new InformerVO[0]);
+			
+			InvestRedeemVO headvo=new InvestRedeemVO();
+			headvo.setVdef8(pk_informers.get(0));
+			headvo.setPk_group(informervVO[0].getPk_group());
+			headvo.setPk_org(informervVO[0].getPk_org());
+			headvo.setPk_org_v(informervVO[0].getPk_org_v());
+			headvo.setSrcbilltypecode(informervVO[0].getPk_billtypecode());//来源单据类型编码
+			headvo.setPk_srcbilltype(informervVO[0].getPk_billtypeid());//来源单据类型 到账通知 36S3
+			
+			//headvo.setPk_currtype(informervVO[0].getPk_currtype());//币种
+			//headvo.setRedeemmoney(UFDouble.ZERO_DBL);//赎回金额
+			//UFDouble olcrate=informervVO[0].getOlcrate()==null?UFDouble.ZERO_DBL:informervVO[0].getOlcrate();
+			//headvo.setOlcrate(olcrate);//组织本币汇率
+			
+			aggvo.setParentVO(headvo);
+		
+		//	billCard = NCCUIDataModuleUtil.buildCardDataFormula(aggvo, "36670RED_CARD", "add");
+			
+		   
+			BillCardConvertProcessor processor = new BillCardConvertProcessor();
+			billCard = processor.convert("36670RED_CARD", aggvo);
+			Translator translator = new Translator();
+			translator.translate(billCard);
+			BillCardFormulaHandler handler = new BillCardFormulaHandler(billCard);
+			handler.handleLoadFormula();
+			handler.handleBodyLoadFormula();
+			AllocateDefaultValue4NCCUtil.setAllocateDefaultValue(billCard, true, false);
+		
+		}catch (Exception var11) {
+			ExceptionUtils.wrapException(var11);
+		}
+
+		
+		return billCard;
+	}
+
+}

+ 242 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/ifm/redeem/action/RedeemSaveAction.java

@@ -0,0 +1,242 @@
+package nccloud.web.ifm.redeem.action;
+
+import java.util.ArrayList;
+
+import nc.bs.framework.common.NCLocator;
+import nc.bs.logging.Logger;
+import nc.impl.pubapp.pattern.data.vo.VOQuery;
+import nc.itf.ifm.IInvestRedeemQueryService;
+import nc.itf.tmpub.diffvo.process.IVOProcessor;
+import nc.itf.uap.IVOPersistence;
+import nc.ms.tb.formula.script.function.WARNING;
+import nc.pubitf.org.cache.IOrgUnitPubService_C;
+import nc.ui.ls.MessageBox;
+import nc.ui.uif2.ShowStatusBarMsgUtil;
+import nc.vo.cmp.informer.InformerVO;
+import nc.vo.ifm.adapter.InvestApplySagaInfoAdapter;
+import nc.vo.ifm.constants.TMIFMConst;
+import nc.vo.ifm.redeem.AggInvestRedeemVO;
+import nc.vo.ifm.redeem.InvestRedeemVO;
+import nc.vo.ml.AbstractNCLangRes;
+import nc.vo.ml.NCLangRes4VoTransl;
+import nc.vo.org.OrgVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.pub.lang.UFDateTime;
+import nc.vo.pub.lang.UFDouble;
+import nccloud.commons.lang.StringUtils;
+import nccloud.framework.core.exception.ExceptionUtils;
+import nccloud.framework.service.ServiceLocator;
+import nccloud.framework.web.container.ClientInfo;
+import nccloud.framework.web.container.SessionContext;
+import nccloud.framework.web.convert.translate.Translator;
+import nccloud.framework.web.processor.template.ExtBillCardConvertProcessor;
+import nccloud.framework.web.ui.model.GridModel;
+import nccloud.framework.web.ui.model.row.Cell;
+import nccloud.framework.web.ui.model.row.Row;
+import nccloud.framework.web.ui.pattern.extbillcard.ExtBillCard;
+import nccloud.framework.web.ui.pattern.form.Form;
+import nccloud.pubitf.tmpub.pub.ISagasBizService;
+import nccloud.pubitf.tmpub.pub.ITMUtilsServiceForNCC;
+import nccloud.web.ifm.common.action.CommonSaveAction;
+import nccloud.web.ifm.ifm.util.IncomeUtil;
+import nccloud.web.ifm.ifm.util.RedeemUtil;
+
+public class RedeemSaveAction extends CommonSaveAction<AggInvestRedeemVO>
+{
+  protected ExtBillCard buildFontResult(AggInvestRedeemVO resultVO)
+  {
+    ExtBillCard billCard = new ExtBillCard();
+    if (resultVO == null) {
+      return billCard;
+    }
+    ExtBillCardConvertProcessor processor = new ExtBillCardConvertProcessor();
+    billCard = processor.convert(getPageCode(), resultVO);
+    try {
+      calculateRateDigit(resultVO, billCard);
+    } catch (BusinessException e) {
+      ExceptionUtils.wrapException(e);
+    }
+
+    Translator translator = new Translator();
+    translator.translate(billCard);
+    return billCard;
+  }
+
+  protected AggInvestRedeemVO doBusinessSave(AggInvestRedeemVO operaVO) {
+    try {
+      doBefore(operaVO);
+      AggInvestRedeemVO[] result = (AggInvestRedeemVO[])(AggInvestRedeemVO[])callActionScript(TMIFMConst.CONST_ACTION_SAVEBASE, TMIFMConst.CONST_BILLTYPE_REDEEM, new AggInvestRedeemVO[] { operaVO });
+      if ((result == null) || (result.length == 0))
+        return null;
+      operaVO = result[0];
+    } catch (BusinessException e) {
+      ExceptionUtils.wrapBusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("ifm_ncc003_0", "0ifm_ncc003-0024") + e.getMessage());
+    }
+    
+   
+    /**
+     * 
+     * 到账通知发布生成的理财赎回
+     * 回写信息到到账通知发布
+     * 
+     */
+    InvestRedeemVO headvo=operaVO.getParentVO();
+		if (null != headvo.getVdef8()/*
+										 * &&null!=headvo.getSrcbilltypecode()&&headvo.getSrcbilltypecode().indexOf(
+										 * "36S3")!=-1
+										 */) {
+    	 VOQuery<InformerVO> querysordr = new VOQuery<InformerVO>(InformerVO.class);
+         //到账通知发布主表
+    	 String [] pks=new String[] {headvo.getVdef8()};
+   	    InformerVO[] informerVO = querysordr.query(pks);
+    	if(headvo.getRedeemmoney().compareTo(informerVO[0].getMoneyy())!=0) {
+    		ExceptionUtils.wrapBusinessException("理财赎回表头【赎回金额】要等于 到账通知的【金额】! ");
+    	}
+    	
+    	 
+    	 informerVO[0].setGenerateflag("hasgenerate");//已生成
+    	 informerVO[0].setUsemoney(headvo.getRedeemmoney());//赎回金额
+    	 informerVO[0].setPk_claimer(headvo.getBillmaker());//认证人
+    	 informerVO[0].setClaimdate(headvo.getBillmakedate());//认证日期
+    	 informerVO[0].setPk_lower(headvo.getPk_redeem());//主键
+   // 	 informerVO[0].setLowerbilltype("F2");//单据类型---暂时处理解决  【不能识别下游单据3642】
+    	 informerVO[0].setLowerbilltype("3642");
+    	 informerVO[0].setDr(0);
+    //	 informerVO[0].setSubfamily("3642");
+    	 
+    	 IVOPersistence ivopce=(IVOPersistence) NCLocator.getInstance().lookup(IVOPersistence.class.getName());
+    	 
+    	 try {
+			ivopce.updateVO(informerVO[0]);
+		} catch (BusinessException e) {
+			// TODO Auto-generated catch block
+			ExceptionUtils.wrapBusinessException(e.getMessage());
+		}
+    	 
+    }
+    
+    /***************************************************************************/
+    
+    
+    
+    return operaVO;
+  }
+
+  protected String getPageCode()
+  {
+    return TMIFMConst.CONST_PAGECODE_CONTRACT_CARD;
+  }
+
+  private AggInvestRedeemVO doBefore(AggInvestRedeemVO operaVO)
+    throws BusinessException
+  {
+    if (operaVO == null) {
+      throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("ifm_ncc003_0", "0ifm_ncc003-0037"));
+    }
+
+    ISagasBizService sagaService = (ISagasBizService)ServiceLocator.find(ISagasBizService.class);
+    try {
+      sagaService.checkFrozen(new InvestApplySagaInfoAdapter(), operaVO.getParentVO().getPk_srcbill());
+    } catch (BusinessException e) {
+      ExceptionUtils.wrapBusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("ifm_ncc003_0", "0ifm_ncc003-0045"));
+    }
+    InvestRedeemVO vo = operaVO.getParentVO();
+
+
+    if ((vo.getRedeemmoney() != null) && (vo.getRedeemmoney().compareTo(UFDouble.ZERO_DBL) <= 0)) {
+      ExceptionUtils.wrapBusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("ifm_ncc003_0", "0ifm_ncc003-0039"));
+    }
+    ClientInfo clientInfo = SessionContext.getInstance().getClientInfo();
+
+    if (StringUtils.isBlank(vo.getPk_redeem()))
+    {
+      vo.setPk_billtypecode(getBillTypeCode());
+
+      vo.setPk_group(clientInfo.getPk_group());
+      vo.setBillmakedate(getBusiDate());
+      vo.setPk_billtypecode(TMIFMConst.CONST_BILLTYPE_REDEEM);
+      vo.setBillmaketime(new UFDateTime(SessionContext.getInstance().getClientInfo().getBizDateTime()));
+    }
+    else {
+      AggInvestRedeemVO[] oldvo = ((IInvestRedeemQueryService)ServiceLocator.find(IInvestRedeemQueryService.class)).queryRedeemByPks(new String[] { vo.getPk_redeem() });
+      if ((oldvo == null) || (oldvo.length < 1)) {
+        throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("ifm_ncc003_0", "0ifm_ncc003-0040"));
+      }
+    }
+    operaVO.setParent(vo);
+
+    return operaVO;
+  }
+
+  public static String getGroupByOrg(String pk_org)
+    throws BusinessException
+  {
+    IOrgUnitPubService_C orgUnitQryService = (IOrgUnitPubService_C)ServiceLocator.find(IOrgUnitPubService_C.class);
+    String pk_group = null;
+    OrgVO[] orgVOs = orgUnitQryService.getOrgs(new String[] { pk_org }, new String[] { TMIFMConst.FIELD_PK_GROUP });
+    if ((orgVOs == null) || (orgVOs.length <= 0)) {
+      ExceptionUtils.wrapBusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("ifm_ncc003_0", "0ifm_ncc003-0020"));
+    }
+    pk_group = (String)orgVOs[0].getAttributeValue(TMIFMConst.FIELD_PK_GROUP);
+    return pk_group;
+  }
+
+  private UFDate getBusiDate()
+  {
+    return new UFDate(SessionContext.getInstance().getClientInfo().getBizDateTime());
+  }
+
+  protected String getBillTypeCode()
+  {
+    return TMIFMConst.CONST_BILLTYPE_REDEEM;
+  }
+
+  protected AggInvestRedeemVO processDigit(AggInvestRedeemVO vos)
+    throws BusinessException
+  {
+    try
+    {
+      InvestRedeemVO vo = vos.getParentVO();
+      vo = (InvestRedeemVO)RedeemUtil.processPrecision(vo, false, getBusiDate());
+      vos.setParentVO(vo);
+      return vos;
+    } catch (BusinessException e) {
+      Logger.error(e.getMessage(), e);
+    }throw new BusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("ifm_ncc003_0", "0ifm_ncc003-0041"));
+  }
+
+  protected void calculateRateDigit(AggInvestRedeemVO vo, ExtBillCard billCard)
+    throws BusinessException
+  {
+    ITMUtilsServiceForNCC tmcurrencyutil = (ITMUtilsServiceForNCC)ServiceLocator.find(ITMUtilsServiceForNCC.class);
+    int orgMnyDigit = tmcurrencyutil.getOrgCurrRateDigit(vo.getParentVO().getPk_org(), vo
+      .getParentVO().getPk_currtype());
+
+    int glcMnyDigit = tmcurrencyutil
+      .getGroupCurrRateDigit(vo
+      .getParentVO().getPk_group(), vo.getParentVO().getPk_org(), vo.getParentVO().getPk_currtype());
+
+    int gllcMnyDigit = tmcurrencyutil
+      .getGlobalCurrRateDigit(vo
+      .getParentVO().getPk_org(), vo.getParentVO().getPk_currtype());
+    Row[] rows = billCard.getHead().getModel().getRows();
+    if ((rows != null) && (rows.length > 0)) {
+      Cell cell = rows[0].getCell("olcrate");
+      if (cell != null) {
+        cell.setScale(orgMnyDigit);
+      }
+      Cell cellg = rows[0].getCell("glcrate");
+      if (cellg != null) {
+        cellg.setScale(glcMnyDigit);
+      }
+      Cell cellgll = rows[0].getCell("gllcrate");
+      if (cellgll != null) {
+        cellgll.setScale(gllcMnyDigit);
+      }
+      Cell cellexprate = rows[0].getCell("expectedrate");
+      if (cellexprate != null)
+        cellexprate.setScale(IncomeUtil.getRateDigit());
+    }
+  }
+}

+ 70 - 0
zjcmp_cd/zjcmp_cd/src/client/nccloud/web/ifm/redeem/action/RedeemSubmitAction.java

@@ -0,0 +1,70 @@
+package nccloud.web.ifm.redeem.action;
+
+import java.util.List;
+
+import nc.bs.framework.common.NCLocator;
+import nc.itf.uap.IUAPQueryBS;
+import nc.vo.ifm.adapter.InvestRedeemSagaInfoAdapter;
+import nc.vo.ifm.constants.TMIFMConst;
+import nc.vo.ifm.redeem.AggInvestRedeemVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.lang.UFDate;
+import nccloud.framework.web.container.SessionContext;
+import nccloud.pub.tmpub.ms.vo.TMSagasBizInfoAdapter;
+import nccloud.pubitf.ifm.apply.RedeemConstantForNCC;
+import nccloud.vo.tmpub.precison.PrecisionField;
+import nccloud.web.ifm.ifm.util.RedeemUtil;
+import nccloud.web.tmpub.pub.ms.util.SagasBizUtil;
+import nccloud.web.tmpub.tmc.util.CommonCommitAction;
+
+public class RedeemSubmitAction extends CommonCommitAction<AggInvestRedeemVO> {
+	protected AggInvestRedeemVO[] queryBillsByPks(String[] operaPks) {
+		AggInvestRedeemVO[] vos = RedeemUtil.getRedeemVO(operaPks);
+		this.setDefaultValue(vos);
+		return vos;
+	}
+
+	protected Object doBusinessProcess(AggInvestRedeemVO[] operaVOs, Object userobj) throws BusinessException {
+		SagasBizUtil.setOperInfo((String) null, "Commit");
+		Object result = super.doCommitProcess(operaVOs, userobj, new TMSagasBizInfoAdapter[]{this.getAdapter()});
+		IUAPQueryBS iuap = NCLocator.getInstance().lookup(IUAPQueryBS.class);
+		//给银行对账-单位日记账标识码赋值
+		String sql ="update cmp_bankaccdetail "
+				+ "set bankrelated_code = '"+operaVOs[0].getParent().getAttributeValue("vdef7").toString()+"'   "
+						+ "where vbillno = '"+operaVOs[0].getParent().getAttributeValue("vbillno").toString()+"' and nvl(dr,0)=0";
+		iuap.executeQuery(sql, null);
+		
+		return result;
+	}
+
+	protected String getActionCode() {
+		return TMIFMConst.CONST_ACTION_SAVE;
+	}
+
+	protected String getBillTypeCode() {
+		return TMIFMConst.CONST_BILLTYPE_REDEEM;
+	}
+
+	protected void setDefaultValue(AggInvestRedeemVO[] commitVOs) {
+		String userId = SessionContext.getInstance().getClientInfo().getUserid();
+		long bizDateTime = SessionContext.getInstance().getClientInfo().getBizDateTime();
+		UFDate busiDate = new UFDate(bizDateTime);
+		AggInvestRedeemVO[] var6 = commitVOs;
+		int var7 = commitVOs.length;
+
+		for (int var8 = 0; var8 < var7; ++var8) {
+			AggInvestRedeemVO commitVO = var6[var8];
+			commitVO.getParentVO().setSubmitter(userId);
+			commitVO.getParentVO().setSubmitdate(busiDate);
+		}
+
+	}
+
+	protected TMSagasBizInfoAdapter getAdapter() {
+		return new InvestRedeemSagaInfoAdapter();
+	}
+
+	protected List<PrecisionField> getHeadPrecisionFields() {
+		return RedeemConstantForNCC.getHeadPrecisionFields();
+	}
+}

+ 130 - 0
zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/cdmc/cdm/repayprcpl/config/action/NCCRepayPrcpl.xml

@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<actions>
+	<action>
+		<name>cdmc.repayprcpl.repayadd</name>
+		<label>新增保存</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplAddAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repaycopy</name>
+		<label>复制</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplCopyAction</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repaysave</name>
+		<label>修改保存</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplSaveAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repaydelete</name>
+		<label>删除</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplDeleteAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repaycommit</name>
+		<label>提交</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplCommitAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repayuncommit</name>
+		<label>收回</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplUnCommitAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repayrefresh</name>
+		<label>刷新</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplRefreshAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repayprcplcardqry</name>
+		<label>查询卡片</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplQueryCardAction</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repaylistqry</name>
+		<label>查询</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplListQueryAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repayprcplqrybypks</name>
+		<label>状态查询</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplQueryByPksAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repaysaveadd</name>
+		<label>保存新增</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repaysavecommit</name>
+		<label>保存提交</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplSaveCommitAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repayprint</name>
+		<label>打印</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplPrintAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repaymakebill</name>
+		<label>制证</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplMakeBillAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.repayunmakebill</name>
+		<label>取消制证</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplUnMakeBillAction
+		</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.cardeditafter</name>	
+		<label>卡片编辑</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.handler.RepayPrcplCardAfterEditHandler</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.bodyeditafter</name>	
+		<label>卡片表体编辑</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.handler.RepayPrcplCardBodyAfterEditHandler</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.voucherlinkedbill</name>	
+		<label>还本凭证联查单据</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplVoucherLinkedBillAction</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.vouchermake</name>	
+		<label>还本制证</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplVoucherMakeAction</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayprcpl.vouchercancel</name>	
+		<label>取消制证</label>
+		<clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplVoucherCancelAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.repayprcpl.linkntb</name>
+	  <label>单据联查预算</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplLinkNtbAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.repayprcpl.ntblinkbill</name>
+	  <label>预算联查单据</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayprcpl.action.RepayPrcplNtbLinkBillAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.repayprcpl.LinkBillToRepayprcplAction</name>
+	  <label>到账通知发布生成贷款还本</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayprcpl.action.LinkBillToRepayprcplAction</clazz>
+	</action>
+</actions>

+ 69 - 0
zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/cdmc/cdm/repayprcpl/config/authorize/repayrecpl.xml

@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<authorizes>
+	<authorize>
+		<appcode>36630BLP,36630BLPL</appcode>
+		<actions>
+			<action>cdmc.repayprcpl.repayadd</action>
+			<action>cdmc.repayprcpl.repaysave</action>
+			<action>cdmc.repayprcpl.repaydelete</action>
+			<action>cdmc.repayprcpl.repaycommit</action>
+			<action>cdmc.repayprcpl.repayuncommit</action>
+			<action>cdmc.repayprcpl.repayrefresh</action>
+			<action>cdmc.repayprcpl.repayprcplcardqry</action>
+			<action>cdmc.repayprcpl.repaylistqry</action>
+			<action>cdmc.repayprcpl.repayprcplqrybypks</action>
+			<action>cdmc.repayprcpl.repaysaveadd</action>
+			<action>cdmc.repayprcpl.repaysavecommit</action>
+			<action>cdmc.repayprcpl.repayprint</action>
+			<action>cdmc.repayprcpl.repaymakebill</action>
+			<action>cdmc.repayprcpl.repayunmakebill</action>
+			<action>cdmc.repayprcpl.repaylinkntb</action>
+			<action>cdmc.repayprcpl.cardeditafter</action>
+			<action>cdmc.repayprcpl.bodyeditafter</action>
+			<!--<action>cdmc.common.appregisterurlquery</action>凭证-->
+			
+			<action>cdmc.common.loanlinkbill</action>
+			
+			<!--凭证联查单据 -->
+			<action>cdmc.repayprcpl.voucherlinkedbill</action>
+			<!--凭证制证 -->
+			<action>cdmc.repayprcpl.vouchermake</action>
+			<!--取消制证 -->
+			<action>cdmc.repayprcpl.vouchercancel</action>
+			<!--联查合同和放款 -->
+			<action>cdmc.contract.contractcardqry</action>
+			<action>cdmc.financepay.financepaycardqry</action>
+			<action>cdmc.repayprcpl.repaycopy</action>
+			
+		</actions>
+	</authorize>
+	<authorize>
+		<appcode>*</appcode>
+		<actions>
+			<!--单据联查预算 -->
+			<action>cdmc.repayprcpl.linkntb</action>
+			<!--预算联查单据 -->
+			<action>cdmc.repayprcpl.ntblinkbill</action>
+			<action>cdmc.repayprcpl.repayprcplcardqry</action>
+			<action>cdmc.repayprcpl.repaylistqry</action>
+			<action>cdmc.repayprcpl.repayprcplqrybypks</action>
+			<action>cdmc.repayprcpl.repayrefresh</action>
+			<action>cdmc.repayprcpl.repayprint</action>
+			<action>cdmc.repayprcpl.LinkBillToRepayprcplAction</action>
+		</actions>
+	</authorize>
+	<authorize>
+		<!--  审批联查授权 -->
+		<appcode>36630BLPA</appcode>
+		<actions>
+			<action>cdmc.repayprcpl.repayprcplcardqry</action>
+			<action>cdmc.repayprcpl.repaylistqry</action>
+			<action>cdmc.repayprcpl.repayprcplqrybypks</action>
+			<action>cdmc.repayprcpl.repayrefresh</action>
+			<action>cdmc.repayprcpl.repayprint</action>
+			<!--联查合同和放款 -->
+			<action>cdmc.contract.contractcardqry</action>
+			<action>dmc.financepay.financepaycardqry</action>
+		</actions>
+	</authorize>
+</authorizes>

+ 139 - 0
zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/cdmc/financepay/config/action/NCCfinancepay.xml.xml

@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<actions>
+	
+	<action>
+	  <name>cdmc.financepay.financepaysave</name>
+	  <label>贷款放款新增/修改</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepaySaveAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepaycopy</name>
+	  <label>贷款放款复制</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayCopyAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepaycardqry</name>
+	  <label>贷款放款卡片查询</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayQueryCardAction</clazz>
+	</action>
+    
+  	<action>
+	  <name>cdmc.financepay.financepaylistqry</name>
+	  <label>贷款放款列表查询</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayListQueryAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepayqrybypks</name>
+	  <label>贷款放款列表根据主键查询</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayQueryByPksAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepaydelete</name>
+	  <label>贷款放款删除</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayDeleteAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepaycommit</name>
+	  <label>贷款放款提交</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayCommitAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepaysavecommit</name>
+	  <label>贷款放款保存提交</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepaySaveCommitAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepayuncommit</name>
+	  <label>贷款放款收回</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayUnCommitAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepayterminate</name>
+	  <label>贷款放款终止</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayTerminateAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepayunterminate</name>
+	  <label>贷款放款取消终止</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayUnTerminateAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepayprint</name>
+	  <label>贷款放款打印</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayPrintAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepayafteredit</name>
+	  <label>贷款放款编辑后事件</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayAfterEditAciton</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepaydelversion</name>
+	  <label>贷款放款删除版本</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayDelVersionAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.common.appregisterurlquery</name>
+	  <label>贷款放款付息还本凭证</label>
+	  <clazz>nccloud.web.cdmc.cdm.contract.action.AppregisterUrlQueryAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepayversionlist</name>
+	  <label>贷款放款版本记录</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayQueryVersionListAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.financepay.financepayversiondetail</name>
+	  <label>贷款放款版本详情</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayQueryVersionCardAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.financepay.voucherlinkedbill</name>
+	  <label>放款凭证联查单据</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayVoucherLinkedBillAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.financepay.vouchermake</name>
+	  <label>放款制证</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayVoucherMakeAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.financepay.vouchercancel</name>
+	  <label>放款取消制证</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayVoucherCancelAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.financepay.linkntb</name>
+	  <label>单据联查预算</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayLinkNtbAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.financepay.ntblinkbill</name>
+	  <label>预算联查单据</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayNtbLinkBillAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.financepay.comparedate</name>
+	  <label>贷款放款展期增行日期校验</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.FinancepayCompareDateAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.financepay.InformerToFinancepayAction</name>
+	  <label>到账通知生成贷款放款</label>
+	  <clazz>nccloud.web.cdmc.cdm.financepay.action.InformerToFinancepayAction</clazz>
+	</action>
+</actions>

+ 56 - 0
zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/cdmc/financepay/config/authorize/financepay.xml

@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<authorizes>
+	<authorize>
+		<appcode>36630BDLC,36630BDLCL</appcode>
+		<actions>
+			<action>cdmc.financepay.financepaysave</action>
+			<action>cdmc.financepay.financepaycardqry</action>
+			<action>cdmc.financepay.financepaylistqry</action>
+			<action>cdmc.financepay.financepayqrybypks</action>
+			<action>cdmc.financepay.financepaydelete</action>
+			<action>cdmc.financepay.financepaycommit</action>
+			<action>cdmc.financepay.financepaysavecommit</action>
+			<action>cdmc.financepay.financepayuncommit</action>
+			<action>cdmc.financepay.financepayterminate</action>
+			<action>cdmc.financepay.financepayunterminate</action>
+			<action>cdmc.financepay.financepayprint</action>
+			<action>cdmc.financepay.financepayafteredit</action>
+			<action>cdmc.financepay.financepaydelversion</action>
+			<!--<action>cdmc.common.appregisterurlquery</action>凭证-->
+			<action>cdmc.common.loanlinkbill</action>
+			<action>cdmc.financepay.financepayversionlist</action>
+			<action>cdmc.financepay.financepayversiondetail</action>
+			<!--合同卡片查询 -->
+			<action>cdmc.contract.contractcardqry</action>
+			<!--凭证联查单据 -->
+			<action>cdmc.financepay.voucherlinkedbill</action>
+			<!--放款制证 -->
+			<action>cdmc.financepay.vouchermake</action>
+			<!--放款取消制证 -->
+			<action>cdmc.financepay.vouchercancel</action>
+			<action>ccc.bankprotocol.balance</action>
+			<action>cdmc.financepay.financepaycopy</action>
+			<action>cdmc.financepay.InformerToFinancepayAction</action>
+		</actions>
+	</authorize>
+	<authorize>
+		<appcode>*</appcode>
+		<actions>
+			<action>cdmc.financepay.financepaycardqry</action>
+			<action>cdmc.financepay.financepaylistqry</action>
+			<action>cdmc.financepay.financepayqrybypks</action>
+			<action>cdmc.financepay.financepayprint</action>
+			<action>cdmc.financepay.financepayversionlist</action>
+			<action>cdmc.financepay.financepayversiondetail</action>
+			<!--单据联查预算 -->
+			<action>cdmc.financepay.linkntb</action>
+			<!--预算联查单据 -->
+			<action>cdmc.financepay.ntblinkbill</action>
+			<!-- 还款方式查询 -->
+   			<action>tmpub.tmbd.repaymentmethodquerybypks</action>
+			<!--贷款放款展期增行日期校验 -->
+   			<action>cdmc.financepay.comparedate</action>
+			<action>cdmc.financepay.InformerToFinancepayAction</action>
+		</actions>
+	</authorize>
+</authorizes>

+ 104 - 0
zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/cdmc/repayintst/config/action/NCCrepayintst.xml

@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<actions>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstsave</name>
+	  <label>银行贷款付息新增/修改</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstSaveAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstcopy</name>
+	  <label>银行贷款付息复制</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstCopyAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstcardqry</name>
+	  <label>银行贷款付息卡片查询</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstQueryCardAction</clazz>
+	</action>
+    
+  	<action>
+	  <name>cdmc.repayintst.repayintstlistqry</name>
+	  <label>银行贷款付息列表查询</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstListQueryAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstqrybypks</name>
+	  <label>银行贷款付息列表根据主键查询</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstQueryByPksAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstdelete</name>
+	  <label>银行贷款付息删除</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstDeleteAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstcommit</name>
+	  <label>银行贷款付息提交</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstCommitAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstsavecommit</name>
+	  <label>银行贷款付息保存提交</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstSaveCommitAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstuncommit</name>
+	  <label>银行贷款付息收回</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstUnCommitAction</clazz>
+	</action>
+	
+	<action>
+	  <name>cdmc.repayintst.repayintstprint</name>
+	  <label>银行贷款付息打印</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstPrintAction</clazz>
+	</action>
+	
+	<action>
+		<name>cdmc.repayintst.cardeditafter</name>
+		<label>银行贷款付息编辑后事件</label>
+		<clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstCardAfterEditAction</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayintst.voucherlinkedbill</name>
+		<label>银行贷款付息凭证联查单据</label>
+		<clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstVoucherLinkedBillAction</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayintst.vouchercancel</name>
+		<label>银行贷款付息取消制证</label>
+		<clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstVoucherCancelAction</clazz>
+	</action>
+	<action>
+		<name>cdmc.repayintst.vouchermake</name>
+		<label>银行贷款付息制证</label>
+		<clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstVoucherMakeAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.repayintst.linkntb</name>
+	  <label>单据联查预算</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstLinkNtbAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.repayintst.ntblinkbill</name>
+	  <label>预算联查单据</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.RepayIntstNtbLinkBillAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.common.loanlinkbill</name>
+	  <label>公共的单据联查凭证</label>
+	  <clazz>nccloud.web.cdmc.common.action.LoanBillLinkVoucherQueryAction</clazz>
+	</action>
+	<action>
+	  <name>cdmc.repayintst.InformerToRepayintstAction</name>
+	  <label>到账通知发布生成贷款付息</label>
+	  <clazz>nccloud.web.cdmc.cdm.repayinterest.action.InformerToRepayintstAction</clazz>
+	</action>
+</actions>

+ 44 - 0
zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/cdmc/repayintst/config/authorize/repayintst.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<authorizes>
+	<authorize>
+		<appcode>36630BLPI,36630BLPIL</appcode>
+		<actions>
+			<action>cdmc.repayintst.repayintstsave</action>
+			<action>cdmc.repayintst.repayintstcardqry</action>
+			<action>cdmc.repayintst.repayintstlistqry</action>
+			<action>cdmc.repayintst.repayintstqrybypks</action>
+			<action>cdmc.repayintst.repayintstdelete</action>
+			<action>cdmc.repayintst.repayintstcommit</action>
+			<action>cdmc.repayintst.repayintstsavecommit</action>
+			<action>cdmc.repayintst.repayintstuncommit</action>
+			<action>cdmc.common.appregisterurlquery</action><!--凭证-->
+			<action>cdmc.common.loanlinkbill</action>
+			<action>cdmc.repayintst.repayintstprint</action>
+			<action>cdmc.repayintst.cardeditafter</action>
+			<!--凭证联查单据 -->
+			<action>cdmc.repayintst.voucherlinkedbill</action>
+			<action>cdmc.common.loanlinkbill</action>
+			<!--取消制证 -->
+			<action>cdmc.repayintst.vouchercancel</action>
+			<!--制证 -->
+			<action>cdmc.repayintst.vouchermake</action>
+			<action>cdmc.repayintst.repayintstcopy</action>
+			<action>cdmc.repayintst.InformerToRepayintstAction</action>
+		</actions>
+	</authorize>
+	
+	<authorize>
+		<appcode>*</appcode>
+		<actions>
+			<action>cdmc.repayintst.repayintstcardqry</action>
+			<action>cdmc.repayintst.repayintstlistqry</action>
+			<action>cdmc.repayintst.repayintstqrybypks</action>
+			<action>cdmc.repayintst.repayintstprint</action>
+			<!--单据联查预算 -->
+			<action>cdmc.repayintst.linkntb</action>
+			<!--预算联查单据 -->
+			<action>cdmc.repayintst.ntblinkbill</action>
+			<action>cdmc.repayintst.InformerToRepayintstAction</action>
+		</actions>
+	</authorize>
+</authorizes>

+ 117 - 0
zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/ifm/investapply/config/action/NCCApply.xml

@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<actions>
+	<action>
+		<name>ifm.apply.applysave</name>
+		<label>保存</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplySaveAction</clazz>
+	</action>
+
+	<action>
+		<name>ifm.apply.applylistqry</name>
+		<label>列表查询</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyListQueryAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.apply.applydelete</name>
+		<label>删除</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyDeleteAction</clazz>
+	</action>
+
+	<action>
+		<name>ifm.apply.applypageqry</name>
+		<label>分页查询</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyPageQuery</clazz>
+	</action>
+
+	<action>
+		<name>ifm.apply.applycommit</name>
+		<label>提交</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyCommitAction</clazz>
+	</action>
+
+	<action>
+		<name>ifm.apply.applycardqry</name>
+		<label>卡片查询</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyCardQueryAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.apply.savecommit</name>
+		<label>保存提交</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplySaveCommitAction</clazz>
+	</action>
+
+	<action>
+		<name>ifm.apply.applyuncommit</name>
+		<label>收回</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyUnCommitAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.apply.print</name>
+		<label>打印</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyPrintAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.apply.cardeditafter</name>
+		<label>编辑后事件</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyCardAfterAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.apply.init</name>
+		<label>初始化</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyInitAction</clazz>
+	</action>
+	<action>
+		<name>ifm.apply.applyvoucherlinkbill</name>
+		<label>凭证联查单据特转付款</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyLinkBillAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.apply.applyformlinkifm</name>
+		<label>报表联查理财单据</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyIfmQueryAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.apply.linkprint</name>
+		<label>联查申购打印</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyLinkPrintAction</clazz>
+	</action>
+		<action>
+		<name>ifm.apply.linkntb</name>
+		<label>联查计划预算</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyLinkNtbPlanAction</clazz>
+	</action>
+	<action>
+		<name>ifm.apply.ntblinkbill</name>
+		<label>预算联查单据</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyNtbLinkBillAction</clazz>
+	</action>
+	<action>
+	  <name>ifm.apply.vouchermake</name>
+	  <label>理财申购制证操作</label>
+	  <clazz>nccloud.web.ifm.investapply.action.ApplyVoucherMakeAction</clazz>
+	</action>
+	<action>
+	  <name>ifm.apply.vouchercancel</name>
+	  <label>理财申购取消制证</label>
+	  <clazz>nccloud.web.ifm.investapply.action.ApplyVoucherCancelAction</clazz>
+	</action>
+	<action>
+		<name>ifm.apply.copy</name>
+		<label>理财申购复制</label>
+		<clazz>nccloud.web.ifm.investapply.action.ApplyCopyAction</clazz>
+	</action>
+	<action>
+		<name>ifm.apply.LinkBillToApplyAction</name>
+		<label>到账通知发布生成理财申购</label>
+		<clazz>nccloud.web.ifm.investapply.action.LinkBillToApplyAction</clazz>
+	</action>
+	
+</actions>
+

+ 34 - 0
zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/ifm/investapply/config/authorize/authorize_investapply.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<authorizes>
+	<authorize>
+	<!--投资申购-->
+		<appcode>36670AP,36670APA,36660FMC</appcode>
+		<actions>
+			<action>ifm.apply.init</action>
+			<action>ifm.apply.applysave</action>
+			<action>ifm.apply.applylistqry</action>
+			<action>ifm.apply.applydelete</action>
+			<action>ifm.apply.applypageqry</action>
+			<action>ifm.apply.applycommit</action>
+			<action>ifm.apply.applycardqry</action>
+			<action>ifm.apply.savecommit</action>
+			<action>ifm.apply.applyuncommit</action>
+			<action>ifm.apply.print</action>
+			<action>ifm.apply.cardeditafter</action>
+			<action>ifm.apply.applyvoucherlinkbill</action>
+			<action>ifm.apply.applyformlinkifm</action>
+			<action>ifm.apply.linkprint</action>
+			<action>ifm.apply.vouchermake</action>
+			<action>ifm.apply.vouchercancel</action>
+			<action>ifm.apply.copy</action>
+		</actions>
+	</authorize>
+	<authorize>
+		<appcode>*</appcode>
+		<actions>
+			<action>ifm.apply.linkntb</action>
+			<action>ifm.apply.ntblinkbill</action>
+			<action>ifm.apply.LinkBillToApplyAction</action>
+		</actions>
+	</authorize>
+</authorizes>

+ 118 - 0
zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/ifm/redeem/config/action/NCCredeem.xml

@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<actions>
+	<action>
+		<name>ifm.redeem.init</name>
+		<label>单据构造</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemInitAction</clazz>
+	</action>
+	<action>
+	  <name>ifm.redeem.redeemsave</name>
+	  <label>资金赎回保存</label>
+	  <clazz>nccloud.web.ifm.redeem.action.RedeemSaveAction</clazz>
+	</action>
+	<action>
+	  <name>ifm.redeem.savecommit</name>
+	  <label>资金赎回保存提交</label>
+	  <clazz>nccloud.web.ifm.redeem.action.RedeemSaveSubmitAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.querybypk</name>
+		<label>卡片按照pk查询</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemCardQryAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.querylist</name>
+		<label>列表查询</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemListQueryAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.redeem.querypage</name>
+		<label>分页查询</label> 
+		<clazz>nccloud.web.ifm.redeem.action.RedeemPageQueryAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.delete</name>
+		<label>删除</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemDeleteAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.commit</name>
+		<label>提交</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemSubmitAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.uncommit</name>
+		<label>收回</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemUnSubmitAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.IFMAPPLYGridRef</name>
+		<label>投资产品参照</label>
+		<clazz>nccloud.web.ifm.ref.action.IFMApplyGridRefAction</clazz>
+	</action>
+	
+	<action>
+		<name>ifm.redeem.IFMRedeemGridRef</name>
+		<label>投资赎回参照</label>
+		<clazz>nccloud.web.ifm.ref.action.IFMRedeemGridRefAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.querybypkapply</name>
+		<label>申请快捷按钮到赎回卡片</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemCardQryByPkapplyAction</clazz>
+	</action>
+	<action>
+	
+		<name>ifm.redeem.redeemcardafter</name>
+		<label>编辑产品代码后事件</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemCardAfterEditAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.print</name>
+		<label>打印</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemPrintAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.linkntb</name>
+		<label>联查计划预算</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemLinkNtbPlanAction</clazz>
+	</action>
+	<action>
+		<name>ifm.redeem.ntblinkbill</name>
+		<label>预算联查单据</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemNtbLinkBillAction</clazz>
+	</action>
+	<action>
+		<name>ifm.cash.appregisterurlquery</name>
+		<label>查询小应用URL</label>
+		<clazz>nccloud.web.ifm.redeem.action.BillLinkVoucharQueryAction</clazz>
+	</action>
+		<action>
+		<name>ifm.redeem.redeemvoucherlinkbill</name>
+		<label>凭证联查单据</label>
+		<clazz>nccloud.web.ifm.redeem.action.RedeemLinkBillAction</clazz>
+	</action>
+	<action>
+	  <name>ifm.redeem.vouchermake</name>
+	  <label>理财赎回制证操作</label>
+	  <clazz>nccloud.web.ifm.redeem.action.RedeemVoucherMakeAction</clazz>
+	</action>
+	<action>
+	  <name>ifm.redeem.vouchercancel</name>
+	  <label>理财赎回取消制证</label>
+	  <clazz>nccloud.web.ifm.redeem.action.RedeemVoucherCancelAction</clazz>
+	</action>
+	<action>
+	  <name>ifm.redeem.copy</name>
+	  <label>理财赎回复制</label>
+	  <clazz>nccloud.web.ifm.redeem.action.RedeemCopyAction</clazz>
+	</action>
+	<!-- ZTH  -->
+	<action>
+	  <name>ifm.redeem.InformerToRedeemAction</name>
+	  <label>到账通知发布到理财赎回</label>
+	  <clazz>nccloud.web.ifm.redeem.action.InformerToRedeemAction</clazz>
+	</action>
+	
+</actions>

+ 37 - 0
zjcmp_cd/zjcmp_cd/src/client/yyconfig/modules/ifm/redeem/config/authorize/authorize_redeem.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<authorizes>
+	<authorize>
+	<!--投资赎回-->
+		<appcode>36670RED,36670AP,36670IPR,36670REDA,36660FMC</appcode>
+		<actions>
+			<action>ifm.redeem.init</action>
+			<action>ifm.redeem.redeemsave</action>
+			<action>ifm.redeem.savecommit</action>
+			<action>ifm.redeem.querybypk</action>
+			<action>ifm.redeem.querylist</action>
+			<action>ifm.redeem.querypage</action>
+			<action>ifm.redeem.delete</action>
+			<action>ifm.redeem.commit</action>
+			<action>ifm.redeem.uncommit</action>
+			<action>ifm.redeem.querybypkapply</action>
+			<action>ifm.redeem.redeemcardafter</action>
+			<action>ifm.redeem.print</action>
+			<action>ifm.redeem.redeemvoucherlinkbill</action>
+			<action>ifm.redeem.vouchermake</action>
+			<action>ifm.redeem.vouchercancel</action>
+			<action>ifm.redeem.copy</action>
+		</actions>
+	</authorize>
+	<authorize>
+		<appcode>*</appcode>
+		<actions>
+			<action>ifm.redeem.IFMAPPLYGridRef</action>
+			<action>ifm.redeem.IFMRedeemGridRef</action>
+			<action>ifm.redeem.linkntb</action>
+			<action>ifm.redeem.ntblinkbill</action>
+			<action>ifm.cash.appregisterurlquery</action>
+			<!-- ZTH 到账通知发布到理财赎回 -->
+			<action>ifm.redeem.InformerToRedeemAction</action>
+		</actions>
+	</authorize>
+</authorizes>

+ 59 - 0
zjcmp_cd/zjcmp_cd/src/private/nccloud/pubimpl/riadc/splitrule/info/SplitRuleRegisterServiceImpl.java

@@ -0,0 +1,59 @@
+package nccloud.pubimpl.riadc.splitrule.info;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import nc.bs.dao.BaseDAO;
+import nc.vo.jcom.lang.StringUtil;
+import nc.vo.pf.change.SplitItemVO;
+import nc.vo.pub.BusinessException;
+import nccloud.pubitf.riadc.splitrule.info.ISplitRuleRegisterService;
+
+public class SplitRuleRegisterServiceImpl implements ISplitRuleRegisterService {
+
+	@Override
+	public List<SplitItemVO> saveSplitItems(List<SplitItemVO> vos, String billtype) throws BusinessException {
+		// TODO Auto-generated method stub
+		List<SplitItemVO> result = new ArrayList<SplitItemVO>();
+		BaseDAO dao = new BaseDAO();
+		// 先删除该单据类型的所有分单依据
+		// 删除所有分单依据
+//		String billtype = vos.get(0).getBilltype();
+//		dao.deleteByClause(SplitItemVO.class, "billtype ='" + billtype + "'");
+		// 为避免NPE,将billtype提前传进来
+		dao.deleteByClause(SplitItemVO.class, "billtype ='" + billtype + "'");
+
+		// 分离哪些是更新的,哪些是插入的
+		List<SplitItemVO> updateVOs = new ArrayList<SplitItemVO>();
+		List<SplitItemVO> insertVOs = new ArrayList<SplitItemVO>();
+		for (SplitItemVO siVO : vos) {
+			if (StringUtil.isEmpty(siVO.getPrimaryKey())) {
+				insertVOs.add(siVO);
+			} else {
+				updateVOs.add(siVO);
+			}
+		}
+
+		// 处理保存的VOs
+		if (insertVOs.size() > 0) {
+			String[] pks = dao.insertVOList(insertVOs);
+			if (pks == null) {
+				throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("pfworkflow",
+						"PFConfigImpl-0001")/* 分担依据添加数据失败 */);
+			} else {
+				for (int i = 0; i < pks.length; i++) {
+					insertVOs.get(i).setPk_vosplititem(pks[i]);
+				}
+			}
+		}
+		result.addAll(insertVOs);
+		// 处理更新的VOs——使用原有PK
+		if (updateVOs.size() > 0) {
+			dao.insertVOArrayWithPK(updateVOs.toArray(new SplitItemVO[0]));
+		}
+		result.addAll(updateVOs);
+
+		return result;
+	}
+
+}

+ 532 - 0
zjcmp_cd/zjcmp_cd/src/test/nc/bs/icdmc/icdmc/repayprcpl/ace/rule/AceRepayPrcplDatacheckAndFillRule.java

@@ -0,0 +1,532 @@
+package nc.bs.icdmc.icdmc.repayprcpl.ace.rule;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TimeZone;
+
+import nc.bs.dao.BaseDAO;
+import nc.bs.framework.common.InvocationInfoProxy;
+import nc.bs.framework.common.NCLocator;
+import nc.bs.icdmc.icdmc.interest.util.CdmcInterestUtil;
+import nc.bs.pub.util.InnerBookAccountUtil;
+import nc.impl.pubapp.pattern.rule.IRule;
+import nc.itf.icdmc.icdmc.contract.IContractQueryService;
+import nc.itf.icdmc.icdmc.financepay.IFinancepayQueryService;
+import nc.itf.icdmc.icdmc.repayprcpl.IRepayPrcplQueryService;
+import nc.vo.icdmc.icdmc.contract.AggContractVO;
+import nc.vo.icdmc.icdmc.contract.ContractStatusEnum;
+import nc.vo.icdmc.icdmc.financepay.AggFinancepayVO;
+import nc.vo.icdmc.icdmc.financepay.FinStatusEnum;
+import nc.vo.icdmc.icdmc.financepay.FinancepayVO;
+import nc.vo.icdmc.icdmc.repayprcpl.AggRepayPrcplVO;
+import nc.vo.icdmc.icdmc.repayprcpl.RepayPrcplCreditVO;
+import nc.vo.icdmc.icdmc.repayprcpl.RepayPrcplGrtVO;
+import nc.vo.icdmc.icdmc.repayprcpl.RepayPrcplPlanVO;
+import nc.vo.icdmc.icdmc.repayprcpl.RepayPrcplVO;
+import nc.vo.icdmc.pub.GuaranteeTypeEnum;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.ISuperVO;
+import nc.vo.pub.SuperVO;
+import nc.vo.pub.VOStatus;
+import nc.vo.pub.lang.UFBoolean;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.pub.lang.UFDateTime;
+import nc.vo.pub.lang.UFDouble;
+import nc.vo.pubapp.pattern.exception.ExceptionUtils;
+import nc.vo.tam.account.accid.AccidVO;
+
+/**
+ * 内部还本-新增修改检查填充数据规则类
+ * @author zhanghjr
+ * @version 1.0
+ * @date 2019-4-26 下午2:15:33
+ * @des copyed by 外贷
+ */
+public class AceRepayPrcplDatacheckAndFillRule implements IRule<AggRepayPrcplVO> {
+	private BaseDAO dao = new BaseDAO();
+	private AggFinancepayVO finAggvo= null;
+	private AggContractVO contractAggvo= null;
+	@Override
+	public void process(AggRepayPrcplVO[] vos) {
+		try {
+			// 表头校验
+			this.checkAndFillHead(vos);
+			// 还本计划
+			this.checkAndFillPlan(vos);
+			// 担保
+//			this.checkAndFillGua(vos);
+			// 授信
+//			this.checkAndFillCredit(vos);
+			// 银团
+//			this.checkAndFillBank(vos);
+			// 其它
+			this.checkOtherRepayInfo(vos[0]);
+			//还本日期校验
+			this.checkAndRepayPlan(vos);
+			//检查可使用金额<外贷要,内贷不要>
+//			this.checkCanloan(vos[0]);
+		} catch (Exception e) {
+			ExceptionUtils.wrappException(e);
+		}
+	}
+	/**
+	 * 检查可使用金额
+	 * @param vos
+	 * @throws BusinessException 
+	 */
+	private void checkCanloan(AggRepayPrcplVO aggvo) throws BusinessException{
+		UFDouble repaymny = aggvo.getParentVO().getRepaymny() == null ? UFDouble.ZERO_DBL:aggvo.getParentVO().getRepaymny();
+		String pk_financepay = aggvo.getParentVO().getPk_financepay();
+		IFinancepayQueryService financepayQueryService = NCLocator.getInstance().lookup(IFinancepayQueryService.class);
+		AggFinancepayVO[] aggfinancepayvos = financepayQueryService.getAggVOsByPKs(pk_financepay);
+		if (aggfinancepayvos != null && aggfinancepayvos.length > 0) {
+			FinancepayVO register = aggfinancepayvos[0].getParentVO();
+			UFDouble canloan = register.getCanloan() == null ? UFDouble.ZERO_DBL:register.getCanloan();
+			if (UFBoolean.TRUE.equals(aggvo.getParentVO().getEnlendingflag()) && canloan.doubleValue() < repaymny.doubleValue()) {
+				ExceptionUtils.wrappBusinessException(nc.vo.ml.NCLangRes4VoTransl
+						.getNCLangRes().getStrByID("3636icdmc_ncc_0",
+								"03636icdmc_ncc-0231")/* @res "内贷可使用金额不足,需先内部贷款还本" */);
+			}
+		}
+	}
+	/**
+	 * 校验还本参照的放款单关联的还本日期
+	 * @param vos
+	 * @throws BusinessException
+	 */
+	private void checkAndRepayPlan(AggRepayPrcplVO[] vos) throws BusinessException{
+		RepayPrcplVO head = vos[0].getParentVO();
+		// 放款单
+		String pk_finpay = head.getPk_financepay();
+
+		IRepayPrcplQueryService service = NCLocator.getInstance().lookup(IRepayPrcplQueryService.class);
+		String sql = "pk_financepay = '" + pk_finpay + "' and dr = 0";
+		AggRepayPrcplVO[] aggVOs = service.queryAggRepayPrcplByCondition(sql);
+
+		for(AggRepayPrcplVO vo : aggVOs){
+			// 已生成的还本单的还本日期不能晚于新增还本单的还本日期
+		    if(!vo.getParentVO().getPk_repayprcpl_h().equals(head.getPk_repayprcpl_h()) && vo.getParentVO().getRepaydate().asBegin().after(head.getRepaydate().asBegin())){
+				ExceptionUtils.wrappBusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0061")/*@res "已生成的还本单的还本日期不能晚于新增还本单的还本日期"*/);
+			}
+
+		}
+	}
+	/**
+	 * 检查补充表头数据
+	 * @param vos
+	 * @throws BusinessException
+	 */
+	private void checkAndFillHead(AggRepayPrcplVO[] vos)
+			throws BusinessException {
+//		还本日期	日期型、是	大于等于放款日期,默认为当前的系统日期
+//		是否逾期	是/否	逾期的情况下算逾期的利息,并推送生成逾期的付息单。逾期利率从放款单上取。
+//		还本金额	数值型、是	通过表体实际还本金自动加和
+		// 从放款单获取未还本金额
+//		利息金额	数值型	提前还本金额的利息或者逾期的利息。
+		 
+		//add by zhanghjr 检查银行账户或者内部账户是否存在{新增校验:0626暂时去掉,前台代码做了必输项处理}
+//		checkFieldsAccountNull(vos[0]);
+		// 检查非空
+		checkFieldsNull(vos[0]);
+
+		RepayPrcplVO head = vos[0].getParentVO();
+		// 放款单
+		String pk_finpay = head.getPk_financepay();
+		// 还本日期
+		UFDate repaydate = head.getRepaydate();
+		// 获取放款单
+		AggFinancepayVO payVO = this.getPayVO(pk_finpay);
+		//还款金额不得大于未还款金额(用本币校验) add by liglt
+		UFDouble repaymny = head.getRepaymny();
+//		UFDouble unrepaymny = head.getUnrepaymny();
+//		if ( repaymny.compareTo(unrepaymny)>0 ) {
+//			throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0062")/*@res "不得大于未还款金额"*/+unrepaymny+"]");
+//		}
+		
+		//change by zhanghjr begin:由于还本金额中未还本金要动态变化,所以,要根据应还本金进行判断
+		//1,需求要求:还本上未还本金=应还本金(放款单未还本金)-实际还本金额,作如下改动。
+		UFDouble repayplanmny = head.getRepayplanmny();
+		if ( repaymny.compareTo(repayplanmny)>0 ) {
+			throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0284")/*@res "不得大于应还本金额"*/+repayplanmny+"]");
+		}
+		//end
+
+		UFDate repayDate = this.dealTimeZone(repaydate);
+		// 放款日期
+		UFDate loandate = payVO.getParentVO().getLoandate();
+		UFDate loanDate = this.dealTimeZone(loandate);
+//		if(repayDate.asBegin().before(loanDate.getDateAfter(1).asBegin())){
+//					throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0063")/*@res "还本日期["*/
+//					+ repayDate.toString().substring(0, 10)+nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0064")/*@res "]不能早于等于合同放款日期["*/
+//					+ loanDate.toString().substring(0, 10)+"]");
+//		}
+//		// 校验还本日期不能早于最后一次计息的结息日
+//		Map<String, UFDate> lastInstDateMap = new HashMap<String, UFDate>();
+//		lastInstDateMap = CdmcInterestUtil.getNewlyIntstDate(new AggFinancepayVO[]{payVO});
+//		if(lastInstDateMap != null && lastInstDateMap.get(payVO.getPrimaryKey())!=null){
+//			UFDate getLastInstDate = lastInstDateMap.get(payVO.getPrimaryKey());
+//			UFDate lastInstDate = this.dealTimeZone(getLastInstDate);
+//         	if(repayDate.asBegin().before(lastInstDate.asBegin())){
+//				throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0063")/*@res "还本日期["*/
+//						+repayDate.toString().substring(0, 10)
+//						+ nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0065")/*@res "]不能早于最后一次计息的结息日["*/
+//						+lastInstDate.toString().substring(0, 10)+"]");
+//			}
+//		}
+
+		// 利随本清(由还本自主选择勾选,后台不在进行处理)
+		/*
+		 * if(UFBoolean.TRUE.equals(head.getIntrstoffbyprcplflag())){ //
+		 * if(head.getInterestmny()==null || head.getInterestmny().getDouble()<=0){ //
+		 * throw new BusinessException("利随本清情况下利息值不能小于0"); // } //如果是提前还本
+		 * //勾选表头利随本清默认勾选重算还款计划 head.setRegenrepayplan(UFBoolean.TRUE); }else{
+		 * //否则取消勾选重算还款计划 head.setRegenrepayplan(UFBoolean.FALSE); }
+		 */
+	}
+	/**
+	 * 检查非空
+	 * @param aggvo
+	 * @throws BusinessException
+	 */
+	private void checkFieldsNull(AggRepayPrcplVO aggvo) throws BusinessException{
+		StringBuilder msg = new StringBuilder();
+		RepayPrcplVO parentVO = aggvo.getParentVO();
+		msg.append(checkFieldNull(parentVO,RepayPrcplVO.PK_ORG,nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0066")/*@res "还本组织"*/));
+		msg.append(checkFieldNull(parentVO,RepayPrcplVO.PK_FINANCEPAY,nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0067")/*@res "放款单"*/));
+		msg.append(checkFieldNull(parentVO,RepayPrcplVO.REPAYDATE,nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0068")/*@res "还本日期"*/));
+		msg.append(checkFieldNull(parentVO,RepayPrcplVO.REPAYMNY,nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0069")/*@res "还本金额"*/));
+		if(msg.length()>0){
+			throw new BusinessException(msg.toString());
+		}
+	}
+	/**
+	 * 检查非空
+	 * @param vo
+	 * @param field
+	 * @param name
+	 * @return
+	 * @throws BusinessException
+	 */
+	private String checkFieldNull(SuperVO vo,String field,String name)throws BusinessException{
+		if(nc.vo.tmpub.util.StringUtil.isNull(vo.getAttributeValue(field))){
+			return "["+name+nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0070")/*@res "]内容不能为空\n"*/;
+		}
+		return "";
+	}
+	/**
+	 * 检查计划数据
+	 *
+	 * @param vos
+	 * @throws BusinessException
+	 */
+	private void checkAndFillPlan(AggRepayPrcplVO[] vos)
+			throws BusinessException {
+		ISuperVO[] planVOs = vos[0].getChildren(RepayPrcplPlanVO.class);
+
+		if(checkRowNull(planVOs)){
+			throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0071")/*@res "表体还本计划信息不能为空"*/);
+		}
+		checkRepayPlanType(vos, planVOs);
+		// 检查表头表体金额一致
+		UFDouble repaymny = vos[0].getParentVO().getRepaymny();
+
+		UFDouble repaymny_b = UFDouble.ZERO_DBL;
+		
+		//增加一个list存放已经删除的子计划,过滤掉重复的但没有删除标记的
+		List<String> deleteList = new ArrayList<String>(planVOs.length);
+		
+		for(ISuperVO vo:planVOs){
+			if(vo.getStatus()== VOStatus.DELETED){
+				deleteList.add((String)vo.getAttributeValue(RepayPrcplPlanVO.PK_REPAYPLAN));
+				continue;
+			}
+			repaymny_b = repaymny_b.add((UFDouble)vo.getAttributeValue(RepayPrcplPlanVO.ACTREPAYMNY));
+		}
+//		for(ISuperVO vo:planVOs){
+//			if(vo.getStatus()== VOStatus.DELETED ){
+//				deleteList.contains((String)vo.getAttributeValue(RepayPrcplPlanVO.PK_REPAYPLAN));
+//				continue;
+//			}
+//			repaymny_b = repaymny_b.add((UFDouble)vo.getAttributeValue(RepayPrcplPlanVO.ACTREPAYMNY));
+//		}
+		if(repaymny.sub(repaymny_b).doubleValue()!=0){
+			throw new BusinessException( nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0072")/*@res "表头还本金额["*/+repaymny+nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0073")/*@res "]不等于还本计划实际还本金额汇总值["*/+repaymny_b+"]");
+		}
+		for(ISuperVO vo:planVOs){
+			// 对于新增数据,处理下外键
+			vo.setAttributeValue(RepayPrcplPlanVO.PK_REPAYPRCPL_H, vos[0].getParentVO().getPrimaryKey());
+		}
+	}
+	/**
+	 * 检查还款计划类型
+	 *
+	 * @param vos
+	 * @throws BusinessException
+	 */
+	private void checkRepayPlanType(AggRepayPrcplVO[] vos, ISuperVO[] planVOs)
+			throws BusinessException {
+		// 检查非空
+		checkFieldsNull(vos[0]);
+		RepayPrcplVO head = vos[0].getParentVO();
+		// 还本日期
+		UFDate repaydate = head.getRepaydate();
+		if(null == repaydate){
+			throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0074")/*@res "还本日期异常!"*/);
+		}
+		boolean beforeFlag = false;//提前还款标记
+		boolean afterFlag = false;//逾期还款标记
+		boolean normalFlag = false;//正常还款标记
+		// 还本日期与还款计划子表日期对比,提前还款与逾期还款不能在同一个放款单中执行(暂行2019-01-02)
+		for(ISuperVO vo:planVOs){
+			//过滤掉无效数据
+			if(VOStatus.DELETED == vo.getStatus()){
+				continue;
+			}
+			UFDate planRepayDate = (UFDate)vo.getAttributeValue(RepayPrcplPlanVO.REPAYDATE);
+			if (repaydate.beforeDate(planRepayDate)){
+				beforeFlag = true;
+			} else if (repaydate.afterDate(planRepayDate)){
+				afterFlag = true;
+			} else {
+				normalFlag = true;
+			}
+		}
+		if (beforeFlag && (afterFlag || normalFlag)) {
+			throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0075")/*@res "提前还款与其他还款不能在同一个还本单中执行!请修改还款金额,优先执行完逾期还款与正常还款。"*/);
+		}
+		if (!beforeFlag && UFBoolean.TRUE.equals(head.getIntrstoffbyprcplflag())){
+			throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0076")/*@res "非提前还款,不允许利随本清。"*/);
+		}
+	}
+
+	/**
+	 * 检查担保数据
+	 *
+	 * @param vos
+	 * @throws BusinessException
+	 */
+	private void checkAndFillGua(AggRepayPrcplVO[] vos)
+			throws BusinessException {
+		if(!UFBoolean.TRUE.equals(vos[0].getParentVO().getReleasegrtflag()) || isCredit(vos)){
+			// 非担保数据,或者担保方式为“信用(CREDIT)”时不需要判断
+			return;
+		}
+		ISuperVO[] children = vos[0].getChildren(RepayPrcplGrtVO.class);
+		if(checkRowNull(children)){
+			throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0077")/*@res "表体担保信息不能为空"*/);
+		}
+		for(ISuperVO creditvo :  children ){
+			if(creditvo.getAttributeValue(RepayPrcplGrtVO.PK_GRTCONTRACT)==null ||creditvo.getAttributeValue(RepayPrcplGrtVO.RELEASEGRTMNY)==null){
+				throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0078")/*@res "表体担保信息不完整,请检查数据是否完整"*/);
+			}
+		}
+	}
+	/**
+	 * 检查贷款合同担保方式是否为信用
+	 *
+	 * @param vos
+	 * @throws BusinessException
+	 */
+	private boolean isCredit(AggRepayPrcplVO[] vos) throws BusinessException {
+		// 检查非空
+		checkFieldsNull(vos[0]);
+		RepayPrcplVO head = vos[0].getParentVO();
+		// 放款单
+		String pk_finpay = head.getPk_financepay();
+		// 获取放款单
+		AggFinancepayVO payVO = this.getPayVO(pk_finpay);
+		String contractid = payVO.getParentVO().getContractid();
+		AggContractVO contractVO = this.getContractVO(contractid);
+		boolean isCredit = contractVO.getParentVO().getGuaranteetype().equals(GuaranteeTypeEnum.CREDIT);//担保方式是否为信用
+		return isCredit;
+	}
+
+	/**
+	 * 检查授信数据
+	 *
+	 * @param vos
+	 * @throws BusinessException
+	 */
+	private void checkAndFillCredit(AggRepayPrcplVO[] vos)
+			throws BusinessException {
+		if(!UFBoolean.TRUE.equals(vos[0].getParentVO().getReleasecreditflag())){
+			// 非授信数据
+			return;
+		}
+		ISuperVO[] children = vos[0].getChildren(RepayPrcplCreditVO.class);
+
+		if(checkRowNull(children)){
+			throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0079")/*@res "表体授信信息不能为空"*/);
+		}
+
+		for(ISuperVO creditvo :  children ){
+			if(creditvo.getAttributeValue(RepayPrcplCreditVO.PK_CCPROTOCOL)==null ||creditvo.getAttributeValue(RepayPrcplCreditVO.RELEASEMNY)==null){
+				throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0080")/*@res "表体授信信息不完整,请检查数据是否完整"*/);			}
+		}
+	}
+
+	/**
+	 * 检查银团数据
+	 * <1909银团没有>
+	 * @param vos
+	 * @throws BusinessException
+	 */
+	private void checkAndFillBank(AggRepayPrcplVO[] vos)
+			throws BusinessException {
+		if(!UFBoolean.TRUE.equals(vos[0].getParentVO().getAgentbankmgt())){
+			// 非银团数据
+			return;
+		}
+
+//		ISuperVO[] children = vos[0].getChildren(RepayPrcplBankVO.class);
+
+//		if(checkRowNull(children)){
+//			throw new BusinessException("表体银团信息不能为空");
+//		}
+	}
+	/**
+	 * 检查空行
+	 * @param children
+	 * @return
+	 */
+	private boolean checkRowNull(ISuperVO[] children){
+		if(children == null ||  children.length==0){
+			return true;
+		}
+		for(ISuperVO child:children){
+			if(child.getStatus()==VOStatus.NEW||child.getStatus()==VOStatus.UPDATED||child.getStatus()==VOStatus.UNCHANGED){
+				// 存在有效的还本计划数据
+				return false;
+			}
+		}
+		return true;
+	}
+	/**
+	 * 检查是否存在有其他未处理完还本单据
+	 * @throws BusinessException
+	 */
+	private void checkOtherRepayInfo(AggRepayPrcplVO repayAggVO)throws BusinessException {
+
+		// 查询同一放款单未处理完的还本数据
+		String pk_repayprcpl = repayAggVO.getPrimaryKey();
+		String  pk_finpay = repayAggVO.getParentVO().getPk_financepay();
+		StringBuilder condition = new StringBuilder();
+		condition.append("dr=0 and busistatus not in (2) and pk_financepay='").append(pk_finpay).append("'");
+
+		if(pk_repayprcpl!=null){
+			// 不包含当前操作单据
+			condition.append(" and ").append(RepayPrcplVO.PK_REPAYPRCPL_H).append(" not in ('").append(pk_repayprcpl).append("')");
+		}
+		Collection<RepayPrcplVO> finpayVOs = dao.retrieveByClause(RepayPrcplVO.class,condition.toString());
+		if(finpayVOs!=null && finpayVOs.size()>0){
+			throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0081")/*@res "存在未处理完的还本业务,当前操作不能继续"*/);
+		}
+		// 要锁表才能达到效果,否则并发有问题,不完善方案,后续优化再处理吧
+
+		if(repayAggVO.getPrimaryKey()==null){
+			// 新增业务检查判断合同、放款是否冻结
+			this.checkContractStatus(repayAggVO.getParentVO().getPk_contract());
+			this.checkFinPayStatus(repayAggVO.getParentVO().getPk_financepay());
+		}
+	}
+
+	/**
+	 * 检查合同是否终止
+	 * @param pk_contract
+	 * @throws BusinessException
+	 */
+	private void checkContractStatus(String pk_contract)throws BusinessException{
+		AggContractVO contractVO = this.getContractVO(pk_contract);
+		if(contractVO.getParentVO().getBusistatus().equals(ContractStatusEnum.TERMINATE.toIntValue())){
+			throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0082")/*@res "当前业务选择的合同已终止,不能新增还本业务单据"*/);
+		}
+
+	}
+	/**
+	 * 检查放款是否终止
+	 * @param pk_finpay
+	 * @throws BusinessException
+	 */
+	private void checkFinPayStatus(String pk_finpay) throws BusinessException{
+		AggFinancepayVO payAggvo = this.getPayVO(pk_finpay);
+		if(payAggvo.getParentVO().getBusistatus().equals(FinStatusEnum.TERMINATE.toIntValue())){
+			throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0083")/*@res "当前业务选择的放款单已终止,不能新增还本业务单据"*/);
+		}
+	}
+	/**
+	 * 查询放款单
+	 * @param repayprcplVOs
+	 * @return
+	 * @throws BusinessException
+	 */
+	private AggFinancepayVO getPayVO(String pk_finpay) throws BusinessException{
+		if(finAggvo==null){
+			AggFinancepayVO[] payVOS = NCLocator.getInstance().lookup(IFinancepayQueryService.class).getAggVOsByPKs(new String[]{pk_finpay});
+			if(payVOS==null || payVOS.length==0){
+				// 获取放款单失败
+				throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0084")/*@res "获取放款单信息失败,请检查数据是否正确"*/);
+			}
+
+			finAggvo = payVOS[0];
+		}
+		return finAggvo;
+	}
+
+	/**
+	 * 查询贷款合同
+	 * @param repayprcplVOs
+	 * @return
+	 * @throws BusinessException
+	 */
+	private AggContractVO getContractVO(String pk_contract) throws BusinessException{
+		if(contractAggvo==null){
+			AggContractVO[] contracVOs = NCLocator.getInstance().lookup(IContractQueryService.class).getAggVOsByPKs(new String[]{pk_contract});
+			if(contracVOs==null || contracVOs.length==0){
+				// 获取放款单失败
+				throw new BusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0085")/*@res "获取贷款合同信息失败,请检查数据是否正确"*/);
+			}
+
+			contractAggvo = contracVOs[0];
+		}
+		return contractAggvo;
+	}
+
+	/**
+	 * 多时区处理方法
+	 * @param date
+	 * @return
+	 */
+	private UFDate dealTimeZone(UFDate date){
+		String zone = InvocationInfoProxy.getInstance().getTimeZone();
+		String repayDate = new UFDateTime(date.toString()).toStdString(TimeZone.getTimeZone(zone));
+		return new UFDate(repayDate);
+	}
+	/**
+	 * 新增校验单位银行账户/内部账户--->贷款银行/内部贷款账户有值问题
+	 * @author zhanghjr
+	 * @version 1.0
+	 * @date 2019年6月26日 下午12:16:23
+	 */
+	private void checkFieldsAccountNull(AggRepayPrcplVO aggvo) throws BusinessException{
+		StringBuilder msg = new StringBuilder();
+		RepayPrcplVO parentVO = aggvo.getParentVO();
+		String pk_loanbankacc = parentVO.getPk_loanbankacc();
+		if(nc.vo.tmpub.util.StringUtil.isNotNull(pk_loanbankacc)){
+			AccidVO accidVO = InnerBookAccountUtil.queryAccidVO(pk_loanbankacc);//查询是不是内部账
+			if(nc.vo.tmpub.util.StringUtil.isNotNull(accidVO)){
+				//是内部账户----->内部贷款账户必须有值
+				msg.append(checkFieldNull(parentVO,RepayPrcplVO.PK_INNERLOANACCOUNT,nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0238")/*@res "内部贷款账户"*/));
+			}else{
+				//是银行账户----->贷款账户必须有值
+				msg.append(checkFieldNull(parentVO,RepayPrcplVO.LOANACCOUNT,nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("3636icdmc_ncc_0","03636icdmc_ncc-0239")/*@res "贷款账户"*/));
+			}
+			
+		}
+		if(msg.length()>0){
+			throw new BusinessException(msg.toString());
+		}
+	}
+}

+ 252 - 0
zjcmp_cd/zjcmp_cd/src/test/nccloud/web/cmp/informer/action/InformerAction.java

@@ -0,0 +1,252 @@
+package nccloud.web.cmp.informer.action;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import nc.md.model.MetaDataException;
+import nc.md.persist.framework.IMDPersistenceQueryService;
+import nc.vo.cmp.informer.InformerAppendVO;
+import nc.vo.cmp.informer.InformerReleaseVO;
+import nc.vo.cmp.informer.InformerVO;
+import nc.vo.ml.NCLangRes4VoTransl;
+import nccloud.commons.lang.StringUtils;
+import nccloud.dto.cmp.informer.vo.InformerGenerateInfo;
+import nccloud.dto.cmp.vo.QueryInfo;
+import nccloud.framework.core.exception.ExceptionUtils;
+import nccloud.framework.service.ServiceLocator;
+import nccloud.framework.web.container.IRequest;
+import nccloud.framework.web.convert.precision.GridPrecisionOperator;
+import nccloud.framework.web.ui.pattern.grid.Grid;
+import nccloud.framework.web.ui.pattern.grid.GridOperator;
+import nccloud.pubitf.cmp.informer.INCCInformerQueryService;
+
+public class InformerAction extends InformerSuperAction {
+	public InformerVO[] getInformerVOsByPKs(String[] pks) throws Exception {
+		INCCInformerQueryService service = this.getInformerQueryService();
+		InformerVO[] vos = service.queryByPks(pks);
+		return vos;
+	}
+
+	public InformerReleaseVO[] getOperateReleaseVOs(IRequest request) throws Exception {
+		return null;
+	}
+
+	public InformerVO[] getOperateInformerVOs(IRequest request) throws Exception {
+		QueryInfo info = (QueryInfo) this.getRequestInfo(request, QueryInfo.class);
+		if (null == info || null == info.getPks() || info.getPks().length == 0) {
+			ExceptionUtils.wrapBusinessException(
+					NCLangRes4VoTransl.getNCLangRes().getStrByID("3607nccloud_ncc_0", "03607nccloud_ncc-0241"));
+		}
+
+		String[] pks = info.getPks();
+		InformerVO[] vos = this.getInformerVOsByPKs(pks);
+		if (vos == null || vos.length == 0) {
+			ExceptionUtils.wrapBusinessException(
+					NCLangRes4VoTransl.getNCLangRes().getStrByID("3607nccloud_ncc_0", "03607nccloud_ncc-0241"));
+		}
+
+		return vos;
+	}
+
+	public InformerVO[] getRelationVO(InformerVO[] informvos) {
+		Map<String, InformerVO> map = new HashMap();
+
+		for (int i = 0; i < informvos.length; ++i) {
+			if (informvos[i].getPk_lower() != null) {
+				Collection coll = null;
+
+				try {
+					coll = ((IMDPersistenceQueryService) ServiceLocator.find(IMDPersistenceQueryService.class))
+							.queryBillOfVOByCond(InformerVO.class, "pk_lower='" + informvos[i].getPk_lower() + "'",
+									false);
+					Iterator var5 = coll.iterator();
+
+					while (var5.hasNext()) {
+						InformerVO vo = (InformerVO) var5.next();
+						map.put(vo.getPk_informer(), vo);
+					}
+				} catch (MetaDataException var7) {
+					ExceptionUtils.wrapException(var7);
+					var7.printStackTrace();
+				}
+			}
+		}
+
+		return (InformerVO[]) map.values().toArray(new InformerVO[0]);
+	}
+
+	public String getErrorMessage(InformerAppendVO[] appendvos, InformerVO[] informvos) {
+		StringBuffer sb = new StringBuffer();
+
+		for (int i = 0; i < appendvos.length; ++i) {
+			if (appendvos[i] != null) {
+				String errormessage = appendvos[i].getErrorMessage();
+				if (errormessage != null && !"".equals(errormessage)) {
+					sb.append(
+							NCLangRes4VoTransl.getNCLangRes().getStrByID("3607nccloud_ncc_0", "03607nccloud_ncc-0242"));
+					sb.append(informvos[i].getVbillno()).append(" ");
+					sb.append(errormessage).append("\n");
+				}
+			}
+		}
+
+		return sb.toString();
+	}
+
+	public Grid getResultGrid(String[] status, List<String> pks, IRequest request) {
+		Grid result = null;
+
+		try {
+			InformerVO[] resultvos = this.getInformerVOsByPKs((String[]) pks.toArray(new String[0]));
+			List<InformerVO> list = new ArrayList();
+			InformerVO[] var7 = resultvos;
+			int var8 = resultvos.length;
+
+			for (int var9 = 0; var9 < var8; ++var9) {
+				InformerVO informerVO = var7[var9];
+				String[] var11 = status;
+				int var12 = status.length;
+
+				for (int var13 = 0; var13 < var12; ++var13) {
+					String str = var11[var13];
+					if (informerVO.getGenerateflag().equals(str)) {
+						list.add(informerVO);
+					}
+				}
+			}
+
+			if (list.size() > 0) {
+				QueryInfo info = (QueryInfo) this.getRequestInfo(request, QueryInfo.class);
+				GridOperator operator = new GridOperator(info.getPageid());
+				result = operator.toGrid(list.toArray(new InformerVO[0]));
+				result.getModel().setAreacode("table");
+				this.processPrecision(result);
+			}
+
+			return result;
+		} catch (Exception var15) {
+			return null;
+		}
+	}
+
+	public Grid getResultGrid(IRequest request, String[] status, List<String> pks) {
+		Grid result = null;
+
+		try {
+			InformerVO[] resultvos = this.getOperateInformerVOs(request);
+			List<InformerVO> list = new ArrayList();
+			InformerVO[] var7 = resultvos;
+			int var8 = resultvos.length;
+
+			for (int var9 = 0; var9 < var8; ++var9) {
+				InformerVO informerVO = var7[var9];
+				String[] var11 = status;
+				int var12 = status.length;
+
+				for (int var13 = 0; var13 < var12; ++var13) {
+					String str = var11[var13];
+					if (informerVO.getGenerateflag().equals(str) && !pks.contains(informerVO.getPk_informer())) {
+						list.add(informerVO);
+					}
+				}
+			}
+
+			if (list.size() > 0) {
+				QueryInfo info = (QueryInfo) this.getRequestInfo(request, QueryInfo.class);
+				GridOperator operator = new GridOperator(info.getPageid());
+				result = operator.toGrid(list.toArray(new InformerVO[0]));
+				result.getModel().setAreacode("table");
+				this.processPrecision(result);
+			}
+
+			return result;
+		} catch (Exception var15) {
+			return null;
+		}
+	}
+
+	public Object getResultVO(InformerVO[] informvos, InformerAppendVO[] appendvos, Grid grid) {
+		int total = informvos.length;
+		int failNum = 0;
+		StringBuffer sb = new StringBuffer();
+		String errorMessage;
+		if (appendvos.length == 1) {
+			errorMessage = appendvos[0].getErrorMessage();
+			if (StringUtils.isNotEmpty(errorMessage)) {
+				String[] str = errorMessage.split("\n");
+				failNum = str.length;
+				sb.append(errorMessage);
+			}
+		} else {
+			for (int i = 0; i < appendvos.length; ++i) {
+				if (appendvos[i] != null) {
+					String errormessage = appendvos[i].getErrorMessage();
+					if (errormessage != null && !"".equals(errormessage)) {
+						sb.append(NCLangRes4VoTransl.getNCLangRes().getStrByID("3607nccloud_ncc_0",
+								"03607nccloud_ncc-0242"));
+						sb.append(informvos[i].getVbillno()).append(" ");
+						sb.append(errormessage).append("\n");
+						++failNum;
+					}
+				}
+			}
+		}
+
+		errorMessage = sb.toString();
+		InformerResult result = new InformerResult();
+		result.setTotal(total);
+		result.setSuccessNum(total - failNum);
+		result.setFailNum(failNum);
+		if (errorMessage != null && !errorMessage.equals("")) {
+			result.setErrormessage(errorMessage);
+		}
+
+		result.setResult(grid);
+		return result;
+	}
+
+	private void processPrecision(Grid grid) {
+		GridPrecisionOperator precision = new GridPrecisionOperator(grid);
+		precision.addCurrencyMnyPrecision("moneyy", "pk_currtype");
+		precision.addCurrencyMnyPrecision("usemoney", "pk_currtype");
+		precision.processPrecision();
+	}
+
+	public Grid getGenerateGrid(InformerGenerateInfo geneinfo, String[] status) {
+		Grid result = null;
+
+		try {
+			InformerVO[] resultvos = this.getInformerVOsByPKs(geneinfo.getPks());
+			List<InformerVO> list = new ArrayList();
+			InformerVO[] var6 = resultvos;
+			int var7 = resultvos.length;
+
+			for (int var8 = 0; var8 < var7; ++var8) {
+				InformerVO informerVO = var6[var8];
+				String[] var10 = status;
+				int var11 = status.length;
+
+				for (int var12 = 0; var12 < var11; ++var12) {
+					String str = var10[var12];
+					if (informerVO.getGenerateflag().equals(str)) {
+						list.add(informerVO);
+					}
+				}
+			}
+
+			if (list.size() > 0) {
+				GridOperator operator = new GridOperator(geneinfo.getPageid());
+				result = operator.toGrid(list.toArray(new InformerVO[0]));
+				result.getModel().setAreacode("table");
+				this.processPrecision(result);
+			}
+
+			return result;
+		} catch (Exception var14) {
+			return null;
+		}
+	}
+}

+ 275 - 0
zjcmp_cd/zjcmp_cd/src/test/nccloud/web/riaam/user/action/UserCardAction.java

@@ -0,0 +1,275 @@
+package nccloud.web.riaam.user.action;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import nc.itf.uap.IUAPQueryBS;
+import nc.itf.uap.rbac.IUserManageQuery;
+import nc.vo.bd.cust.CustomerVO;
+import nc.vo.bd.psn.PsndocVO;
+import nc.vo.bd.supplier.SupplierVO;
+import nc.vo.ml.AbstractNCLangRes;
+import nc.vo.ml.LanguageVO;
+import nc.vo.ml.MultiLangContext;
+import nc.vo.ml.NCLangRes4VoTransl;
+import nc.vo.ncaam.developer.DeveloperVO;
+import nc.vo.org.GroupVO;
+import nc.vo.org.OrgVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.lang.UFBoolean;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.sm.UserVO;
+import nc.vo.uap.rbac.UserGroupVO;
+import nc.vo.uap.rbac.util.RbacUserPwdUtil;
+import nccloud.commons.lang.ArrayUtils;
+import nccloud.commons.lang.StringUtils;
+import nccloud.framework.core.exception.ExceptionUtils;
+import nccloud.framework.core.json.IJson;
+import nccloud.framework.service.ServiceLocator;
+import nccloud.framework.web.action.itf.ICommonAction;
+import nccloud.framework.web.container.ClientInfo;
+import nccloud.framework.web.container.IRequest;
+import nccloud.framework.web.container.SessionContext;
+import nccloud.framework.web.json.JsonFactory;
+import nccloud.framework.web.ui.model.row.Cell;
+import nccloud.framework.web.ui.model.row.Row;
+import nccloud.framework.web.ui.pattern.form.Form;
+import nccloud.framework.web.ui.pattern.form.FormOperator;
+import nccloud.framework.web.ui.pattern.grid.Grid;
+import nccloud.framework.web.ui.pattern.grid.GridOperator;
+import nccloud.pubitf.baseapp.param.ISysinitAccessor;
+
+public class UserCardAction
+  implements ICommonAction
+{
+  public Object doAction(IRequest request)
+  {
+    String str = request.read();
+    IJson json = JsonFactory.create();
+    Map map = (Map)json.fromJson(str, Map.class);
+    String cuserid = (String)map.get("cuserid");
+    String status = (String)map.get("status");
+    Map result = new HashMap();
+    IUserManageQuery service = (IUserManageQuery)ServiceLocator.find(IUserManageQuery.class);
+
+    FormOperator formOperator = new FormOperator("10120USRM_card");
+    GridOperator gridOperator = new GridOperator("10120USRM_card");
+
+    ISysinitAccessor sysInitAcc = (ISysinitAccessor)ServiceLocator.find(ISysinitAccessor.class);
+
+    boolean isSelectComDisplay = true;
+    try {
+      isSelectComDisplay = sysInitAcc.getRBACParamEnabled(
+        SessionContext.getInstance().getClientInfo().getPk_group(), "RBAC010", false);
+    }
+    catch (BusinessException e1) {
+      ExceptionUtils.wrapException(e1);
+    }
+    result.put("isShow", Boolean.valueOf(isSelectComDisplay));
+    LanguageVO currentLang = MultiLangContext.getInstance().getCurrentLangVO();
+
+    if ((str == null) || ("{}".equals(str)) || (cuserid == null)) {
+      UserVO vo = new UserVO();
+      vo.setCreator(SessionContext.getInstance().getClientInfo().getUserid());
+      vo.setPk_group(SessionContext.getInstance().getClientInfo().getPk_group());
+
+      vo.setBase_doc_type(Integer.valueOf(0));
+      vo.setPwdlevelcode("update");
+      vo.setFormat("FMT0Z000000000000000");
+      vo.setContentlang(currentLang.getPk_multilang());
+      vo.setEnablestate(Integer.valueOf(2));
+      vo.setIsLocked(UFBoolean.valueOf(false));
+      vo.setAbledate(new UFDate());
+      vo.setIdentityverifycode("staticpwd");
+      vo.setUser_type(Integer.valueOf(1));
+      ISysinitAccessor paramservice = (ISysinitAccessor)ServiceLocator.find(ISysinitAccessor.class);
+      try {
+        String flag = paramservice.getParaString(null, "RBAC016");
+        if ("N".equals(flag))
+          vo.setUser_password(RbacUserPwdUtil.getRandomSeq());
+      }
+      catch (BusinessException e) {
+        ExceptionUtils.wrapException(e);
+      }
+
+      Form form = formOperator.toForm(vo);
+
+      Row row = form.getModel().getRows()[0];
+      row.getCell("pwdlevelcode")
+        .setDisplay(getIdentityverifyAndPwdlevel(row
+        .getCell("pwdlevelcode")
+        .getValue()));
+      row.getCell("identityverifycode")
+        .setDisplay(getIdentityverifyAndPwdlevel(row
+        .getCell("identityverifycode")
+        .getValue()));
+      row.getCell("secondverify")
+        .setDisplay(getIdentityverifyAndPwdlevel(row
+        .getCell("secondverify")
+        .getValue()));
+
+      row.getCell("secondverify")
+        .setDisplay(getIdentityverifyAndPwdlevel(row
+        .getCell("secondverify")
+        .getValue()));
+      result.put("user", form);
+      return result;
+    }
+    try
+    {
+      UserVO[] vos = service.findUserByIDs(new String[] { cuserid });
+      if ((vos == null) || (vos.length < 1) || (vos[0] == null)) {
+        result.put("msg", NCLangRes4VoTransl.getNCLangRes().getStrByID("1012nccloud_client_0", "01012nccloud_client-0599"));
+
+        return result;
+      }
+      String Basedocname = queryBasedocname(vos[0]);
+      result.put("pk_base_doc", Basedocname);
+      if (vos[0] != null) {
+        result.put("istoprocessuser", Boolean.valueOf(service.isToProcessUser(vos[0])));
+        if ("copy".equals(status)) {
+          vos[0].setCuserid(null);
+        }
+
+        Form form = formOperator.toForm(vos[0]);
+
+        Row row = form.getModel().getRows()[0];
+        row.getCell("pwdlevelcode")
+          .setDisplay(getIdentityverifyAndPwdlevel(row
+          .getCell("pwdlevelcode")
+          .getValue()));
+        row.getCell("identityverifycode")
+          .setDisplay(getIdentityverifyAndPwdlevel(row
+          .getCell("identityverifycode")
+          .getValue()));
+        row.getCell("pk_base_doc").setDisplay(Basedocname);
+        row.getCell("secondverify")
+          .setDisplay(getIdentityverifyAndPwdlevel(row
+          .getCell("secondverify")
+          .getValue()));
+        result.put("user", form);
+      }
+
+      GroupVO[] orgs = service.queryUserSharedGroup(cuserid);
+      if ((orgs != null) && (orgs.length > 0))
+      {
+        gridOperator.setBodycode("shareorglist");
+        Grid grid = gridOperator.toGrid(orgs);
+
+        result.put("shareorglist", grid);
+      }
+
+      UserGroupVO[] usergroupVO = service.queryUserGroupByUser(cuserid);
+      if (vos[0].getPk_usergroupforcreate() != null) {
+        usergroupVO = filterTheUserGroupFromArray(vos[0].getPk_usergroupforcreate(), usergroupVO);
+      }
+      if ((usergroupVO != null) && (usergroupVO.length > 0))
+      {
+        gridOperator.setBodycode("userGroup");
+        Grid grid = gridOperator.toGrid(usergroupVO);
+
+        result.put("userGroup", grid);
+      }
+
+      isSelectComDisplay = sysInitAcc.getRBACParamEnabled(
+        SessionContext.getInstance().getClientInfo().getPk_group(), "RBAC010", false);
+
+      result.put("isShow", Boolean.valueOf(isSelectComDisplay));
+    } catch (Exception e) {
+      ExceptionUtils.wrapException(e);
+    }
+    return result;
+  }
+
+  private UserGroupVO[] filterTheUserGroupFromArray(String pk_userGroup, UserGroupVO[] usergroupVOs)
+  {
+    int iLen = usergroupVOs == null ? 0 : usergroupVOs.length;
+
+    int index = -1;
+    for (int i = 0; i < iLen; i++) {
+      if (StringUtils.equals(usergroupVOs[i].getPrimaryKey(), pk_userGroup)) {
+        index = i;
+        break;
+      }
+    }
+    if (index > -1) {
+      usergroupVOs = (UserGroupVO[])(UserGroupVO[])ArrayUtils.remove(usergroupVOs, index);
+    }
+    return usergroupVOs;
+  }
+
+  String queryBasedocname(UserVO vo) throws BusinessException
+  {
+    if (vo == null)
+      return null;
+    IUAPQueryBS ubs = (IUAPQueryBS)ServiceLocator.find(IUAPQueryBS.class);
+    int flag = vo.getBase_doc_type().intValue();
+    String pk_base_doc = vo.getPk_base_doc();
+    if (pk_base_doc == null)
+      return "";
+    String retValue = "";
+    if (flag == 0) {
+      List list = (List)ubs.retrieveByClause(PsndocVO.class, "pk_psndoc='" + pk_base_doc + "'", new String[] { "name" });
+
+      if ((list == null) || (list.size() < 1)) {
+        return null;
+      }
+      PsndocVO psnvo = (PsndocVO)list.get(0);
+      retValue = psnvo.getName();
+    } else if (flag == 1) {
+      List list = (List)ubs.retrieveByClause(CustomerVO.class, "pk_customer='" + pk_base_doc + "'", new String[] { "name" });
+
+      if ((list == null) || (list.size() < 1)) {
+        return null;
+      }
+      CustomerVO custvo = (CustomerVO)list.get(0);
+      retValue = custvo.getName();
+    } else if (flag == 2) {
+      List list = (List)ubs.retrieveByClause(SupplierVO.class, "pk_supplier='" + pk_base_doc + "'", new String[] { "name" });
+
+      if ((list == null) || (list.size() < 1)) {
+        return null;
+      }
+      SupplierVO supvo = (SupplierVO)list.get(0);
+      retValue = supvo.getName();
+    } else if ((flag == 3) || (flag == 4)) {
+      List list = (List)ubs.retrieveByClause(OrgVO.class, "pk_org='" + pk_base_doc + "'", new String[] { "name" });
+
+      if ((list == null) || (list.size() < 1)) {
+        return null;
+      }
+      OrgVO orgvo = (OrgVO)list.get(0);
+      retValue = orgvo.getName();
+    } else if (flag != 4)
+    {
+      if (flag == 5) {
+        List list = (List)ubs.retrieveByClause(DeveloperVO.class, "pk_developer='" + pk_base_doc + "'", new String[] { "developername" });
+
+        if ((list == null) || (list.size() < 1)) {
+          return null;
+        }
+        DeveloperVO devo = (DeveloperVO)list.get(0);
+        retValue = devo.getDevelopername();
+      }
+    }
+    return "".equals(retValue) ? null : retValue;
+  }
+
+  private String getIdentityverifyAndPwdlevel(Object key)
+  {
+    Map usercell = new HashMap();
+    usercell.put("update", NCLangRes4VoTransl.getNCLangRes().getStrByID("1012nccloud_client_0", "01012nccloud_client-0581"));
+
+    usercell.put("junior", NCLangRes4VoTransl.getNCLangRes().getStrByID("1012nccloud_client_0", "01012nccloud_client-0582"));
+
+    usercell.put("senior", NCLangRes4VoTransl.getNCLangRes().getStrByID("1012nccloud_client_0", "01012nccloud_client-0583"));
+
+    usercell.put("ncca", NCLangRes4VoTransl.getNCLangRes().getStrByID("1012nccloud_client_0", "01012nccloud_client-0584"));
+
+    usercell.put("staticpwd", NCLangRes4VoTransl.getNCLangRes().getStrByID("1012nccloud_client_0", "01012nccloud_client-0585"));
+
+    if (key != null)
+      return (String)usercell.get(key.toString());
+    return null;
+  }
+}

+ 255 - 0
zjcmp_cd/zjcmp_cd/src/test/nccloud/web/riaam/user/action/UserCardSaveAction.java

@@ -0,0 +1,255 @@
+package nccloud.web.riaam.user.action;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import nc.bs.uif2.validation.ValidationFailure;
+import nc.itf.uap.IUAPQueryBS;
+import nc.itf.uap.rbac.IUserManage;
+import nc.itf.uap.rbac.IUserManageQuery;
+import nc.vo.bd.cust.CustomerVO;
+import nc.vo.bd.psn.PsndocVO;
+import nc.vo.bd.supplier.SupplierVO;
+import nc.vo.ml.AbstractNCLangRes;
+import nc.vo.ml.NCLangRes4VoTransl;
+import nc.vo.ncaam.developer.DeveloperVO;
+import nc.vo.org.OrgVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.lang.UFBoolean;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.sm.UserVO;
+import nc.vo.sm.enumfactory.UserIdentityTypeEnumFactory;
+import nc.vo.uap.rbac.util.RbacParamUtils;
+import nccloud.commons.lang.StringUtils;
+import nccloud.framework.core.exception.ExceptionUtils;
+import nccloud.framework.core.json.IJson;
+import nccloud.framework.service.ServiceLocator;
+import nccloud.framework.web.action.itf.ICommonAction;
+import nccloud.framework.web.container.ClientInfo;
+import nccloud.framework.web.container.IRequest;
+import nccloud.framework.web.container.SessionContext;
+import nccloud.framework.web.convert.pattern.FormConvertor;
+import nccloud.framework.web.json.JsonFactory;
+import nccloud.framework.web.ui.model.GridModel;
+import nccloud.framework.web.ui.model.row.Cell;
+import nccloud.framework.web.ui.model.row.Row;
+import nccloud.framework.web.ui.pattern.form.Form;
+import nccloud.framework.web.ui.pattern.form.FormOperator;
+import nccloud.pubitf.baseapp.param.ISysinitAccessor;
+
+public class UserCardSaveAction
+  implements ICommonAction
+{
+  private static Set<Integer> NEED_CHECK_DOC_TYPE = new HashSet();
+
+  public Object doAction(IRequest request)
+  {
+    HashMap result = new HashMap();
+    String str = request.read();
+    IJson json = JsonFactory.create();
+    Form form = (Form)json.fromJson(str, Form.class);
+    FormConvertor convert = new FormConvertor();
+    UserVO uservo = (UserVO)convert.fromForm(UserVO.class, form);
+    IUserManage usermanage = (IUserManage)ServiceLocator.find(IUserManage.class);
+    IUserManageQuery service = (IUserManageQuery)ServiceLocator.find(IUserManageQuery.class);
+    try
+    {
+      String patternRule = "^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.[a-zA-Z0-9]{2,6}$";
+      Pattern pattern = Pattern.compile(patternRule);
+      if (uservo.getEmail() != null) {
+        Matcher matcher = pattern.matcher(uservo.getEmail());
+        if (!matcher.matches()) {
+          result.put("error", NCLangRes4VoTransl.getNCLangRes().getStrByID("1012nccloud_client_0", "01012nccloud_client-0586"));
+
+          return result;
+        }
+      }
+
+      Pattern p = Pattern.compile("^[a-zA-Z0-9_-]*$");
+      Matcher matcher = p.matcher(uservo.getUser_code());
+      if (!matcher.matches()) {
+        result.put("error", NCLangRes4VoTransl.getNCLangRes().getStrByID("1012nccloud_client_0", "01012nccloud_client-0587"));
+
+        return result;
+      }
+
+      if (uservo.getAbledate() == null) {
+        result.put("error", NCLangRes4VoTransl.getNCLangRes().getStrByID("1012nccloud_client_0", "01012nccloud_client-0588"));
+
+        return result;
+      }
+      UFDate enableDate = uservo.getAbledate() == null ? new UFDate() : uservo.getAbledate();
+      UFDate disableDate = uservo.getDisabledate() == null ? null : uservo.getDisabledate();
+      if ((disableDate != null) && (enableDate.after(disableDate))) {
+        result.put("error", NCLangRes4VoTransl.getNCLangRes().getStrByID("1012nccloud_client_0", "01012nccloud_client-0589"));
+
+        return result;
+      }
+
+      if ((isNeedValidate(uservo)) && (uservo != null)) {
+        Integer user_baseDoc_Type = uservo.getBase_doc_type();
+        if (NEED_CHECK_DOC_TYPE.contains(user_baseDoc_Type)) {
+          String pk_base_doc = uservo.getPk_base_doc();
+          if (StringUtils.isBlank(pk_base_doc))
+          {
+            ValidationFailure val = new ValidationFailure(NCLangRes4VoTransl.getNCLangRes().getStrByID("rbac", "0RBAC0164") + uservo
+              .getUser_code() + 
+              NCLangRes4VoTransl.getNCLangRes().getStrByID("rbac", "0RBAC0165"));
+
+            if ((val != null) && (val.getMessage() != null)) {
+              result.put("error", val.getMessage());
+              return result;
+            }
+          }
+        }
+      }
+      if (uservo.getPk_group() == null) {
+        uservo.setPk_group(SessionContext.getInstance().getClientInfo().getPk_group());
+      }
+      if (uservo.getCuserid() != null)
+      {
+        UserVO[] oldvos = service.findUserByIDs(new String[] { uservo.getCuserid() });
+        uservo = usermanage.updateUser(uservo);
+
+        if (oldvos[0].getIsLocked() != uservo.getIsLocked()) {
+          usermanage.updateLockedTagByAdmin(uservo.getCuserid(), uservo.getIsLocked().booleanValue());
+        }
+
+        if (oldvos[0].getEnablestate() != uservo.getEnablestate())
+          if (uservo.getEnablestate().intValue() == 2)
+            usermanage.enableUser(uservo);
+          else if (uservo.getEnablestate().intValue() == 3)
+            usermanage.disableUser(uservo);
+      }
+      else
+      {
+        uservo = usermanage.addUser(uservo);
+      }
+      FormOperator operator = new FormOperator("10120USRM_card");
+      Form form1 = operator.toForm(uservo);
+
+      Row[] rows = form1.getModel().getRows();
+      for (Row row : rows)
+      {
+        row.getCell("pk_base_doc").setDisplay(queryBasedocname(uservo));
+
+        row.getCell("pwdlevelcode")
+          .setDisplay(getIdentityverifyAndPwdlevel(row
+          .getCell("pwdlevelcode")
+          .getValue()));
+
+        row.getCell("identityverifycode")
+          .setDisplay(getIdentityverifyAndPwdlevel(row
+          .getCell("identityverifycode")
+          .getValue()));
+
+        row.getCell("secondverify")
+          .setDisplay(getIdentityverifyAndPwdlevel(row
+          .getCell("secondverify")
+          .getValue()));
+      }
+
+      boolean isNotShow = ((ISysinitAccessor)ServiceLocator.find(ISysinitAccessor.class)).getRBACParamEnabled(
+        SessionContext.getInstance().getClientInfo().getPk_group(), "RBAC010", false);
+
+      result.put("isShow", Boolean.valueOf(isNotShow));
+      result.put("user", form1);
+    } catch (Exception e) {
+      ExceptionUtils.wrapException(e);
+    }
+    return result;
+  }
+
+  private boolean isNeedValidate(UserVO user)
+  {
+    boolean isUserIdentityNeedCheck = RbacParamUtils.isRBACSureIdentityParamEnabled();
+    Integer userType = Integer.valueOf(user == null ? -1 : user.getUser_type().intValue());
+
+    return (isUserIdentityNeedCheck) && (1 == userType.intValue());
+  }
+
+  String queryBasedocname(UserVO vo) throws BusinessException
+  {
+    IUAPQueryBS ubs = (IUAPQueryBS)ServiceLocator.find(IUAPQueryBS.class);
+
+    int flag = vo.getBase_doc_type().intValue();
+    String pk_base_doc = vo.getPk_base_doc();
+    if (pk_base_doc == null)
+      return "";
+    String retValue = "";
+    if (flag == 0) {
+      List list = (List)ubs.retrieveByClause(PsndocVO.class, "pk_psndoc='" + pk_base_doc + "'", new String[] { "name" });
+
+      if ((list == null) || (list.size() < 1)) {
+        return null;
+      }
+      PsndocVO psnvo = (PsndocVO)list.get(0);
+      retValue = psnvo.getName();
+    } else if (flag == 1) {
+      List list = (List)ubs.retrieveByClause(CustomerVO.class, "pk_customer='" + pk_base_doc + "'", new String[] { "name" });
+
+      if ((list == null) || (list.size() < 1)) {
+        return null;
+      }
+      CustomerVO custvo = (CustomerVO)list.get(0);
+      retValue = custvo.getName();
+    } else if (flag == 2) {
+      List list = (List)ubs.retrieveByClause(SupplierVO.class, "pk_supplier='" + pk_base_doc + "'", new String[] { "name" });
+
+      if ((list == null) || (list.size() < 1)) {
+        return null;
+      }
+      SupplierVO supvo = (SupplierVO)list.get(0);
+      retValue = supvo.getName();
+    } else if ((flag == 3) || (flag == 4)) {
+      List list = (List)ubs.retrieveByClause(OrgVO.class, "pk_org='" + pk_base_doc + "'", new String[] { "name" });
+
+      if ((list == null) || (list.size() < 1)) {
+        return null;
+      }
+      OrgVO orgvo = (OrgVO)list.get(0);
+      retValue = orgvo.getName();
+    } else if (flag != 4)
+    {
+      if (flag == 5) {
+        List list = (List)ubs.retrieveByClause(DeveloperVO.class, "pk_developer='" + pk_base_doc + "'", new String[] { "developername" });
+
+        if ((list == null) || (list.size() < 1)) {
+          return null;
+        }
+        DeveloperVO devo = (DeveloperVO)list.get(0);
+        retValue = devo.getDevelopername();
+      }
+    }
+    return retValue != null ? retValue : "";
+  }
+
+  private String getIdentityverifyAndPwdlevel(Object key)
+  {
+    Map usercell = new HashMap();
+    usercell.put("update", NCLangRes4VoTransl.getNCLangRes().getStrByID("1012nccloud_client_0", "01012nccloud_client-0581"));
+
+    usercell.put("junior", NCLangRes4VoTransl.getNCLangRes().getStrByID("1012nccloud_client_0", "01012nccloud_client-0582"));
+
+    usercell.put("senior", NCLangRes4VoTransl.getNCLangRes().getStrByID("1012nccloud_client_0", "01012nccloud_client-0583"));
+
+    usercell.put("ncca", NCLangRes4VoTransl.getNCLangRes().getStrByID("1012nccloud_client_0", "01012nccloud_client-0584"));
+
+    usercell.put("staticpwd", NCLangRes4VoTransl.getNCLangRes().getStrByID("1012nccloud_client_0", "01012nccloud_client-0585"));
+
+    if (key != null)
+      return (String)usercell.get(key.toString());
+    return null;
+  }
+
+  static
+  {
+    NEED_CHECK_DOC_TYPE.add(UserIdentityTypeEnumFactory.TYPE_PERSON);
+    NEED_CHECK_DOC_TYPE.add(UserIdentityTypeEnumFactory.TYPE_CUSTOMER);
+    NEED_CHECK_DOC_TYPE.add(UserIdentityTypeEnumFactory.TYPE_PROVIDER);
+  }
+}