浏览代码

xc初始化

pancy 1 年之前
父节点
当前提交
00a3580335
共有 93 个文件被更改,包括 5962 次插入0 次删除
  1. 23 0
      xc/.classpath
  2. 5 0
      xc/.module_prj
  3. 24 0
      xc/.project
  4. 2 0
      xc/.settings/org.eclipse.core.resources.prefs
  5. 7 0
      xc/META-INF/module.xml
  6. 22 0
      xc/META-INF/xc.upm
  7. 24 0
      xc/bin/.project
  8. 7 0
      xc/bin/META-INF/module.xml
  9. 二进制
      xc/cg/classes/nc/ui/hr/frame/button/AbstractBtnReg$1.class
  10. 二进制
      xc/cg/classes/nc/ui/hr/frame/button/AbstractBtnReg.class
  11. 1 0
      xc/cg/classes/resources.gitkeep
  12. 二进制
      xc/cg/classes/u8c/bs/mytest/bp/DefaultValueRule.class
  13. 二进制
      xc/cg/classes/u8c/bs/mytest/bp/DemanImportInsertBP.class
  14. 二进制
      xc/cg/classes/u8c/bs/mytest/bp/ValidateRule.class
  15. 二进制
      xc/cg/classes/u8c/bs/servlet/service/BaseServlet.class
  16. 二进制
      xc/cg/classes/u8c/bs/servlet/service/GetBaseDAOUtil.class
  17. 二进制
      xc/cg/classes/u8c/impl/CustdocAddImpl.class
  18. 二进制
      xc/cg/classes/u8c/impl/DemanImportInsertAction.class
  19. 二进制
      xc/cg/classes/u8c/impl/DemandAddImpl.class
  20. 二进制
      xc/cg/classes/u8c/impl/DemandInfoDAO.class
  21. 二进制
      xc/cg/classes/u8c/impl/DemandInfoImpl.class
  22. 二进制
      xc/cg/classes/u8c/itf/po/IDemandInfo.class
  23. 二进制
      xc/cg/classes/u8c/log/NcLog.class
  24. 二进制
      xc/cg/classes/u8c/ui/mytest/action/AddPraybillAction.class
  25. 二进制
      xc/cg/classes/u8c/ui/mytest/action/DemandAddAction.class
  26. 二进制
      xc/cg/classes/u8c/ui/mytest/action/DemandApproveAction.class
  27. 二进制
      xc/cg/classes/u8c/ui/mytest/action/DemandCloseAction.class
  28. 二进制
      xc/cg/classes/u8c/ui/mytest/action/DemandDeleteAction.class
  29. 二进制
      xc/cg/classes/u8c/ui/mytest/action/DemandEditAction.class
  30. 二进制
      xc/cg/classes/u8c/ui/mytest/action/DemandExportAction.class
  31. 二进制
      xc/cg/classes/u8c/ui/mytest/action/DemandImportAction.class
  32. 二进制
      xc/cg/classes/u8c/ui/mytest/action/DemandQueryAction.class
  33. 二进制
      xc/cg/classes/u8c/ui/mytest/action/DemandSaveAction.class
  34. 二进制
      xc/cg/classes/u8c/ui/mytest/action/DemandUnApproveAction.class
  35. 二进制
      xc/cg/classes/u8c/ui/mytest/button/DemandBtnStateReg.class
  36. 二进制
      xc/cg/classes/u8c/ui/mytest/datamodel/DemandDataModel.class
  37. 二进制
      xc/cg/classes/u8c/ui/mytest/panel/DemandMainPanel.class
  38. 二进制
      xc/cg/classes/u8c/ui/mytest/panel/DemandTestUI.class
  39. 二进制
      xc/cg/classes/u8c/ui/mytest/panel/DemandTopPanel.class
  40. 二进制
      xc/cg/classes/u8c/vo/AggDemandVO.class
  41. 二进制
      xc/cg/classes/u8c/vo/DemandBVO.class
  42. 二进制
      xc/cg/classes/u8c/vo/DemandVO.class
  43. 1 0
      xc/cg/resources/resources.gitkeep
  44. 600 0
      xc/cg/src/client/nc/ui/hr/frame/button/AbstractBtnReg.java
  45. 134 0
      xc/cg/src/client/u8c/ui/mytest/action/AddPraybillAction.java
  46. 36 0
      xc/cg/src/client/u8c/ui/mytest/action/DemandAddAction.java
  47. 45 0
      xc/cg/src/client/u8c/ui/mytest/action/DemandApproveAction.java
  48. 44 0
      xc/cg/src/client/u8c/ui/mytest/action/DemandCloseAction.java
  49. 35 0
      xc/cg/src/client/u8c/ui/mytest/action/DemandDeleteAction.java
  50. 50 0
      xc/cg/src/client/u8c/ui/mytest/action/DemandEditAction.java
  51. 20 0
      xc/cg/src/client/u8c/ui/mytest/action/DemandExportAction.java
  52. 17 0
      xc/cg/src/client/u8c/ui/mytest/action/DemandImportAction.java
  53. 19 0
      xc/cg/src/client/u8c/ui/mytest/action/DemandQueryAction.java
  54. 44 0
      xc/cg/src/client/u8c/ui/mytest/action/DemandSaveAction.java
  55. 43 0
      xc/cg/src/client/u8c/ui/mytest/action/DemandUnApproveAction.java
  56. 44 0
      xc/cg/src/client/u8c/ui/mytest/button/DemandBtnStateReg.java
  57. 75 0
      xc/cg/src/client/u8c/ui/mytest/datamodel/DemandDataModel.java
  58. 68 0
      xc/cg/src/client/u8c/ui/mytest/panel/DemandMainPanel.java
  59. 151 0
      xc/cg/src/client/u8c/ui/mytest/panel/DemandTestUI.java
  60. 22 0
      xc/cg/src/client/u8c/ui/mytest/panel/DemandTopPanel.java
  61. 28 0
      xc/cg/src/private/u8c/bs/mytest/bp/DefaultValueRule.java
  62. 99 0
      xc/cg/src/private/u8c/bs/mytest/bp/DemanImportInsertBP.java
  63. 69 0
      xc/cg/src/private/u8c/bs/mytest/bp/ValidateRule.java
  64. 203 0
      xc/cg/src/private/u8c/impl/CustdocAddImpl.java
  65. 21 0
      xc/cg/src/private/u8c/impl/DemanImportInsertAction.java
  66. 233 0
      xc/cg/src/private/u8c/impl/DemandAddImpl.java
  67. 13 0
      xc/cg/src/private/u8c/impl/DemandInfoDAO.java
  68. 27 0
      xc/cg/src/private/u8c/impl/DemandInfoImpl.java
  69. 87 0
      xc/cg/src/public/u8c/bs/servlet/service/BaseServlet.java
  70. 280 0
      xc/cg/src/public/u8c/bs/servlet/service/GetBaseDAOUtil.java
  71. 11 0
      xc/cg/src/public/u8c/itf/po/IDemandInfo.java
  72. 80 0
      xc/cg/src/public/u8c/log/NcLog.java
  73. 17 0
      xc/cg/src/public/u8c/vo/AggDemandVO.java
  74. 1194 0
      xc/cg/src/public/u8c/vo/DemandBVO.java
  75. 942 0
      xc/cg/src/public/u8c/vo/DemandVO.java
  76. 39 0
      xc/manifest.xml
  77. 1 0
      xc/out/resources/.gitignore
  78. 1 0
      xc/resources/resources.gitkeep
  79. 1 0
      xc/stock/.gitignore
  80. 16 0
      xc/stock/src/client/u8c/ic/safetystock/action/SafetystockAddAction.java
  81. 12 0
      xc/stock/src/client/u8c/ic/safetystock/action/SafetystockDeleteAction.java
  82. 31 0
      xc/stock/src/client/u8c/ic/safetystock/action/SafetystockEditAction.java
  83. 12 0
      xc/stock/src/client/u8c/ic/safetystock/action/SafetystockQueryAction.java
  84. 26 0
      xc/stock/src/client/u8c/ic/safetystock/action/SafetystockSaveAction.java
  85. 40 0
      xc/stock/src/client/u8c/ic/safetystock/button/SafetystockBtnStateReg.java
  86. 31 0
      xc/stock/src/client/u8c/ic/safetystock/datamodel/SafetystockDataModel.java
  87. 49 0
      xc/stock/src/client/u8c/ic/safetystock/panel/SafetystockMainPenel.java
  88. 109 0
      xc/stock/src/client/u8c/ic/safetystock/panel/SafetystockTestUI.java
  89. 22 0
      xc/stock/src/client/u8c/ic/safetystock/panel/SafetystockTopPanel.java
  90. 14 0
      xc/stock/src/private/u8c/impl/SafetystockInfoDAO.java
  91. 24 0
      xc/stock/src/private/u8c/impl/SafetystockInfoImpl.java
  92. 654 0
      xc/stock/src/public/nc/vo/SafetystockVO.java
  93. 13 0
      xc/stock/src/public/u8c/itf/ic/ISafetystockInfo.java

+ 23 - 0
xc/.classpath

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="stock/classes" path="stock/src/public"/>
+	<classpathentry kind="src" output="stock/classes" path="stock/src/client"/>
+	<classpathentry kind="src" output="stock/classes" path="stock/src/private"/>
+	<classpathentry kind="src" output="stock/classes" path="stock/resources"/>
+	<classpathentry kind="src" output="stock/classes" path="stock/src/test"/>
+	<classpathentry kind="src" output="cg/classes" path="cg/src/public"/>
+	<classpathentry kind="src" output="cg/classes" path="cg/src/client"/>
+	<classpathentry kind="src" output="cg/classes" path="cg/src/private"/>
+	<classpathentry kind="src" output="cg/classes" path="cg/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="nc.uap.mde.library.container/Ant_Library"/>
+	<classpathentry kind="con" path="nc.uap.mde.library.container/Product_Common_Library"/>
+	<classpathentry kind="con" path="nc.uap.mde.library.container/Middleware_Library"/>
+	<classpathentry kind="con" path="nc.uap.mde.library.container/Framework_Library"/>
+	<classpathentry kind="con" path="nc.uap.mde.library.container/Module_Public_Library"/>
+	<classpathentry kind="con" path="nc.uap.mde.library.container/Module_Client_Library"/>
+	<classpathentry kind="con" path="nc.uap.mde.library.container/Module_Private_Library"/>
+	<classpathentry kind="con" path="nc.uap.mde.library.container/Module_Lang_Library"/>
+	<classpathentry kind="con" path="nc.uap.mde.library.container/Generated_EJB"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

+ 5 - 0
xc/.module_prj

@@ -0,0 +1,5 @@
+#
+#Thu Nov 16 14:20:21 CST 2023
+module.name=xc
+bcp.manifest.ts=1700105881207
+module.defConfig=module.xml

+ 24 - 0
xc/.project

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>xc</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>nc.uap.mde.ModuleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>nc.uap.mde.ModuleProjectNature</nature>
+		<nature>nc.uap.mde.BizCompProjectNature</nature>
+	</natures>
+</projectDescription>

+ 2 - 0
xc/.settings/org.eclipse.core.resources.prefs

@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8

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

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

+ 22 - 0
xc/META-INF/xc.upm

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module name="xc">
+  <public>
+    <component priority="0" singleton="true" remote="true" tx="CMT" supportAlias="true">
+      <interface>u8c.itf.po.IDemandInfo</interface>
+      <implementation>u8c.impl.DemandInfoImpl</implementation>
+    </component>
+    <component priority="0" singleton="true" remote="true" tx="CMT" supportAlias="true">
+      <interface>u8c.itf.ic.ISafetystockInfo</interface>
+      <implementation>u8c.impl.SafetystockInfoImpl</implementation>
+    </component>
+    
+    
+    <component name="custdocadd" priority="0" singleton="true" remote="true" tx="BMT" supportAlias="true">
+       <implementation>u8c.impl.CustdocAddImpl</implementation>
+ 	</component>
+ 	
+    <component name="demandadd" priority="0" singleton="true" remote="true" tx="BMT" supportAlias="true">
+       <implementation>u8c.impl.DemandAddImpl</implementation>
+ 	</component>
+  </public>
+</module>

+ 24 - 0
xc/bin/.project

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>xc</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>nc.uap.mde.ModuleBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>nc.uap.mde.ModuleProjectNature</nature>
+		<nature>nc.uap.mde.BizCompProjectNature</nature>
+	</natures>
+</projectDescription>

+ 7 - 0
xc/bin/META-INF/module.xml

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

二进制
xc/cg/classes/nc/ui/hr/frame/button/AbstractBtnReg$1.class


二进制
xc/cg/classes/nc/ui/hr/frame/button/AbstractBtnReg.class


+ 1 - 0
xc/cg/classes/resources.gitkeep

@@ -0,0 +1 @@
+ユシホサキ�

二进制
xc/cg/classes/u8c/bs/mytest/bp/DefaultValueRule.class


二进制
xc/cg/classes/u8c/bs/mytest/bp/DemanImportInsertBP.class


二进制
xc/cg/classes/u8c/bs/mytest/bp/ValidateRule.class


二进制
xc/cg/classes/u8c/bs/servlet/service/BaseServlet.class


二进制
xc/cg/classes/u8c/bs/servlet/service/GetBaseDAOUtil.class


二进制
xc/cg/classes/u8c/impl/CustdocAddImpl.class


二进制
xc/cg/classes/u8c/impl/DemanImportInsertAction.class


二进制
xc/cg/classes/u8c/impl/DemandAddImpl.class


二进制
xc/cg/classes/u8c/impl/DemandInfoDAO.class


二进制
xc/cg/classes/u8c/impl/DemandInfoImpl.class


二进制
xc/cg/classes/u8c/itf/po/IDemandInfo.class


二进制
xc/cg/classes/u8c/log/NcLog.class


二进制
xc/cg/classes/u8c/ui/mytest/action/AddPraybillAction.class


二进制
xc/cg/classes/u8c/ui/mytest/action/DemandAddAction.class


二进制
xc/cg/classes/u8c/ui/mytest/action/DemandApproveAction.class


二进制
xc/cg/classes/u8c/ui/mytest/action/DemandCloseAction.class


二进制
xc/cg/classes/u8c/ui/mytest/action/DemandDeleteAction.class


二进制
xc/cg/classes/u8c/ui/mytest/action/DemandEditAction.class


二进制
xc/cg/classes/u8c/ui/mytest/action/DemandExportAction.class


二进制
xc/cg/classes/u8c/ui/mytest/action/DemandImportAction.class


二进制
xc/cg/classes/u8c/ui/mytest/action/DemandQueryAction.class


二进制
xc/cg/classes/u8c/ui/mytest/action/DemandSaveAction.class


二进制
xc/cg/classes/u8c/ui/mytest/action/DemandUnApproveAction.class


二进制
xc/cg/classes/u8c/ui/mytest/button/DemandBtnStateReg.class


二进制
xc/cg/classes/u8c/ui/mytest/datamodel/DemandDataModel.class


二进制
xc/cg/classes/u8c/ui/mytest/panel/DemandMainPanel.class


二进制
xc/cg/classes/u8c/ui/mytest/panel/DemandTestUI.class


二进制
xc/cg/classes/u8c/ui/mytest/panel/DemandTopPanel.class


二进制
xc/cg/classes/u8c/vo/AggDemandVO.class


二进制
xc/cg/classes/u8c/vo/DemandBVO.class


二进制
xc/cg/classes/u8c/vo/DemandVO.class


+ 1 - 0
xc/cg/resources/resources.gitkeep

@@ -0,0 +1 @@
+ユシホサキ�

+ 600 - 0
xc/cg/src/client/nc/ui/hr/frame/button/AbstractBtnReg.java

@@ -0,0 +1,600 @@
+package nc.ui.hr.frame.button;
+
+import java.util.HashSet;
+import nc.hr.utils.ResHelper;
+import nc.vo.hr.frame.button.ButtonVO;
+
+public abstract class AbstractBtnReg
+{
+  public static final int BTNMASK_SYSTEM = 0;
+  public static final int BTNMASK_USER = 255;
+  public static final int SYSBTN_ADD = 1;
+  public static final int SYSBTN_ADD_LINE = 2;
+  public static final int SYSBTN_BATCH_ADD = 3;
+  public static final int SYSBTN_BATCH_DELETE = 59;
+  public static final int SYSBTN_BATCH_EDIT = 4;
+  public static final int SYSBTN_BROWSE = 5;
+  public static final int SYSBTN_BUSINESS_OPERATION = 55;
+  public static final int SYSBTN_CAL_ORDER = 57;
+  public static final int SYSBTN_CALLBACK = 6;
+  public static final int SYSBTN_CANCEL = 7;
+  public static final int SYSBTN_CANCELEXAMINE = 8;
+  public static final int SYSBTN_CANCELFREEZE = 9;
+  public static final int SYSBTN_CANCELPUBLISH = 10;
+  public static final int SYSBTN_CLEARUP = 60;
+  public static final int SYSBTN_COMMIT = 12;
+  public static final int SYSBTN_COPY = 13;
+  public static final int SYSBTN_DEL_LINE = 14;
+  public static final int SYSBTN_DELETE = 15;
+  public static final int SYSBTN_DETAILS = 16;
+  public static final int SYSBTN_DISP_ORDER = 58;
+  public static final int SYSBTN_EDIT = 17;
+  public static final int SYSBTN_EDIT_LINE = 18;
+  public static final int SYSBTN_EXAMINE = 19;
+  public static final int SYSBTN_EXAMINE_CHECK = 20;
+  public static final int SYSBTN_EXAMINE_OPS = 52;
+  public static final int SYSBTN_EXAMINE_REJECT = 21;
+  public static final int SYSBTN_EXAMINE_SUGGESTION = 22;
+  public static final int SYSBTN_EXECUTE = 46;
+  public static final int SYSBTN_EXPORT = 23;
+  public static final int SYSBTN_FREEZE = 24;
+  public static final int SYSBTN_IMPORT = 25;
+  public static final int SYSBTN_INSERT_LINE = 26;
+  public static final int SYSBTN_LINE_OPS = 27;
+  public static final int SYSBTN_ORDER = 28;
+  public static final int SYSBTN_PASTE = 29;
+  public static final int SYSBTN_PATCH_MANAGE = 30;
+  public static final int SYSBTN_PREVIEW = 54;
+  public static final int SYSBTN_PRINT = 31;
+  public static final int SYSBTN_PRINTPREVIEW = 32;
+  public static final int SYSBTN_PUBLISH = 33;
+  public static final int SYSBTN_QUERY = 34;
+  public static final int SYSBTN_RECORD_FIRST = 35;
+  public static final int SYSBTN_RECORD_LAST = 36;
+  public static final int SYSBTN_RECORD_NEXT = 37;
+  public static final int SYSBTN_RECORD_PREV = 38;
+  public static final int SYSBTN_REFRESH = 39;
+  public static final int SYSBTN_RETURN = 40;
+  public static final int SYSBTN_SAVE = 41;
+  public static final int SYSBTN_SEAL = 42;
+  public static final int SYSBTN_SEND_MESSAGE = 53;
+  public static final int SYSBTN_SHARE = 50;
+  public static final int SYSBTN_STAT = 44;
+  public static final int SYSBTN_SUBOPERATION = 45;
+  public static final int SYSBTN_UNSEAL = 11;
+  public static final int SYSBTN_UNSHARE = 51;
+  private HashSet<Integer> hashAllBtnID = new HashSet();
+  public static final int ASSIST_FUNC = 61;
+  public static final int USERBTN_PREVALIDATE = 62;
+  public static final int USERBTN_EXPORTFAILDATAS = 63;
+  public static final int SYSBTN_YS = 64;
+  public static final int USERBTN_PUSHMATERIAL = 65;
+  public static final int USERBTN_PUSHPRODUCT = 66;
+  public static final int USERBTN_ADDPRAYBILL = 67;
+  public static final int USERBTN_PUSHOTHEROUT = 68;
+  public static final int USERBTN_PUSHOTHERIN = 69;
+  public static final int USERBTN_boExportImport = 70;  
+  public static final int USERBTN_GENOUTIN = 71;
+  public static final int USERBTN_PUSHSALEOUT = 72;
+  public static final int USERBTN_YS = 73;
+  public static final int USERBTN_ClOSE = 74;
+  protected AbstractBtnReg()
+  {
+    getAllBtnID().add(Integer.valueOf(34));
+    getAllBtnID().add(Integer.valueOf(41));
+    getAllBtnID().add(Integer.valueOf(39));
+    getAllBtnID().add(Integer.valueOf(31));
+    getAllBtnID().add(Integer.valueOf(32));
+    getAllBtnID().add(Integer.valueOf(1));
+    getAllBtnID().add(Integer.valueOf(15));
+    getAllBtnID().add(Integer.valueOf(17));
+    getAllBtnID().add(Integer.valueOf(7));
+    getAllBtnID().add(Integer.valueOf(40));
+    getAllBtnID().add(Integer.valueOf(2));
+    getAllBtnID().add(Integer.valueOf(14));
+    getAllBtnID().add(Integer.valueOf(18));
+    getAllBtnID().add(Integer.valueOf(55));
+
+    getAllBtnID().add(Integer.valueOf(45));
+    getAllBtnID().add(Integer.valueOf(26));
+    getAllBtnID().add(Integer.valueOf(3));
+    getAllBtnID().add(Integer.valueOf(4));
+    getAllBtnID().add(Integer.valueOf(59));
+
+    getAllBtnID().add(Integer.valueOf(12));
+    getAllBtnID().add(Integer.valueOf(6));
+    getAllBtnID().add(Integer.valueOf(19));
+    getAllBtnID().add(Integer.valueOf(52));
+    getAllBtnID().add(Integer.valueOf(20));
+    getAllBtnID().add(Integer.valueOf(21));
+    getAllBtnID().add(Integer.valueOf(8));
+    getAllBtnID().add(Integer.valueOf(22));
+
+    getAllBtnID().add(Integer.valueOf(5));
+    getAllBtnID().add(Integer.valueOf(30));
+    getAllBtnID().add(Integer.valueOf(25));
+    getAllBtnID().add(Integer.valueOf(23));
+    getAllBtnID().add(Integer.valueOf(42));
+    getAllBtnID().add(Integer.valueOf(11));
+    getAllBtnID().add(Integer.valueOf(24));
+    getAllBtnID().add(Integer.valueOf(9));
+    getAllBtnID().add(Integer.valueOf(33));
+    getAllBtnID().add(Integer.valueOf(10));
+    getAllBtnID().add(Integer.valueOf(16));
+    getAllBtnID().add(Integer.valueOf(44));
+    getAllBtnID().add(Integer.valueOf(13));
+    getAllBtnID().add(Integer.valueOf(29));
+    getAllBtnID().add(Integer.valueOf(28));
+    getAllBtnID().add(Integer.valueOf(27));
+    getAllBtnID().add(Integer.valueOf(46));
+
+    getAllBtnID().add(Integer.valueOf(35));
+    getAllBtnID().add(Integer.valueOf(36));
+    getAllBtnID().add(Integer.valueOf(37));
+    getAllBtnID().add(Integer.valueOf(38));
+
+    getAllBtnID().add(Integer.valueOf(50));
+    getAllBtnID().add(Integer.valueOf(51));
+    getAllBtnID().add(Integer.valueOf(42));
+    getAllBtnID().add(Integer.valueOf(11));
+
+    getAllBtnID().add(Integer.valueOf(53));
+    getAllBtnID().add(Integer.valueOf(54));
+
+    getAllBtnID().add(Integer.valueOf(57));
+    getAllBtnID().add(Integer.valueOf(58));
+    getAllBtnID().add(Integer.valueOf(60));
+
+    getAllBtnID().add(Integer.valueOf(63));
+    getAllBtnID().add(Integer.valueOf(62));
+    getAllBtnID().add(Integer.valueOf(64));
+    
+    getAllBtnID().add(Integer.valueOf(65));
+    getAllBtnID().add(Integer.valueOf(66));
+    getAllBtnID().add(Integer.valueOf(67));
+    getAllBtnID().add(Integer.valueOf(68));
+    getAllBtnID().add(Integer.valueOf(69));
+    getAllBtnID().add(Integer.valueOf(70));
+    getAllBtnID().add(Integer.valueOf(71));
+    getAllBtnID().add(Integer.valueOf(72));
+    getAllBtnID().add(Integer.valueOf(73));
+    getAllBtnID().add(Integer.valueOf(74));
+  }
+
+  public static AbstractBtnReg createInstance()
+  {
+    return new AbstractBtnReg()
+    {
+      public ButtonVO createUserBtnVOByID(int btnID)
+      {
+        return null;
+      }
+    };
+  }
+
+  public final ButtonVO createSysBtnVOByID(int btnID)
+  {
+    ButtonVO btnVO = new ButtonVO();
+
+    btnVO.setBtnID(btnID);
+
+    switch (btnID)
+    {
+    case 34:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000000"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000001"));
+      btnVO.setBtnCode("查询");
+
+      break;
+    case 41:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000002"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000003"));
+      btnVO.setBtnCode("保存");
+
+      break;
+    case 39:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000004"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000005"));
+      btnVO.setBtnCode("刷新");
+
+      break;
+    case 31:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000006"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000007"));
+      btnVO.setBtnCode("打印");
+
+      break;
+    case 32:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000008"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000009"));
+      btnVO.setBtnCode("打印预览");
+
+      break;
+    case 1:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000010"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000011"));
+      btnVO.setBtnCode("增加");
+
+      break;
+    case 15:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000012"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000013"));
+      btnVO.setBtnCode("删除");
+
+      break;
+    case 17:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000014"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000015"));
+      btnVO.setBtnCode("修改");
+
+      break;
+    case 7:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000110"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000111"));
+      btnVO.setBtnCode("取消");
+
+      break;
+    case 40:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000016"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000017"));
+      btnVO.setBtnCode("返回");
+
+      break;
+    case 2:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000018"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000019"));
+      btnVO.setBtnCode("增行");
+
+      break;
+    case 18:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000020"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000021"));
+      btnVO.setBtnCode("修改行");
+
+      break;
+    case 14:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000022"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000023"));
+      btnVO.setBtnCode("删行");
+
+      break;
+    case 45:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000024"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000025"));
+      btnVO.setBtnCode("子集操作");
+
+      break;
+    case 26:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000026"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000027"));
+      btnVO.setBtnCode("插入行");
+
+      break;
+    case 3:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000028"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000029"));
+      btnVO.setBtnCode("批量增加");
+
+      break;
+    case 4:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000030"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000031"));
+      btnVO.setBtnCode("批量修改");
+
+      break;
+    case 59:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000243"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000244"));
+      btnVO.setBtnCode("批量删除");
+      break;
+    case 12:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000032"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000033"));
+      btnVO.setBtnCode("提交");
+
+      break;
+    case 6:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000034"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000035"));
+      btnVO.setBtnCode("收回");
+
+      break;
+    case 19:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000036"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000037"));
+      btnVO.setBtnCode("审批");
+
+      break;
+    case 52:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_pf", "UPPnc_hr_pf_000001"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_pf", "UPPnc_hr_pf_000001"));
+      btnVO.setBtnCode("审批操作");
+
+      break;
+    case 20:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000038"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000039"));
+      btnVO.setBtnCode("审核");
+
+      break;
+    case 21:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000040"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000041"));
+      btnVO.setBtnCode("驳回");
+
+      break;
+    case 8:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000042"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000043"));
+      btnVO.setBtnCode("弃审");
+
+      break;
+    case 22:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000044"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000044"));
+      btnVO.setBtnCode("审批意见");
+
+      break;
+    case 5:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000045"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000046"));
+      btnVO.setBtnCode("浏览");
+
+      break;
+    case 30:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000047"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000048"));
+      btnVO.setBtnCode("附件");
+
+      break;
+    case 25:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000049"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000050"));
+      btnVO.setBtnCode("导入");
+
+      break;
+    case 23:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000051"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000052"));
+      btnVO.setBtnCode("导出");
+
+      break;
+    case 42:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000053"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000054"));
+      btnVO.setBtnCode("封存");
+
+      break;
+    case 11:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000055"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000056"));
+      btnVO.setBtnCode("解封");
+
+      break;
+    case 50:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000057"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000058"));
+      btnVO.setBtnCode("共享");
+      break;
+    case 51:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000059"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000060"));
+      btnVO.setBtnCode("取消共享");
+      break;
+    case 24:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000062"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000063"));
+      btnVO.setBtnCode("冻结");
+
+      break;
+    case 9:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000064"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000065"));
+      btnVO.setBtnCode("解冻");
+
+      break;
+    case 33:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000066"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000067"));
+      btnVO.setBtnCode("发布");
+
+      break;
+    case 10:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000068"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000069"));
+      btnVO.setBtnCode("取消发布");
+
+      break;
+    case 16:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000070"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000071"));
+      btnVO.setBtnCode("明细");
+
+      break;
+    case 44:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000072"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000072"));
+      btnVO.setBtnCode("汇总");
+
+      break;
+    case 13:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000073"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000074"));
+      btnVO.setBtnCode("复制");
+
+      break;
+    case 29:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000075"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000076"));
+      btnVO.setBtnCode("粘贴");
+
+      break;
+    case 28:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000077"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000078"));
+      btnVO.setBtnCode("排序");
+
+      break;
+    case 27:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000079"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000079"));
+      btnVO.setBtnCode("行操作");
+
+      break;
+    case 35:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000080"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000081"));
+      btnVO.setBtnCode("首页");
+
+      break;
+    case 36:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000082"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000083"));
+      btnVO.setBtnCode("末页");
+
+      break;
+    case 37:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000084"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000085"));
+      btnVO.setBtnCode("下一页");
+
+      break;
+    case 38:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000086"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000087"));
+      btnVO.setBtnCode("上一页");
+
+      break;
+    case 46:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000088"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000088"));
+      btnVO.setBtnCode("执行");
+
+      break;
+    case 55:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000245"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000245"));
+      btnVO.setBtnCode("业务操作");
+
+      break;
+    case 53:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000246"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000246"));
+      btnVO.setBtnCode("发送通知");
+      break;
+    case 54:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000247"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000247"));
+      btnVO.setBtnCode("预览");
+      break;
+    case 57:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000248"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000248"));
+      btnVO.setBtnCode("计算顺序");
+      break;
+    case 58:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000249"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000249"));
+      btnVO.setBtnCode("显示顺序");
+      break;
+    case 60:
+      btnVO.setBtnName(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000251"));
+      btnVO.setHintStr(ResHelper.getString("nc_hr_ui_frame", "UPPnc_hr_ui_frame-000252"));
+      btnVO.setBtnCode("清除");
+      break;
+    case 61:
+      btnVO.setBtnName(ResHelper.getString("600704", "UPP600704-100231"));
+      btnVO.setHintStr(ResHelper.getString("600704", "UPP600704-100231"));
+      btnVO.setBtnCode("辅助功能");
+      break;
+    case 63:
+      btnVO.setBtnName(ResHelper.getString("600704", "导出失败数据"));
+      btnVO.setHintStr(ResHelper.getString("600704", "导出失败数据"));
+      btnVO.setBtnCode("导出失败数据");
+      break;
+    case 62:
+      btnVO.setBtnName(ResHelper.getString("600704", "预检查"));
+      btnVO.setHintStr(ResHelper.getString("600704", "预检查"));
+      btnVO.setBtnCode("预检查");
+    case 64:
+        btnVO.setBtnName("MRO运算");
+        btnVO.setHintStr("MRO运算");
+        btnVO.setBtnCode("MRO运算");
+    case 65:
+        btnVO.setBtnName("材料出库");
+        btnVO.setHintStr("材料出库");
+        btnVO.setBtnCode("材料出库");
+      break;
+    case 66:
+        btnVO.setBtnName("产成品入库");
+        btnVO.setHintStr("产成品入库");
+        btnVO.setBtnCode("产成品入库");
+      break;
+      
+    case 67:
+        btnVO.setBtnName("生单");
+        btnVO.setHintStr("生单");
+        btnVO.setBtnCode("生单");
+      break;
+      
+    case 68:
+        btnVO.setBtnName("其他出库");
+        btnVO.setHintStr("其他出库");
+        btnVO.setBtnCode("其他出库");
+       break; 
+    case 69:
+        btnVO.setBtnName("其他入库");
+        btnVO.setHintStr("其他入库");
+        btnVO.setBtnCode("其他入库");
+      break;
+      
+    case 70:
+        btnVO.setBtnName("导出/导入");
+        btnVO.setHintStr("导出/导入");
+        btnVO.setBtnCode("导出/导入");
+        break;
+    case 71:
+        btnVO.setBtnName("生成出入库页签");
+        btnVO.setHintStr("生成出入库页签");
+        btnVO.setBtnCode("生成出入库页签");
+        break;
+    case 72:
+        btnVO.setBtnName("生成销售出库");
+        btnVO.setHintStr("生成销售出库");
+        btnVO.setBtnCode("生成销售出库");
+        break;
+    case 73:
+        btnVO.setBtnName("运算");
+        btnVO.setHintStr("运算");
+        btnVO.setBtnCode("运算");
+        break;
+    case 74:
+        btnVO.setBtnName("整单关闭");
+        btnVO.setHintStr("整单关闭");
+        btnVO.setBtnCode("整单关闭");
+        break; 
+    
+    case 43:
+    case 47:
+    case 48:
+    case 49:
+    case 56:
+    default:
+      btnVO = null;
+    }
+
+    return btnVO;
+  }
+
+  public abstract ButtonVO createUserBtnVOByID(int paramInt);
+
+  protected HashSet<Integer> getAllBtnID()
+  {
+    return this.hashAllBtnID;
+  }
+
+  public boolean isContainBtnID(int btnID)
+  {
+    return getAllBtnID().contains(Integer.valueOf(btnID));
+  }
+}

+ 134 - 0
xc/cg/src/client/u8c/ui/mytest/action/AddPraybillAction.java

@@ -0,0 +1,134 @@
+package u8c.ui.mytest.action;
+
+import java.util.ArrayList;
+import java.util.List;
+import nc.bs.framework.common.NCLocator;
+import nc.itf.uap.IUAPQueryBS;
+import nc.itf.uap.pf.IplatFormEntry;
+import nc.jdbc.framework.processor.ColumnProcessor;
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.action.AbstractAction;
+import nc.ui.hr.frame.impl.MainBillMgrPanel;
+import nc.ui.pub.beans.MessageDialog;
+import nc.vo.hr.tools.pub.HRAggVO;
+import nc.vo.pr.pray.PraybillHeaderVO;
+import nc.vo.pr.pray.PraybillItemVO;
+import nc.vo.pr.pray.PraybillVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.CircularlyAccessibleValueObject;
+import nc.vo.pub.ValidationException;
+import nc.vo.pub.lang.UFDate;
+import u8c.bs.servlet.service.GetBaseDAOUtil;
+import u8c.ui.mytest.panel.DemandMainPanel;
+import u8c.ui.mytest.panel.DemandTestUI;
+import u8c.vo.DemandBVO;
+import u8c.vo.DemandVO;
+
+public class AddPraybillAction extends AbstractAction {
+	private IUAPQueryBS iuap = NCLocator.getInstance().lookup(IUAPQueryBS.class);
+	DemandTestUI frameUI = null;
+
+	public AddPraybillAction(FrameUI frameUI) {
+		super(frameUI);
+		this.frameUI = (DemandTestUI) frameUI;
+	}
+
+	@Override
+	public void execute() throws Exception {
+		DemandTestUI ui = (DemandTestUI) this.getFrameUI();
+		MainBillMgrPanel mainMgrPanel = (MainBillMgrPanel) getMainPanel();
+		int selectedRow = ((DemandMainPanel) getMainPanel()).getSelectedRow();
+		HRAggVO s = (HRAggVO) mainMgrPanel.getMainBillCardPanel().getData();
+		if (selectedRow == -1) {
+			throw new ValidationException("请添加表体行");
+		}
+		if (null != s && s != null) {
+			addPraybillVO(s);// 新增请购单
+		}
+	}
+
+	
+	/**
+	 * 根据材料单生成请购单
+	 * @param s
+	 * @throws Exception 
+	 */
+	private void addPraybillVO(HRAggVO s) throws Exception {
+		DemandVO demandVO = (DemandVO) s.getParentVO();//
+		CircularlyAccessibleValueObject[] demandBVOList =  s.getChildrenVO();//
+		List<DemandBVO> demandBVOs = new ArrayList();
+		for(CircularlyAccessibleValueObject vo : demandBVOList) {
+			if(vo instanceof DemandBVO) {
+				demandBVOs.add((DemandBVO)vo);
+			}
+		}
+		if(demandBVOs.size()==0) {
+			throw new BusinessException("当前材料单没有数据,请先添加数据");
+		}
+		
+		PraybillHeaderVO header = new PraybillHeaderVO();
+		// 表头赋值
+		header.setPk_corp(demandVO.getPk_corp());//公司
+		header.setCoperator(demandVO.getBillmaker());//制单人
+		header.setDpraydate(demandVO.getMakedate());//请购日期-->制单日期
+		header.setIbillstatus(0);//单据状态
+		header.setCpraypsn(demandVO.getWorkmanid());//请购人id-->业务员
+		header.setCdeptid(demandVO.getPlandeptid());//请购部门id-->计划部门
+		header.setVmemo(demandVO.getVnote());//备注
+		header.setDr(0);
+		header.setCaccountyear(String.valueOf(new UFDate().getYear()));//年份
+		header.setIpraysource(5);//请购来源
+		header.setIpraytype(2);//请购类型
+		PraybillItemVO[] items = new PraybillItemVO[demandBVOs.size()];
+		for (int i = 0; i < demandBVOs.size(); i++) {
+			DemandBVO demandBVO = demandBVOs.get(i);
+			PraybillItemVO praybillItemVO = new PraybillItemVO();
+			praybillItemVO.setPk_corp(demandVO.getPk_corp()); // 公司
+			// 表体赋值
+			praybillItemVO.setCmangid(getCmangid(demandBVO.getCmaterialcode())); //存货编码
+			praybillItemVO.setNpraynum(demandBVO.getNum()); //数量
+			String cprojectid = "";//项目id
+			if(demandBVO.getPrjcode().startsWith("1001")) {
+				cprojectid = demandBVO.getPrjcode();
+			}
+			else {
+				cprojectid = GetBaseDAOUtil.getprojectid(demandBVO.getPrjcode());
+			}
+			praybillItemVO.setCprojectid(cprojectid);
+//			praybillItemVO.setCassistunit(demandBVO.getCastunitid());//辅助计量单位
+//			praybillItemVO.setNassistnum(new UFDouble(demandBVO.getNastnum()));//辅计量数量
+			praybillItemVO.setVproducenum(demandBVO.getVbatchcode());//批次号
+			
+			items[i] = praybillItemVO;
+		}
+		PraybillVO vo = new PraybillVO();
+		vo.setParentVO(header);
+		vo.setChildrenVO(items);
+
+		// 新增请购单
+		PraybillVO[] praybillVOs = new PraybillVO[1];
+		praybillVOs[0] = vo;
+		IplatFormEntry iIplatFormEntry = (IplatFormEntry)NCLocator.getInstance().lookup(IplatFormEntry.class.getName());
+		ArrayList retObj = (ArrayList) iIplatFormEntry.processAction("SAVEBASE", "20", vo.getHeadVO().getDpraydate().toString(), null, vo, null, null);
+		MessageDialog.showHintDlg(frameUI, "成功", "请购单"+retObj.get(5)+"新增成功");
+//		IPrayBillMaintainAPI prayBillMaintainAPI = NCLocator.getInstance().lookup(IPrayBillMaintainAPI.class);
+//		prayBillMaintainAPI.insert(praybillVOs);
+	}
+
+	/**
+	 * 根据物料code查询主键
+	 * @param code
+	 * @return
+	 * @throws BusinessException
+	 */
+	public String getCmangid(String code) throws BusinessException {
+		String cmangid = null;
+		String sql = " select pk_invbasdoc from bd_invbasdoc" + " where invcode  ='" + code + "' and dr =0 ";
+		cmangid = (String) iuap.executeQuery(sql, new ColumnProcessor());
+		if (cmangid == null) {
+			throw new BusinessException("U8C物料code不存在:" + code);
+		}
+		return cmangid;
+	}
+
+}

+ 36 - 0
xc/cg/src/client/u8c/ui/mytest/action/DemandAddAction.java

@@ -0,0 +1,36 @@
+package u8c.ui.mytest.action;
+
+import nc.hr.utils.PubEnv;
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.action.AddAction;
+import nc.vo.pub.ValidationException;
+import nc.vo.trade.pub.IBillStatus;
+import u8c.ui.mytest.panel.DemandTestUI;
+import u8c.vo.DemandVO;
+public class DemandAddAction extends AddAction{
+	
+
+	DemandTestUI frameUI = null;
+	
+	public DemandAddAction(FrameUI frameUI) {
+		super(frameUI);
+		this.frameUI = (DemandTestUI) frameUI;
+	}
+
+	public boolean validate() throws ValidationException { // 前台校验
+		return super.validate();
+	}
+	
+	public void execute() throws Exception{
+		super.execute();
+		
+		DemandTestUI ui = (DemandTestUI) this.getFrameUI();
+		
+		ui.getBillCardPanel().setHeadItem(DemandVO.PK_CORP, PubEnv.getPk_corp()); // 默认当前公司
+		ui.getBillCardPanel().setHeadItem(DemandVO.BILLSTATUS, IBillStatus.COMMIT); // 增加时状态设自由编写态
+		ui.getBillCardPanel().setTailItem(DemandVO.MAKEDATE, PubEnv.getServerDate());//默认当前时间
+		ui.getBillCardPanel().setTailItem(DemandVO.BILLMAKER, PubEnv.getPk_user());//默认当前登录用户
+		
+	}
+
+}

+ 45 - 0
xc/cg/src/client/u8c/ui/mytest/action/DemandApproveAction.java

@@ -0,0 +1,45 @@
+package u8c.ui.mytest.action;
+
+import nc.hr.frame.persistence.BaseDAOManager;
+import nc.hr.utils.PubEnv;
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.action.AbstractAction;
+import nc.ui.hr.frame.button.AbstractBtnReg;
+import nc.ui.hr.frame.impl.MainBillMgrPanel;
+import nc.vo.hr.tools.pub.HRAggVO;
+import nc.vo.pub.ValidationException;
+import nc.vo.trade.pub.IBillStatus;
+import u8c.ui.mytest.datamodel.DemandDataModel;
+import u8c.ui.mytest.panel.DemandMainPanel;
+import u8c.ui.mytest.panel.DemandTestUI;
+import u8c.vo.DemandVO;
+
+public class DemandApproveAction extends AbstractAction{
+	
+	DemandTestUI frameUI = null;
+	BaseDAOManager dao = new BaseDAOManager();
+
+	public DemandApproveAction(FrameUI frameUI) {
+		super(frameUI);
+		this.frameUI = (DemandTestUI) frameUI;
+	}
+
+	@Override
+	public void execute() throws Exception {
+		MainBillMgrPanel mainMgrPanel = (MainBillMgrPanel) getMainPanel();
+		int selectedRow = ((DemandMainPanel) getMainPanel()).getSelectedRow();
+		HRAggVO[] s = (HRAggVO[]) mainMgrPanel.getMainBillListPanel().getData();
+		if (null != s && s[selectedRow] != null){
+			DemandVO headvo = (DemandVO) s[selectedRow].getParentVO();
+			if (headvo.getBillstatus() != IBillStatus.FREE){
+				throw new ValidationException("非自由态单据不允许审批");
+			}
+			headvo.setBillstatus(IBillStatus.CHECKPASS);
+			headvo.setApprove(PubEnv.getPk_user());
+		}
+		((DemandDataModel)this.frameUI.getDataModel()).execApprove(s[selectedRow]);
+		getFrameUI().getBtnManager().getCmdByID(AbstractBtnReg.SYSBTN_REFRESH).execute();
+		
+	}
+
+}

+ 44 - 0
xc/cg/src/client/u8c/ui/mytest/action/DemandCloseAction.java

@@ -0,0 +1,44 @@
+package u8c.ui.mytest.action;
+
+import nc.bs.framework.common.NCLocator;
+import nc.hr.frame.persistence.BaseDAOManager;
+import nc.hr.utils.PubEnv;
+import nc.itf.uap.IVOPersistence;
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.action.AbstractAction;
+import nc.ui.hr.frame.button.AbstractBtnReg;
+import nc.ui.hr.frame.impl.MainBillMgrPanel;
+import nc.vo.hr.tools.pub.HRAggVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.ValidationException;
+import nc.vo.trade.pub.IBillStatus;
+import u8c.ui.mytest.datamodel.DemandDataModel;
+import u8c.ui.mytest.panel.DemandMainPanel;
+import u8c.ui.mytest.panel.DemandTestUI;
+import u8c.vo.DemandVO;
+
+public class DemandCloseAction extends AbstractAction{
+	
+	DemandTestUI frameUI = null;
+	IVOPersistence ivo = NCLocator.getInstance().lookup(IVOPersistence.class);
+	
+	public DemandCloseAction(FrameUI frameUI1) {
+		super(frameUI1);
+		this.frameUI = (DemandTestUI) frameUI;
+	}
+
+	@Override
+	public void execute() throws Exception {
+		MainBillMgrPanel mainMgrPanel = (MainBillMgrPanel) getMainPanel();
+		int selectedRow = ((DemandMainPanel) getMainPanel()).getSelectedRow();
+		HRAggVO[] s = (HRAggVO[]) mainMgrPanel.getMainBillListPanel().getData();
+		if (null != s && s[selectedRow] != null){
+			DemandVO headvo = (DemandVO) s[selectedRow].getParentVO();
+			headvo.setBillstatus(9);
+			ivo.updateVO(headvo);
+		}
+		
+		getFrameUI().getBtnManager().getCmdByID(AbstractBtnReg.SYSBTN_REFRESH).execute();
+	}
+
+}

+ 35 - 0
xc/cg/src/client/u8c/ui/mytest/action/DemandDeleteAction.java

@@ -0,0 +1,35 @@
+package u8c.ui.mytest.action;
+
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.action.DeleteAction;
+import nc.ui.hr.frame.impl.MainBillMgrPanel;
+import nc.vo.hr.tools.pub.HRAggVO;
+import nc.vo.pub.ValidationException;
+import nc.vo.trade.pub.IBillStatus;
+import u8c.ui.mytest.panel.DemandMainPanel;
+import u8c.vo.DemandVO;
+
+
+public class DemandDeleteAction extends DeleteAction{
+
+	public DemandDeleteAction(FrameUI frameUI) {
+		super(frameUI);
+	}
+	
+	public void execute() throws Exception {
+		MainBillMgrPanel mainMgrPanel = (MainBillMgrPanel) getMainPanel();
+		
+		int selectedRow = ((DemandMainPanel) getMainPanel()).getSelectedRow();
+		
+		HRAggVO [] s = (HRAggVO[]) mainMgrPanel.getMainBillListPanel().getData();
+		
+		if (null != s && s[selectedRow] != null){
+			DemandVO cta = (DemandVO) s[selectedRow].getParentVO();
+			if (cta.getBillstatus()!=IBillStatus.FREE){
+				throw new ValidationException("非编写状态不能删除。");
+		    }
+		}
+		super.execute();
+	}
+	
+}

+ 50 - 0
xc/cg/src/client/u8c/ui/mytest/action/DemandEditAction.java

@@ -0,0 +1,50 @@
+package u8c.ui.mytest.action;
+
+import nc.hr.utils.PubEnv;
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.action.BrowseFromListToCardAction;
+import nc.ui.hr.frame.impl.MainBillMgrPanel;
+import nc.ui.hr.frame.state.StateRegister;
+import nc.vo.hr.tools.pub.HRAggVO;
+import nc.vo.pub.ValidationException;
+import nc.vo.trade.pub.IBillStatus;
+import u8c.ui.mytest.panel.DemandMainPanel;
+import u8c.ui.mytest.panel.DemandTestUI;
+import u8c.vo.DemandVO;
+
+public class DemandEditAction extends BrowseFromListToCardAction{
+
+	public DemandEditAction(FrameUI frameUI) {
+		super(frameUI);
+	}
+	
+	public void execute() throws Exception {
+		MainBillMgrPanel mainMgrPanel = (MainBillMgrPanel) getMainPanel();
+		
+		// 获取选中行
+		int selectedRow = ((DemandMainPanel) getMainPanel()).getSelectedRow();
+		
+		// 获取界面聚合vos
+		HRAggVO [] s = (HRAggVO[]) mainMgrPanel.getMainBillListPanel().getData();
+		
+		if (null !=s && s[selectedRow] != null){
+			// 主表vo
+			DemandVO cta = (DemandVO) s[selectedRow].getParentVO();
+			if (cta.getBillstatus() != IBillStatus.FREE){
+				throw new ValidationException("非编写状态不能修改。");
+			}
+		}
+		
+		super.execute();
+		
+		DemandTestUI ui = (DemandTestUI)this.getFrameUI();
+		ui.getBillCardPanel().setHeadItem(DemandVO.PK_CORP, PubEnv.getPk_corp());
+		
+		getDataModel().setRollBackState(getDataModel().getCurrentState());
+        
+        getDataModel().setCurrentState(StateRegister.STATE_EDIT);
+        
+        getMainPanel().setMainPanelEnabled(true);
+	}
+
+}

+ 20 - 0
xc/cg/src/client/u8c/ui/mytest/action/DemandExportAction.java

@@ -0,0 +1,20 @@
+package u8c.ui.mytest.action;
+
+import nc.bs.framework.common.NCLocator;
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.action.AbstractAction;
+import u8c.ui.excel.ExcelFileProcess;
+
+public class DemandExportAction extends AbstractAction{
+
+	public DemandExportAction(FrameUI frameUI) {
+		super(frameUI);
+		// TODO Auto-generated constructor stub
+	}
+
+	@Override
+	public void execute() throws Exception {
+		new ExcelFileProcess().downLoadDefaultFile("mmpac/材料采购单.xlsx");
+	}
+
+}

+ 17 - 0
xc/cg/src/client/u8c/ui/mytest/action/DemandImportAction.java

@@ -0,0 +1,17 @@
+package u8c.ui.mytest.action;
+
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.action.AbstractAction;
+import u8c.ui.excel.ExcelFileProcess;
+
+public class DemandImportAction extends AbstractAction{
+	public DemandImportAction(FrameUI frameUI1) {
+		super(frameUI1);
+		// TODO Auto-generated constructor stub
+	}
+	
+	@Override
+	public void execute() throws Exception {
+		new ExcelFileProcess().importExcelData("mmpac.mytest.importinsert");
+	}
+}

+ 19 - 0
xc/cg/src/client/u8c/ui/mytest/action/DemandQueryAction.java

@@ -0,0 +1,19 @@
+package u8c.ui.mytest.action;
+
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.action.QueryAction;
+import nc.ui.hr.global.Global;
+
+public class DemandQueryAction extends QueryAction{
+
+	public DemandQueryAction(FrameUI frameUI) {
+		super(frameUI);
+	}
+	
+	public void execute() throws Exception {
+		getDataModel().setExtraCondition(" and pk_corp = '" + Global.getCorpPK() + "'"); // 设置附加查询条件
+		super.execute();
+	}
+	
+
+}

+ 44 - 0
xc/cg/src/client/u8c/ui/mytest/action/DemandSaveAction.java

@@ -0,0 +1,44 @@
+package u8c.ui.mytest.action;
+
+import nc.bs.pub.billcodemanage.BillcodeGenerater;
+import nc.hr.utils.PubEnv;
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.action.SaveAction;
+import nc.ui.hr.frame.impl.MainBillMgrPanel;
+import nc.ui.hr.frame.state.StateRegister;
+import nc.vo.hr.tools.pub.HRAggVO;
+import nc.vo.pub.ValidationException;
+import u8c.ui.mytest.panel.DemandMainPanel;
+import u8c.ui.mytest.panel.DemandTestUI;
+import u8c.vo.DemandVO;
+
+public class DemandSaveAction extends SaveAction {
+
+	DemandTestUI frameUI = null;
+
+	public DemandSaveAction(FrameUI frameUI) {
+		super(frameUI);
+		this.frameUI = (DemandTestUI) frameUI;
+	}
+
+	public void execute() throws Exception {
+		MainBillMgrPanel mainMgrPanel = (MainBillMgrPanel) getMainPanel();
+		int selectedRow = ((DemandMainPanel) getMainPanel()).getSelectedRow();
+		HRAggVO s = (HRAggVO) mainMgrPanel.getMainBillCardPanel().getData();
+		if(selectedRow==-1) {
+			throw new ValidationException("请添加表体行");
+		}
+		
+		
+		if (null != s && s != null){
+			DemandVO headvo = (DemandVO) s.getParentVO();
+			String vbillcode = headvo.getVbillcode();
+			if(vbillcode==null||vbillcode.equals("")) {
+				vbillcode = new BillcodeGenerater().getBillCode("A2A3", PubEnv.getPk_corp(), null, null);
+				mainMgrPanel.getBillCardPanel().setHeadItem("vbillcode", vbillcode);
+			}
+		}
+		super.execute();
+		frameUI.getDataModel().setCurrentState(StateRegister.STATE_NOTEDIT); // 设置当前状态为非编辑时
+	}
+}

+ 43 - 0
xc/cg/src/client/u8c/ui/mytest/action/DemandUnApproveAction.java

@@ -0,0 +1,43 @@
+package u8c.ui.mytest.action;
+
+import nc.hr.frame.persistence.BaseDAOManager;
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.action.AbstractAction;
+import nc.ui.hr.frame.button.AbstractBtnReg;
+import nc.ui.hr.frame.impl.MainBillMgrPanel;
+import nc.vo.hr.tools.pub.HRAggVO;
+import nc.vo.pub.ValidationException;
+import nc.vo.trade.pub.IBillStatus;
+import u8c.ui.mytest.datamodel.DemandDataModel;
+import u8c.ui.mytest.panel.DemandMainPanel;
+import u8c.ui.mytest.panel.DemandTestUI;
+import u8c.vo.DemandVO;
+
+public class DemandUnApproveAction extends AbstractAction{
+	
+	DemandTestUI frameUI = null;
+	BaseDAOManager dao = new BaseDAOManager();
+
+	public DemandUnApproveAction(FrameUI frameUI) {
+		super(frameUI);
+		this.frameUI = (DemandTestUI) frameUI;
+	}
+
+	@Override
+	public void execute() throws Exception {
+		MainBillMgrPanel mainMgrPanel = (MainBillMgrPanel) getMainPanel();
+		int selectedRow = ((DemandMainPanel) getMainPanel()).getSelectedRow();
+		HRAggVO[] s = (HRAggVO[]) mainMgrPanel.getMainBillListPanel().getData();
+		if (null != s && s[selectedRow] != null){
+			DemandVO headvo = (DemandVO) s[selectedRow].getParentVO();
+			if (headvo.getBillstatus() != IBillStatus.CHECKPASS){
+				throw new ValidationException("非审批态单据不允许取消审批");
+			}
+			headvo.setBillstatus(IBillStatus.FREE);
+			headvo.setApprove("");
+		}
+		((DemandDataModel)this.frameUI.getDataModel()).execApprove(s[selectedRow]);
+		getFrameUI().getBtnManager().getCmdByID(AbstractBtnReg.SYSBTN_REFRESH).execute();
+	}
+
+}

+ 44 - 0
xc/cg/src/client/u8c/ui/mytest/button/DemandBtnStateReg.java

@@ -0,0 +1,44 @@
+package u8c.ui.mytest.button;
+
+import nc.ui.hr.frame.bill.manage.ManageBtnStateReg;
+import nc.ui.hr.frame.button.AbstractBtnReg;
+import nc.ui.hr.frame.state.StateRegister;
+import nc.vo.hr.frame.button.ButtonStateVO;
+
+public class DemandBtnStateReg extends ManageBtnStateReg{
+	
+	public DemandBtnStateReg(StateRegister stRgst) {
+		super(stRgst);
+	}
+	
+	protected void addUserButtonStateVO() {
+		super.addUserButtonStateVO();
+		
+		// 初始
+        ButtonStateVO btnStateVO = new ButtonStateVO();
+        btnStateVO.setStateID(StateRegister.STATE_INIT);
+        btnStateVO.setEnableBtnIDs(new int[]{AbstractBtnReg.SYSBTN_QUERY, AbstractBtnReg.SYSBTN_ADD, AbstractBtnReg.SYSBTN_REFRESH,AbstractBtnReg.SYSBTN_EXPORT,AbstractBtnReg.SYSBTN_IMPORT,AbstractBtnReg.USERBTN_boExportImport});
+        btnStateVO.setVisibleBtnIDs(new int[]{AbstractBtnReg.SYSBTN_EDIT, AbstractBtnReg.SYSBTN_DELETE, AbstractBtnReg.SYSBTN_EXAMINE, AbstractBtnReg.SYSBTN_CANCELEXAMINE});
+        addStateVO(btnStateVO.getStateID(), btnStateVO);
+        
+		// 表头行选择
+        btnStateVO = new ButtonStateVO();
+        btnStateVO.setStateID(StateRegister.STATE_LINE_SELECTED);
+        btnStateVO.setEnableBtnIDs(new int[]{AbstractBtnReg.SYSBTN_EXAMINE_OPS, AbstractBtnReg.SYSBTN_QUERY, AbstractBtnReg.SYSBTN_ADD,AbstractBtnReg.SYSBTN_EDIT,
+        		AbstractBtnReg.SYSBTN_DELETE,AbstractBtnReg.SYSBTN_EXAMINE,AbstractBtnReg.SYSBTN_CANCELEXAMINE,AbstractBtnReg.USERBTN_boExportImport,AbstractBtnReg.SYSBTN_EXPORT,AbstractBtnReg.SYSBTN_IMPORT});
+        btnStateVO.setVisibleBtnIDs(new int[]{ });
+        addStateVO(btnStateVO.getStateID(), btnStateVO);
+        
+        // 浏览
+        btnStateVO = new ButtonStateVO();
+        btnStateVO.setStateID(StateRegister.STATE_NOTEDIT);
+        btnStateVO.setEnableBtnIDs(new int[]{AbstractBtnReg.SYSBTN_ADD, AbstractBtnReg.SYSBTN_EDIT, AbstractBtnReg.SYSBTN_DELETE,AbstractBtnReg.SYSBTN_RETURN,
+        		AbstractBtnReg.SYSBTN_EXAMINE,AbstractBtnReg.SYSBTN_CANCELEXAMINE,AbstractBtnReg.USERBTN_boExportImport,AbstractBtnReg.SYSBTN_EXPORT,AbstractBtnReg.SYSBTN_IMPORT,
+//        		AbstractBtnReg.USERBTN_ADDPRAYBILL
+        		AbstractBtnReg.USERBTN_ClOSE});
+        btnStateVO.setVisibleBtnIDs(new int[]{AbstractBtnReg.SYSBTN_EXAMINE_OPS, AbstractBtnReg.SYSBTN_QUERY, AbstractBtnReg.SYSBTN_REFRESH});
+        addStateVO(btnStateVO.getStateID(), btnStateVO);
+
+	}
+
+}

+ 75 - 0
xc/cg/src/client/u8c/ui/mytest/datamodel/DemandDataModel.java

@@ -0,0 +1,75 @@
+package u8c.ui.mytest.datamodel;
+
+import nc.bs.framework.common.NCLocator;
+import nc.ui.hr.frame.bill.manage.ManageDataModel;
+import nc.ui.hr.frame.persistence.PersitenceDelegator;
+import nc.vo.hr.tools.pub.HRAggVO;
+import nc.vo.pub.BusinessException;
+import u8c.itf.po.IDemandInfo;
+import u8c.vo.DemandBVO;
+import u8c.vo.DemandVO;
+
+public class DemandDataModel extends ManageDataModel{
+	
+	public DemandDataModel(){
+		super();
+		
+		// ��ͷ��Ϣ
+		setHeadPk(new DemandVO().getPKFieldName()); // ���ñ�ͷ�������ֶ���
+		setHeadVOClass(DemandVO.class); // ���ñ�ͷ�������
+		// �ӱ���Ϣ
+		this.setBodyVOClassArray(new Class[] {DemandBVO.class});
+		this.setBodyTableNames(new String[] {new DemandBVO().getTableName()});
+		this.setBodyTableCodeArray(new String[] { new DemandBVO().getTableName()});
+		this.setBodyPkArray(new String[] {DemandBVO.PK_DEMAND_B});
+		this.setBodyFkArray(new String[] {DemandBVO.PK_DEMAND});
+	}
+	
+	@Override
+	public String getBillTempletBusiType() {
+		return null;
+	}
+
+	@Override
+	public String getBillTempletCode() { // ��������
+		return "A2A3";
+	}
+
+	@Override
+	public String getNormalQueryTemplateCode() {
+		return null;
+	}
+
+	public boolean UpdateStatus(HRAggVO aggvo,int status) throws BusinessException{
+		return getIDemandInfo().UpdateStatus(aggvo,status);
+	}
+	
+	public boolean execApprove(HRAggVO aggvo) throws BusinessException{
+		return getIDemandInfo().execApprove(aggvo);
+	}
+	
+	
+	static IDemandInfo ipti = null;
+	
+	public static IDemandInfo getIDemandInfo() {
+		if (ipti == null) {
+			ipti = (IDemandInfo) NCLocator.getInstance().lookup(IDemandInfo.class);
+		}
+		return ipti;
+	}
+	
+	public Object onSave(Object data, String checkClassMethodName, String lockClassName) throws Exception
+    {
+        if (data instanceof HRAggVO)
+        {
+            return PersitenceDelegator.saveAggVO((HRAggVO) data, checkClassMethodName, lockClassName);
+        }
+        else if (data instanceof HRAggVO[])
+        {
+            return PersitenceDelegator.saveAggVOArray((HRAggVO[]) data, checkClassMethodName, lockClassName);
+        }
+        
+        return null;
+    }
+
+}

+ 68 - 0
xc/cg/src/client/u8c/ui/mytest/panel/DemandMainPanel.java

@@ -0,0 +1,68 @@
+package u8c.ui.mytest.panel;
+
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.impl.MainBillMgrPanel;
+import nc.ui.hr.frame.state.StateRegister;
+import nc.ui.pub.beans.constenum.DefaultConstEnum;
+import nc.ui.pub.beans.constenum.IConstEnum;
+import nc.ui.pub.bill.BillEditEvent;
+import nc.ui.pub.bill.BillItemEvent;
+import nc.ui.pub.bill.IBillItem;
+import nc.vo.hr.tools.pub.HRConstEnum;
+import nc.vo.pub.lang.UFDouble;
+import u8c.ui.mytest.datamodel.DemandDataModel;
+
+
+public class DemandMainPanel extends MainBillMgrPanel{
+	
+public int selectedRow = -1;
+	
+	public DemandMainPanel(FrameUI frameUI, String strBillType2, String strBusiType2) {
+		super(frameUI, strBillType2, strBusiType2);
+		initComboBox();
+	}
+	
+	public IConstEnum[] APPROVE_STATUS_APPLY2 = { 
+			new DefaultConstEnum(Integer.valueOf(8), "编写中"),
+			new DefaultConstEnum(Integer.valueOf(1), "已批准"),
+			new DefaultConstEnum(Integer.valueOf(9), "已关闭")
+		};
+
+	protected void initComboBox(){ 
+		
+        initComboBox(IBillItem.HEAD, null, "billstatus",
+        		APPROVE_STATUS_APPLY2, false);
+	}
+	
+	public void bodyRowChange(BillEditEvent billEditEvent){
+        if (billEditEvent == null){
+            return;
+        }
+        selectedRow = billEditEvent.getRow();
+        if (billEditEvent.getSource() == ((DemandMainPanel)(getParentUI().getMainPanel())).getBillCardPanel().getBillTable()){
+            return;
+        }
+        DemandDataModel dataModel = (DemandDataModel) getParentUI().getDataModel();
+        dataModel.setCurrentState(StateRegister.STATE_LINE_SELECTED, true);
+	}
+		
+	public int getSelectedRow() {
+		return selectedRow;
+	}
+	
+	@Override
+	public void afterEdit(BillEditEvent evt) { 
+		super.afterEdit(evt);
+	}
+	
+	@Override
+	protected boolean beforeEdit(BillItemEvent evt) { 
+		return super.beforeEdit(evt);
+	}
+
+	@Override
+	public boolean beforeEdit(BillEditEvent evt) { 
+		return super.beforeEdit(evt);
+	}
+	
+}

+ 151 - 0
xc/cg/src/client/u8c/ui/mytest/panel/DemandTestUI.java

@@ -0,0 +1,151 @@
+package u8c.ui.mytest.panel;
+
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.MainPanel;
+import nc.ui.hr.frame.TopPanel;
+import nc.ui.hr.frame.action.AddLineAction;
+import nc.ui.hr.frame.action.CancelAction;
+import nc.ui.hr.frame.action.DeleteLineAction;
+import nc.ui.hr.frame.action.EditLineAction;
+import nc.ui.hr.frame.action.RefreshAction;
+import nc.ui.hr.frame.action.ReturnFromCardToListAction;
+import nc.ui.hr.frame.bill.manage.ManageDataModel;
+import nc.ui.hr.frame.button.AbstractBtnReg;
+import nc.ui.hr.frame.button.BtnStateReg;
+import nc.ui.pub.bill.BillCardPanel;
+import u8c.ui.mytest.action.AddPraybillAction;
+import u8c.ui.mytest.action.DemandAddAction;
+import u8c.ui.mytest.action.DemandApproveAction;
+import u8c.ui.mytest.action.DemandCloseAction;
+import u8c.ui.mytest.action.DemandDeleteAction;
+import u8c.ui.mytest.action.DemandEditAction;
+import u8c.ui.mytest.action.DemandExportAction;
+import u8c.ui.mytest.action.DemandImportAction;
+import u8c.ui.mytest.action.DemandQueryAction;
+import u8c.ui.mytest.action.DemandSaveAction;
+import u8c.ui.mytest.action.DemandUnApproveAction;
+import u8c.ui.mytest.button.DemandBtnStateReg;
+import u8c.ui.mytest.datamodel.DemandDataModel;
+
+public class DemandTestUI extends FrameUI{
+	
+	protected void initialize(){
+		super.initialize();
+	}
+
+	@Override
+	protected void initButtons() {
+		// ��ʼ����ť
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_ADD);
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_EDIT);
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_DELETE);
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_QUERY);
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_REFRESH);
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_SAVE);
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_CANCEL);
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_ADD_LINE);
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_DEL_LINE);
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_EDIT_LINE);
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_RETURN);
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_EXAMINE);
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_CANCELEXAMINE);
+//		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_EXPORT);
+//		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_IMPORT);
+//		getBtnManager().addButtonByID(AbstractBtnReg.USERBTN_ADDPRAYBILL);
+		getBtnManager().addButtonByID(AbstractBtnReg.USERBTN_boExportImport); //����/����
+		getBtnManager().addChildButtonsByIDs(AbstractBtnReg.USERBTN_boExportImport , 
+				new int []{AbstractBtnReg.SYSBTN_EXPORT,AbstractBtnReg.SYSBTN_IMPORT});
+		getBtnManager().addButtonByID(AbstractBtnReg.USERBTN_ClOSE);
+
+		// ���ð�ť������
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_ADD, new DemandAddAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_EDIT, new DemandEditAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_DELETE, new DemandDeleteAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_QUERY, new DemandQueryAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_REFRESH, new RefreshAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_SAVE, new DemandSaveAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_CANCEL, new CancelAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_ADD_LINE, new AddLineAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_EDIT_LINE, new EditLineAction(this));		
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_DEL_LINE, new DeleteLineAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_RETURN, new ReturnFromCardToListAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_EXAMINE, new DemandApproveAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_CANCELEXAMINE, new DemandUnApproveAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_EXPORT, new DemandExportAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_IMPORT, new DemandImportAction(this));
+//		getBtnManager().regCmd(AbstractBtnReg.USERBTN_ADDPRAYBILL, new AddPraybillAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.USERBTN_ClOSE, new DemandCloseAction(this));
+
+		
+
+		// ��ť����
+		getBtnManager().adjustButtonOrder(new int[] {
+				AbstractBtnReg.SYSBTN_ADD,
+				AbstractBtnReg.SYSBTN_EDIT,
+				AbstractBtnReg.SYSBTN_DELETE,
+				AbstractBtnReg.SYSBTN_ADD_LINE,
+				AbstractBtnReg.SYSBTN_EDIT_LINE,
+				AbstractBtnReg.SYSBTN_DEL_LINE,
+				AbstractBtnReg.SYSBTN_QUERY,
+				AbstractBtnReg.SYSBTN_REFRESH, 
+				AbstractBtnReg.SYSBTN_SAVE,
+				AbstractBtnReg.SYSBTN_CANCEL,
+				AbstractBtnReg.SYSBTN_RETURN,
+				AbstractBtnReg.SYSBTN_EXAMINE,
+				AbstractBtnReg.SYSBTN_CANCELEXAMINE,
+				AbstractBtnReg.SYSBTN_EXPORT,
+				AbstractBtnReg.SYSBTN_IMPORT,
+				AbstractBtnReg.USERBTN_boExportImport,
+//				AbstractBtnReg.USERBTN_ADDPRAYBILL
+				AbstractBtnReg.USERBTN_ClOSE
+				});
+	}
+	
+	@Override
+	protected MainPanel createMainPanel() { // ������
+		ManageDataModel model = (ManageDataModel) getDataModel();
+		return new DemandMainPanel(this,  model.getBillTempletCode(), model.getBillTempletBusiType());
+	}
+
+	@Override
+	protected TopPanel createTopPanel() { //�������
+		return new DemandTopPanel(this);
+	}
+	
+	@Override
+	protected BtnStateReg createButtonStateRegister() { // ��ť״̬ע����
+		return  new DemandBtnStateReg(getDataModel().getState());
+	}
+	
+	@Override
+	protected DemandDataModel createDataModel() { // ���������
+		return new DemandDataModel();
+	}
+
+	@Override
+	public boolean needLeftPanel() { // ����Ҫ��˵���
+		return false;
+	}
+
+	@Override
+	public boolean needTopPanel() { //��Ҫ�������
+		return true;
+	}
+	
+	@Override
+	public String getQueryNodeKey() { // �ڡ����ܽڵ�Ĭ��ģ�����á��в�ѯģ��Ľڵ��ʶ
+		// (����������ò��ԣ������ѯ��ťʱ�ͻᱨ��ǰ�û�û�п��õIJ�ѯģ��)
+		return "400303";
+	}
+	
+	@Override
+	public String getModuleCode() { // �ڵ����
+		return "400303";
+	}
+	
+	public BillCardPanel getBillCardPanel() {
+		this.getBtnManager().setButtonEnabled(AbstractBtnReg.SYSBTN_RETURN, true);
+		return ((DemandMainPanel) (this.getMainPanel())).getBillCardPanel();
+	}
+	
+}

+ 22 - 0
xc/cg/src/client/u8c/ui/mytest/panel/DemandTopPanel.java

@@ -0,0 +1,22 @@
+package u8c.ui.mytest.panel;
+
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.TopPanel;
+import nc.ui.pub.beans.UILabel;
+import nc.ui.pub.beans.UITextField;
+
+public class DemandTopPanel extends TopPanel{
+	
+	private UILabel lyeartotal = null;
+	private UITextField fyeartotal = null;
+	
+	private static final long serialVersionUID = 1L;
+	
+	DemandTestUI frameUI = null;
+	
+	public DemandTopPanel(FrameUI parentUI) {
+		super(parentUI);
+		this.frameUI = (DemandTestUI) parentUI;
+	}
+
+}

+ 28 - 0
xc/cg/src/private/u8c/bs/mytest/bp/DefaultValueRule.java

@@ -0,0 +1,28 @@
+package u8c.bs.mytest.bp;
+
+
+import nc.vo.pub.BusinessException;
+import nc.vo.trade.pub.IBillStatus;
+import u8c.pubitf.rule.IRule;
+import u8c.vo.AggDemandVO;
+import u8c.vo.DemandVO;
+
+/**
+ * 默认值填充
+ * 
+ * @author Administrator
+ *
+ */
+public class DefaultValueRule implements IRule<AggDemandVO> {
+
+	@Override
+	public void process(AggDemandVO[] vos) throws BusinessException {
+		for(int i = 0; i < vos.length; i++) {
+			DemandVO demandVO = (DemandVO) vos[i].getParentVO();
+			//单据状态编写中
+			demandVO.setBillstatus(IBillStatus.FREE);
+		}
+	}
+
+
+}

+ 99 - 0
xc/cg/src/private/u8c/bs/mytest/bp/DemanImportInsertBP.java

@@ -0,0 +1,99 @@
+package u8c.bs.mytest.bp;
+
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import nc.bs.dao.BaseDAO;
+import nc.vo.pub.BusinessException;
+import u8c.pubitf.rule.IValidate;
+import u8c.pubitf.rule.ICompareRule;
+import u8c.pubitf.rule.IRule;
+import u8c.vo.AggDemandVO;
+import u8c.vo.DemandBVO;
+import u8c.vo.DemandVO;
+
+
+
+public class DemanImportInsertBP{
+	BaseDAO dao = new BaseDAO();
+	
+	
+	public AggDemandVO[] save(AggDemandVO[] bills) throws BusinessException {
+		if (bills != null && bills.length != 0) {
+			AggDemandVO[] vos = null;
+			this.execBeforeRules(bills);
+			vos = this.insertBills(bills);
+			this.execAfterRules(bills);
+			return vos;
+		} else {
+			return null;
+		}
+	}
+	
+	private AggDemandVO[] insertBills(AggDemandVO[] bills) throws BusinessException {
+		for (int i = 0; i < bills.length; i++) {
+			DemandVO demandVO = (DemandVO) bills[i].getParentVO();
+			String pk_demand = dao.insertVO(demandVO);
+			DemandBVO[] demandBVOs = (DemandBVO[]) bills[i].getChildrenVO();
+			for (int j = 0; j < demandBVOs.length; j++) {
+				demandBVOs[j].setPk_demand(pk_demand);
+				dao.insertVO(demandBVOs[j]);
+			}
+			
+			
+		}
+		
+		
+		return bills;
+
+	}
+	
+	
+	//前规则
+	protected void addBeforeRule(List<Object> rules) throws BusinessException {
+		// 默认值填充
+		rules.add(new DefaultValueRule());	
+		//数据校验
+		rules.add(new ValidateRule());	
+	}
+
+	
+	//后规则
+	protected void addAfterRule(List<Object> rules) throws BusinessException {
+	}
+
+	private void execBeforeRules(AggDemandVO[] bills) throws BusinessException {
+		List<Object> rules = new ArrayList();
+		this.addBeforeRule(rules);
+		this.execRules(rules, bills);
+	}
+	
+	private void execAfterRules(AggDemandVO[] bills) throws BusinessException {
+		List<Object> rules = new ArrayList();
+		this.addAfterRule(rules);
+		this.execRules(rules, bills);
+	}
+	
+	private void execRules(List<Object> rules, AggDemandVO[] bills) throws BusinessException {
+		if (null != rules && rules.size() > 0) {
+			Iterator var3 = rules.iterator();
+
+			while (var3.hasNext()) {
+				Object object = var3.next();
+				if (object instanceof IValidate) {
+					IValidate<AggDemandVO> rule = (IValidate) object;
+					rule.validate(bills);
+				} else if (object instanceof IRule) {
+					IRule<AggDemandVO> rule = (IRule) object;
+					rule.process(bills);
+				} else if (object instanceof ICompareRule) {
+					ICompareRule<AggDemandVO> rule = (ICompareRule) object;
+					rule.process(bills, (AggDemandVO[]) null);
+				}
+			}
+		}
+
+	}
+}

+ 69 - 0
xc/cg/src/private/u8c/bs/mytest/bp/ValidateRule.java

@@ -0,0 +1,69 @@
+package u8c.bs.mytest.bp;
+
+import nc.bs.framework.common.NCLocator;
+import nc.itf.uap.IUAPQueryBS;
+import nc.jdbc.framework.processor.ColumnProcessor;
+import nc.vo.pub.BusinessException;
+import u8c.pubitf.rule.IRule;
+import u8c.vo.AggDemandVO;
+import u8c.vo.DemandBVO;
+import u8c.vo.DemandVO;
+
+public class ValidateRule implements IRule<AggDemandVO> {
+
+	private  IUAPQueryBS iuap = NCLocator.getInstance().lookup(IUAPQueryBS.class);
+	/**
+	 * 数据校验
+	 */
+	@Override
+	public void process(AggDemandVO[] vos) throws BusinessException {
+		for(int i = 0; i < vos.length; i++) {
+			DemandVO demandVO = (DemandVO) vos[i].getParentVO();
+			getVbillcode(demandVO.getVbillcode());
+			DemandBVO[] demandBVOs = (DemandBVO[]) vos[i].getChildrenVO();
+			for (int j = 0; j < demandBVOs.length; j++) {
+				getJobbasfil(demandBVOs[j].getPrjcode(), demandBVOs[j].getPrjname());
+				getJobtype(demandBVOs[j].getPrjtypecode(), demandBVOs[j].getPrjtypename());
+				getInvbasdoc(demandBVOs[j].getCmaterialcode(), demandBVOs[j].getCmaterialname());
+			}
+		}
+		
+	}
+	
+	// 查询单据号主键
+    public  void getVbillcode(String vbillcode) throws BusinessException {
+        String sql = "select pk_demand from po_demand where vbillcode ='"+vbillcode+"' and isnull(dr,0) = 0";
+        String pk_demand = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (pk_demand != null) {
+        	throw new BusinessException("您提供的单据编码不唯一,系统无法保存!");
+        }
+    }
+    
+    //查询项目
+    public void getJobbasfil(String code, String name)throws BusinessException {
+    	String sql = "select pk_jobbasfil from bd_jobbasfil where jobcode = '"+code+"' and jobname = '"+name+"' and dr = 0";
+    	String pk_jobbasfil = (String) iuap.executeQuery(sql, new ColumnProcessor());
+    	if (pk_jobbasfil == null) {
+        	throw new BusinessException("以下档案在U8cloud系统中根据公司或者账簿信息找不到,请检查!详细信息:1、档案类型:项目档案,档案编码:"+code+",档案名称:"+name+"");
+        }
+    }
+    //查询物料
+    public void getJobtype(String code, String name)throws BusinessException {
+    	String sql = "select pk_jobtype from bd_jobtype where jobtypecode = '"+code+"' and jobtypename = '"+name+"' and dr = 0";
+    	String pk_jobtype = (String) iuap.executeQuery(sql, new ColumnProcessor());
+    	if (pk_jobtype == null) {
+        	throw new BusinessException("以下档案在U8cloud系统中根据公司或者账簿信息找不到,请检查!详细信息:1、档案类型:项目分类档案,档案编码:"+code+",档案名称:"+name+"");
+        }
+    }
+    
+    //查询物料
+    public void getInvbasdoc(String code, String name)throws BusinessException {
+    	String sql = "select pk_invbasdoc from bd_invbasdoc where invcode = '"+code+"' and invname = '"+name+"' and dr = 0";
+    	String pk_invbasdoc = (String) iuap.executeQuery(sql, new ColumnProcessor());
+    	if (pk_invbasdoc == null) {
+        	throw new BusinessException("以下档案在U8cloud系统中根据公司或者账簿信息找不到,请检查!详细信息:1、档案类型:物料档案,档案编码:"+code+",档案名称:"+name+"");
+        }
+    }
+    
+
+}

+ 203 - 0
xc/cg/src/private/u8c/impl/CustdocAddImpl.java

@@ -0,0 +1,203 @@
+package u8c.impl;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.transaction.SystemException;
+import javax.transaction.UserTransaction;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+
+import nc.bs.dao.BaseDAO;
+import nc.bs.framework.adaptor.IHttpServletAdaptor;
+import nc.bs.framework.common.InvocationInfoProxy;
+import nc.bs.framework.common.NCLocator;
+import nc.itf.uap.IPKLockBS;
+import nc.itf.uap.LockableVO;
+import nc.itf.uap.bd.cust.ICustBasDocOperate;
+import nc.jdbc.framework.processor.ColumnProcessor;
+import nc.vo.bd.b08.CubasdocVO;
+import nc.vo.bd.b08.CustBasVO;
+import nc.vo.pub.BusinessException;
+import u8c.bs.servlet.service.BaseServlet;
+import u8c.bs.servlet.service.GetBaseDAOUtil;
+import u8c.log.NcLog;
+
+public class CustdocAddImpl extends BaseServlet implements IHttpServletAdaptor{
+	
+	UserTransaction trans;
+
+	@Override
+	public void doAction(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+		try {
+			//接口返回结果
+			JSONObject returnobj = new JSONObject();
+			JSONArray errMessage = new JSONArray();
+			String token =req.getParameter("token");
+			if(!(token!=null && !token.equals("")&&("07a81a68-c60c-4ee4-83dc-25aa51a51497").equals(token))){
+				errMessage.add(formatRSJsonData("失败",
+						"请确认通讯密码是否正确!",""));
+				returnobj.put("info", "失败");
+				returnobj.put("errMessage", "请确认通讯密码是否正确!");
+				returnobj.put("result", errMessage);
+				resp.getWriter().write(returnobj.toString());
+				NcLog.info(returnobj.toString());
+				return;
+			}
+			
+			trans = NCLocator.getInstance().lookup(UserTransaction.class);
+			trans.begin(); //开启事务
+			String js = buildJson(req, resp, this.getClass().getName());
+			JSONObject json=JSON.parseObject(js);
+			JSONArray jsdata = json.getJSONArray("result");
+			NcLog.info("客商新增开始:" + jsdata);
+			JSONArray resultJSONArray = handle(jsdata);
+			returnobj.put("info", "成功");
+			returnobj.put("errMessage", "");
+			returnobj.put("result", resultJSONArray);
+			trans.commit();//提交事务
+			resp.getWriter().write(returnobj.toString()); // 返回
+		} catch (Exception e) {
+			try {
+				trans.rollback();//回滚
+			} catch (Exception e1) {
+				e1.printStackTrace();
+			} 
+			
+			e.printStackTrace();
+			NcLog.info("客商新增报错:" + e.getMessage());
+			JSONArray errMessage = new JSONArray();
+			JSONObject returnobj = new JSONObject();
+			errMessage.add(formatRSJsonData("失败",e.getMessage(),"").toString());
+			returnobj.put("info", "失败");
+			returnobj.put("errMessage", e.getMessage());
+			returnobj.put("result", errMessage);
+			resp.getWriter().write(returnobj.toString()); // 返回
+		}
+	}
+
+	public JSONArray handle(JSONArray array) throws Exception {
+		JSONArray res = new JSONArray();
+		// 操作员
+		String user = "";
+		try {
+			for (int i = 0; i < array.size(); i++) {
+			
+				JSONObject headjs = array.getJSONObject(i);
+				user = getStringNotNullException(headjs.get("user"), "user");
+				InvocationInfoProxy.getInstance().setUserCode(getUser(user));
+				CubasdocVO cuBasDocVo = getCustvo(headjs);
+				// 保存方法
+				ICustBasDocOperate custOperate = NCLocator.getInstance().lookup(ICustBasDocOperate.class);
+				// 生成的主键
+				String pk_cubasdoc = custOperate.insertCust(cuBasDocVo, false);
+				// 返回关键信息:主键&&编码
+				res.add(formatRSJsonData("成功","",pk_cubasdoc));
+			}
+			return res;
+		} catch (Exception e) {
+			
+			
+			// 解pk锁,不报错不用解锁
+			IPKLockBS pkbs = NCLocator.getInstance().lookup(IPKLockBS.class);
+			LockableVO[] pkvo = pkbs.getUserLockVOs_RequiresNew(user,
+					InvocationInfoProxy.getInstance().getUserDataSource());
+			if (pkvo != null) {
+				for (int j = 0; j < pkvo.length; j++) {
+					pkbs.releaseLock_RequiresNew(
+							pkvo[j].getLockType() == 1 ? pkvo[j].getLockable() + IPKLockBS.STR_SHARED_LOCK
+									: pkvo[j].getLockable(),
+							user, InvocationInfoProxy.getInstance().getUserDataSource());
+				}
+			}
+			NcLog.info("客商新增报错:" + e);
+			throw new BusinessException("客商新增保存错误:" + e.getMessage());
+		}
+	}
+	
+
+	/**
+	 * 拼装客商基本档案vo
+	 * 
+	 * @param headjs
+	 * @return
+	 * @throws BusinessException
+	 */
+	private CubasdocVO getCustvo(JSONObject headjs) throws BusinessException {
+		CubasdocVO cuBasDocVo = new CubasdocVO();
+		CustBasVO cusVos = new CustBasVO();
+
+		String user = getStringNotNullException(headjs.get("user"), "user");
+		String custcode = getStringNotNullException(headjs.get("custcode"), "custcode");
+		String custname = getStringNotNullException(headjs.get("custname"), "custname");
+		String areacl = getStringNotNullException(headjs.get("areacl"), "areacl");
+		String corp = getStringNotNullException(headjs.get("corp"), "corp");
+		String custshortname = getStringNotNullException(headjs.get("custshortname"), "custshortname");
+		cusVos.setCustcode(custcode);// 客商档案编码
+		cusVos.setCustname(custname);// 客商名称
+		cusVos.setCustshortname(custshortname);// 客户简称
+		cusVos.setCreator(getUser(user));// 制单人
+		cusVos.setPk_areacl(getAreacl(areacl));// 区域
+		cusVos.setPk_corp(corp);// 公司
+		cusVos.setCustprop(0);// 客商类型
+		cusVos.setDr(0);
+		cuBasDocVo.setParentVO(cusVos);
+		return cuBasDocVo;
+	}
+
+
+	/**
+	 * 用户信息查询
+	 * 
+	 * @param cuserid
+	 * @return
+	 * @throws BusinessException
+	 */
+	public String getUser(String code) throws BusinessException {
+		String cuserid = null;
+
+		String sql = " select cuserid from sm_user" + " where user_code  ='" + code + "' and dr =0 ";
+		cuserid = (String) new BaseDAO().executeQuery(sql.toString(), new ColumnProcessor());
+		if (cuserid == null) {
+			throw new BusinessException("U8C不存在当前操作用户:" + code);
+		}
+		return cuserid;
+	}
+	
+	/**
+	 * 查询区域信息
+	 * @param areaclcode
+	 * @return
+	 * @throws BusinessException
+	 */
+	public String getAreacl(String areaclcode) throws BusinessException {
+		String areacl = null;
+		String sql = " select pk_areacl from bd_areacl" + " where areaclcode  ='" + areaclcode + "' and dr =0 ";
+		areacl = (String) new BaseDAO().executeQuery(sql.toString(), new ColumnProcessor());
+		if (areacl == null) {
+			throw new BusinessException("U8C不存在当前区域:" + areaclcode);
+		}
+		return areacl;
+	}
+
+
+	public String getStringNotNullException(Object value, String itemname) throws BusinessException {
+		if (value == null || value.toString().trim().length() == 0) {
+			throw new BusinessException(itemname + "不能为空!");
+		}
+		return value.toString();
+	}
+
+	public String getStringIsNullException(Object value, String itemname) throws BusinessException {
+		if (value == null || value.toString().trim().length() == 0) {
+			return null;
+		}
+		return value.toString();
+	}
+		
+}
+

+ 21 - 0
xc/cg/src/private/u8c/impl/DemanImportInsertAction.java

@@ -0,0 +1,21 @@
+package u8c.impl;
+
+import nc.vo.pub.BusinessException;
+import u8c.bs.action.save.AbstractBatchSaveAggVOAction;
+import u8c.bs.mytest.bp.DemanImportInsertBP;
+import u8c.vo.AggDemandVO;
+
+public class DemanImportInsertAction extends AbstractBatchSaveAggVOAction<AggDemandVO> {
+
+
+	@Override
+	protected String getBillMark() {
+		return "A2A3";
+	}
+
+	@Override
+	protected AggDemandVO[] save(AggDemandVO[] vos) throws BusinessException {
+		return new DemanImportInsertBP().save(vos);
+	}
+
+}

+ 233 - 0
xc/cg/src/private/u8c/impl/DemandAddImpl.java

@@ -0,0 +1,233 @@
+package u8c.impl;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.transaction.UserTransaction;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.microsoft.sqlserver.jdbc.StringUtils;
+
+import nc.bs.dao.BaseDAO;
+import nc.bs.framework.adaptor.IHttpServletAdaptor;
+import nc.bs.framework.common.NCLocator;
+import nc.itf.uap.IUAPQueryBS;
+import nc.jdbc.framework.processor.ColumnProcessor;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.trade.pub.IBillStatus;
+import u8c.bs.servlet.service.BaseServlet;
+import u8c.bs.servlet.service.GetBaseDAOUtil;
+import u8c.log.NcLog;
+import u8c.vo.DemandBVO;
+import u8c.vo.DemandVO;
+
+public class DemandAddImpl extends BaseServlet implements IHttpServletAdaptor{
+	private  IUAPQueryBS iuap = NCLocator.getInstance().lookup(IUAPQueryBS.class);
+	BaseDAO dao = new BaseDAO();
+	UserTransaction trans;
+
+	@Override
+	public void doAction(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+		try {
+			//接口返回结果
+			JSONObject returnobj = new JSONObject();
+			//正常返回json
+			JSONArray result = new JSONArray();
+			//报错返回json
+			JSONArray errMessage = new JSONArray();
+			String token =req.getParameter("token");
+			if(!(token!=null && !token.equals("")&&("07a81a68-c60c-4ee4-83dc-25aa51a51497").equals(token))){
+				errMessage.add(formatRSJsonData("失败","请确认通讯密码是否正确!",""));
+				returnobj.put("info", "失败");
+				returnobj.put("errMessage", "请确认通讯密码是否正确!");
+				returnobj.put("result", errMessage);
+				resp.getWriter().write(returnobj.toString());
+				NcLog.info(returnobj.toString());
+				return;
+			}
+			trans = NCLocator.getInstance().lookup(UserTransaction.class);
+			trans.begin(); //开启事务
+			String createStr = buildJson(req, resp, this.getClass().getName());
+			JSONObject json = JSON.parseObject(createStr);
+			String checkresult = checkJson(json);
+			if(checkresult != null){
+				errMessage.add(formatRSJsonData("失败",checkresult,""));
+				returnobj.put("info", "失败");
+				returnobj.put("errMessage", checkresult);
+				returnobj.put("result", errMessage);
+				resp.getWriter().write(returnobj.toString());
+				NcLog.info(returnobj.toString());
+				return;
+			}
+			JSONArray bodyArray = json.getJSONArray("result");
+			for (Object Object : bodyArray) {
+				JSONObject bodyObject = JSONObject.parseObject(Object.toString());
+				String pk_corp = bodyObject.getString("pk_corp");//计划组织
+				String vbillcode = bodyObject.getString("vbillcode");//单据号
+				String pk_demandOld = getVbillcode(vbillcode);
+				if(!StringUtils.isEmpty(pk_demandOld)) {
+					errMessage.add(formatRSJsonData("失败","单据号"+ vbillcode +"已存在","").toString());
+					returnobj.put("info", "失败");
+					returnobj.put("errMessage", "单据号"+ vbillcode +"已存在");
+					returnobj.put("result", errMessage);
+					resp.getWriter().write(returnobj.toString());
+					NcLog.info(returnobj.toString());
+					return;
+				}
+				String dbilldate = bodyObject.getString("dbilldate");//单据日期
+				String billmaker = GetBaseDAOUtil.getUserid(bodyObject.getString("billmaker"));//制单人
+				if(billmaker.equals("")) {
+					errMessage.add(formatRSJsonData("失败","制单人"+bodyObject.getString("billmaker")+"未查到,请检查","").toString());
+					returnobj.put("info", "失败");
+					returnobj.put("errMessage", "制单人"+bodyObject.getString("billmaker")+"未查到,请检查");
+					returnobj.put("result", errMessage);
+					resp.getWriter().write(returnobj.toString());
+					NcLog.info(returnobj.toString());
+					return;
+				}
+				String workmanid = GetBaseDAOUtil.getPsndocid(bodyObject.getString("workmanid"));//业务员
+				String plandeptid = GetBaseDAOUtil.getDeptdocid(bodyObject.getString("plandeptid"));//计划部门
+				String vnote = bodyObject.getString("vnote");//备注
+				DemandVO headvo = new DemandVO();
+				//表头赋值
+				headvo.setPk_corp(pk_corp);
+				headvo.setVbillcode(vbillcode);
+				headvo.setDbilldate(new UFDate(dbilldate));
+				headvo.setBillmaker(billmaker);
+				headvo.setWorkmanid(workmanid);
+				headvo.setPlandeptid(plandeptid);
+				headvo.setVnote(vnote);
+				headvo.setBillstatus(IBillStatus.FREE);
+				String pk_demand = dao.insertVO(headvo);
+				//表体赋值
+				if(bodyObject.getJSONArray("po")!=null) {
+					JSONArray inArray = bodyObject.getJSONArray("po");
+					for(int i = 0;i < inArray.size();i++) {
+						Object inobj = inArray.get(i);
+						JSONObject injsobj = JSONObject.parseObject(inobj.toString());
+						String prjcode = injsobj.getString("prjcode");//项目编码
+						String prjname = GetBaseDAOUtil.getprojectname(prjcode);//项目名称
+						String prjtypecode = GetBaseDAOUtil.getprjtypecode(prjcode);//项目分类编码
+						String prjtypename = GetBaseDAOUtil.getprjtypename(prjcode);//项目分类名称
+						String vbatchcode = injsobj.getString("vbatchcode");//批次
+						String cmaterialcode = injsobj.getString("cmaterialcode");//存货编码
+						String cmaterialname = GetBaseDAOUtil.getinvname(cmaterialcode);//存货名称
+						String spec = GetBaseDAOUtil.getinvspec(cmaterialcode);//规格
+						String model = GetBaseDAOUtil.getinvtype(cmaterialcode);//型号
+						String width = GetBaseDAOUtil.getwidth(cmaterialcode);//宽度
+						String height = GetBaseDAOUtil.getheight(cmaterialcode);//高度
+						String unitid = GetBaseDAOUtil.getmeasname(cmaterialcode);//计量单位
+						DemandBVO bodyvo = new DemandBVO();
+						bodyvo.setPrjcode(prjcode);;
+						bodyvo.setPrjname(prjname);
+						bodyvo.setPrjtypecode(prjtypecode);
+						bodyvo.setPrjtypename(prjtypename);
+						bodyvo.setVbatchcode(vbatchcode);
+						bodyvo.setCmaterialcode(cmaterialcode);
+						bodyvo.setCmaterialname(cmaterialname);
+						bodyvo.setSpec(spec);
+						bodyvo.setModel(model);
+						bodyvo.setWidth(width);
+						bodyvo.setHeight(height);
+						bodyvo.setUnitid(unitid);
+						bodyvo.setPk_demand(pk_demand);
+						dao.insertVO(bodyvo);
+					}
+				}
+				result.add(formatRSJsonData("成功","",vbillcode));
+			}
+			returnobj.put("info", "成功");
+			returnobj.put("errMessage", "");
+			returnobj.put("result", result);
+			trans.commit();//提交事务
+			resp.getWriter().write(returnobj.toString());
+			NcLog.info(returnobj.toString());
+		} catch (Exception e) {
+			try {
+				trans.rollback();//回退
+			} catch (Exception e1) {
+				e1.printStackTrace();
+			} 
+			JSONArray errMessage = new JSONArray();
+			JSONObject returnobj = new JSONObject();
+			errMessage.add(formatRSJsonData("失败",
+					e.getMessage(),"").toString());
+			returnobj.put("info", "失败");
+			returnobj.put("errMessage", e.getMessage());
+			returnobj.put("result", errMessage);
+			resp.getWriter().write(returnobj.toString());
+			NcLog.info(returnobj.toString());
+			return;
+		}
+	}
+
+	
+	// 查询单据号主键
+    public  String getVbillcode(String vbillcode) throws Exception {
+        String sql = "select pk_demand from po_demand where vbillcode ='"+vbillcode+"' and isnull(dr,0) = 0";
+        String pk_demand = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (pk_demand == null) {
+            return "";
+        }
+        return pk_demand;
+    }
+    
+	
+	
+	/*
+	 * 非空判断
+	 */
+	private String checkJson(JSONObject json) throws Exception {
+		
+		StringBuffer mags = new StringBuffer();
+		Boolean empty = true;
+		String body = "result";//表体
+		
+		if (json.getJSONArray(body)==null) {
+			empty = false;
+			mags.append("请传入接口数据! ");
+			return mags.toString();
+		}
+		
+		JSONArray oprepObjectBs = json.getJSONArray("result");
+		
+		String vbillcode = "vbillcode";//单据号
+		String pk_corp = "pk_corp";//组织
+		String billmaker = "billmaker";//制单人
+		String dbilldate = "dbilldate";//单据日期
+		
+		String po = "po";//表体
+ 
+		for(int i = 0; i < oprepObjectBs.size(); i++) {
+			JSONObject oprepJsonObjectB = oprepObjectBs.getJSONObject(i);
+			String[] HeadKey = {vbillcode,pk_corp,billmaker,dbilldate};
+			int num = i+1;
+			
+			mags.append("第"+num+"块表头:{");
+			for (String as : HeadKey) {
+
+				if (oprepJsonObjectB.getString(as).isEmpty()) {
+					empty = false;
+					mags.append("'" + as + "' ");
+				}
+			}
+			mags.append("}");
+			
+			if(oprepJsonObjectB.getJSONArray(po)==null) {
+				mags.append("第"+num+"块表体不能为空");
+			}
+		}
+		
+		if (!empty) {
+			return "以下字段不可为空:"+mags;
+		}
+		else {
+			return null;
+		}
+	}
+
+}

+ 13 - 0
xc/cg/src/private/u8c/impl/DemandInfoDAO.java

@@ -0,0 +1,13 @@
+package u8c.impl;
+
+import nc.hr.frame.persistence.BaseDAOManager;
+import nc.vo.pub.BusinessException;
+import u8c.vo.DemandVO;
+
+public class DemandInfoDAO extends BaseDAOManager{
+	
+	public void execUpdate(DemandVO vo, String[] fieldNames) throws BusinessException {
+		getBaseDao().updateVO(vo, fieldNames);
+	}
+
+}

+ 27 - 0
xc/cg/src/private/u8c/impl/DemandInfoImpl.java

@@ -0,0 +1,27 @@
+package u8c.impl;
+
+import nc.vo.hr.tools.pub.HRAggVO;
+import nc.vo.pub.BusinessException;
+import u8c.itf.po.IDemandInfo;
+import u8c.vo.DemandVO;
+
+public class DemandInfoImpl implements IDemandInfo{
+	
+	@Override
+	public boolean UpdateStatus(HRAggVO aggvo, int status) throws BusinessException {
+		DemandVO mainVO = (DemandVO) aggvo.getParentVO();
+		DemandInfoDAO dao = new DemandInfoDAO();
+		mainVO.setBillstatus(status);
+		dao.execUpdate(mainVO, new String[]{DemandVO.BILLSTATUS});
+		return true;
+	}
+
+	@Override
+	public boolean execApprove(HRAggVO aggvo) throws BusinessException {
+		DemandVO mainVO = (DemandVO) aggvo.getParentVO();
+		DemandInfoDAO dao = new DemandInfoDAO();
+		dao.execUpdate(mainVO, new String[]{DemandVO.BILLSTATUS,DemandVO.APPROVE});
+		return true;
+	}
+
+}

+ 87 - 0
xc/cg/src/public/u8c/bs/servlet/service/BaseServlet.java

@@ -0,0 +1,87 @@
+package u8c.bs.servlet.service;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+
+
+import org.codehaus.jettison.json.JSONException;
+
+import net.sf.json.JSONObject;
+
+
+
+/**
+ * 提供一些公共方法
+ * 具体业务请在实际服务类实现
+ */
+public class BaseServlet {
+
+	public static String STATUS_SUCCESS ="success";
+	public static String STATUS_FAILURE ="fail";
+
+	/**
+	 * 格式化传入的数据,JSON化在具体服务类实现
+	 * @param req
+	 * @param resp
+	 * @param 类名
+	 * @return
+	 * @throws ServletException
+	 * @throws IOException
+	 */
+	protected String buildJson(HttpServletRequest req,
+							   HttpServletResponse resp, String classname)
+			throws ServletException, IOException {
+		req.setCharacterEncoding("UTF-8");
+		/* 设置格式为text/json */
+		resp.setContentType("text/json");
+		/* 设置字符集为'UTF-8' */
+		resp.setCharacterEncoding("UTF-8");
+		String reqJsonData = null;
+		// 接收流
+		BufferedReader reader = new BufferedReader(new InputStreamReader(
+				req.getInputStream(), "UTF-8"));
+		StringBuffer jsonStr = new StringBuffer();
+		try {
+			String line = "";
+			while ((line = reader.readLine()) != null) {
+				jsonStr.append(line);
+			}
+			if (jsonStr != null && !"".equals(jsonStr.toString())) {
+				reqJsonData = jsonStr.toString();
+//				PrLogger.error(new UFDateTime(System.currentTimeMillis()).toString()
+//						+ "客户端传入:" + classname + "~~" + reqJsonData);
+			} else {
+				throw new ServletException("传入的数据不合法!");
+			}
+		} catch (IOException e) {
+			throw new IOException("数据读取失败" + e.getMessage());
+		} finally {
+			reader.close();
+		}
+		return reqJsonData;
+	}
+
+
+
+	/**
+	 * 格式返回json数据
+	 *
+	 * @return
+	 * @throws JSONException
+	 * @throws Exception
+	 */
+	public static JSONObject formatRSJsonData(String status,String error,String message){
+		JSONObject rs = new JSONObject();
+		rs.put("status", status);
+		rs.put("message", message);
+		rs.put("error", error);
+		return rs;
+	}
+	
+}

+ 280 - 0
xc/cg/src/public/u8c/bs/servlet/service/GetBaseDAOUtil.java

@@ -0,0 +1,280 @@
+package u8c.bs.servlet.service;
+
+import nc.bs.framework.common.NCLocator;
+import nc.itf.uap.IUAPQueryBS;
+import nc.jdbc.framework.processor.BeanProcessor;
+import nc.jdbc.framework.processor.ColumnProcessor;
+import nc.vo.bd.b09.CumandocVO;
+import nc.vo.bd.invdoc.InvbasdocVO;
+import nc.vo.bd.invdoc.InvmandocVO;
+import nc.vo.pub.BusinessException;
+
+public class GetBaseDAOUtil {
+	private static IUAPQueryBS iuap = NCLocator.getInstance().lookup(IUAPQueryBS.class);
+	
+	// 用户主键
+    public static String getUserid(String usercode) throws Exception {
+        String sql = "select cuserid from sm_user where user_code ='"+usercode+"' and isnull(dr,0) = 0";
+        String cuserid = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (cuserid == null) {
+            return "";
+        }
+        return cuserid;
+    }
+    
+    //人员基本档案主键
+    public static String getPsndocid(String psncode) throws Exception {
+        String sql = "select pk_psndoc from bd_psndoc where psncode ='"+psncode+"' and isnull(dr,0) = 0";
+        String pk_psndoc = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (pk_psndoc == null) {
+            return "";
+        }
+        return pk_psndoc;
+    }
+    
+    //部门档案主键
+    public static String getDeptdocid(String deptcode) throws Exception {
+        String sql = "select pk_deptdoc from bd_deptdoc where deptcode ='"+deptcode+"' and isnull(dr,0) = 0";
+        String pk_deptdoc = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (pk_deptdoc == null) {
+            return "";
+        }
+        return pk_deptdoc;
+    }
+    
+    //业务流程主键
+    public static String getBusitypeid(String busicode,String pk_corp) throws Exception {
+        String sql = "select pk_busitype from bd_busitype where busicode ='"+busicode+"' and isnull(dr,0) = 0 and pk_corp = '"+pk_corp+"'";
+        String pk_busitype = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (pk_busitype == null) {
+            return "";
+        }
+        return pk_busitype;
+    }
+    
+    //项目名称
+    public static String getprojectname(String prjcode) throws Exception {
+        String sql = "select jobname from bd_jobbasfil where jobcode ='"+prjcode+"' and isnull(dr,0) = 0";
+        String jobname = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (jobname == null) {
+            return "";
+        }
+        return jobname;
+    }
+    
+    //项目id
+    public static String getprojectid(String prjcode) throws Exception {
+        String sql = "select pk_jobbasfil from bd_jobbasfil where jobcode ='"+prjcode+"' and isnull(dr,0) = 0";
+        String pk_jobbasfil = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (pk_jobbasfil == null) {
+            return "";
+        }
+        return pk_jobbasfil;
+    }
+    
+    //项目分类编码
+    public static String getprjtypecode(String prjcode) throws Exception {
+        String sql = "select jobtypecode from bd_jobtype where pk_jobtype = (select pk_jobtype from bd_jobbasfil where isnull(dr,0) = 0 and jobcode = '"+prjcode+"')";
+        String jobtypecode = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (jobtypecode == null) {
+            return "";
+        }
+        return jobtypecode;
+    }
+    
+    //项目分类名称
+    public static String getprjtypename(String prjcode) throws Exception {
+        String sql = "select jobtypename from bd_jobtype where pk_jobtype = (select pk_jobtype from bd_jobbasfil where isnull(dr,0) = 0 and jobcode = '"+prjcode+"')";
+        String jobtypename = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (jobtypename == null) {
+            return "";
+        }
+        return jobtypename;
+    }
+    
+    //存货名称
+    public static String getinvname(String cmaterialcode) throws Exception {
+        String sql = "select invname from bd_invbasdoc where invcode = '"+cmaterialcode+"' and isnull(dr,0) = 0";
+        String invname = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (invname == null) {
+            return "";
+        }
+        return invname;
+    }
+    
+    //规格
+    public static String getinvspec(String cmaterialcode) throws Exception {
+        String sql = "select invspec from bd_invbasdoc where invcode = '"+cmaterialcode+"' and isnull(dr,0) = 0";
+        String invspec = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (invspec == null) {
+            return "";
+        }
+        return invspec;
+    }
+    
+    //型号
+    public static String getinvtype(String cmaterialcode) throws Exception {
+        String sql = "select invtype from bd_invbasdoc where invcode = '"+cmaterialcode+"' and isnull(dr,0) = 0";
+        String invtype = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (invtype == null) {
+            return "";
+        }
+        return invtype;
+    }
+    
+    //宽度
+    public static String getwidth(String cmaterialcode) throws Exception {
+        String sql = "select width from bd_invbasdoc where invcode = '"+cmaterialcode+"' and isnull(dr,0) = 0";
+        String width = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (width == null) {
+            return "";
+        }
+        return width;
+    }
+    
+    //高度
+    public static String getheight(String cmaterialcode) throws Exception {
+        String sql = "select height from bd_invbasdoc where invcode = '"+cmaterialcode+"' and isnull(dr,0) = 0";
+        String height = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (height == null) {
+            return "";
+        }
+        return height;
+    }
+    
+    //计量单位
+    public static String getmeasname(String cmaterialcode) throws Exception {
+        String sql = "select measname from bd_measdoc where isnull(dr,0) = 0 and pk_measdoc = (select pk_measdoc from bd_invbasdoc where isnull(dr,0) = 0 and invcode = '"+cmaterialcode+"')";
+        String measname = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (measname == null) {
+            return "";
+        }
+        return measname;
+    }
+    
+    //存货分类主键
+    public static String getInvClid(String invCl) throws Exception {
+        String sql = "select pk_invcl from bd_invcl where isnull(dr,0) = 0 and invclasscode = '"+invCl+"'";
+        String pk_invcl = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (pk_invcl == null) {
+            return "";
+        }
+        return pk_invcl;
+    }
+    
+    //计量单位主键
+    public static String gettaxitemid(String invTaxitems) throws Exception {
+        String sql = "select pk_taxitems from bd_taxitems where isnull(dr,0) = 0 and taxcode = '"+invTaxitems+"'";
+        String pk_taxitems = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (pk_taxitems == null) {
+            return "";
+        }
+        return pk_taxitems;
+    }
+    
+    //税目主键
+    public static String getMeasid(String invMeas) throws Exception {
+        String sql = "select pk_measdoc from bd_measdoc where isnull(dr,0) = 0 and shortname = '"+invMeas+"'";
+        String pk_measdoc = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (pk_measdoc == null) {
+            return "";
+        }
+        return pk_measdoc;
+    }
+    
+    //税率
+    public static Object getTaxRate(String ctaxitemid) throws BusinessException {
+    	String sql = "select taxratio from bd_taxitems where isnull(dr,0) = 0 and pk_taxitems = '"+ctaxitemid+"'";
+    	Object taxratio = (Object) iuap.executeQuery(sql, new ColumnProcessor());
+        if (taxratio == null) {
+            return "";
+        }
+        return taxratio;
+    }
+    
+    //根据存货编码去查询存货vo
+    public static InvbasdocVO getInvVO(String invCode) throws Exception {
+        String sql = "select * from bd_invbasdoc where isnull(dr,0) = 0 and invcode = '"+invCode+"'";
+        Object obj = iuap.executeQuery(sql, new BeanProcessor(InvbasdocVO.class));
+        if (obj == null) {
+            return null;
+        }
+        else {
+        	return (InvbasdocVO)obj;
+        }
+    }
+    
+    //获取客商管理主键
+    public static CumandocVO getCumandocVO(String custcode) throws Exception {
+        String sql = "select *  from bd_cumandoc where pk_cubasdoc = (select pk_cubasdoc from bd_cubasdoc where isnull(dr,0) = 0 and custcode = '"+custcode+"' ) and custflag != 4 and custflag is not null";
+        Object obj = iuap.executeQuery(sql, new BeanProcessor(CumandocVO.class));
+        if (obj == null) {
+            return null;
+        }
+        else {
+        	return (CumandocVO)obj;
+        }
+    }
+    
+    //获取库存组织主键
+    public static String getPkCal(String code) throws Exception {
+        String sql = "select pk_calbody from bd_calbody where isnull(dr,0) = 0 and bodycode = '"+code+"'";
+        String pk_calbody = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (pk_calbody == null) {
+            return "";
+        }
+        return pk_calbody;
+    }
+    
+    //获取销售组织主键
+    public static String getPkSale(String code) throws Exception {
+        String sql = "select csalestruid from bd_salestru where isnull(dr,0) = 0 and vsalestrucode = '"+code+"'";
+        String csalestruid = (String) iuap.executeQuery(sql, new ColumnProcessor());
+        if (csalestruid == null) {
+            return "";
+        }
+        return csalestruid;
+    }
+    
+    //公司
+    public static String getCorpPK(String code) throws Exception {
+    	String sql = "select pk_corp from bd_corp where unitcode = '"+code+"' and dr = 0";
+    	String pk_corp = (String) iuap.executeQuery(sql, new ColumnProcessor());
+    	if (pk_corp == null) {
+    		throw new Exception("公司"+code+"未查到,请检查");
+        }
+        return pk_corp;
+    }
+    
+    //项目类型
+    public static String getprjtypePK(String code)throws Exception {
+    	String sql = "select pk_jobtype from bd_jobtype where jobtypecode= '"+code+"' and dr = 0";
+    	String pk_jobtype = (String) iuap.executeQuery(sql, new ColumnProcessor());
+    	if (pk_jobtype == null) {
+    		throw new Exception("项目类型"+code+"未查到,请检查");
+        }
+        return pk_jobtype;
+    }
+    
+    //获取存货管理VO
+    public static InvmandocVO getInvmanVO(String pk_invbas) throws BusinessException {
+    	String qrysql = "select * from bd_invmandoc where isnull(dr,0) = 0 and pk_invbasdoc = '"+pk_invbas+"'";
+    	Object obj = iuap.executeQuery(qrysql, new BeanProcessor(InvmandocVO.class));
+    	if (obj == null) {
+            return null;
+        }
+        else {
+        	return (InvmandocVO)obj;
+        }
+    }
+    
+    //根据公司获取库存组织
+    public static String getcalpk(String pk_corp) throws Exception {
+    	String qrysql = "select pk_calbody from bd_calbody where isnull(dr,0) = 0 and pk_corp = '"+pk_corp+"'";
+    	String pk_calbody = (String) iuap.executeQuery(qrysql, new ColumnProcessor());
+    	if (pk_calbody == null) {
+    		throw new Exception(pk_corp+"对应的库存组织未查到,请检查");
+        }
+        return pk_calbody;
+    }
+}

+ 11 - 0
xc/cg/src/public/u8c/itf/po/IDemandInfo.java

@@ -0,0 +1,11 @@
+package u8c.itf.po;
+
+import nc.vo.hr.tools.pub.HRAggVO;
+import nc.vo.pub.BusinessException;
+
+public interface IDemandInfo {
+	
+	public abstract boolean UpdateStatus(HRAggVO aggvo, int status) throws BusinessException;
+	
+	public abstract boolean execApprove(HRAggVO aggvo) throws BusinessException;
+}

+ 80 - 0
xc/cg/src/public/u8c/log/NcLog.java

@@ -0,0 +1,80 @@
+package u8c.log;
+
+import nc.bs.framework.common.RuntimeEnv;
+import org.apache.log4j.Logger;
+
+import java.io.IOException;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+/**
+ * nclog
+ * @author YY
+ * @datetime 2021-9-29 
+ */
+public class NcLog
+{
+  private static final Logger logger = Logger.getLogger(NcLog.class);
+  private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+  private static SimpleDateFormat format$ = new SimpleDateFormat("yyyy-MM-dd");
+
+  public static void info(String str)
+  {
+    String logFilePath = getLogFile();
+    File file = new File(logFilePath);
+    BufferedWriter fos = null;
+    try
+    {
+      fos = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true)));
+      str = format.format(new Date()) + " " + str + "\r\n";
+      
+      fos.write(str + "\r\n");
+      fos.flush();
+    }
+    catch (Exception localException)
+    {
+      if (fos != null)
+        try
+        {
+          fos.close();
+        }
+        catch (IOException localIOException)
+        {
+        }
+    }
+    finally {
+      if (fos != null)
+        try
+        {
+          fos.close();
+        }
+        catch (IOException localIOException2)
+        {
+        }
+    }
+  }
+
+  private static String getLogFile() {
+    String destFileFolder = RuntimeEnv.getInstance().getNCHome() + File.separator + "mancLog" + File.separator + format$.format(new Date());
+    String destFilePath = destFileFolder + File.separator + "org.log";
+    File destFolder = new File(destFileFolder);
+    if (!destFolder.exists()) {
+      destFolder.mkdirs();
+    }
+    File destFile = new File(destFilePath);
+    if (!destFile.exists()) {
+      try
+      {
+        destFile.createNewFile();
+      }
+      catch (Exception e)
+      {
+        logger.info(e);
+      }
+    }
+    return destFilePath;
+  }
+}

+ 17 - 0
xc/cg/src/public/u8c/vo/AggDemandVO.java

@@ -0,0 +1,17 @@
+package u8c.vo;
+
+import nc.vo.trade.pub.HYBillVO;
+
+/**
+ * 
+ * 데綾깊/데깊庫/데깊竟앱북VO
+ *
+ * 눼쉔휑퍅:2023-10-20 16:00:43
+ * @author Administrator
+ * @version NCPrj 1.0
+ */
+@SuppressWarnings("serial")
+@nc.vo.annotation.AggVoInfo(parentVO = "nc.vo.DemandVO")
+public class  AggDemandVO extends HYBillVO {
+ 
+}

+ 1194 - 0
xc/cg/src/public/u8c/vo/DemandBVO.java

@@ -0,0 +1,1194 @@
+/***************************************************************\
+ *     The skeleton of this class is generated by an automatic *
+ * code generator for NC product. It is based on Velocity.     *
+\***************************************************************/
+package u8c.vo;
+	
+import nc.vo.pub.*;
+import nc.vo.pub.lang.*;
+	
+/**
+ * <b> 在此处简要描述此类的功能 </b>
+ * <p>
+ *     在此处添加此类的描述信息
+ * </p>
+ * 创建日期:2023-10-20 16:00:43
+ * @author Administrator
+ * @version NCPrj 1.0
+ */
+@SuppressWarnings("serial")
+public class DemandBVO extends SuperVO {
+	private String pk_demand_b; // 子表主键
+	private String pk_demand; // 主表主键
+	private String prjcode; // 项目编码
+	private String prjname; // 项目名称
+	private String prjtypecode; // 项目分类编码
+	private String prjtypename; // 项目分类名称
+	private String vbatchcode; // 批次
+	private String cmaterialcode; // 存货编码
+	private String cmaterialname; // 存货名称
+	private String spec; // 规格
+	private String model; // 型号
+	private String color; // 颜色
+	private String sizing; // 定尺
+	private String alloy; // 合金
+	private String standard; // 标准
+	private String weight; // 米重
+	private String round; // 装饰面周长
+	private String config; // 配置
+	private String width; // 宽度
+	private String height; // 高度
+	private String unitid; // 计量单位
+	private UFDouble num; // 主数量
+	private UFDouble taxprice; // 含税单价
+	private UFDouble taxmny; // 价税合计
+	private UFDouble nmny; // 无税金额
+	private UFDouble tax; // 税额
+	private UFDouble nprice; // 无税单价
+	private String castunitid; // 辅助计量单位
+	private String nastnum; // 辅数量
+	private String execnum; // 已执行主数量
+	private String execnastnum; // 已执行辅数量
+	private UFDateTime ts; // 时间戳
+	private Integer dr; // 删除标志
+	private String vdef1;
+	private String vdef2;
+	private String vdef3;
+	private String vdef4;
+	private String vdef5;
+	private String vdef6;
+	private String vdef7;
+	private String vdef8;
+	private String vdef9;
+	private String vdef10;
+	private String vdef11;
+	private String vdef12;
+	private String vdef13;
+	private String vdef14;
+	private String vdef15;
+	private String vdef16;
+	private String vdef17;
+	private String vdef18;
+	private String vdef19;
+	private String vdef20;
+	private String vdef21;
+	private String vdef22;
+	private String vdef23;
+	private String vdef24;
+	private String vdef25;
+	private String vdef26;
+	private String vdef27;
+	private String vdef28;
+	private String vdef29;
+	private String vdef30;
+
+	public static final String PRJTYPECODE = "prjtypecode";
+	public static final String STANDARD = "standard";
+	public static final String NUM = "num";
+	public static final String CMATERIALNAME = "cmaterialname";
+	public static final String EXECNUM = "execnum";
+	public static final String SPEC = "spec";
+	public static final String NPRICE = "nprice";
+	public static final String TAXPRICE = "taxprice";
+	public static final String MODEL = "model";
+	public static final String HEIGHT = "height";
+	public static final String VDEF10 = "vdef10";
+	public static final String VDEF11 = "vdef11";
+	public static final String WEIGHT = "weight";
+	public static final String TAX = "tax";
+	public static final String CASTUNITID = "castunitid";
+	public static final String VDEF16 = "vdef16";
+	public static final String PRJTYPENAME = "prjtypename";
+	public static final String VDEF17 = "vdef17";
+	public static final String VDEF18 = "vdef18";
+	public static final String EXECNASTNUM = "execnastnum";
+	public static final String VDEF19 = "vdef19";
+	public static final String VDEF12 = "vdef12";
+	public static final String VDEF13 = "vdef13";
+	public static final String VDEF14 = "vdef14";
+	public static final String VDEF15 = "vdef15";
+	public static final String SIZING = "sizing";
+	public static final String VDEF20 = "vdef20";
+	public static final String ALLOY = "alloy";
+	public static final String VDEF21 = "vdef21";
+	public static final String VDEF22 = "vdef22";
+	public static final String COLOR = "color";
+	public static final String PK_DEMAND_B = "pk_demand_b";
+	public static final String NASTNUM = "nastnum";
+	public static final String PRJCODE = "prjcode";
+	public static final String VDEF27 = "vdef27";
+	public static final String VDEF28 = "vdef28";
+	public static final String VDEF29 = "vdef29";
+	public static final String VDEF23 = "vdef23";
+	public static final String VDEF24 = "vdef24";
+	public static final String VDEF25 = "vdef25";
+	public static final String VDEF26 = "vdef26";
+	public static final String VDEF30 = "vdef30";
+	public static final String VDEF8 = "vdef8";
+	public static final String VDEF7 = "vdef7";
+	public static final String VDEF9 = "vdef9";
+	public static final String VDEF4 = "vdef4";
+	public static final String VDEF3 = "vdef3";
+	public static final String PK_DEMAND = "pk_demand";
+	public static final String VDEF6 = "vdef6";
+	public static final String VDEF5 = "vdef5";
+	public static final String TAXMNY = "taxmny";
+	public static final String VDEF2 = "vdef2";
+	public static final String CMATERIALCODE = "cmaterialcode";
+	public static final String VDEF1 = "vdef1";
+	public static final String ROUND = "round";
+	public static final String PRJNAME = "prjname";
+	public static final String VBATCHCODE = "vbatchcode";
+	public static final String WIDTH = "width";
+	public static final String NMNY = "nmny";
+	public static final String UNITID = "unitid";
+	public static final String CONFIG = "config";
+			
+	/**
+	 * 属性prjtypecode的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getPrjtypecode () {
+		return prjtypecode;
+	}   
+	/**
+	 * 属性prjtypecode的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newPrjtypecode String
+	 */
+	public void setPrjtypecode (String newPrjtypecode ) {
+	 	this.prjtypecode = newPrjtypecode;
+	} 	  
+	/**
+	 * 属性standard的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getStandard () {
+		return standard;
+	}   
+	/**
+	 * 属性standard的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newStandard String
+	 */
+	public void setStandard (String newStandard ) {
+	 	this.standard = newStandard;
+	} 	  
+	/**
+	 * 属性num的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return UFDouble
+	 */
+	public UFDouble getNum () {
+		return num;
+	}   
+	/**
+	 * 属性num的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newNum UFDouble
+	 */
+	public void setNum (UFDouble newNum ) {
+	 	this.num = newNum;
+	} 	  
+	/**
+	 * 属性cmaterialname的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getCmaterialname () {
+		return cmaterialname;
+	}   
+	/**
+	 * 属性cmaterialname的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newCmaterialname String
+	 */
+	public void setCmaterialname (String newCmaterialname ) {
+	 	this.cmaterialname = newCmaterialname;
+	} 	  
+	/**
+	 * 属性execnum的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getExecnum () {
+		return execnum;
+	}   
+	/**
+	 * 属性execnum的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newExecnum String
+	 */
+	public void setExecnum (String newExecnum ) {
+	 	this.execnum = newExecnum;
+	} 	  
+	/**
+	 * 属性dr的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return Integer
+	 */
+	public Integer getDr () {
+		return dr;
+	}   
+	/**
+	 * 属性dr的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newDr Integer
+	 */
+	public void setDr (Integer newDr ) {
+	 	this.dr = newDr;
+	} 	  
+	/**
+	 * 属性spec的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getSpec () {
+		return spec;
+	}   
+	/**
+	 * 属性spec的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newSpec String
+	 */
+	public void setSpec (String newSpec ) {
+	 	this.spec = newSpec;
+	} 	  
+	/**
+	 * 属性nprice的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return UFDouble
+	 */
+	public UFDouble getNprice () {
+		return nprice;
+	}   
+	/**
+	 * 属性nprice的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newNprice UFDouble
+	 */
+	public void setNprice (UFDouble newNprice ) {
+	 	this.nprice = newNprice;
+	} 	  
+	/**
+	 * 属性taxprice的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return UFDouble
+	 */
+	public UFDouble getTaxprice () {
+		return taxprice;
+	}   
+	/**
+	 * 属性taxprice的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newTaxprice UFDouble
+	 */
+	public void setTaxprice (UFDouble newTaxprice ) {
+	 	this.taxprice = newTaxprice;
+	} 	  
+	/**
+	 * 属性model的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getModel () {
+		return model;
+	}   
+	/**
+	 * 属性model的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newModel String
+	 */
+	public void setModel (String newModel ) {
+	 	this.model = newModel;
+	} 	  
+	/**
+	 * 属性height的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getHeight () {
+		return height;
+	}   
+	/**
+	 * 属性height的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newHeight String
+	 */
+	public void setHeight (String newHeight ) {
+	 	this.height = newHeight;
+	} 	  
+	/**
+	 * 属性vdef10的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef10 () {
+		return vdef10;
+	}   
+	/**
+	 * 属性vdef10的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef10 String
+	 */
+	public void setVdef10 (String newVdef10 ) {
+	 	this.vdef10 = newVdef10;
+	} 	  
+	/**
+	 * 属性vdef11的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef11 () {
+		return vdef11;
+	}   
+	/**
+	 * 属性vdef11的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef11 String
+	 */
+	public void setVdef11 (String newVdef11 ) {
+	 	this.vdef11 = newVdef11;
+	} 	  
+	/**
+	 * 属性weight的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getWeight () {
+		return weight;
+	}   
+	/**
+	 * 属性weight的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newWeight String
+	 */
+	public void setWeight (String newWeight ) {
+	 	this.weight = newWeight;
+	} 	  
+	/**
+	 * 属性tax的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return UFDouble
+	 */
+	public UFDouble getTax () {
+		return tax;
+	}   
+	/**
+	 * 属性tax的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newTax UFDouble
+	 */
+	public void setTax (UFDouble newTax ) {
+	 	this.tax = newTax;
+	} 	  
+	/**
+	 * 属性castunitid的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getCastunitid () {
+		return castunitid;
+	}   
+	/**
+	 * 属性castunitid的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newCastunitid String
+	 */
+	public void setCastunitid (String newCastunitid ) {
+	 	this.castunitid = newCastunitid;
+	} 	  
+	/**
+	 * 属性vdef16的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef16 () {
+		return vdef16;
+	}   
+	/**
+	 * 属性vdef16的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef16 String
+	 */
+	public void setVdef16 (String newVdef16 ) {
+	 	this.vdef16 = newVdef16;
+	} 	  
+	/**
+	 * 属性prjtypename的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getPrjtypename () {
+		return prjtypename;
+	}   
+	/**
+	 * 属性prjtypename的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newPrjtypename String
+	 */
+	public void setPrjtypename (String newPrjtypename ) {
+	 	this.prjtypename = newPrjtypename;
+	} 	  
+	/**
+	 * 属性vdef17的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef17 () {
+		return vdef17;
+	}   
+	/**
+	 * 属性vdef17的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef17 String
+	 */
+	public void setVdef17 (String newVdef17 ) {
+	 	this.vdef17 = newVdef17;
+	} 	  
+	/**
+	 * 属性vdef18的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef18 () {
+		return vdef18;
+	}   
+	/**
+	 * 属性vdef18的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef18 String
+	 */
+	public void setVdef18 (String newVdef18 ) {
+	 	this.vdef18 = newVdef18;
+	} 	  
+	/**
+	 * 属性execnastnum的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getExecnastnum () {
+		return execnastnum;
+	}   
+	/**
+	 * 属性execnastnum的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newExecnastnum String
+	 */
+	public void setExecnastnum (String newExecnastnum ) {
+	 	this.execnastnum = newExecnastnum;
+	} 	  
+	/**
+	 * 属性vdef19的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef19 () {
+		return vdef19;
+	}   
+	/**
+	 * 属性vdef19的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef19 String
+	 */
+	public void setVdef19 (String newVdef19 ) {
+	 	this.vdef19 = newVdef19;
+	} 	  
+	/**
+	 * 属性vdef12的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef12 () {
+		return vdef12;
+	}   
+	/**
+	 * 属性vdef12的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef12 String
+	 */
+	public void setVdef12 (String newVdef12 ) {
+	 	this.vdef12 = newVdef12;
+	} 	  
+	/**
+	 * 属性vdef13的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef13 () {
+		return vdef13;
+	}   
+	/**
+	 * 属性vdef13的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef13 String
+	 */
+	public void setVdef13 (String newVdef13 ) {
+	 	this.vdef13 = newVdef13;
+	} 	  
+	/**
+	 * 属性vdef14的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef14 () {
+		return vdef14;
+	}   
+	/**
+	 * 属性vdef14的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef14 String
+	 */
+	public void setVdef14 (String newVdef14 ) {
+	 	this.vdef14 = newVdef14;
+	} 	  
+	/**
+	 * 属性vdef15的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef15 () {
+		return vdef15;
+	}   
+	/**
+	 * 属性vdef15的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef15 String
+	 */
+	public void setVdef15 (String newVdef15 ) {
+	 	this.vdef15 = newVdef15;
+	} 	  
+	/**
+	 * 属性sizing的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getSizing () {
+		return sizing;
+	}   
+	/**
+	 * 属性sizing的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newSizing String
+	 */
+	public void setSizing (String newSizing ) {
+	 	this.sizing = newSizing;
+	} 	  
+	/**
+	 * 属性vdef20的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef20 () {
+		return vdef20;
+	}   
+	/**
+	 * 属性vdef20的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef20 String
+	 */
+	public void setVdef20 (String newVdef20 ) {
+	 	this.vdef20 = newVdef20;
+	} 	  
+	/**
+	 * 属性alloy的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getAlloy () {
+		return alloy;
+	}   
+	/**
+	 * 属性alloy的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newAlloy String
+	 */
+	public void setAlloy (String newAlloy ) {
+	 	this.alloy = newAlloy;
+	} 	  
+	/**
+	 * 属性vdef21的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef21 () {
+		return vdef21;
+	}   
+	/**
+	 * 属性vdef21的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef21 String
+	 */
+	public void setVdef21 (String newVdef21 ) {
+	 	this.vdef21 = newVdef21;
+	} 	  
+	/**
+	 * 属性vdef22的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef22 () {
+		return vdef22;
+	}   
+	/**
+	 * 属性vdef22的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef22 String
+	 */
+	public void setVdef22 (String newVdef22 ) {
+	 	this.vdef22 = newVdef22;
+	} 	  
+	/**
+	 * 属性color的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getColor () {
+		return color;
+	}   
+	/**
+	 * 属性color的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newColor String
+	 */
+	public void setColor (String newColor ) {
+	 	this.color = newColor;
+	} 	  
+	/**
+	 * 属性pk_demand_b的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getPk_demand_b () {
+		return pk_demand_b;
+	}   
+	/**
+	 * 属性pk_demand_b的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newPk_demand_b String
+	 */
+	public void setPk_demand_b (String newPk_demand_b ) {
+	 	this.pk_demand_b = newPk_demand_b;
+	} 	  
+	/**
+	 * 属性nastnum的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getNastnum () {
+		return nastnum;
+	}   
+	/**
+	 * 属性nastnum的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newNastnum String
+	 */
+	public void setNastnum (String newNastnum ) {
+	 	this.nastnum = newNastnum;
+	} 	  
+	/**
+	 * 属性prjcode的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getPrjcode () {
+		return prjcode;
+	}   
+	/**
+	 * 属性prjcode的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newPrjcode String
+	 */
+	public void setPrjcode (String newPrjcode ) {
+	 	this.prjcode = newPrjcode;
+	} 	  
+	/**
+	 * 属性vdef27的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef27 () {
+		return vdef27;
+	}   
+	/**
+	 * 属性vdef27的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef27 String
+	 */
+	public void setVdef27 (String newVdef27 ) {
+	 	this.vdef27 = newVdef27;
+	} 	  
+	/**
+	 * 属性vdef28的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef28 () {
+		return vdef28;
+	}   
+	/**
+	 * 属性vdef28的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef28 String
+	 */
+	public void setVdef28 (String newVdef28 ) {
+	 	this.vdef28 = newVdef28;
+	} 	  
+	/**
+	 * 属性vdef29的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef29 () {
+		return vdef29;
+	}   
+	/**
+	 * 属性vdef29的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef29 String
+	 */
+	public void setVdef29 (String newVdef29 ) {
+	 	this.vdef29 = newVdef29;
+	} 	  
+	/**
+	 * 属性vdef23的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef23 () {
+		return vdef23;
+	}   
+	/**
+	 * 属性vdef23的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef23 String
+	 */
+	public void setVdef23 (String newVdef23 ) {
+	 	this.vdef23 = newVdef23;
+	} 	  
+	/**
+	 * 属性vdef24的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef24 () {
+		return vdef24;
+	}   
+	/**
+	 * 属性vdef24的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef24 String
+	 */
+	public void setVdef24 (String newVdef24 ) {
+	 	this.vdef24 = newVdef24;
+	} 	  
+	/**
+	 * 属性vdef25的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef25 () {
+		return vdef25;
+	}   
+	/**
+	 * 属性vdef25的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef25 String
+	 */
+	public void setVdef25 (String newVdef25 ) {
+	 	this.vdef25 = newVdef25;
+	} 	  
+	/**
+	 * 属性vdef26的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef26 () {
+		return vdef26;
+	}   
+	/**
+	 * 属性vdef26的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef26 String
+	 */
+	public void setVdef26 (String newVdef26 ) {
+	 	this.vdef26 = newVdef26;
+	} 	  
+	/**
+	 * 属性vdef30的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef30 () {
+		return vdef30;
+	}   
+	/**
+	 * 属性vdef30的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef30 String
+	 */
+	public void setVdef30 (String newVdef30 ) {
+	 	this.vdef30 = newVdef30;
+	} 	  
+	/**
+	 * 属性vdef8的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef8 () {
+		return vdef8;
+	}   
+	/**
+	 * 属性vdef8的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef8 String
+	 */
+	public void setVdef8 (String newVdef8 ) {
+	 	this.vdef8 = newVdef8;
+	} 	  
+	/**
+	 * 属性vdef7的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef7 () {
+		return vdef7;
+	}   
+	/**
+	 * 属性vdef7的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef7 String
+	 */
+	public void setVdef7 (String newVdef7 ) {
+	 	this.vdef7 = newVdef7;
+	} 	  
+	/**
+	 * 属性vdef9的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef9 () {
+		return vdef9;
+	}   
+	/**
+	 * 属性vdef9的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef9 String
+	 */
+	public void setVdef9 (String newVdef9 ) {
+	 	this.vdef9 = newVdef9;
+	} 	  
+	/**
+	 * 属性vdef4的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef4 () {
+		return vdef4;
+	}   
+	/**
+	 * 属性vdef4的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef4 String
+	 */
+	public void setVdef4 (String newVdef4 ) {
+	 	this.vdef4 = newVdef4;
+	} 	  
+	/**
+	 * 属性vdef3的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef3 () {
+		return vdef3;
+	}   
+	/**
+	 * 属性vdef3的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef3 String
+	 */
+	public void setVdef3 (String newVdef3 ) {
+	 	this.vdef3 = newVdef3;
+	} 	  
+	/**
+	 * 属性pk_demand的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getPk_demand () {
+		return pk_demand;
+	}   
+	/**
+	 * 属性pk_demand的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newPk_demand String
+	 */
+	public void setPk_demand (String newPk_demand ) {
+	 	this.pk_demand = newPk_demand;
+	} 	  
+	/**
+	 * 属性vdef6的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef6 () {
+		return vdef6;
+	}   
+	/**
+	 * 属性vdef6的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef6 String
+	 */
+	public void setVdef6 (String newVdef6 ) {
+	 	this.vdef6 = newVdef6;
+	} 	  
+	/**
+	 * 属性vdef5的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef5 () {
+		return vdef5;
+	}   
+	/**
+	 * 属性vdef5的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef5 String
+	 */
+	public void setVdef5 (String newVdef5 ) {
+	 	this.vdef5 = newVdef5;
+	} 	  
+	/**
+	 * 属性taxmny的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return UFDouble
+	 */
+	public UFDouble getTaxmny () {
+		return taxmny;
+	}   
+	/**
+	 * 属性taxmny的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newTaxmny UFDouble
+	 */
+	public void setTaxmny (UFDouble newTaxmny ) {
+	 	this.taxmny = newTaxmny;
+	} 	  
+	/**
+	 * 属性vdef2的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef2 () {
+		return vdef2;
+	}   
+	/**
+	 * 属性vdef2的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef2 String
+	 */
+	public void setVdef2 (String newVdef2 ) {
+	 	this.vdef2 = newVdef2;
+	} 	  
+	/**
+	 * 属性cmaterialcode的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getCmaterialcode () {
+		return cmaterialcode;
+	}   
+	/**
+	 * 属性cmaterialcode的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newCmaterialcode String
+	 */
+	public void setCmaterialcode (String newCmaterialcode ) {
+	 	this.cmaterialcode = newCmaterialcode;
+	} 	  
+	/**
+	 * 属性vdef1的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef1 () {
+		return vdef1;
+	}   
+	/**
+	 * 属性vdef1的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef1 String
+	 */
+	public void setVdef1 (String newVdef1 ) {
+	 	this.vdef1 = newVdef1;
+	} 	  
+	/**
+	 * 属性round的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getRound () {
+		return round;
+	}   
+	/**
+	 * 属性round的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newRound String
+	 */
+	public void setRound (String newRound ) {
+	 	this.round = newRound;
+	} 	  
+	/**
+	 * 属性prjname的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getPrjname () {
+		return prjname;
+	}   
+	/**
+	 * 属性prjname的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newPrjname String
+	 */
+	public void setPrjname (String newPrjname ) {
+	 	this.prjname = newPrjname;
+	} 	  
+	/**
+	 * 属性vbatchcode的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVbatchcode () {
+		return vbatchcode;
+	}   
+	/**
+	 * 属性vbatchcode的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVbatchcode String
+	 */
+	public void setVbatchcode (String newVbatchcode ) {
+	 	this.vbatchcode = newVbatchcode;
+	} 	  
+	/**
+	 * 属性width的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getWidth () {
+		return width;
+	}   
+	/**
+	 * 属性width的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newWidth String
+	 */
+	public void setWidth (String newWidth ) {
+	 	this.width = newWidth;
+	} 	  
+	/**
+	 * 属性nmny的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return UFDouble
+	 */
+	public UFDouble getNmny () {
+		return nmny;
+	}   
+	/**
+	 * 属性nmny的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newNmny UFDouble
+	 */
+	public void setNmny (UFDouble newNmny ) {
+	 	this.nmny = newNmny;
+	} 	  
+	/**
+	 * 属性unitid的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getUnitid () {
+		return unitid;
+	}   
+	/**
+	 * 属性unitid的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newUnitid String
+	 */
+	public void setUnitid (String newUnitid ) {
+	 	this.unitid = newUnitid;
+	} 	  
+	/**
+	 * 属性config的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getConfig () {
+		return config;
+	}   
+	/**
+	 * 属性config的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newConfig String
+	 */
+	public void setConfig (String newConfig ) {
+	 	this.config = newConfig;
+	} 	  
+	/**
+	 * 属性ts的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return UFDateTime
+	 */
+	public UFDateTime getTs () {
+		return ts;
+	}   
+	/**
+	 * 属性ts的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newTs UFDateTime
+	 */
+	public void setTs (UFDateTime newTs ) {
+	 	this.ts = newTs;
+	} 	  
+ 
+	/**
+	  * <p>取得父VO主键字段.
+	  * <p>
+	  * 创建日期:2023-10-20 16:00:43
+	  * @return java.lang.String
+	  */
+	public java.lang.String getParentPKFieldName() {
+		return "pk_demand";
+	}   
+    
+	/**
+	  * <p>取得表主键.
+	  * <p>
+	  * 创建日期:2023-10-20 16:00:43
+	  * @return java.lang.String
+	  */
+	public java.lang.String getPKFieldName() {
+	  return "pk_demand_b";
+	}
+    
+	/**
+	 * <p>返回表名称.
+	 * <p>
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return java.lang.String
+	 */
+	public java.lang.String getTableName() {
+		return "po_demand_b";
+	}    
+    
+    /**
+	  * 按照默认方式创建构造子.
+	  *
+	  * 创建日期:2023-10-20 16:00:43
+	  */
+     public DemandBVO() {
+		super();	
+	}    
+} 

+ 942 - 0
xc/cg/src/public/u8c/vo/DemandVO.java

@@ -0,0 +1,942 @@
+/***************************************************************\
+ *     The skeleton of this class is generated by an automatic *
+ * code generator for NC product. It is based on Velocity.     *
+\***************************************************************/
+package u8c.vo;
+	
+import nc.vo.pub.*;
+import nc.vo.pub.lang.*;
+	
+/**
+ * <b> 在此处简要描述此类的功能 </b>
+ * <p>
+ *     在此处添加此类的描述信息
+ * </p>
+ * 创建日期:2023-10-20 16:00:43
+ * @author Administrator
+ * @version NCPrj 1.0
+ */
+@SuppressWarnings("serial")
+public class DemandVO extends SuperVO {
+	private String pk_demand; // 主表主键
+	private String pk_corp; //采购组织
+	private String vbillcode; // 单据号
+	private UFDate dbilldate; // 单据日期
+	private Integer billstatus; // 单据状态
+	private String workmanid; // 业务员
+	private String plandeptid; // 采购部门
+	private String projectid; // 项目
+	private String vnote; // 备注
+	private String billmaker; // 制单人
+	private UFDate makedate; // 制单日期
+	private String checker; // 审核人
+	private String approve; // 审批人
+	private UFDateTime approvedate; // 审批日期
+	private String approvenote; // 审批意见
+	private String modifier; // 最后修改人
+	private UFDateTime modifiedtime; // 最后修改时间
+	private UFDateTime ts; // 时间戳
+	private Integer dr; // 删除标志
+	private String vdef1;
+	private String vdef2;
+	private String vdef3;
+	private String vdef4;
+	private String vdef5;
+	private String vdef6;
+	private String vdef7;
+	private String vdef8;
+	private String vdef9;
+	private String vdef10;
+	private String vdef11;
+	private String vdef12;
+	private String vdef13;
+	private String vdef14;
+	private String vdef15;
+	private String vdef16;
+	private String vdef17;
+	private String vdef18;
+	private String vdef19;
+	private String vdef20;
+	private String vdef21;
+	private String vdef22;
+	private String vdef23;
+	private String vdef24;
+	private String vdef25;
+	private String vdef26;
+	private String vdef27;
+	private String vdef28;
+	private String vdef29;
+	private String vdef30;
+
+	public static final String MODIFIER = "modifier";
+	public static final String CHECKER = "checker";
+	public static final String APPROVEDATE = "approvedate";
+	public static final String PLANDEPTID = "plandeptid";
+	public static final String VDEF10 = "vdef10";
+	public static final String VDEF11 = "vdef11";
+	public static final String BILLMAKER = "billmaker";
+	public static final String WORKMANID = "workmanid";
+	public static final String VDEF16 = "vdef16";
+	public static final String VDEF17 = "vdef17";
+	public static final String VDEF18 = "vdef18";
+	public static final String VDEF19 = "vdef19";
+	public static final String VDEF12 = "vdef12";
+	public static final String VDEF13 = "vdef13";
+	public static final String VDEF14 = "vdef14";
+	public static final String BILLSTATUS = "billstatus";
+	public static final String VDEF15 = "vdef15";
+	public static final String VDEF20 = "vdef20";
+	public static final String VDEF21 = "vdef21";
+	public static final String VDEF22 = "vdef22";
+	public static final String APPROVENOTE = "approvenote";
+	public static final String DBILLDATE = "dbilldate";
+	public static final String MODIFIEDTIME = "modifiedtime";
+	public static final String PK_CORP = "pk_corp";
+	public static final String VDEF27 = "vdef27";
+	public static final String VDEF28 = "vdef28";
+	public static final String VNOTE = "vnote";
+	public static final String VDEF29 = "vdef29";
+	public static final String VDEF23 = "vdef23";
+	public static final String PROJECTID = "projectid";
+	public static final String VDEF24 = "vdef24";
+	public static final String VDEF25 = "vdef25";
+	public static final String VDEF26 = "vdef26";
+	public static final String VDEF30 = "vdef30";
+	public static final String VDEF8 = "vdef8";
+	public static final String VDEF7 = "vdef7";
+	public static final String VDEF9 = "vdef9";
+	public static final String VDEF4 = "vdef4";
+	public static final String VDEF3 = "vdef3";
+	public static final String PK_DEMAND = "pk_demand";
+	public static final String VDEF6 = "vdef6";
+	public static final String VDEF5 = "vdef5";
+	public static final String MAKEDATE = "makedate";
+	public static final String VDEF2 = "vdef2";
+	public static final String VDEF1 = "vdef1";
+	public static final String VBILLCODE = "vbillcode";
+	public static final String APPROVE = "approve";
+			
+	/**
+	 * 属性modifier的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getModifier () {
+		return modifier;
+	}   
+	/**
+	 * 属性modifier的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newModifier String
+	 */
+	public void setModifier (String newModifier ) {
+	 	this.modifier = newModifier;
+	} 	  
+	/**
+	 * 属性checker的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getChecker () {
+		return checker;
+	}   
+	/**
+	 * 属性checker的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newChecker String
+	 */
+	public void setChecker (String newChecker ) {
+	 	this.checker = newChecker;
+	} 	  
+	/**
+	 * 属性dr的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return Integer
+	 */
+	public Integer getDr () {
+		return dr;
+	}   
+	/**
+	 * 属性dr的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newDr Integer
+	 */
+	public void setDr (Integer newDr ) {
+	 	this.dr = newDr;
+	} 	  
+	/**
+	 * 属性approvedate的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public UFDateTime getApprovedate () {
+		return approvedate;
+	}   
+	/**
+	 * 属性approvedate的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newApprovedate String
+	 */
+	public void setApprovedate (UFDateTime newApprovedate ) {
+	 	this.approvedate = newApprovedate;
+	} 	  
+	/**
+	 * 属性plandeptid的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getPlandeptid () {
+		return plandeptid;
+	}   
+	/**
+	 * 属性plandeptid的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newPlandeptid String
+	 */
+	public void setPlandeptid (String newPlandeptid ) {
+	 	this.plandeptid = newPlandeptid;
+	} 	  
+	/**
+	 * 属性vdef10的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef10 () {
+		return vdef10;
+	}   
+	/**
+	 * 属性vdef10的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef10 String
+	 */
+	public void setVdef10 (String newVdef10 ) {
+	 	this.vdef10 = newVdef10;
+	} 	  
+	/**
+	 * 属性vdef11的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef11 () {
+		return vdef11;
+	}   
+	/**
+	 * 属性vdef11的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef11 String
+	 */
+	public void setVdef11 (String newVdef11 ) {
+	 	this.vdef11 = newVdef11;
+	} 	  
+	/**
+	 * 属性billmaker的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getBillmaker () {
+		return billmaker;
+	}   
+	/**
+	 * 属性billmaker的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newBillmaker String
+	 */
+	public void setBillmaker (String newBillmaker ) {
+	 	this.billmaker = newBillmaker;
+	} 	  
+	/**
+	 * 属性workmanid的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getWorkmanid () {
+		return workmanid;
+	}   
+	/**
+	 * 属性workmanid的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newWorkmanid String
+	 */
+	public void setWorkmanid (String newWorkmanid ) {
+	 	this.workmanid = newWorkmanid;
+	} 	  
+	/**
+	 * 属性vdef16的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef16 () {
+		return vdef16;
+	}   
+	/**
+	 * 属性vdef16的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef16 String
+	 */
+	public void setVdef16 (String newVdef16 ) {
+	 	this.vdef16 = newVdef16;
+	} 	  
+	/**
+	 * 属性vdef17的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef17 () {
+		return vdef17;
+	}   
+	/**
+	 * 属性vdef17的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef17 String
+	 */
+	public void setVdef17 (String newVdef17 ) {
+	 	this.vdef17 = newVdef17;
+	} 	  
+	/**
+	 * 属性vdef18的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef18 () {
+		return vdef18;
+	}   
+	/**
+	 * 属性vdef18的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef18 String
+	 */
+	public void setVdef18 (String newVdef18 ) {
+	 	this.vdef18 = newVdef18;
+	} 	  
+	/**
+	 * 属性vdef19的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef19 () {
+		return vdef19;
+	}   
+	/**
+	 * 属性vdef19的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef19 String
+	 */
+	public void setVdef19 (String newVdef19 ) {
+	 	this.vdef19 = newVdef19;
+	} 	  
+	/**
+	 * 属性vdef12的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef12 () {
+		return vdef12;
+	}   
+	/**
+	 * 属性vdef12的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef12 String
+	 */
+	public void setVdef12 (String newVdef12 ) {
+	 	this.vdef12 = newVdef12;
+	} 	  
+	/**
+	 * 属性vdef13的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef13 () {
+		return vdef13;
+	}   
+	/**
+	 * 属性vdef13的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef13 String
+	 */
+	public void setVdef13 (String newVdef13 ) {
+	 	this.vdef13 = newVdef13;
+	} 	  
+	/**
+	 * 属性vdef14的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef14 () {
+		return vdef14;
+	}   
+	/**
+	 * 属性vdef14的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef14 String
+	 */
+	public void setVdef14 (String newVdef14 ) {
+	 	this.vdef14 = newVdef14;
+	} 	  
+	/**
+	 * 属性status的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return Integer
+	 */
+	public Integer getBillstatus () {
+		return billstatus;
+	}   
+	/**
+	 * 属性billstatus的Setter方法.
+	 * 创建日期:2023-10-18 15:52:34
+	 * @param newBillstatus String
+	 */
+	public void setBillstatus (Integer newBillstatus ) {
+	 	this.billstatus = newBillstatus;
+	} 	  
+	/**
+	 * 属性vdef15的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef15 () {
+		return vdef15;
+	}   
+	/**
+	 * 属性vdef15的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef15 String
+	 */
+	public void setVdef15 (String newVdef15 ) {
+	 	this.vdef15 = newVdef15;
+	} 	  
+	/**
+	 * 属性vdef20的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef20 () {
+		return vdef20;
+	}   
+	/**
+	 * 属性vdef20的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef20 String
+	 */
+	public void setVdef20 (String newVdef20 ) {
+	 	this.vdef20 = newVdef20;
+	} 	  
+	/**
+	 * 属性vdef21的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef21 () {
+		return vdef21;
+	}   
+	/**
+	 * 属性vdef21的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef21 String
+	 */
+	public void setVdef21 (String newVdef21 ) {
+	 	this.vdef21 = newVdef21;
+	} 	  
+	/**
+	 * 属性vdef22的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef22 () {
+		return vdef22;
+	}   
+	/**
+	 * 属性vdef22的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef22 String
+	 */
+	public void setVdef22 (String newVdef22 ) {
+	 	this.vdef22 = newVdef22;
+	} 	  
+	/**
+	 * 属性approvenote的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getApprovenote () {
+		return approvenote;
+	}   
+	/**
+	 * 属性approvenote的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newApprovenote String
+	 */
+	public void setApprovenote (String newApprovenote ) {
+	 	this.approvenote = newApprovenote;
+	} 	  
+	/**
+	 * 属性dbilldate的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return UFDate
+	 */
+	public UFDate getDbilldate () {
+		return dbilldate;
+	}   
+	/**
+	 * 属性dbilldate的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newDbilldate UFDate
+	 */
+	public void setDbilldate (UFDate newDbilldate ) {
+	 	this.dbilldate = newDbilldate;
+	} 	  
+	/**
+	 * 属性modifiedtime的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public UFDateTime getModifiedtime () {
+		return modifiedtime;
+	}   
+	/**
+	 * 属性modifiedtime的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newModifiedtime String
+	 */
+	public void setModifiedtime (UFDateTime newModifiedtime ) {
+	 	this.modifiedtime = newModifiedtime;
+	} 	  
+	/**
+	 * 属性pk_corp的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getPk_corp () {
+		return pk_corp;
+	}   
+	/**
+	 * 属性pk_corp的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newPk_corp String
+	 */
+	public void setPk_corp (String newPk_corp ) {
+	 	this.pk_corp = newPk_corp;
+	} 	  
+	/**
+	 * 属性vdef27的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef27 () {
+		return vdef27;
+	}   
+	/**
+	 * 属性vdef27的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef27 String
+	 */
+	public void setVdef27 (String newVdef27 ) {
+	 	this.vdef27 = newVdef27;
+	} 	  
+	/**
+	 * 属性vdef28的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef28 () {
+		return vdef28;
+	}   
+	/**
+	 * 属性vdef28的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef28 String
+	 */
+	public void setVdef28 (String newVdef28 ) {
+	 	this.vdef28 = newVdef28;
+	} 	  
+	/**
+	 * 属性vnote的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVnote () {
+		return vnote;
+	}   
+	/**
+	 * 属性vnote的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVnote String
+	 */
+	public void setVnote (String newVnote ) {
+	 	this.vnote = newVnote;
+	} 	  
+	/**
+	 * 属性vdef29的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef29 () {
+		return vdef29;
+	}   
+	/**
+	 * 属性vdef29的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef29 String
+	 */
+	public void setVdef29 (String newVdef29 ) {
+	 	this.vdef29 = newVdef29;
+	} 	  
+	/**
+	 * 属性vdef23的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef23 () {
+		return vdef23;
+	}   
+	/**
+	 * 属性vdef23的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef23 String
+	 */
+	public void setVdef23 (String newVdef23 ) {
+	 	this.vdef23 = newVdef23;
+	} 	  
+	/**
+	 * 属性projectid的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getProjectid () {
+		return projectid;
+	}   
+	/**
+	 * 属性projectid的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newProjectid String
+	 */
+	public void setProjectid (String newProjectid ) {
+	 	this.projectid = newProjectid;
+	} 	  
+	/**
+	 * 属性vdef24的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef24 () {
+		return vdef24;
+	}   
+	/**
+	 * 属性vdef24的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef24 String
+	 */
+	public void setVdef24 (String newVdef24 ) {
+	 	this.vdef24 = newVdef24;
+	} 	  
+	/**
+	 * 属性vdef25的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef25 () {
+		return vdef25;
+	}   
+	/**
+	 * 属性vdef25的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef25 String
+	 */
+	public void setVdef25 (String newVdef25 ) {
+	 	this.vdef25 = newVdef25;
+	} 	  
+	/**
+	 * 属性vdef26的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef26 () {
+		return vdef26;
+	}   
+	/**
+	 * 属性vdef26的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef26 String
+	 */
+	public void setVdef26 (String newVdef26 ) {
+	 	this.vdef26 = newVdef26;
+	} 	  
+	/**
+	 * 属性vdef30的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef30 () {
+		return vdef30;
+	}   
+	/**
+	 * 属性vdef30的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef30 String
+	 */
+	public void setVdef30 (String newVdef30 ) {
+	 	this.vdef30 = newVdef30;
+	} 	  
+	/**
+	 * 属性vdef8的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef8 () {
+		return vdef8;
+	}   
+	/**
+	 * 属性vdef8的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef8 String
+	 */
+	public void setVdef8 (String newVdef8 ) {
+	 	this.vdef8 = newVdef8;
+	} 	  
+	/**
+	 * 属性vdef7的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef7 () {
+		return vdef7;
+	}   
+	/**
+	 * 属性vdef7的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef7 String
+	 */
+	public void setVdef7 (String newVdef7 ) {
+	 	this.vdef7 = newVdef7;
+	} 	  
+	/**
+	 * 属性vdef9的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef9 () {
+		return vdef9;
+	}   
+	/**
+	 * 属性vdef9的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef9 String
+	 */
+	public void setVdef9 (String newVdef9 ) {
+	 	this.vdef9 = newVdef9;
+	} 	  
+	/**
+	 * 属性vdef4的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef4 () {
+		return vdef4;
+	}   
+	/**
+	 * 属性vdef4的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef4 String
+	 */
+	public void setVdef4 (String newVdef4 ) {
+	 	this.vdef4 = newVdef4;
+	} 	  
+	/**
+	 * 属性vdef3的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef3 () {
+		return vdef3;
+	}   
+	/**
+	 * 属性vdef3的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef3 String
+	 */
+	public void setVdef3 (String newVdef3 ) {
+	 	this.vdef3 = newVdef3;
+	} 	  
+	/**
+	 * 属性pk_demand的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getPk_demand () {
+		return pk_demand;
+	}   
+	/**
+	 * 属性pk_demand的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newPk_demand String
+	 */
+	public void setPk_demand (String newPk_demand ) {
+	 	this.pk_demand = newPk_demand;
+	} 	  
+	/**
+	 * 属性vdef6的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef6 () {
+		return vdef6;
+	}   
+	/**
+	 * 属性vdef6的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef6 String
+	 */
+	public void setVdef6 (String newVdef6 ) {
+	 	this.vdef6 = newVdef6;
+	} 	  
+	/**
+	 * 属性vdef5的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef5 () {
+		return vdef5;
+	}   
+	/**
+	 * 属性vdef5的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef5 String
+	 */
+	public void setVdef5 (String newVdef5 ) {
+	 	this.vdef5 = newVdef5;
+	} 	  
+	/**
+	 * 属性makedate的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public UFDate getMakedate () {
+		return makedate;
+	}   
+	/**
+	 * 属性makedate的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newMakedate String
+	 */
+	public void setMakedate (UFDate newMakedate ) {
+	 	this.makedate = newMakedate;
+	} 	  
+	/**
+	 * 属性vdef2的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef2 () {
+		return vdef2;
+	}   
+	/**
+	 * 属性vdef2的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef2 String
+	 */
+	public void setVdef2 (String newVdef2 ) {
+	 	this.vdef2 = newVdef2;
+	} 	  
+	/**
+	 * 属性vdef1的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVdef1 () {
+		return vdef1;
+	}   
+	/**
+	 * 属性vdef1的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVdef1 String
+	 */
+	public void setVdef1 (String newVdef1 ) {
+	 	this.vdef1 = newVdef1;
+	} 	  
+	/**
+	 * 属性vbillcode的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getVbillcode () {
+		return vbillcode;
+	}   
+	/**
+	 * 属性vbillcode的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newVbillcode String
+	 */
+	public void setVbillcode (String newVbillcode ) {
+	 	this.vbillcode = newVbillcode;
+	} 	  
+	/**
+	 * 属性approve的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return String
+	 */
+	public String getApprove () {
+		return approve;
+	}   
+	/**
+	 * 属性approve的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newApprove String
+	 */
+	public void setApprove (String newApprove ) {
+	 	this.approve = newApprove;
+	} 	  
+	/**
+	 * 属性ts的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return UFDateTime
+	 */
+	public UFDateTime getTs () {
+		return ts;
+	}   
+	/**
+	 * 属性ts的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newTs UFDateTime
+	 */
+	public void setTs (UFDateTime newTs ) {
+	 	this.ts = newTs;
+	} 	  
+ 
+	/**
+	  * <p>取得父VO主键字段.
+	  * <p>
+	  * 创建日期:2023-10-20 16:00:43
+	  * @return java.lang.String
+	  */
+	public java.lang.String getParentPKFieldName() {
+	    return null;
+	}   
+    
+	/**
+	  * <p>取得表主键.
+	  * <p>
+	  * 创建日期:2023-10-20 16:00:43
+	  * @return java.lang.String
+	  */
+	public java.lang.String getPKFieldName() {
+	  return "pk_demand";
+	}
+    
+	/**
+	 * <p>返回表名称.
+	 * <p>
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return java.lang.String
+	 */
+	public java.lang.String getTableName() {
+		return "po_demand";
+	}    
+    
+    /**
+	  * 按照默认方式创建构造子.
+	  *
+	  * 创建日期:2023-10-20 16:00:43
+	  */
+     public DemandVO() {
+		super();	
+	}    
+} 

+ 39 - 0
xc/manifest.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Manifest>
+  <BusinessComponet name="cg" dispname="cg">
+    <public>
+      <src name="src/public"/>
+    </public>
+    <client>
+      <src name="src/client"/>
+    </client>
+    <private>
+      <src name="src/private"/>
+    </private>
+    <test>
+      <src name="src/test"/>
+    </test>
+    <resource>
+      <src name="resources"/>
+    </resource>
+    <funnodes/>
+  </BusinessComponet>
+  <BusinessComponet name="stock" dispname="stock">
+    <public>
+      <src name="src/public"/>
+    </public>
+    <client>
+      <src name="src/client"/>
+    </client>
+    <private>
+      <src name="src/private"/>
+    </private>
+    <test>
+      <src name="src/test"/>
+    </test>
+    <resource>
+      <src name="resources"/>
+    </resource>
+    <funnodes/>
+  </BusinessComponet>
+</Manifest>

+ 1 - 0
xc/out/resources/.gitignore

@@ -0,0 +1 @@
+/resources.gitkeep

+ 1 - 0
xc/resources/resources.gitkeep

@@ -0,0 +1 @@
+ユシホサキ�

+ 1 - 0
xc/stock/.gitignore

@@ -0,0 +1 @@
+/classes/

+ 16 - 0
xc/stock/src/client/u8c/ic/safetystock/action/SafetystockAddAction.java

@@ -0,0 +1,16 @@
+package u8c.ic.safetystock.action;
+
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.action.AddAction;
+import u8c.ic.safetystock.panel.SafetystockTestUI;
+
+public class SafetystockAddAction extends AddAction {
+	
+	SafetystockTestUI frameUI = null;
+
+	public SafetystockAddAction(FrameUI frameUI) {
+		super(frameUI);
+		this.frameUI = (SafetystockTestUI) frameUI;
+	}
+
+}

+ 12 - 0
xc/stock/src/client/u8c/ic/safetystock/action/SafetystockDeleteAction.java

@@ -0,0 +1,12 @@
+package u8c.ic.safetystock.action;
+
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.action.DeleteAction;
+
+public class SafetystockDeleteAction extends DeleteAction{
+
+	public SafetystockDeleteAction(FrameUI frameUI) {
+		super(frameUI);
+	}
+
+}

+ 31 - 0
xc/stock/src/client/u8c/ic/safetystock/action/SafetystockEditAction.java

@@ -0,0 +1,31 @@
+package u8c.ic.safetystock.action;
+
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.action.BrowseFromListToCardAction;
+import nc.ui.hr.frame.impl.MainBillMgrPanel;
+import nc.ui.hr.frame.state.StateRegister;
+import nc.vo.SafetystockVO;
+import nc.vo.hr.tools.pub.HRAggVO;
+import u8c.ic.safetystock.panel.SafetystockMainPenel;
+import u8c.ic.safetystock.panel.SafetystockTestUI;
+
+public class SafetystockEditAction extends BrowseFromListToCardAction{
+
+	public SafetystockEditAction(FrameUI frameUI) {
+		super(frameUI);
+	}
+	public void execute() throws Exception {
+		MainBillMgrPanel mainMgrPanel = (MainBillMgrPanel) getMainPanel();
+		int selectedRow = ((SafetystockMainPenel) getMainPanel()).getSelectedRow();
+		HRAggVO [] s = (HRAggVO[]) mainMgrPanel.getMainBillListPanel().getData();
+		if (null !=s && s[selectedRow] != null){
+			SafetystockVO cta = (SafetystockVO) s[selectedRow].getParentVO();
+		}
+		super.execute();
+		SafetystockTestUI ui = (SafetystockTestUI)this.getFrameUI();		
+		getDataModel().setRollBackState(getDataModel().getCurrentState());       
+        getDataModel().setCurrentState(StateRegister.STATE_EDIT);      
+        getMainPanel().setMainPanelEnabled(true);
+	}
+	
+}

+ 12 - 0
xc/stock/src/client/u8c/ic/safetystock/action/SafetystockQueryAction.java

@@ -0,0 +1,12 @@
+package u8c.ic.safetystock.action;
+
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.action.QueryAction;
+
+public class SafetystockQueryAction extends QueryAction{
+
+	public SafetystockQueryAction(FrameUI frameUI) {
+		super(frameUI);
+	}
+
+}

+ 26 - 0
xc/stock/src/client/u8c/ic/safetystock/action/SafetystockSaveAction.java

@@ -0,0 +1,26 @@
+package u8c.ic.safetystock.action;
+
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.action.SaveAction;
+import nc.ui.hr.frame.impl.MainBillMgrPanel;
+import nc.ui.hr.frame.state.StateRegister;
+import nc.vo.hr.tools.pub.HRAggVO;
+import u8c.ic.safetystock.panel.SafetystockMainPenel;
+import u8c.ic.safetystock.panel.SafetystockTestUI;
+
+public class SafetystockSaveAction extends SaveAction{
+	SafetystockTestUI frameUI = null;
+	public SafetystockSaveAction(FrameUI frameUI) {
+		super(frameUI);
+		this.frameUI = (SafetystockTestUI) frameUI;
+	}
+	
+	public void execute() throws Exception {
+		MainBillMgrPanel mainMgrPanel = (MainBillMgrPanel) getMainPanel();
+		int selectedRow = ((SafetystockMainPenel) getMainPanel()).getSelectedRow();
+		HRAggVO s = (HRAggVO) mainMgrPanel.getMainBillCardPanel().getData();
+		super.execute();
+		frameUI.getDataModel().setCurrentState(StateRegister.STATE_NOTEDIT); // 设置当前状态为非编辑时
+	}
+
+}

+ 40 - 0
xc/stock/src/client/u8c/ic/safetystock/button/SafetystockBtnStateReg.java

@@ -0,0 +1,40 @@
+package u8c.ic.safetystock.button;
+
+import nc.ui.hr.frame.bill.manage.ManageBtnStateReg;
+import nc.ui.hr.frame.button.AbstractBtnReg;
+import nc.ui.hr.frame.state.StateRegister;
+import nc.vo.hr.frame.button.ButtonStateVO;
+
+public class SafetystockBtnStateReg extends ManageBtnStateReg{
+
+	public SafetystockBtnStateReg(StateRegister stRgst) {
+		super(stRgst);
+	}
+	
+	protected void addUserButtonStateVO() {
+		super.addUserButtonStateVO();
+		
+		// ³õʼ
+        ButtonStateVO btnStateVO = new ButtonStateVO();
+        btnStateVO.setStateID(StateRegister.STATE_INIT);
+        btnStateVO.setEnableBtnIDs(new int[]{AbstractBtnReg.SYSBTN_QUERY, AbstractBtnReg.SYSBTN_ADD, AbstractBtnReg.SYSBTN_REFRESH});
+        btnStateVO.setVisibleBtnIDs(new int[]{AbstractBtnReg.SYSBTN_EDIT, AbstractBtnReg.SYSBTN_DELETE});
+        addStateVO(btnStateVO.getStateID(), btnStateVO);
+        
+		// ±íÍ·ÐÐÑ¡Ôñ
+        btnStateVO = new ButtonStateVO();
+        btnStateVO.setStateID(StateRegister.STATE_LINE_SELECTED);
+        btnStateVO.setEnableBtnIDs(new int[]{AbstractBtnReg.SYSBTN_QUERY, AbstractBtnReg.SYSBTN_ADD,AbstractBtnReg.SYSBTN_EDIT,AbstractBtnReg.SYSBTN_DELETE});
+        btnStateVO.setVisibleBtnIDs(new int[]{});
+        addStateVO(btnStateVO.getStateID(), btnStateVO);
+        
+        // ä¯ÀÀ
+        btnStateVO = new ButtonStateVO();
+        btnStateVO.setStateID(StateRegister.STATE_NOTEDIT);
+        btnStateVO.setEnableBtnIDs(new int[]{AbstractBtnReg.SYSBTN_ADD, AbstractBtnReg.SYSBTN_EDIT, AbstractBtnReg.SYSBTN_DELETE,AbstractBtnReg.SYSBTN_RETURN});
+        btnStateVO.setVisibleBtnIDs(new int[]{AbstractBtnReg.SYSBTN_QUERY, AbstractBtnReg.SYSBTN_REFRESH});
+        addStateVO(btnStateVO.getStateID(), btnStateVO);
+
+	}
+
+}

+ 31 - 0
xc/stock/src/client/u8c/ic/safetystock/datamodel/SafetystockDataModel.java

@@ -0,0 +1,31 @@
+package u8c.ic.safetystock.datamodel;
+
+import nc.ui.hr.frame.bill.manage.ManageDataModel;
+import nc.vo.SafetystockVO;
+
+public class SafetystockDataModel extends ManageDataModel{
+	
+	public SafetystockDataModel() {
+		super();
+		
+		// 表头信息
+		setHeadPk(new SafetystockVO().getPKFieldName()); // 设置表头的主键字段名
+		setHeadVOClass(SafetystockVO.class); // 设置表头的类对象
+	}
+
+	@Override
+	public String getBillTempletBusiType() {
+		return null;
+	}
+
+	@Override
+	public String getBillTempletCode() {
+		return "IC01";
+	}
+
+	@Override
+	public String getNormalQueryTemplateCode() {
+		return null;
+	}
+
+}

+ 49 - 0
xc/stock/src/client/u8c/ic/safetystock/panel/SafetystockMainPenel.java

@@ -0,0 +1,49 @@
+package u8c.ic.safetystock.panel;
+
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.impl.MainBillMgrPanel;
+import nc.ui.hr.frame.state.StateRegister;
+import nc.ui.pub.bill.BillEditEvent;
+import nc.ui.pub.bill.BillItemEvent;
+import u8c.ic.safetystock.datamodel.SafetystockDataModel;
+
+public class SafetystockMainPenel extends MainBillMgrPanel{
+	
+	public int selectedRow = -1;
+
+	public SafetystockMainPenel(FrameUI frameUI, String strBillType, String strBusiType) {
+		super(frameUI, strBillType, strBusiType);
+	}
+	
+	public void bodyRowChange(BillEditEvent billEditEvent){
+        if (billEditEvent == null){
+            return;
+        }
+        selectedRow = billEditEvent.getRow();
+        if (billEditEvent.getSource() == ((SafetystockMainPenel)(getParentUI().getMainPanel())).getBillCardPanel().getBillTable()){
+            return;
+        }
+        SafetystockDataModel dataModel = (SafetystockDataModel) getParentUI().getDataModel();
+        dataModel.setCurrentState(StateRegister.STATE_LINE_SELECTED, true);
+	}
+		
+	public int getSelectedRow() {
+		return selectedRow;
+	}
+	
+	@Override
+	public void afterEdit(BillEditEvent evt) { // 깊庫깊竟긍서빈慤숭
+		super.afterEdit(evt);
+	}
+	
+	@Override
+	protected boolean beforeEdit(BillItemEvent evt) { // 깊庫긍서품慤숭
+		return super.beforeEdit(evt);
+	}
+
+	@Override
+	public boolean beforeEdit(BillEditEvent evt) { // 깊竟긍서품慤숭
+		return super.beforeEdit(evt);
+	}
+
+}

+ 109 - 0
xc/stock/src/client/u8c/ic/safetystock/panel/SafetystockTestUI.java

@@ -0,0 +1,109 @@
+package u8c.ic.safetystock.panel;
+
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.MainPanel;
+import nc.ui.hr.frame.TopPanel;
+import nc.ui.hr.frame.action.AddLineAction;
+import nc.ui.hr.frame.action.CancelAction;
+import nc.ui.hr.frame.action.DeleteLineAction;
+import nc.ui.hr.frame.action.EditLineAction;
+import nc.ui.hr.frame.action.RefreshAction;
+import nc.ui.hr.frame.action.ReturnFromCardToListAction;
+import nc.ui.hr.frame.button.AbstractBtnReg;
+import nc.ui.hr.frame.button.BtnStateReg;
+import nc.ui.pub.bill.BillCardPanel;
+import u8c.ic.safetystock.action.SafetystockAddAction;
+import u8c.ic.safetystock.action.SafetystockDeleteAction;
+import u8c.ic.safetystock.action.SafetystockEditAction;
+import u8c.ic.safetystock.action.SafetystockQueryAction;
+import u8c.ic.safetystock.action.SafetystockSaveAction;
+import u8c.ic.safetystock.button.SafetystockBtnStateReg;
+import u8c.ic.safetystock.datamodel.SafetystockDataModel;
+
+public class SafetystockTestUI extends FrameUI{
+	
+	protected void initialize(){
+		super.initialize();
+	}
+
+	@Override
+	protected void initButtons() {
+		// 初始化按钮
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_ADD);
+	    getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_EDIT);
+	    getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_DELETE);
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_QUERY);
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_REFRESH);
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_SAVE);
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_CANCEL);
+		getBtnManager().addButtonByID(AbstractBtnReg.SYSBTN_RETURN);	
+		
+		// 配置按钮动作类
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_ADD, new SafetystockAddAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_EDIT, new SafetystockEditAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_DELETE, new SafetystockDeleteAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_QUERY, new SafetystockQueryAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_REFRESH, new RefreshAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_SAVE, new SafetystockSaveAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_CANCEL, new CancelAction(this));
+		getBtnManager().regCmd(AbstractBtnReg.SYSBTN_RETURN, new ReturnFromCardToListAction(this));
+		
+		// 按钮排序
+		getBtnManager().adjustButtonOrder(new int[] {
+				AbstractBtnReg.SYSBTN_ADD,
+				AbstractBtnReg.SYSBTN_EDIT,
+				AbstractBtnReg.SYSBTN_DELETE,
+				AbstractBtnReg.SYSBTN_QUERY,
+				AbstractBtnReg.SYSBTN_REFRESH, 
+				AbstractBtnReg.SYSBTN_SAVE,
+				AbstractBtnReg.SYSBTN_CANCEL,
+				AbstractBtnReg.SYSBTN_RETURN});
+	}
+	
+	@Override
+	protected MainPanel createMainPanel() { // 主界面
+		SafetystockDataModel model = (SafetystockDataModel) getDataModel();
+		return new SafetystockMainPenel(this,  model.getBillTempletCode(), model.getBillTempletBusiType());
+	}
+
+	@Override
+	protected TopPanel createTopPanel() { //顶部面板
+		return new SafetystockTopPanel(this);
+	}
+	
+	@Override
+	protected BtnStateReg createButtonStateRegister() { // 按钮状态注册类
+		return  new SafetystockBtnStateReg(getDataModel().getState());
+	}
+	
+	@Override
+	protected SafetystockDataModel createDataModel() { // 配数据模型类
+		return new SafetystockDataModel();
+	}
+
+	@Override
+	public boolean needLeftPanel() {
+		return false;
+	}
+
+	@Override
+	public boolean needTopPanel() {
+		return false;
+	}
+	
+	@Override
+	public String getQueryNodeKey() { // 在【功能节点默认模板设置】中查询模板的节点标识
+		return "40H205";
+	}
+	
+	@Override
+	public String getModuleCode() { // 节点编码
+		return "40H205";
+	}
+	
+	public BillCardPanel getBillCardPanel() {
+		this.getBtnManager().setButtonEnabled(AbstractBtnReg.SYSBTN_RETURN, true);
+		return ((SafetystockMainPenel) (this.getMainPanel())).getBillCardPanel();
+	}
+	
+}

+ 22 - 0
xc/stock/src/client/u8c/ic/safetystock/panel/SafetystockTopPanel.java

@@ -0,0 +1,22 @@
+package u8c.ic.safetystock.panel;
+
+import nc.ui.hr.frame.FrameUI;
+import nc.ui.hr.frame.TopPanel;
+import nc.ui.pub.beans.UILabel;
+import nc.ui.pub.beans.UITextField;
+
+public class SafetystockTopPanel extends TopPanel{
+	
+	private UILabel lyeartotal = null;
+	private UITextField fyeartotal = null;
+	
+	private static final long serialVersionUID = 1L;
+	
+	SafetystockTestUI frameUI = null;
+
+	public SafetystockTopPanel(FrameUI parentUI) {
+		super(parentUI);
+		this.frameUI = (SafetystockTestUI) parentUI;
+	}
+
+}

+ 14 - 0
xc/stock/src/private/u8c/impl/SafetystockInfoDAO.java

@@ -0,0 +1,14 @@
+package u8c.impl;
+
+import nc.hr.frame.persistence.BaseDAOManager;
+import nc.vo.SafetystockVO;
+import nc.vo.pub.BusinessException;
+
+public class SafetystockInfoDAO extends BaseDAOManager{
+
+	public void execUpdate(SafetystockVO mainVO, String[] fieldNames) throws BusinessException {
+		getBaseDao().updateVO(mainVO, fieldNames);
+		
+	}
+
+}

+ 24 - 0
xc/stock/src/private/u8c/impl/SafetystockInfoImpl.java

@@ -0,0 +1,24 @@
+package u8c.impl;
+
+import nc.vo.SafetystockVO;
+import nc.vo.pub.BusinessException;
+import u8c.itf.ic.ISafetystockInfo;
+
+public class SafetystockInfoImpl implements ISafetystockInfo{
+
+	@Override
+	public boolean UpdateStatus(SafetystockVO vo, int status) throws BusinessException {
+		SafetystockVO mainVO = new SafetystockVO();
+		SafetystockInfoDAO dao = new SafetystockInfoDAO();
+		mainVO.setStatus(status);
+		return true;
+	}
+
+	@Override
+	public boolean execApprove(SafetystockVO vo) throws BusinessException {
+		SafetystockVO mainVO = new SafetystockVO();
+		SafetystockInfoDAO dao = new SafetystockInfoDAO();
+		return true;
+	}
+
+}

+ 654 - 0
xc/stock/src/public/nc/vo/SafetystockVO.java

@@ -0,0 +1,654 @@
+/***************************************************************\
+ *     The skeleton of this class is generated by an automatic *
+ * code generator for NC product. It is based on Velocity.     *
+\***************************************************************/
+package nc.vo;
+	
+import nc.vo.pub.*;
+import nc.vo.pub.lang.*;
+	
+/**
+ * <b> 在此处简要描述此类的功能 </b>
+ * <p>
+ *     在此处添加此类的描述信息
+ * </p>
+ * 创建日期:2023-11-16 13:52:26
+ * @author Administrator
+ * @version NCPrj 1.0
+ */
+@SuppressWarnings("serial")
+public class SafetystockVO extends SuperVO {
+	private String sizing;
+	private String standard;
+	private String vdef20;
+	private String alloy;
+	private String color;
+	private Integer safetystock;
+	private String cmaterialname;
+	private String spec;
+	private String model;
+	private Integer maxstock;
+	private UFDateTime ts; // 时间戳
+	private Integer dr; // 删除标志
+	private String vdef10;
+	private String vdef11;
+	private String vdef8;
+	private String vdef7;
+	private String vdef9;
+	private String vdef4;
+	private String vdef3;
+	private String vdef6;
+	private String vdef5;
+	private String vdef2;
+	private String cmaterialcode;
+	private String vdef1;
+	private String vdef16;
+	private String vdef17;
+	private String vdef18;
+	private String pk_safetystock;
+	private String vdef19;
+	private String vdef12;
+	private String vdef13;
+	private String vdef14;
+	private String vdef15;
+
+	public static final String SIZING = "sizing";
+	public static final String STANDARD = "standard";
+	public static final String VDEF20 = "vdef20";
+	public static final String ALLOY = "alloy";
+	public static final String COLOR = "color";
+	public static final String SAFETYSTOCK = "safetystock";
+	public static final String CMATERIALNAME = "cmaterialname";
+	public static final String SPEC = "spec";
+	public static final String MODEL = "model";
+	public static final String MAXSTOCK = "maxstock";
+	public static final String VDEF10 = "vdef10";
+	public static final String VDEF11 = "vdef11";
+	public static final String VDEF8 = "vdef8";
+	public static final String VDEF7 = "vdef7";
+	public static final String VDEF9 = "vdef9";
+	public static final String VDEF4 = "vdef4";
+	public static final String VDEF3 = "vdef3";
+	public static final String VDEF6 = "vdef6";
+	public static final String VDEF5 = "vdef5";
+	public static final String VDEF2 = "vdef2";
+	public static final String CMATERIALCODE = "cmaterialcode";
+	public static final String VDEF1 = "vdef1";
+	public static final String VDEF16 = "vdef16";
+	public static final String VDEF17 = "vdef17";
+	public static final String VDEF18 = "vdef18";
+	public static final String PK_SAFETYSTOCK = "pk_safetystock";
+	public static final String VDEF19 = "vdef19";
+	public static final String VDEF12 = "vdef12";
+	public static final String VDEF13 = "vdef13";
+	public static final String VDEF14 = "vdef14";
+	public static final String VDEF15 = "vdef15";
+			
+	/**
+	 * 属性sizing的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getSizing () {
+		return sizing;
+	}   
+	/**
+	 * 属性sizing的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newSizing String
+	 */
+	public void setSizing (String newSizing ) {
+	 	this.sizing = newSizing;
+	} 	  
+	/**
+	 * 属性standard的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getStandard () {
+		return standard;
+	}   
+	/**
+	 * 属性standard的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newStandard String
+	 */
+	public void setStandard (String newStandard ) {
+	 	this.standard = newStandard;
+	} 	  
+	/**
+	 * 属性vdef20的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef20 () {
+		return vdef20;
+	}   
+	/**
+	 * 属性vdef20的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef20 String
+	 */
+	public void setVdef20 (String newVdef20 ) {
+	 	this.vdef20 = newVdef20;
+	} 	  
+	/**
+	 * 属性alloy的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getAlloy () {
+		return alloy;
+	}   
+	/**
+	 * 属性alloy的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newAlloy String
+	 */
+	public void setAlloy (String newAlloy ) {
+	 	this.alloy = newAlloy;
+	} 	  
+	/**
+	 * 属性color的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getColor () {
+		return color;
+	}   
+	/**
+	 * 属性color的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newColor String
+	 */
+	public void setColor (String newColor ) {
+	 	this.color = newColor;
+	} 	  
+	/**
+	 * 属性safetystock的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return Integer
+	 */
+	public Integer getSafetystock () {
+		return safetystock;
+	}   
+	/**
+	 * 属性safetystock的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newSafetystock Integer
+	 */
+	public void setSafetystock (Integer newSafetystock ) {
+	 	this.safetystock = newSafetystock;
+	} 	  
+	/**
+	 * 属性cmaterialname的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getCmaterialname () {
+		return cmaterialname;
+	}   
+	/**
+	 * 属性cmaterialname的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newCmaterialname String
+	 */
+	public void setCmaterialname (String newCmaterialname ) {
+	 	this.cmaterialname = newCmaterialname;
+	} 	  
+	/**
+	 * 属性spec的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getSpec () {
+		return spec;
+	}   
+	/**
+	 * 属性spec的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newSpec String
+	 */
+	public void setSpec (String newSpec ) {
+	 	this.spec = newSpec;
+	} 	  
+	/**
+	 * 属性model的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getModel () {
+		return model;
+	}   
+	/**
+	 * 属性model的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newModel String
+	 */
+	public void setModel (String newModel ) {
+	 	this.model = newModel;
+	} 	  
+	/**
+	 * 属性maxstock的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return Integer
+	 */
+	public Integer getMaxstock () {
+		return maxstock;
+	}   
+	/**
+	 * 属性maxstock的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newMaxstock Integer
+	 */
+	public void setMaxstock (Integer newMaxstock ) {
+	 	this.maxstock = newMaxstock;
+	}
+	/**
+	 * 属性ts的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return UFDateTime
+	 */
+	public UFDateTime getTs () {
+		return ts;
+	}   
+	/**
+	 * 属性ts的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newTs UFDateTime
+	 */
+	public void setTs (UFDateTime newTs ) {
+	 	this.ts = newTs;
+	} 	
+	/**
+	 * 属性dr的Getter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @return Integer
+	 */
+	public Integer getDr () {
+		return dr;
+	}   
+	/**
+	 * 属性dr的Setter方法.
+	 * 创建日期:2023-10-20 16:00:43
+	 * @param newDr Integer
+	 */
+	public void setDr (Integer newDr ) {
+	 	this.dr = newDr;
+	}
+	/**
+	 * 属性vdef10的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef10 () {
+		return vdef10;
+	}   
+	/**
+	 * 属性vdef10的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef10 String
+	 */
+	public void setVdef10 (String newVdef10 ) {
+	 	this.vdef10 = newVdef10;
+	} 	  
+	/**
+	 * 属性vdef11的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef11 () {
+		return vdef11;
+	}   
+	/**
+	 * 属性vdef11的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef11 String
+	 */
+	public void setVdef11 (String newVdef11 ) {
+	 	this.vdef11 = newVdef11;
+	} 	  
+	/**
+	 * 属性vdef8的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef8 () {
+		return vdef8;
+	}   
+	/**
+	 * 属性vdef8的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef8 String
+	 */
+	public void setVdef8 (String newVdef8 ) {
+	 	this.vdef8 = newVdef8;
+	} 	  
+	/**
+	 * 属性vdef7的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef7 () {
+		return vdef7;
+	}   
+	/**
+	 * 属性vdef7的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef7 String
+	 */
+	public void setVdef7 (String newVdef7 ) {
+	 	this.vdef7 = newVdef7;
+	} 	  
+	/**
+	 * 属性vdef9的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef9 () {
+		return vdef9;
+	}   
+	/**
+	 * 属性vdef9的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef9 String
+	 */
+	public void setVdef9 (String newVdef9 ) {
+	 	this.vdef9 = newVdef9;
+	} 	  
+	/**
+	 * 属性vdef4的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef4 () {
+		return vdef4;
+	}   
+	/**
+	 * 属性vdef4的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef4 String
+	 */
+	public void setVdef4 (String newVdef4 ) {
+	 	this.vdef4 = newVdef4;
+	} 	  
+	/**
+	 * 属性vdef3的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef3 () {
+		return vdef3;
+	}   
+	/**
+	 * 属性vdef3的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef3 String
+	 */
+	public void setVdef3 (String newVdef3 ) {
+	 	this.vdef3 = newVdef3;
+	} 	  
+	/**
+	 * 属性vdef6的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef6 () {
+		return vdef6;
+	}   
+	/**
+	 * 属性vdef6的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef6 String
+	 */
+	public void setVdef6 (String newVdef6 ) {
+	 	this.vdef6 = newVdef6;
+	} 	  
+	/**
+	 * 属性vdef5的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef5 () {
+		return vdef5;
+	}   
+	/**
+	 * 属性vdef5的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef5 String
+	 */
+	public void setVdef5 (String newVdef5 ) {
+	 	this.vdef5 = newVdef5;
+	} 	  
+	/**
+	 * 属性vdef2的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef2 () {
+		return vdef2;
+	}   
+	/**
+	 * 属性vdef2的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef2 String
+	 */
+	public void setVdef2 (String newVdef2 ) {
+	 	this.vdef2 = newVdef2;
+	} 	  
+	/**
+	 * 属性cmaterialcode的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getCmaterialcode () {
+		return cmaterialcode;
+	}   
+	/**
+	 * 属性cmaterialcode的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newCmaterialcode String
+	 */
+	public void setCmaterialcode (String newCmaterialcode ) {
+	 	this.cmaterialcode = newCmaterialcode;
+	} 	  
+	/**
+	 * 属性vdef1的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef1 () {
+		return vdef1;
+	}   
+	/**
+	 * 属性vdef1的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef1 String
+	 */
+	public void setVdef1 (String newVdef1 ) {
+	 	this.vdef1 = newVdef1;
+	} 	  
+	/**
+	 * 属性vdef16的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef16 () {
+		return vdef16;
+	}   
+	/**
+	 * 属性vdef16的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef16 String
+	 */
+	public void setVdef16 (String newVdef16 ) {
+	 	this.vdef16 = newVdef16;
+	} 	  
+	/**
+	 * 属性vdef17的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef17 () {
+		return vdef17;
+	}   
+	/**
+	 * 属性vdef17的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef17 String
+	 */
+	public void setVdef17 (String newVdef17 ) {
+	 	this.vdef17 = newVdef17;
+	} 	  
+	/**
+	 * 属性vdef18的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef18 () {
+		return vdef18;
+	}   
+	/**
+	 * 属性vdef18的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef18 String
+	 */
+	public void setVdef18 (String newVdef18 ) {
+	 	this.vdef18 = newVdef18;
+	} 	  
+	/**
+	 * 属性pk_safetystock的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getPk_safetystock () {
+		return pk_safetystock;
+	}   
+	/**
+	 * 属性pk_safetystock的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newPk_safetystock String
+	 */
+	public void setPk_safetystock (String newPk_safetystock ) {
+	 	this.pk_safetystock = newPk_safetystock;
+	} 	  
+	/**
+	 * 属性vdef19的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef19 () {
+		return vdef19;
+	}   
+	/**
+	 * 属性vdef19的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef19 String
+	 */
+	public void setVdef19 (String newVdef19 ) {
+	 	this.vdef19 = newVdef19;
+	} 	  
+	/**
+	 * 属性vdef12的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef12 () {
+		return vdef12;
+	}   
+	/**
+	 * 属性vdef12的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef12 String
+	 */
+	public void setVdef12 (String newVdef12 ) {
+	 	this.vdef12 = newVdef12;
+	} 	  
+	/**
+	 * 属性vdef13的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef13 () {
+		return vdef13;
+	}   
+	/**
+	 * 属性vdef13的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef13 String
+	 */
+	public void setVdef13 (String newVdef13 ) {
+	 	this.vdef13 = newVdef13;
+	} 	  
+	/**
+	 * 属性vdef14的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef14 () {
+		return vdef14;
+	}   
+	/**
+	 * 属性vdef14的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef14 String
+	 */
+	public void setVdef14 (String newVdef14 ) {
+	 	this.vdef14 = newVdef14;
+	} 	  
+	/**
+	 * 属性vdef15的Getter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return String
+	 */
+	public String getVdef15 () {
+		return vdef15;
+	}   
+	/**
+	 * 属性vdef15的Setter方法.
+	 * 创建日期:2023-11-16 13:52:26
+	 * @param newVdef15 String
+	 */
+	public void setVdef15 (String newVdef15 ) {
+	 	this.vdef15 = newVdef15;
+	} 	  
+ 
+	/**
+	  * <p>取得父VO主键字段.
+	  * <p>
+	  * 创建日期:2023-11-16 13:52:26
+	  * @return java.lang.String
+	  */
+	public java.lang.String getParentPKFieldName() {
+	    return null;
+	}   
+    
+	/**
+	  * <p>取得表主键.
+	  * <p>
+	  * 创建日期:2023-11-16 13:52:26
+	  * @return java.lang.String
+	  */
+	public java.lang.String getPKFieldName() {
+	  return "pk_safetystock";
+	}
+    
+	/**
+	 * <p>返回表名称.
+	 * <p>
+	 * 创建日期:2023-11-16 13:52:26
+	 * @return java.lang.String
+	 */
+	public java.lang.String getTableName() {
+		return "ic_safetystock";
+	}    
+    
+    /**
+	  * 按照默认方式创建构造子.
+	  *
+	  * 创建日期:2023-11-16 13:52:26
+	  */
+     public SafetystockVO() {
+		super();	
+	}    
+} 

+ 13 - 0
xc/stock/src/public/u8c/itf/ic/ISafetystockInfo.java

@@ -0,0 +1,13 @@
+package u8c.itf.ic;
+
+import nc.vo.SafetystockVO;
+import nc.vo.hr.tools.pub.HRAggVO;
+import nc.vo.pub.BusinessException;
+
+public interface ISafetystockInfo {
+	
+	public abstract boolean UpdateStatus(SafetystockVO vo, int status) throws BusinessException;
+	
+	public abstract boolean execApprove(SafetystockVO vo) throws BusinessException;
+
+}