Kaynağa Gözat

出库申请单新增导入功能

zthwr 2 ay önce
ebeveyn
işleme
76e00b3366

+ 19 - 0
ic/.classpath

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="ic/classes" path="ic/src/public"/>
+	<classpathentry kind="src" output="ic/classes" path="ic/src/client"/>
+	<classpathentry kind="src" output="ic/classes" path="ic/src/private"/>
+	<classpathentry kind="src" output="ic/classes" path="ic/src/test"/>
+	<classpathentry kind="src" output="ic/classes" path="ic/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Ant_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Product_Common_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Middleware_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Framework_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Module_Public_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Module_Client_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Module_Private_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Module_Lang_Library"/>
+	<classpathentry kind="con" path="com.yonyou.studio.udt.core.container/Generated_EJB"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

+ 29 - 0
ic/.project

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

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

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

BIN
ic/ic/classes/nc/bs/dzgy/pub/db/JDBCUtils.class


BIN
ic/ic/classes/nc/ui/dzgy/impexcle/tools/ImpExcleUtils.class


BIN
ic/ic/classes/nc/ui/ic/m4451/action/ImportExcelActionAction$1.class


BIN
ic/ic/classes/nc/ui/ic/m4451/action/ImportExcelActionAction.class


BIN
ic/ic/classes/nc/ui/ic/m4451/action/ImportExcelActionAction2$1.class


BIN
ic/ic/classes/nc/ui/ic/m4451/action/ImportExcelActionAction2.class


+ 562 - 0
ic/ic/classes/nc/ui/ic/m4455/SapplyBill_Org.xml

@@ -0,0 +1,562 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+<beans>
+	<!-- 引入通用配置 -->
+	<!-- extends nc/ui/ic/general/model/config/GeneralCommon.xml -->
+
+	<!-- 自定义项、自由辅助属性参数 -->
+	<bean id="queryParams1" class="nc.ui.uif2.userdefitem.QueryParam">
+		<property name="mdfullname" value="ic.SapplyBillHeadVO" />
+	</bean>
+	<bean id="queryParams2" class="nc.ui.uif2.userdefitem.QueryParam">
+		<property name="mdfullname" value="ic.SapplyBillBodyVO" />
+	</bean>
+	<bean id="userQueryParams1" class="nc.ui.uif2.editor.UserdefQueryParam">
+		<property name="mdfullname" value="ic.SapplyBillHeadVO" />
+		<property name="pos" value="0" />
+		<property name="prefix" value="vdef" />
+	</bean>
+	<bean id="userQueryParams2" class="nc.ui.uif2.editor.UserdefQueryParam">
+		<property name="mdfullname" value="ic.SapplyBillBodyVO" />
+		<property name="pos" value="1" />
+		<property name="prefix" value="vbdef" />
+	</bean>
+	<!-- 注册分页 -->
+	<bean id="pageQuery" class="nc.ui.ic.general.model.ICGenRevisePageService">
+		<property name="voClassName" value="nc.vo.ic.m4455.entity.SapplyBillVO" />
+		<property name="billType" value="4455" />
+	</bean>
+
+	<!-- 应用服务类,负责进行模型操作的处理 -->
+	<bean id="manageModelService" class="nc.ui.ic.m4455.model.SapplyBillModelService">
+		<!--<property name="icUIContext" ref="icUIContext"></property> <property 
+			name="voClass" value="nc.vo.ic.m4455.entity.SapplyBillVO" /> -->
+	</bean>
+
+	<!-- 管理应用模型 -->
+	<bean id="icBizModel" class="nc.ui.ic.general.model.ICGenBizModel">
+		<property name="service" ref="manageModelService" />
+		<property name="businessObjectAdapterFactory" ref="boadatorfactory" />
+		<property name="icUIContext" ref="icUIContext" />
+		<property name="billType" value="4455" />
+		<!-- 启用权限控制 -->
+		<property name="powerValidate" value="true" />
+	</bean>
+	<!-- 
+	<bean id="besideApproveForm" class="nc.ui.pf.workflownote.beside.BesideApproveForm">
+		<property name="model" ref="icBizModel"></property>
+		<property name="besideapproveAction" ref="approveAction"></property>
+		<property name="besideunapproveaction" ref="unApproveAction"></property>
+	</bean>
+
+	<bean id="besideHistoryForm" class="nc.ui.pf.workflownote.beside.BesideHistoryForm">
+		<property name="model" ref="icBizModel"></property>
+	</bean>
+
+	<bean id="besideHintMessageForm" class="nc.ui.pf.workflownote.beside.BesideHintMessageForm">
+		<property name="model" ref="icBizModel"></property>
+	</bean>
+	-->
+	<!-- 侧边栏 -->
+	<!-- 
+	<bean id="multiBesideWidget" class="nc.ui.uif2.components.widget.MultiBesideWidget"
+		init-method="initUI">
+		<property name="model" ref="icBizModel"></property>
+		<property name="besideWidgetInfoMap">
+			<map>
+				<entry>
+					<key>
+						<bean class="nc.ui.uif2.I18nFB">
+							<property name="resDir" value="uif2" />
+							<property name="resId" value="ActionRegistry-000055" />
+							<property name="defaultValue" value="审批" />
+						</bean>
+					</key>
+					<list>
+						<ref bean="besideApproveForm" />
+						<ref bean="besideHintMessageForm" />
+						<ref bean="besideHistoryForm" />
+					</list>
+				</entry>
+			</map>
+		</property>
+	</bean>
+	 -->
+	<!-- 卡片部分,包含翻页按钮、卡片编辑器、存量面板 、条码输入面板 -->
+	<bean id="vscard" class="nc.ui.uif2.tangramlayout.node.VSNode">
+		<property name="up">
+			<bean class="nc.ui.uif2.tangramlayout.node.CNode">
+				<property name="component" ref="cardInfoPnl" />
+			</bean>
+		</property>
+		<property name="down">
+			<bean class="nc.ui.uif2.tangramlayout.node.VSNode">
+				<property name="name">
+					<bean class="nc.ui.uif2.I18nFB">
+						<property name="resDir" value="common" />
+						<property name="resId" value="UC001-0000106" />
+						<property name="defaultValue" value="卡片" />
+					</bean>
+				</property>
+				<property name="up">
+					<bean class="nc.ui.uif2.tangramlayout.node.CNode">
+						<property name="name">
+							<bean class="nc.ui.uif2.I18nFB">
+								<property name="resDir" value="common" />
+								<property name="resId" value="UC001-0000106" />
+								<property name="defaultValue" value="卡片" />
+							</bean>
+						</property>
+						<property name="component" ref="card" />
+					</bean>
+				</property>
+				<property name="down">
+					<!-- 条码输入面板 -->
+					<bean class="nc.ui.uif2.tangramlayout.node.CNode">
+						<property name="component" ref="barcodecard" />
+					</bean>
+				</property>
+				<property name="dividerLocation" value="0.95f" />
+			</bean>
+		</property>
+		<property name="dividerLocation" value="30f" />
+	</bean>
+
+	<!--界面元素 ########################################################### -->
+	<bean id="container" class="nc.ui.uif2.TangramContainer"
+		init-method="initUI">
+		<property name="tangramLayoutRoot" ref="vsnodequery" />
+		<property name="model" ref="icBizModel" />
+	</bean>
+
+	<bean id="addFrom422XAction" class="nc.ui.ic.m4455.action.AddFrom442XAction">
+		<property name="editorModel" ref="icBizEditorModel" />
+		<property name="sourceBillType" value="422X" />
+		<property name="sourceBillName">
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="4008001_0" />
+				<property name="resId" value="04008001-0491" />
+				<property name="defaultValue" value="参照物资需求申请单" />
+			</bean>
+		</property>
+		<property name="destBillType" value="4455" />
+		<property name="transferViewProcessor" ref="transferViewProcessor" />
+	</bean>
+	<!-- 新增菜单 -->
+	<bean id="addMenu" class="nc.funcnode.ui.action.MenuAction">
+		<property name="code" value="MaintainMenu" />
+		<property name="name">
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="4008001_0" />
+				<property name="resId" value="04008001-0739" />
+				<property name="defaultValue" value="新增" />
+			</bean>
+		</property>
+		<property name="actions">
+			<list>
+				<!-- 自制 -->
+				<ref bean="selfAddAction" />
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 参照物资需求申请单 -->
+				<ref bean="addFrom422XAction" />
+			</list>
+		</property>
+	</bean>
+	<!-- 行关闭/打开控制菜单 -->
+	<bean id="rowCtrlMenu" class="nc.funcnode.ui.action.GroupAction">
+		<property name="code">
+			<value>rowCtrlMenu</value>
+		</property>
+		<property name="name">
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="4008001_0" />
+				<property name="resId" value="04008001-0381" />
+				<property name="defaultValue" value="行关闭" />
+			</bean>
+		</property>
+		<property name="actions">
+			<list>
+				<ref bean="rowCloseAction" />
+				<ref bean="rowOpenAction" />
+			</list>
+		</property>
+	</bean>
+	<!-- 行关闭 -->
+	<bean id="rowCloseAction" class="nc.ui.ic.m4455.action.RowCloseAction">
+		<property name="billForm" ref="card" />
+		<property name="list" ref="list" />
+		<property name="editorModel" ref="icBizEditorModel" />
+	</bean>
+	<!-- 行打开 -->
+	<bean id="rowOpenAction" class="nc.ui.ic.m4455.action.RowOpenAction">
+		<property name="billForm" ref="card" />
+		<property name="list" ref="list" />
+		<property name="editorModel" ref="icBizEditorModel" />
+	</bean>
+
+	<!-- 修改动作 -->
+	<bean id="editAction" class="nc.ui.ic.m4455.action.SapplyBillEditAction">
+		<property name="model" ref="icBizModel" />
+		<property name="editorModel" ref="icBizEditorModel" />
+		<property name="interceptor">
+			<ref bean="cardInterceptor" />
+		</property>
+	</bean>
+
+	<bean id="approveAction" class="nc.ui.ic.m4455.action.SapplyBillApproveAction">
+		<property name="model" ref="icBizModel" />
+		<property name="editorModel" ref="icBizEditorModel" />
+	</bean>
+
+	<bean id="unApproveAction" class="nc.ui.ic.m4455.action.SapplyBillUnApproveAction">
+		<property name="model" ref="icBizModel" />
+		<property name="editorModel" ref="icBizEditorModel" />
+	</bean>
+
+	<!-- 单据复制动作 -->
+	<bean id="copyAction" class="nc.ui.ic.m4455.action.CopyAction">
+		<property name="model" ref="icBizModel" />
+		<property name="editorModel" ref="icBizEditorModel" />
+		<property name="editor" ref="card" />
+		<property name="interceptor">
+			<ref bean="cardInterceptor" />
+		</property>
+	</bean>
+
+	<!-- 现存量面板显示与隐藏动作 -->
+	<!--<bean id="displayOrhideAction" class="nc.ui.ic.m4455.action.DisplayOrhideActionFor4455">
+		<property name="editorModel" ref="icBizEditorModel" />
+	</bean>
+	-->
+	<!-- 普通单审批按钮列表 -->
+	<bean id="approveActionMenu" class="nc.funcnode.ui.action.GroupAction">
+		<property name="code" value="ApproveMenu" />
+		<property name="actions">
+			<list>
+				<ref bean="approveAction" />
+				<ref bean="unApproveAction" />
+				<ref bean="separatorAction" />
+				<ref bean="approvingStatusAction" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- 审批流状态 -->
+	<bean id="approvingStatusAction" class="nc.ui.ic.pf.action.PFApproveStatusInfoActionForIC">
+		<property name="model" ref="icBizModel" />
+	</bean>
+	<!-- 联查动作菜单(浏览状态) -->
+	<bean id="linkQryBrowseGroupAction" class="nc.funcnode.ui.action.MenuAction">
+		<property name="code">
+			<value>linkQryAction</value>
+		</property>
+		<property name="name">
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="4008001_0" />
+				<property name="resId" value="04008001-0742" />
+				<property name="defaultValue" value="联查" />
+			</bean>
+		</property>
+		<property name="actions">
+			<list>
+				<ref bean="linkQryAction" />
+				<bean class="nc.funcnode.ui.action.SeparatorAction" />
+				<ref bean="displayOrhideAction" />
+			</list>
+		</property>
+	</bean>
+	<!-- 联查动作菜单(编辑状态) -->
+	<bean id="linkQryEditGroupAction" class="nc.funcnode.ui.action.MenuAction">
+		<property name="code">
+			<value>linkQryAction</value>
+		</property>
+		<property name="name">
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="4008001_0" />
+				<property name="resId" value="04008001-0742" />
+				<property name="defaultValue" value="联查" />
+			</bean>
+		</property>
+		<property name="actions">
+			<list>
+				<ref bean="displayOrhideAction" />
+			</list>
+		</property>
+	</bean>
+	<!-- 打印菜单 -->
+	<bean id="printMngAction" class="nc.funcnode.ui.action.GroupAction">
+		<property name="code">
+			<value>printMngAction</value>
+		</property>
+		<property name="actions">
+			<list>
+				<ref bean="templatePrintAction" />
+				<ref bean="templatePreviewAction" />
+				<ref bean="outputAction" />
+				<bean class="nc.funcnode.ui.action.SeparatorAction" />
+				<ref bean="mergerShowAction" />
+				<ref bean="printCountQueryAction" />
+			</list>
+		</property>
+	</bean>
+	
+	<!-- 打印次数查询 -->
+	<bean id="printCountQueryAction" class="nc.ui.ic.pub.action.ICPrintCountQueryAction">
+	<!-- 单据日期属性名称 -->
+	    <property name="billdateFieldName" value=""/>
+	    <property name="model" ref="icBizModel" />
+	</bean>
+
+	<bean id="UIProcesorInfo" class="nc.ui.ic.m4455.deal.SapplyBillUIProcessorInfo" />
+	<!-- 界面布局总装########################################################### -->
+	<!-- 此bean不是必须的,如果没有各个界面按钮的差异,可以将一下三个bean都去掉 -->
+	<bean id="toftpanelActionContributors" class="nc.ui.uif2.actions.ActionContributors">
+		<property name="contributors">
+			<list>
+				<ref bean="actionsOfList" />
+				<ref bean="actionsOfCard" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- 构造方法中传入的界面显示时,配置的Action才可见 -->
+	<bean id="actionsOfList" class="nc.ui.uif2.actions.StandAloneToftPanelActionContainer">
+		<constructor-arg ref="list" />
+		<!-- 可以配置非编辑状态下和编辑状态下分别可见的Action,没有此需求时可以配置得一样 -->
+		<property name="actions">
+			<list>
+				<ref bean="addMenu" />
+				<ref bean="editAction" />
+				<ref bean="deleteAction" />
+				<!-- 复制 -->
+				<ref bean="copyAction" />
+
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 查询 -->
+				<ref bean="queryAction" />
+				<!-- 刷新 -->
+				<ref bean="refreshAction" />
+
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 提交 -->
+				<ref bean="commitActionMenu" />
+				<!-- 审批 -->
+				<ref bean="approveActionMenu" />
+
+				<!-- 行打开/关闭 -->
+				<ref bean="rowCtrlMenu" />
+
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 联查 -->
+				<ref bean="linkQryBrowseGroupAction" />
+
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 打印功能 -->
+				<ref bean="printMngAction" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- 构造方法中传入的界面显示时,配置的Action才可见 -->
+	<bean id="actionsOfCard" class="nc.ui.uif2.actions.StandAloneToftPanelActionContainer">
+		<constructor-arg ref="card" />
+		<property name="model" ref="icBizModel" />
+		<!-- 可以配置非编辑状态下和编辑状态下分别可见的Action,没有此需求时可以配置得一样 -->
+		<property name="actions">
+			<list>
+				<ref bean="addMenu" />
+				<ref bean="editAction" />
+				<ref bean="deleteAction" />
+				<!-- 复制 -->
+				<ref bean="copyAction" />
+
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 查询 -->
+				<ref bean="queryAction" />
+				<!-- 刷新 -->
+				<ref bean="refreshCardAction" />
+
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 提交 -->
+				<ref bean="commitActionMenu" />
+
+
+				<!-- 审批 -->
+				<ref bean="approveActionMenu" />
+
+
+				<!-- 行打开/关闭 -->
+				<ref bean="rowCtrlMenu" />
+
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 联查 -->
+				<ref bean="linkQryBrowseGroupAction" />
+
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 打印功能 -->
+				<ref bean="printMngAction" />
+			</list>
+		</property>
+		<property name="editActions">
+			<list>
+				<ref bean="saveAction" />
+				<ref bean="separatorAction" />
+				<!-- 提交 -->
+				<ref bean="savecommitAction" />
+				<ref bean="separatorAction" />
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<ref bean="cancelAction" />
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 联查 -->
+				<ref bean="linkQryEditGroupAction" />
+			</list>
+		</property>
+	</bean>
+
+
+	<!-- 出库申请单查询对话框初始化处理 -->
+	<bean id="qryDLGInitializer" class="nc.ui.ic.m4455.deal.QueryConditionDLGWrapper">
+		<property name="model" ref="icBizModel" />
+	</bean>
+
+	<!-- 消息中心数据监听 -->
+	<bean name="InitDataListener"
+		class="nc.ui.pubapp.uif2app.model.DefaultFuncNodeInitDataListener">
+		<property name="queryAction" ref="queryAction" />
+		<property name="model" ref="icBizModel"></property>
+		<!-- VO的类名 -->
+		<property name="voClassName" value="nc.vo.ic.m4455.entity.SapplyBillVO" />
+		<!-- 打开节点节点后要显示的界面 -->
+		<property name="autoShowUpComponent" ref="card" />
+		<property name="processorMap">
+			<map>
+				<entry>
+					<key>
+						<value>89</value>
+					</key>
+					<!-- 查询多PK联查 -->
+					<bean id="icGenMutiPkLinkQuery" class="nc.ui.ic.inandoutui.linkquery.ICGenMutiPkLinkQuery">
+						<property name="model" ref="icBizModel" />
+						<property name="autoShowUpComponent" ref="list" />
+						<property name="voClass" value="nc.vo.ic.m4455.entity.SapplyBillVO" />
+					</bean>
+				</entry>
+				<entry key="426">
+					<bean class="nc.ui.ic.m4455.deal.SapplyInitDataProcessor">
+						<property name="model" ref="icBizModel" />
+						<property name="autoShowUpComponent" ref="card" />
+						<property name="editorModel" ref="icBizEditorModel" />
+					</bean>
+				</entry>
+			</map>
+		</property>
+	</bean>
+
+	<!-- 出库申请单重写事件 -->
+	<bean id="cardLoadDataHandler" class="nc.ui.ic.m4455.handler.SapplyBillLoadDataEventHandler" />
+
+	<bean id="cmaterialvidHandler" class="nc.ui.ic.m4455.handler.CmaterialvidHandlerFor4455" />
+
+	<bean id="vbatchcodeHandler" class="nc.ui.ic.m4455.handler.VbatchcodeHandlerFor4455" />
+
+	<bean id="cprojectidHandler" class="nc.ui.ic.m4455.handler.CprojectidHandler" />
+	<bean id="cprojecttaskidHandler" class="nc.ui.ic.m4455.handler.CprojecttaskidHandler" />
+	<bean id="cmffileidHandler" class="nc.ui.ic.m4455.handler.CmffileidHandlerFor4455" />
+	<bean id="pk_orgHandler" class="nc.ui.ic.m4455.handler.Pk_orgHandler">
+		<property name="editorModel" ref="icBizEditorModel" />
+		<property name="context" ref="icUIContext" />
+	</bean>
+
+	<!-- 编辑事件处理 -->
+	<bean id=" childCardEditHandlerMap" class="nc.ui.ic.pub.handler.card.ICCardEditEventHandlerMap">
+		<property name="handlerMap">
+			<map>
+				<entry key="cissueorg">
+					<bean class="nc.ui.ic.m4455.handler.CissueOrgHandler" />
+				</entry>
+				<entry key="cwastewarehouseid">
+					<bean class="nc.ui.ic.m4455.handler.CwastewarehouseidHandler" />
+				</entry>
+				<entry key="cmffileid">
+					<ref bean="cmffileidHandler"/>
+				</entry>
+				<entry key="cprojectid">
+					<ref bean="cprojectidHandler" />
+				</entry>
+				<entry key="cprojecttaskid">
+					<ref bean="cprojecttaskidHandler" />
+				</entry>
+				<entry key="pk_cbsnode">
+					<bean class="nc.ui.ic.m4455.handler.Pk_cbsnodeHandlerFor4455" />
+				</entry>
+				<entry key="cconstructvendorid">
+					<bean class="nc.ui.ic.m4455.handler.CconstructvendoridHandler" />
+				</entry>
+			</map>
+		</property>
+	</bean>
+
+	<!-- "新增"下拉菜单的信息加载bean -->
+	<bean id="pfAddInfoLoader" class="nc.ui.pubapp.uif2app.actions.PfAddInfoLoader">
+		<property name="billType" value="4455" />
+		<property name="model" ref="icBizModel" />
+	</bean>
+
+	<!--	转单后公共代码处理 -转单精度处理-精度控制  -->
+    <bean id="scalePrcStrategy" class="nc.ui.ic.m4455.deal.SapplyBillScaleProcessor">
+    </bean>
+	<!-- 自由项、自定义项组件的卡片配置 -->
+	<bean id="userdefAndMarAsstCardPreparator" class="nc.ui.pubapp.uif2app.view.CompositeBillDataPrepare">
+		<property name="billDataPrepares">
+			<list>
+				<ref bean="userdefitemPreparator" />
+				<ref bean="marAsstPreparator" />
+				<ref bean="marProdAsstPreparator" />
+				<!-- <ref bean="bcuserdefitemPreparator"/> -->
+			</list>
+		</property>
+	</bean>
+
+	<!-- 自由项、自定义项组件的列表配置 -->
+	<bean id="userdefAndMarAsstListPreparator" class="nc.ui.pubapp.uif2app.view.CompositeBillListDataPrepare">
+		<property name="billListDataPrepares">
+			<list>
+				<ref bean="userdefitemlistPreparator" />
+				<ref bean="marProdAsstPreparator" />
+				<ref bean="marAsstPreparator" />
+				<!-- <ref bean="bcuserdefitemlistPreparator"/> -->
+			</list>
+		</property>
+	</bean>
+	<!-- 成本自由项组件的配置 -->
+	<bean id="marProdAsstPreparator"
+		class="nc.ui.pubapp.uif2app.view.material.assistant.MarAsstPreparator">
+		<property name="model" ref="icBizModel" />
+		<property name="container" ref="userdefitemContainer" />
+		<property name="prefix" value="vprodfree" />
+		<property name="materialField" value="ccostobjectid" />
+		<property name="projectField" value="cprodprojectid" />
+		<property name="supplierField" value="cprodvendorid" />
+		<property name="productorField" value="cprodproductorid" />
+		<property name="customerField" value="cprodasscustid" />
+	</bean>
+
+	<!-- 交叉校验规则 -->
+	<bean id="crossRuleMediator" class="nc.ui.scmpub.listener.crossrule.CrossRuleMediator"
+		init-method="init">
+		<property name="model" ref="icBizModel" />
+		<property name="billType" value="4455" />
+	</bean> 
+</beans>

+ 38 - 0
ic/ic/classes/nc/ui/ic/m4455/addAction.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="GBK"?>
+ 
+<!DOCTYPE beans PUBLIC ".//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+<beans>
+    
+    
+    <!--新增按钮配置-->
+    <bean class="nc.ui.pubapp.plugin.action.InsertActionInfo">
+    <!--actionsOfCard 表示按钮会出现在卡片状态下,actionsOfList表示会出现在列表状态下-->
+    <property name="actionContainer" ref="actionsOfCard" />
+    <!--notedit表示当前单据为非编辑状态下才会出现,edit表示编辑状态下才可以出现-->
+    <property name="actionType" value="notedit" />
+    <!--printActionGroup参数是根据BeanConfigFilePath对应的xml中找到的,作用是加载当前单据哪个按钮周围,根据名称我将按钮加在打印按钮组周围-->
+    <property name="target" ref="printMngAction" />
+    <!--before表示加载打印按钮组之前,如果填写after表示加在打印按钮组之后-->
+    <property name="pos" value="after" />
+    <!--importExcelAction客开的按钮的id-->
+    <property name="action" ref="importExcelAction" /> 
+    </bean>
+
+   <!--新增按钮-->
+    <bean class="nc.ui.pubapp.plugin.action.InsertActionInfo">
+    <property name="actionContainer" ref="actionsOfList" />
+    <property name="actionType" value="notedit" />
+    <property name="target" ref="printMngAction" />
+    <property name="pos" value="after" />
+    <property name="action" ref="importExcelAction" /> 
+    </bean>
+
+
+
+    <bean id="importExcelAction" class="nc.ui.ic.m4451.action.ImportExcelActionAction">
+        <property name="model" ref="icBizModel" />
+        <!--code按钮编码-->
+        <property name="code" value="importExcelAction" />
+    </bean>
+    
+</beans>

+ 49 - 0
ic/ic/classes/nc/ui/ic/m4455/addAction222.xml

@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="GBK"?>
+ 
+<!DOCTYPE beans PUBLIC ".//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+<beans>
+    
+    
+    <!--新增按钮配置-->
+    <bean class="nc.ui.pubapp.plugin.action.InsertActionInfo">
+    <!--actionsOfCard 表示按钮会出现在卡片状态下,actionsOfList表示会出现在列表状态下-->
+    <property name="actionContainer" ref="actionsOfCard" />
+    <!--notedit表示当前单据为非编辑状态下才会出现,edit表示编辑状态下才可以出现-->
+    <property name="actionType" value="notedit" />
+    <!--printActionGroup参数是根据BeanConfigFilePath对应的xml中找到的,作用是加载当前单据哪个按钮周围,根据名称我将按钮加在打印按钮组周围-->
+    <property name="target" ref="printMngAction" />
+    <!--before表示加载打印按钮组之前,如果填写after表示加在打印按钮组之后-->
+    <property name="pos" value="after" />
+    <!--importExcelAction客开的按钮的id-->
+    <property name="action" ref="ImportData" /> 
+    </bean>
+
+   <!--新增按钮-->
+    <bean class="nc.ui.pubapp.plugin.action.InsertActionInfo">
+    <property name="actionContainer" ref="actionsOfList" />
+    <property name="actionType" value="notedit" />
+    <property name="target" ref="printMngAction" />
+    <property name="pos" value="after" />
+    <property name="action" ref="ImportData" /> 
+    </bean>
+
+
+
+   	<!-- 导入Excel(根据模板填充数据) -->
+	<bean id="ImportData" class="nc.ui.uif2.excelimport.ImportAction">
+		<property name="model" ref="manageAppModel" />
+		<property name="importableEditor" ref="ImportExportEditor" />
+		<property name="btnName" value="导入Excel" />
+	</bean>
+	
+	
+		<!-- 导入项目编辑器 -->
+	<bean id="ImportExportEditor" class="nc.ui.uif2.excelimport.DefaultUIF2ImportableEditor">
+		<property name="billcardPanelEditor" ref="billFormEditor" />
+		<property name="addAction" ref="addAction" />
+		<property name="cancelAction" ref="cancelAction" />
+		<property name="saveAction" ref="saveAction" />
+		<property name="appModel" ref="manageAppModel" />
+	</bean>
+    
+</beans>

+ 0 - 0
ic/ic/classes/zwf.gitkeep


+ 3 - 0
ic/ic/component.xml

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

+ 0 - 0
ic/ic/resources/zwf.gitkeep


+ 164 - 0
ic/ic/src/client/nc/ui/dzgy/impexcle/tools/ImpExcleUtils.java

@@ -0,0 +1,164 @@
+package nc.ui.dzgy.impexcle.tools;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFDateUtil;
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+
+/**
+ * ImpExcleUtils:导入解析excle工具类
+ * @author	
+ * @date	
+ * @version	1.0.0
+ */
+public class ImpExcleUtils {
+
+	
+	public List<List<Object>> readExcel(File file) throws Exception {
+		String fileName = file.getName();
+		String extension = fileName.lastIndexOf(".") == -1 ? "" : fileName.substring(fileName.lastIndexOf(".") + 1);
+		if ("xls".equals(extension)) {
+			return read2003Excel(file);
+		} else if ("xlsx".equals(extension)) {
+			return read2007Excel(file);
+		} else {
+			throw new IOException("不支持的文件类型");
+		}
+	}
+
+	@SuppressWarnings("deprecation")
+	private List<List<Object>> read2003Excel(File file) throws IOException {
+		List<List<Object>> list = new LinkedList<List<Object>>();
+		HSSFWorkbook hwb = new HSSFWorkbook(new FileInputStream(file));
+		HSSFSheet sheet = hwb.getSheetAt(0);
+		Object value = null;
+		HSSFRow row = null;
+		HSSFCell cell = null;
+		for (int i = sheet.getFirstRowNum(); i <= sheet.getPhysicalNumberOfRows(); i++) {
+			row = sheet.getRow(i);
+			if (row == null) {
+				continue;
+			}
+			List<Object> linked = new LinkedList<Object>();
+			for (short j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
+				cell = row.getCell(j);
+				if (cell == null) {
+					continue;
+				}
+				DecimalFormat df = new DecimalFormat("0");
+				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+				DecimalFormat nf = new DecimalFormat("0.00");
+				switch (cell.getCellType()) {
+				case XSSFCell.CELL_TYPE_STRING: // 字符串
+					value = cell.getStringCellValue();
+					break;
+				case XSSFCell.CELL_TYPE_NUMERIC:  // 数字
+					if ("@".equals(cell.getCellStyle().getDataFormat())) {
+						value = df.format(cell.getNumericCellValue());
+					} else if ("General".equals(cell.getCellStyle().getDataFormat())) {
+						value = nf.format(cell.getNumericCellValue());
+					} else {
+						value = sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));
+					}
+					break;
+				case XSSFCell.CELL_TYPE_BOOLEAN: // Boolean
+					value = cell.getBooleanCellValue();
+				case XSSFCell.CELL_TYPE_BLANK: // 空值
+					value = "";
+					break;
+				default:
+					value = cell.toString();
+					if (value == null || "".equals(value)) {
+						continue;
+					}
+				}
+				linked.add(value);
+			}
+			list.add(linked);
+		}
+		return list;
+	}
+
+	private List<List<Object>> read2007Excel(File file) throws IOException {
+		List<List<Object>> list = new LinkedList<List<Object>>();
+		XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(file));
+		XSSFSheet sheet = xwb.getSheetAt(0);
+		
+		Object value = null;
+		XSSFRow row = null;
+		XSSFCell cell = null;
+		//循环每一行 从第5行开始
+		for (int i = 4; i <= sheet.getPhysicalNumberOfRows(); i++) {
+			row = sheet.getRow(i);
+			if (row == null) {
+				continue;
+			}
+			List<Object> linked = new LinkedList<Object>();
+			
+			//循环每一列
+			for (int j = row.getFirstCellNum() + 1; j <= row.getLastCellNum(); j++) {
+				cell = row.getCell(j);
+				if (cell == null) {
+					continue;
+				}
+				DecimalFormat df = new DecimalFormat("0");
+				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+				DecimalFormat nf = new DecimalFormat("0.000000");
+				DecimalFormat gf = new DecimalFormat(" ");
+				switch (cell.getCellType()) {
+				case XSSFCell.CELL_TYPE_STRING: // 字符串
+					if ("#END#".equals(cell.getStringCellValue())) {
+						continue;
+					}
+					value = cell.getStringCellValue().trim();
+					break;
+				case XSSFCell.CELL_TYPE_NUMERIC: //数字
+					if ("@".equals(cell.getCellStyle().getDataFormatString())) {
+						value = df.format(cell.getNumericCellValue());
+					} else if ("0.00_ ".equals(cell.getCellStyle().getDataFormatString())) {
+						value = nf.format(cell.getNumericCellValue());
+					} else if ("General".equals(cell.getCellStyle().getDataFormatString())) {
+						value = gf.format(cell.getNumericCellValue()).replace(" ", "");
+					} else if ("0_ ".equals(cell.getCellStyle().getDataFormatString())) {
+						value = gf.format(cell.getNumericCellValue()).replace(" ", "");
+					} else if ("m/d/yy".equals(cell.getCellStyle().getDataFormatString())) {
+						value = sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));
+					} else {
+						value = nf.format(cell.getNumericCellValue());
+					}
+					break;
+				case XSSFCell.CELL_TYPE_BOOLEAN: // Boolean
+					value = cell.getBooleanCellValue();
+					break;
+				case XSSFCell.CELL_TYPE_BLANK: // 空值
+					value = null ;
+					break;
+				default:
+					value = cell.toString();
+				}
+				linked.add(value);
+			}
+			if(linked == null || linked.size() == 0 || linked.get(0) == null){
+				continue;
+			}
+			if (linked.size() != 0){
+				list.add(linked);
+			}
+		}
+		return list;
+	}
+}

+ 709 - 0
ic/ic/src/client/nc/ui/ic/m4451/action/ImportExcelActionAction.java

@@ -0,0 +1,709 @@
+package nc.ui.ic.m4451.action;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.JOptionPane;
+import javax.swing.filechooser.FileSystemView;
+
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.WorkbookFactory;
+import org.apache.poi.ss.usermodel.Row;
+
+import nc.bs.dzgy.pub.db.JDBCUtils;
+import nc.bs.framework.common.InvocationInfoProxy;
+import nc.bs.framework.common.NCLocator;
+import nc.itf.ic.m4455.self.ISapplyBillMaintain;
+import nc.ui.dzgy.impexcle.tools.ImpExcleUtils;
+import nc.ui.ic.pub.model.ICBizEditorModel;
+import nc.ui.pubapp.uif2app.view.BillForm;
+import nc.ui.uif2.NCAction;
+import nc.ui.uif2.model.AbstractAppModel;
+import nc.ui.pub.beans.MessageDialog;
+import nc.ui.pub.beans.UIFileChooser;
+import nc.ui.uif2.UIState;
+import nc.vo.bd.defdoc.DefdocVO;
+import nc.vo.bd.material.MaterialVO;
+import nc.vo.bd.psn.PsndocVO;
+import nc.vo.ic.m4455.entity.SapplyBillBodyVO;
+import nc.vo.ic.m4455.entity.SapplyBillHeadVO;
+import nc.vo.ic.m4455.entity.SapplyBillVO;
+import nc.vo.jcom.lang.StringUtil;
+import nc.vo.org.DeptVO;
+import nc.vo.org.StockOrgVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.billtype.BilltypeVO;
+import nc.vo.pub.lang.UFBoolean;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.pub.lang.UFDateTime;
+import nc.vo.pub.lang.UFDouble;
+import nc.itf.uap.IUAPQueryBS;
+import nc.jdbc.framework.processor.ColumnProcessor;
+import nc.jdbc.framework.processor.MapListProcessor;
+
+import java.awt.Component;
+
+import org.apache.poi.ss.usermodel.Sheet;
+
+import nc.vo.pmpub.project.ProjectHeadVO;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.poi.ss.usermodel.Cell;
+
+public class ImportExcelActionAction extends NCAction{
+
+	/**
+	 * 导入按钮
+	 */
+	private static final long serialVersionUID = 6678424264439690539L;
+	
+	private AbstractAppModel model;
+
+	private ISapplyBillMaintain  isbmaintain=(ISapplyBillMaintain) NCLocator.getInstance().lookup(ISapplyBillMaintain.class.getName());//出库申请单接口
+	
+	private String pk_group=InvocationInfoProxy.getInstance().getGroupId();
+	
+	private String userid=InvocationInfoProxy.getInstance().getUserId();
+	
+	
+	private Map<String, StockOrgVO> orgVOMap;
+	
+	private Map<String, BilltypeVO> billTypeMap;//申请类型 
+	
+	private Map<String, PsndocVO> psndocVOMap;
+	
+	private Map<String, DeptVO> deptVOMap;
+	
+	private Map<String, ProjectHeadVO> projectHeadVOMap;
+	
+	private Map<String, DefdocVO> dfdocVOMap;
+	
+	private Map<String, MaterialVO> materialMap;
+	
+	private ArrayList<String> materCodes = new ArrayList<String>();// 用于存储物料编码
+	
+	private ArrayList<String> orgCodes = new ArrayList<String>();// 用于存储业务单元编码
+	
+	private ArrayList<String> billtypes = new ArrayList<String>();// 用于存储订单类型编码
+	
+	private ArrayList<String> psonNames = new ArrayList<String>();// 用于项目经理编码
+	
+	private ArrayList<String> deptNames = new ArrayList<String>();// 用于部门编码
+	
+	private ArrayList<String> projectNames = new ArrayList<String>();// 用于工程项目编码
+	
+	private ArrayList<String> dfdocNames = new ArrayList<String>();// 用于自定领料人编码
+	
+	public ImportExcelActionAction(){
+		super.setBtnName("导入");
+		super.setCode("importExcelAction");
+		
+	}
+	
+	@Override
+	public void doAction(ActionEvent arg0) throws Exception {
+//		MessageDialog.showHintDlg(null, "提示", "按钮点击成功");
+		
+		File file = openFile();// 打开excel
+		
+		if(null==file){
+			return;
+		}
+		
+		ImpExcleUtils impexcleutils=new ImpExcleUtils();
+		
+		 List<List<Object>> objList=impexcleutils.readExcel(file);
+		 
+		 Object restObj = initilt(objList);
+		
+		 if (restObj instanceof String) {
+//			StringUtils.setLogger("采购订单数据初始化失败,原因[" + restObj.toString() + "]");
+			throw new Exception(restObj.toString());
+		}
+		 
+		 ArrayList<SapplyBillVO> aggvos = (ArrayList<SapplyBillVO>) restObj;
+		 
+		 SapplyBillVO[] billVOs =aggvos.toArray(new SapplyBillVO[aggvos.size()]);
+		 
+		 SapplyBillVO[] newaggvos= isbmaintain.insert(billVOs);
+		
+		 MessageDialog.showHintDlg(null, "提示", "导入成功,共计:"+newaggvos.length+"条!"); 
+		
+		 
+	}
+	
+	
+	
+	/**
+	 * initilt:数据初始化
+	 * 
+	 * @author 
+	 * @date 
+	 * @param objList
+	 * @return Object
+	 * @throws BusinessException 
+	 */
+	private Object initilt(List<List<Object>> objList) throws BusinessException {
+		StringBuffer restBuf = new StringBuffer();
+		initilt_isNull(objList, restBuf);// 为空判断
+		if (restBuf.length() > 0) {
+			return restBuf.toString();
+		}
+		Object bd_restObj = initilt_IsNull_bd(objList);// 档案初始化
+		if (bd_restObj != null) {
+			return bd_restObj.toString();
+		}
+		
+		Object restObjVO = getImpPurchaseVO(objList);// 拆单汇总成VO
+		if (restObjVO instanceof String) {
+			return restObjVO.toString();
+		}
+		
+		
+		return restObjVO;
+	}
+	
+	
+	/**
+	 * initilt_IsNull_bd:档案数据初始化
+	 * 
+	 * @author 
+	 * @date 
+	 * @return Object
+	 * @throws BusinessException 
+	 */
+	private Object initilt_IsNull_bd(List<List<Object>> objList) throws BusinessException {
+		StringBuffer restBuf = new StringBuffer();
+		JDBCUtils jabcutils=new JDBCUtils();
+		if (orgCodes != null && orgCodes.size() != 0) {
+			orgVOMap = jabcutils.queryOrgVOMap(getWhereInSql("code", orgCodes));
+			if (orgVOMap == null || orgVOMap.size() == 0) {
+				restBuf.append("根据业务单元编码[" + orgCodes + "]检索NC业务单元档案为空;");
+			}
+		}
+		if (billtypes != null && billtypes.size() != 0) {
+			billTypeMap = jabcutils.querybillTypeMap(getWhereInSql("pk_billtypecode", billtypes));
+			if (billTypeMap == null || billTypeMap.size() == 0) {
+				restBuf.append("根据申请类型名称[" + billtypes + "]检索NC申请类型档案为空;").append("\n");
+			}
+		}
+
+	
+		if (psonNames != null && psonNames.size() != 0) {
+			psndocVOMap = jabcutils.queryPsndocVOMap(getWhereInSql("code", psonNames));
+			if (psndocVOMap == null || psndocVOMap.size() == 0) {
+				restBuf.append("根据项目经理编码[" + psonNames + "]检索NC人员档案为空;");
+			}
+		}
+		
+		if (deptNames != null && deptNames.size() != 0) {
+			deptVOMap = jabcutils.queryDeptVOMap(getWhereInSql("code", deptNames));
+			if (deptVOMap == null || deptVOMap.size() == 0) {
+				throw new BusinessException("根据部门编码[" + deptVOMap + "]检索NC部门档案为空;");
+			}
+			
+		}
+		
+		if (dfdocNames != null && dfdocNames.size() != 0) {
+			dfdocVOMap = jabcutils.queryProjectDefdocVOMap(getWhereInSql("bd_defdoc.code", dfdocNames));
+			if (dfdocVOMap == null || dfdocVOMap.size() == 0) {
+				throw new BusinessException("根据自定领料人编码[" + dfdocVOMap + "]检索NC自定领料人档案为空;");
+			}	
+		}
+		
+		if (materCodes != null && materCodes.size() != 0) {
+			materialMap = jabcutils.queryMaterialMap(getWhereInSql("a.code", materCodes));
+			if (materialMap == null || materialMap.size() == 0) {
+				restBuf.append("根据物料编码[" + materCodes + "]检索NC物料档案为空;");
+			}
+		}
+		
+		
+		if (projectNames != null && projectNames.size() != 0) {
+			projectHeadVOMap = jabcutils.queryProjectHeadVOMap(getWhereInSql("project_code", projectNames));
+			if (projectHeadVOMap == null || projectHeadVOMap.size() == 0) {
+				restBuf.append("根据工程项目编码[" + projectHeadVOMap + "]检索NC工程项目档案为空;");
+			}
+			
+		}
+		
+		
+		if (restBuf.length() > 0) {
+			return restBuf.toString();
+		}
+
+		for (int i = 1; i < objList.size(); i++) {
+			StringBuffer rowMsg = new StringBuffer();
+			List<Object> rowList = objList.get(i);
+			StockOrgVO orgVO = orgVOMap.get(rowList.get(1).toString());
+			if (orgVO == null) {
+				rowMsg.append("业务单元编码[" + rowList.get(1).toString() + "]检索NC业务单元档案为空;");
+			}/*else{
+				if (projectNames != null && projectNames.size() != 0) {
+					projectHeadVOMap = jabcutils.queryProjectHeadVOMap(getWhereInSql("project_code", projectNames,orgVO.getPk_stockorg()),projectHeadVOMap);
+					if (projectHeadVOMap == null || projectHeadVOMap.size() == 0) {
+						//throw new BusinessException("根据工程项目编码[" + projectHeadVOMap + "]检索NC工程项目档案为空;");
+						rowMsg.append("根据工程项目编码[" + projectHeadVOMap + "]检索NC工程项目档案为空;");
+					}
+					
+				}
+			}*/
+			
+			else{
+				
+//				Map<String, ProjectHeadVO> projectmap = jabcutils.queryProjectHeadVOMap(getprojectWhereInSql("project_code", rowList.get(6).toString(),orgVO.getPk_stockorg()));
+//				if (projectmap == null || projectmap.size()==0) {
+//					rowMsg.append(rowList.get(1)+"组织,工程项目编码[" + rowList.get(6).toString() + "]检索NC工程项目档案为空;");
+//				}else{
+//					projectHeadVOMap.putAll(projectmap);
+//				}
+				
+				//部门
+//				Map<String, DeptVO> deptMap=jabcutils.queryOrgDeptVOMap(getprojectWhereInSql("code", rowList.get(5).toString(),orgVO.getPk_stockorg()));
+//				if (deptMap == null || deptMap.size()==0) {
+//					rowMsg.append(rowList.get(1)+"组织,部门编码[" + rowList.get(5).toString() + "]检索NC部门档案为空;");
+//				}else{
+//					deptVOMap.putAll(deptMap);
+//				}
+				
+				ProjectHeadVO projectvo=projectHeadVOMap.get(orgVO.getPk_stockorg()+rowList.get(6).toString());//工程项目
+				
+				if (projectvo == null) {
+					rowMsg.append("根据"+rowList.get(1)+"组织,工程项目编码[" + rowList.get(6).toString() + "]检索NC工程项目档案为空;");
+					
+				}else if(!projectvo.getPk_org().equals(orgVO.getPk_stockorg())){
+					
+					rowMsg.append("根据"+rowList.get(1)+"组织,工程项目编码[" + rowList.get(6).toString() + "]检索NC工程项目档案为空;");
+				}
+				
+				DeptVO deptvo=deptVOMap.get(rowList.get(5).toString());//部门
+				
+				if (deptvo == null) {
+					rowMsg.append("根据"+rowList.get(1)+"组织,部门编码[" + rowList.get(5).toString() + "]检索NC部门档案为空;");
+					
+				}else if(!deptvo.getPk_org().equals(orgVO.getPk_stockorg())){
+					
+					rowMsg.append("根据"+rowList.get(1)+"组织,部门编码[" + rowList.get(5).toString() + "]检索NC部门档案为空;");
+				}
+				
+				
+					
+			}
+			
+			
+			BilltypeVO billtypeVO = billTypeMap.get(rowList.get(2).toString());
+			if (billtypeVO == null) {
+				rowMsg.append("申请类型编码[" + rowList.get(2).toString() + "]检索NC申请类型档案为空;");
+			}
+			
+			PsndocVO psndocVO = psndocVOMap.get(rowList.get(4).toString());
+			if (psndocVO == null) {
+				rowMsg.append("项目经理编码[" + rowList.get(4).toString() + "]检索NC项目经理档案为空;");
+			}
+			
+			DeptVO deptvo=deptVOMap.get(rowList.get(5).toString());
+			if (deptvo == null) {
+				rowMsg.append("部门编码[" + rowList.get(5).toString() + "]检索NC部门档案为空;");
+			}
+			
+			DefdocVO  dfdocVO= dfdocVOMap.get(rowList.get(7).toString());
+			if (dfdocVO == null) {
+				rowMsg.append("自定领料人编码[" + rowList.get(7).toString() + "]检索NC自定领料人档案为空;");
+			}
+			
+			MaterialVO material=materialMap.get(rowList.get(8).toString());
+			
+			if (material == null) {
+				rowMsg.append("物料编码[" + rowList.get(8).toString() + "]检索NC物料档案为空;");
+			}
+			
+			if (rowMsg.length() > 0) {
+				restBuf.append("第[" + i + "]行").append(rowMsg.toString());
+				continue;
+			}
+		}
+
+		if (restBuf.length() > 0) {
+			return restBuf.toString();
+		}
+		return null;
+
+	}
+	
+	
+	/**
+	 * isNull:
+	 * 
+	 * @author ningz
+	 * @date 2020年12月7日 下午2:50:47
+	 * @param objList
+	 * @param restBuf
+	 *            void
+	 */
+	private void initilt_isNull(List<List<Object>> objList, StringBuffer restBuf) {
+		for (int i = 1; i < objList.size(); i++) {
+			StringBuffer rowMsg = new StringBuffer();
+			List<Object> rowList = objList.get(i);
+
+			if (!isNotNull(rowList.get(1))) {
+				rowMsg.append("库存组织不能为空,");
+			} else {
+				orgCodes.add(rowList.get(1).toString());
+			}
+			if (!isNotNull(rowList.get(3))) {
+				rowMsg.append("申请日期不能为空,");
+			} else {
+				if (!isDate(rowList.get(3).toString())) {
+					rowMsg.append("申请日期不是YYYY-MM-DD格式,");
+				}
+			}
+			if (!isNotNull(rowList.get(2))) {
+				rowMsg.append("申请类型名称不能为空,");
+			} else {
+				billtypes.add(rowList.get(2).toString());
+			}
+			// 项目经理名称
+			if (isNotNull(rowList.get(4))) {
+				psonNames.add(rowList.get(4).toString());
+			}
+			// 申请名称
+			if (isNotNull(rowList.get(5))) {
+				deptNames.add(rowList.get(5).toString());
+			}
+			// 工程项目
+			if (isNotNull(rowList.get(6))) {
+				projectNames.add(rowList.get(6).toString());
+			}
+			
+			// 自定领料人
+			if (isNotNull(rowList.get(7))) {
+				dfdocNames.add(rowList.get(7).toString());
+			}
+						
+						
+			if (!isNotNull(rowList.get(8))) {
+				rowMsg.append("物料编码不能为空,");
+			} else {
+				materCodes.add(rowList.get(8).toString());
+			}
+			if (!isNotNull(rowList.get(9))) {
+				rowMsg.append("主数量不能为空,");
+			} else {
+				if (!isNum(rowList.get(9).toString())) {
+					rowMsg.append("主数量不是数值型,");
+				}
+			}
+
+			if (rowMsg.length() > 0) {
+				restBuf.append("第[" + (i + 1) + "]行").append(rowMsg.toString());
+			}
+		}
+	}
+	
+	
+
+
+
+	public AbstractAppModel getModel() {
+		return model;
+	}
+
+	public void setModel(AbstractAppModel model) {
+		this.model = model;
+		model.addAppEventListener(this);
+	}
+
+	@Override
+	protected boolean isActionEnable() {
+	//	UIState uiState = model.getUiState();
+		return true;
+	}
+	
+	
+	private File openFile() {
+		UIFileChooser fileDlg = new UIFileChooser();
+		FileSystemView fsv = FileSystemView.getFileSystemView();
+		fileDlg.setCurrentDirectory(fsv.getHomeDirectory());
+		
+		fileDlg.setFileFilter(new javax.swing.filechooser.FileFilter() {
+
+			public boolean accept(File f) {
+				if (f.isDirectory()
+						|| f.getName().toLowerCase().endsWith("xlsx")) {
+					return true;
+				} else {
+					return false;
+				}
+			}
+
+			public String getDescription() {
+				return "Excel文件(xlsx)";
+			}
+		}); // 过滤excel文件
+
+		if (fileDlg.showOpenDialog(getBillUI()) != UIFileChooser.APPROVE_OPTION) {
+			return null;
+		}
+
+		File fileName = fileDlg.getSelectedFile();
+		if (fileName == null || fileName.getName().equals("")) {
+			JOptionPane.showMessageDialog(getBillUI(), "选择要导入的excel文件");
+			return null;
+		}
+	
+		return fileName;
+	}
+	
+	private Component getBillUI() {
+		// TODO 自动生成的方法存根
+		return null;
+	}
+    
+
+	public  boolean isNotNull(Object str){
+		if (str == null || "".equals(str)) {
+			return false;
+		}
+		return true;
+	}
+	
+	
+	public boolean isNum(String str) {
+		if ("" == str || str == null) {
+			return false;
+		}
+		return str.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$");
+	}
+	
+	
+	public  boolean isDate(String datestr) {
+		if (datestr == null || "".equals(datestr)) {
+			return false;
+		}
+		String split = "/";
+		SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
+		if (datestr.contains("-")) {
+			split = "-";
+			formatter = new SimpleDateFormat("yyyy-MM-dd");
+		}
+		try {
+			Date date = formatter.parse(datestr);
+			if (datestr.length() != 10) {
+
+				String[] arr = datestr.split(split);
+				if (arr[1].length() != 2) {
+					arr[1] = "0" + arr[1];
+				}
+				if (arr[2].length() != 2) {
+					arr[2] = "0" + arr[2];
+				}
+				datestr = arr[0] + split + arr[1] + split + arr[2];
+			}
+			return datestr.equals(formatter.format(date));
+		} catch (Exception e) {
+			e.printStackTrace();
+			return false;
+		}
+	}
+	
+	
+	
+	public  String getprojectWhereInSql(String columnName, String wherevalue,String orgparam) {
+		StringBuffer sql = new StringBuffer();
+		sql.append(columnName).append(" in ( ");
+		sql.append("'"+wherevalue+"'");
+		sql.append(" ) ");
+		sql.append(" and pk_org='"+ orgparam +"' ");
+		return sql.toString();
+	}
+	
+	
+	
+	
+	public  String getWhereInSql(String columnName, ArrayList<String> wherevalue) {
+		if (wherevalue == null || wherevalue.size() == 0) {
+			return "";
+		}
+		StringBuffer sql = new StringBuffer();
+		sql.append(columnName).append(" in ( ");
+		for (int i = 0; i < wherevalue.size(); i++) {
+			sql.append("'").append(wherevalue.get(i) + "'").append(",");
+			if ((i + 1) % 40 == 0 && (i + 1) < wherevalue.size()) {
+				sql.deleteCharAt(sql.length() - 1);
+				sql.append(" ) or ").append(columnName).append(" in ( ");
+			}
+		}
+		sql.deleteCharAt(sql.length() - 1);
+		sql.append(" ) ");
+		
+		return sql.toString();
+	}
+	
+	
+	
+	
+	
+	
+	/**
+	 * getImpPurchaseVO:根据特定条件进行拆单汇总
+	 * 
+	 * @author 
+	 * @date 
+	 * @param objList
+	 * @return Object
+	 */
+	private Object getImpPurchaseVO(List<List<Object>> objList) {
+		ArrayList<SapplyBillVO> aggvos = new ArrayList<SapplyBillVO>();
+		StringBuffer restBuf = new StringBuffer();
+		ArrayList<String> headKeys = new ArrayList<String>();
+		ArrayList<SapplyBillHeadVO> imphList = new ArrayList<SapplyBillHeadVO>();
+		for (int i = 1; i < objList.size(); i++) {
+			List<Object> rowList = objList.get(i);
+			// 根据 库存组织+申请日期+项目经理+申请部门+工程项目+自定领料人 汇总表头数据
+			String headKey = rowList.get(1).toString() + rowList.get(2).toString() + rowList.get(3).toString() 
+					+ rowList.get(4).toString() + rowList.get(5).toString()+ rowList.get(6).toString()+ rowList.get(7).toString();
+			if (!headKeys.contains(headKey)) {
+				headKeys.add(headKey);
+				SapplyBillHeadVO imphVO = new SapplyBillHeadVO();
+				StockOrgVO orgVO = orgVOMap.get(rowList.get(1).toString());
+				imphVO.setPk_org(orgVO.getPk_stockorg());
+				imphVO.setPk_org_v(orgVO.getPk_vid());
+				imphVO.SetCissueorg(orgVO.getPk_stockorg()); //发料库存组织最新版本
+				imphVO.SetCissueorg_v(orgVO.getPk_vid()); //发料库存组织 
+				imphVO.setCorpoid(orgVO.getPk_stockorg()); 
+				imphVO.setCorpvid(orgVO.getPk_vid());
+				imphVO.setDbilldate(new UFDate(rowList.get(3).toString()));// 申请日期
+				DeptVO deptvo=deptVOMap.get(rowList.get(5).toString());
+				imphVO.setCdptid(deptvo.getPk_dept());//部门
+				imphVO.setCdptvid(deptvo.getPk_vid());//部门
+				BilltypeVO billtypeVO = billTypeMap.get(rowList.get(2).toString());
+				imphVO.setVtrantypecode(rowList.get(2).toString());//申请类型编码
+				imphVO.setCtrantypeid (billtypeVO.getPk_billtypeid());//申请类型 
+				PsndocVO psndocVO = psndocVOMap.get(rowList.get(4).toString());//项目经理
+				imphVO.setCbizid (psndocVO.getPk_psndoc());
+				ProjectHeadVO projectvo=projectHeadVOMap.get(orgVO.getPk_stockorg()+rowList.get(6).toString());//工程项目
+				imphVO.setVdef2(projectvo.getPk_project());
+				DefdocVO defdocvo= dfdocVOMap.get(rowList.get(7).toString());//自定领料人
+				imphVO.setVdef3(defdocvo.getPk_defdoc());
+				imphVO.setPk_group(pk_group);
+				imphVO.setBillmaker(userid);
+				imphVO.setCreator(userid);//创建人
+				imphVO.setCreationtime (new UFDateTime());//创建时间
+				imphVO.setFbillflag (2); //单据状态
+				imphVO.setIprintcount(0);//打印次数
+				
+				imphList.add(imphVO);
+			}
+		}
+
+		if (imphList != null && imphList.size() != 0) {
+			for (int i = 0; i < imphList.size(); i++) {
+				SapplyBillVO aggvo=new  SapplyBillVO();
+				SapplyBillHeadVO impHVO = imphList.get(i);
+				// 根据表头 库存组织+申请日期+项目经理+申请部门+工程项目+自定领料人  组装表体数据
+				String headKey = impHVO.getPk_org() + impHVO.getDbilldate().toString().substring(0, 10) + impHVO.getCbizid() +impHVO.getCdptid()+impHVO.getVdef2() + impHVO.getVdef3();
+				ArrayList<SapplyBillBodyVO> itemList = new ArrayList<SapplyBillBodyVO>();
+				for (int j = 1; j < objList.size(); j++) {
+					StringBuffer rowMsg = new StringBuffer();
+					List<Object> rowList = objList.get(j);
+					// 根据表头 库存组织+申请日期+项目经理+申请部门+工程项目+自定领料人  组装表体数据
+					StockOrgVO orgVO = orgVOMap.get(rowList.get(1).toString());
+					PsndocVO psndocVO = psndocVOMap.get(rowList.get(4).toString());//项目经理
+					DeptVO deptvo=deptVOMap.get(rowList.get(5).toString());
+					ProjectHeadVO projectvo=projectHeadVOMap.get(orgVO.getPk_stockorg()+rowList.get(6).toString());//工程项目
+					DefdocVO defdocvo= dfdocVOMap.get(rowList.get(7).toString());//自定领料人
+					String itemKey = orgVO.getPk_stockorg() + rowList.get(3).toString() + psndocVO.getPk_psndoc() + deptvo.getPk_dept() +projectvo.getPk_project()+defdocvo.getPk_defdoc();
+					if (headKey.equals(itemKey)) {
+						SapplyBillBodyVO impBVO = new SapplyBillBodyVO();
+						impBVO.setCrowno(10*(j+1)+"");
+						MaterialVO materialVO = materialMap.get(rowList.get(8).toString());
+						if (materialVO == null) {
+							rowMsg.append("物料编码[" + rowList.get(8).toString() + "]检索NC物料档案信息为空;");
+						} else {
+							/*impBVO.setCmaterialoid(materialVO.getPk_source());//物料 
+							impBVO.setCmaterialvid(materialVO.getPk_material());//物料编码 
+							impBVO.setCunitid(materialVO.getPk_measdoc());// 主单位
+							impBVO.setCastunitid(materialVO.getDef2());// 辅单位
+							impBVO.setVchangerate(materialVO.getDef1());// 换算率
+							UFDouble num = new UFDouble(rowList.get(9).toString());//主数量
+							String[] strArray = impBVO.getVchangerate().split("/");
+							UFDouble hsl = new UFDouble(strArray[0]).div(new UFDouble(strArray[1]));//换算率
+							UFDouble nastnum = num.div(hsl);//辅数量
+//							impBVO.setNnum(num.setScale(0, UFDouble.ROUND_HALF_UP));// 主数量
+//							impBVO.setNassistnum (nastnum.setScale(0, UFDouble.ROUND_HALF_UP));// 辅数量
+							impBVO.setNnum(num);// 主数量
+							impBVO.setNassistnum (nastnum);// 辅数量
+							impBVO.setCprojectid( projectvo.getPk_project());//项目 
+							impBVO.setCorpoid(orgVO.getPk_stockorg()); 
+							impBVO.setCorpvid(orgVO.getPk_vid());
+							impBVO.setIsclosed(UFBoolean.FALSE);
+							impBVO.setPk_group(pk_group);
+							impBVO.setPk_org(orgVO.getPk_stockorg());
+							impBVO.setPk_org_v(orgVO.getPk_vid());*/
+							
+							impBVO.setCmaterialoid(materialVO.getPk_source());//物料 
+							impBVO.setCmaterialvid(materialVO.getPk_material());//物料编码 
+							impBVO.setCunitid(materialVO.getPk_measdoc());// 主单位
+							
+							if(null==materialVO.getDef2() || "".equals(materialVO.getDef2())  
+									 ||  null==materialVO.getDef1() || "".equals(materialVO.getDef1())){
+								impBVO.setCastunitid(materialVO.getPk_measdoc());// 辅单位
+								impBVO.setVchangerate("1/1");// 换算率
+								UFDouble num = new UFDouble(rowList.get(9).toString());//主数量				
+								impBVO.setNnum(num);// 主数量
+								impBVO.setNassistnum (num);// 辅数量
+							}else{
+								impBVO.setCastunitid(materialVO.getDef2());// 辅单位
+								impBVO.setVchangerate(materialVO.getDef1());// 换算率
+								UFDouble num = new UFDouble(rowList.get(9).toString());//主数量
+								String[] strArray = impBVO.getVchangerate().split("/");
+								UFDouble hsl = new UFDouble(strArray[0]).div(new UFDouble(strArray[1]));//换算率
+								UFDouble nastnum = num.div(hsl);//辅数量
+								impBVO.setNnum(num);// 主数量
+								impBVO.setNassistnum (nastnum);// 辅数量
+							}
+							
+							
+							impBVO.setCprojectid( projectvo.getPk_project());//项目 
+							impBVO.setCorpoid(orgVO.getPk_stockorg()); 
+							impBVO.setCorpvid(orgVO.getPk_vid());
+							impBVO.setIsclosed(UFBoolean.FALSE);
+							impBVO.setPk_group(pk_group);
+							impBVO.setPk_org(orgVO.getPk_stockorg());
+							impBVO.setPk_org_v(orgVO.getPk_vid());
+							
+							
+							
+							
+						}
+						if (rowMsg.length() > 0) {
+							restBuf.append("根据第[" + (j + 1) + "]行").append(rowMsg.toString());
+							continue;
+						}
+						itemList.add(impBVO);
+					}
+					
+				}
+				
+				aggvo.setParentVO(impHVO);
+				aggvo.setChildrenVO(itemList.toArray(new SapplyBillBodyVO[itemList.size()]));
+				aggvos.add(aggvo);
+			}
+		}
+		if (restBuf.length() > 0) {
+			return restBuf.toString();
+		}
+		return aggvos;
+	}
+	
+}
+
+
+

+ 390 - 0
ic/ic/src/client/nc/ui/ic/m4451/action/ImportExcelActionAction2.java

@@ -0,0 +1,390 @@
+package nc.ui.ic.m4451.action;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.JOptionPane;
+import javax.swing.filechooser.FileSystemView;
+
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.WorkbookFactory;
+import org.apache.poi.ss.usermodel.Row;
+
+import nc.bs.dzgy.pub.db.JDBCUtils;
+import nc.bs.framework.common.InvocationInfoProxy;
+import nc.bs.framework.common.NCLocator;
+import nc.itf.ic.m4455.self.ISapplyBillMaintain;
+import nc.ui.dzgy.impexcle.tools.ImpExcleUtils;
+import nc.ui.ic.pub.model.ICBizEditorModel;
+import nc.ui.pubapp.uif2app.view.BillForm;
+import nc.ui.uif2.NCAction;
+import nc.ui.uif2.model.AbstractAppModel;
+import nc.ui.pub.beans.MessageDialog;
+import nc.ui.pub.beans.UIFileChooser;
+import nc.ui.uif2.UIState;
+import nc.vo.bd.defdoc.DefdocVO;
+import nc.vo.bd.psn.PsndocVO;
+import nc.vo.ic.m4455.entity.SapplyBillBodyVO;
+import nc.vo.ic.m4455.entity.SapplyBillHeadVO;
+import nc.vo.ic.m4455.entity.SapplyBillVO;
+import nc.vo.jcom.lang.StringUtil;
+import nc.vo.org.DeptVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.pub.lang.UFDateTime;
+import nc.vo.pub.lang.UFDouble;
+import nc.itf.uap.IUAPQueryBS;
+import nc.jdbc.framework.processor.ColumnProcessor;
+import nc.jdbc.framework.processor.MapListProcessor;
+
+import java.awt.Component;
+
+import org.apache.poi.ss.usermodel.Sheet;
+
+import nc.vo.pmpub.project.ProjectHeadVO;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.poi.ss.usermodel.Cell;
+
+public class ImportExcelActionAction2 extends NCAction{
+
+	/**
+	 * 导入按钮
+	 */
+	private static final long serialVersionUID = 6678424264439690539L;
+	
+	private AbstractAppModel model;
+
+	private ISapplyBillMaintain  isbmaintain=(ISapplyBillMaintain) NCLocator.getInstance().lookup(ISapplyBillMaintain.class.getName());
+	
+	private String pk_group=InvocationInfoProxy.getInstance().getGroupId();
+	
+	private String userid=InvocationInfoProxy.getInstance().getUserId();
+	
+	private Map<String, PsndocVO> psndocVOMap;
+	
+	private Map<String, DeptVO> deptVOMap;
+	
+	private Map<String, ProjectHeadVO> projectHeadVOMap;
+	
+	private Map<String, DefdocVO> dfdocVOMap;
+	
+	private ArrayList<String> psonNames = new ArrayList<String>();// 用于项目经理名称
+	
+	private ArrayList<String> deptNames = new ArrayList<String>();// 用于部门名称
+	
+	private ArrayList<String> projectNames = new ArrayList<String>();// 用于工程项目名称
+	
+	private ArrayList<String> dfdocNames = new ArrayList<String>();// 用于自定领料人名称
+	
+	public ImportExcelActionAction2(){
+		super.setBtnName("导入");
+		super.setCode("importExcelAction");
+		
+	}
+	
+	@Override
+	public void doAction(ActionEvent arg0) throws Exception {
+		MessageDialog.showHintDlg(null, "提示", "按钮点击成功");
+		
+		Workbook workbook = null;
+		String xlsfile = openFile();// 打开excel
+		if (StringUtil.isEmpty(xlsfile)) {
+			return;
+		}
+		workbook = WorkbookFactory.create(new File(xlsfile));// 获取Excle对象
+		
+		//主表
+		Sheet sheet  = workbook.getSheetAt(0);	// 获取选项卡对象 第0个选项卡
+		Row row0 = sheet.getRow(0);// 开始行初定为2
+		if (row0 == null)
+		{
+			throw new BusinessException( "表头信息为空");
+		}
+		
+		JDBCUtils jabcutils=new JDBCUtils();
+		Map<String,String> orgmap=jabcutils.obtainvo();//key 组织编码   value  组织pk
+		String ctrantypeid =jabcutils.obtainpk("pk_billtypeid", "bd_billtype", " pk_billtypecode ='4455-01' ")  ;//申请类型
+//		if (psonNames != null && psonNames.size() != 0) {
+			psndocVOMap = jabcutils.queryPsndocVOMap(getWhereInSql("name", psonNames));
+			if (psndocVOMap == null || psndocVOMap.size() == 0) {
+				throw new BusinessException("根据采购员名称[" + psonNames + "]检索NC人员档案为空;");
+			}
+//		}
+		
+		
+//		if (deptNames != null && deptNames.size() != 0) {
+			deptVOMap = jabcutils.queryDeptVOMap(getWhereInSql("name", deptNames));
+			if (deptVOMap == null || deptVOMap.size() == 0) {
+				throw new BusinessException("根据部门名称[" + deptVOMap + "]检索NC部门档案为空;");
+			}
+			
+//		}
+		
+/*//		if (projectNames != null && projectNames.size() != 0) {
+			projectHeadVOMap = jabcutils.queryProjectHeadVOMap(getWhereInSql("project_name", projectNames));
+			if (projectHeadVOMap == null || projectHeadVOMap.size() == 0) {
+				throw new BusinessException("根据工程项目名称[" + projectHeadVOMap + "]检索NC工程项目档案为空;");
+			}
+			
+//		}
+		
+//		if (dfdocNames != null && dfdocNames.size() != 0) {
+			projectHeadVOMap = jabcutils.queryProjectHeadVOMap(getWhereInSql("name", dfdocNames));
+			if (dfdocVOMap == null || dfdocVOMap.size() == 0) {
+				throw new BusinessException("根据自定领料人名称[" + dfdocVOMap + "]检索NC自定领料人档案为空;");
+			}	
+//		}
+*/			
+			
+			//获取有数据的行数
+			int rowCount = sheet.getPhysicalNumberOfRows();
+			//获取有数据的列数
+			int iColNum =row0.getPhysicalNumberOfCells();
+			
+			List<SapplyBillHeadVO> lisheadvos=new ArrayList<SapplyBillHeadVO>();
+			
+			for (int i = 1; i <= rowCount; i++)
+			{
+				SapplyBillHeadVO  headvo=new SapplyBillHeadVO ();
+				getDefaultValue(headvo,ctrantypeid);//默认值
+				Row rowTmp = sheet.getRow(i);
+				//逐列读取
+				for (int j = 0; j < iColNum ; j++)
+				{
+					Cell cell = rowTmp.getCell(j);
+					Cell cell2 =sheet.getRow(0).getCell((short) j);//sheet.getRow(0):第一行
+					String keyhang=getCellValue(cell2) == null ? null : getCellValue(cell2).toString();
+					if(cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
+						Object cellValue = getCellValue(cell);
+						String value=cellValue == null ? null : cellValue.toString();
+						
+						switch (j){
+						//id
+						case  0  :
+							
+						
+							  break;
+						
+						//库存组织	  
+						case  1  :
+							headvo.setPk_org(orgmap.get(value));
+							headvo.SetCissueorg(orgmap.get(value)); //发料库存组织最新版本
+							break;	  
+						
+					   //申请日期
+						case  2  :
+							headvo.setDbilldate(new UFDate(value));
+							break;	
+							  
+						//项目经理	  
+						case  3  :
+							PsndocVO psndocVO = psndocVOMap.get(value);
+							if (psndocVO != null) {
+								headvo.setCbizid(psndocVO.getPk_psndoc());
+							}
+							  break;
+							  
+						//申请部门	  
+						case  4  :
+							DeptVO deptvo= deptVOMap.get(value);
+							if (deptvo != null) {
+								headvo.setCdptid(deptvo.getPk_dept());
+								headvo.setCdptvid(deptvo.getPk_vid());
+							}
+							  break;
+							
+						//工程项目	  
+						case  5  :
+							
+							ProjectHeadVO projectvo=projectHeadVOMap.get(value);
+							if (projectvo != null) {
+								headvo.setVdef2(projectvo.getPk_project());
+							}
+							  break;
+						
+						//自定领料人
+						case  6  :
+							DefdocVO defdocvo= dfdocVOMap.get(value);
+							
+							if (defdocvo != null) {
+								headvo.setVdef3(defdocvo.getPk_defdoc());
+							}
+							  break;	  
+							  
+						 default  :	
+						  
+							 if((null==keyhang)|| "".equals(keyhang)){
+								 throw new BusinessException( i+"行,"+j+"列,导入文件数据格式不正确!" +
+											"请检查【"+keyhang+"】是否存在!"); 
+								 
+							 }
+							  
+							  break;
+						
+						}
+						
+					}
+					
+				}
+				
+			}
+		
+	}
+	
+	
+
+
+
+	public AbstractAppModel getModel() {
+		return model;
+	}
+
+	public void setModel(AbstractAppModel model) {
+		this.model = model;
+		model.addAppEventListener(this);
+	}
+
+	@Override
+	protected boolean isActionEnable() {
+	//	UIState uiState = model.getUiState();
+		return true;
+	}
+	
+	
+	private String openFile() {
+		UIFileChooser fileDlg = new UIFileChooser();
+		FileSystemView fsv = FileSystemView.getFileSystemView();
+		fileDlg.setCurrentDirectory(fsv.getHomeDirectory());
+		
+		fileDlg.setFileFilter(new javax.swing.filechooser.FileFilter() {
+
+			public boolean accept(File f) {
+				if (f.isDirectory()
+						|| f.getName().toLowerCase().endsWith("xls")) {
+					return true;
+				} else {
+					return false;
+				}
+			}
+
+			public String getDescription() {
+				return "Excel文件(xls)";
+			}
+		}); // 过滤excel文件
+
+		if (fileDlg.showOpenDialog(getBillUI()) != UIFileChooser.APPROVE_OPTION) {
+			return null;
+		}
+
+		File fileName = fileDlg.getSelectedFile();
+		if (fileName == null || fileName.getName().equals("")) {
+			JOptionPane.showMessageDialog(getBillUI(), "选择要导入的excel文件");
+			return null;
+		}
+		return fileName.getAbsolutePath();
+	//	return fileName;
+	}
+	
+	private Component getBillUI() {
+		// TODO 自动生成的方法存根
+		return null;
+	}
+    
+
+	public Object getCellValue(Cell cell)
+	{
+
+		if (cell == null)
+			return null;
+		String strval = null;
+		switch (cell.getCellType())
+		{
+			case HSSFCell.CELL_TYPE_NUMERIC:
+
+				double value = cell.getNumericCellValue();
+				if (((int) value) == value)
+				{// integer
+					return Integer.valueOf((int) value);
+				}
+				return new UFDouble(value);
+
+			case HSSFCell.CELL_TYPE_STRING:
+				// 处理空格的情况
+				strval = cell.getStringCellValue();
+				strval = (strval == null) || (strval.trim().length() < 1) ? null : strval.trim();
+				return strval;
+
+			case HSSFCell.CELL_TYPE_BLANK:
+
+				return null;
+
+			case HSSFCell.CELL_TYPE_BOOLEAN:
+				Object strval0 = cell.getBooleanCellValue();
+				if (strval0 != null)
+				{
+					String o = strval0.toString().trim();
+					return o;
+				}
+				return null;
+			default:
+				return null;
+		}
+	}
+
+	
+	/**
+	 * 
+	 * @param headvo
+	 * @param ctrantypeid 申请类型
+	 */
+	
+	public void getDefaultValue (SapplyBillHeadVO  headvo,String ctrantypeid){
+		headvo.setPk_group(pk_group);
+		headvo.setBillmaker(userid);
+		headvo.setCreator(userid);//创建人
+		headvo.setCreationtime (new UFDateTime());//创建时间
+		headvo.setVtrantypecode("4455-01");//申请类型编码
+		headvo.setCtrantypeid(ctrantypeid); //申请类型 
+		headvo.setFbillflag (2); //单据状态
+		headvo.setIprintcount(0);//打印次数
+	}
+	
+	
+
+	
+	private  SapplyBillBodyVO   getBodyvos(){
+		
+		
+		return null;
+	}
+	
+	
+	public  String getWhereInSql(String columnName, ArrayList<String> wherevalue) {
+		if (wherevalue == null || wherevalue.size() == 0) {
+			return "";
+		}
+		StringBuffer sql = new StringBuffer();
+		sql.append(columnName).append(" in ( ");
+		for (int i = 0; i < wherevalue.size(); i++) {
+			sql.append("'").append(wherevalue.get(i) + "'").append(",");
+			if ((i + 1) % 40 == 0 && (i + 1) < wherevalue.size()) {
+				sql.deleteCharAt(sql.length() - 1);
+				sql.append(" ) or ").append(columnName).append(" in ( ");
+			}
+		}
+		sql.deleteCharAt(sql.length() - 1);
+		sql.append(" ) ");
+		return sql.toString();
+	}
+	
+	
+}
+
+
+

+ 562 - 0
ic/ic/src/client/nc/ui/ic/m4455/SapplyBill_Org.xml

@@ -0,0 +1,562 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+<beans>
+	<!-- 引入通用配置 -->
+	<!-- extends nc/ui/ic/general/model/config/GeneralCommon.xml -->
+
+	<!-- 自定义项、自由辅助属性参数 -->
+	<bean id="queryParams1" class="nc.ui.uif2.userdefitem.QueryParam">
+		<property name="mdfullname" value="ic.SapplyBillHeadVO" />
+	</bean>
+	<bean id="queryParams2" class="nc.ui.uif2.userdefitem.QueryParam">
+		<property name="mdfullname" value="ic.SapplyBillBodyVO" />
+	</bean>
+	<bean id="userQueryParams1" class="nc.ui.uif2.editor.UserdefQueryParam">
+		<property name="mdfullname" value="ic.SapplyBillHeadVO" />
+		<property name="pos" value="0" />
+		<property name="prefix" value="vdef" />
+	</bean>
+	<bean id="userQueryParams2" class="nc.ui.uif2.editor.UserdefQueryParam">
+		<property name="mdfullname" value="ic.SapplyBillBodyVO" />
+		<property name="pos" value="1" />
+		<property name="prefix" value="vbdef" />
+	</bean>
+	<!-- 注册分页 -->
+	<bean id="pageQuery" class="nc.ui.ic.general.model.ICGenRevisePageService">
+		<property name="voClassName" value="nc.vo.ic.m4455.entity.SapplyBillVO" />
+		<property name="billType" value="4455" />
+	</bean>
+
+	<!-- 应用服务类,负责进行模型操作的处理 -->
+	<bean id="manageModelService" class="nc.ui.ic.m4455.model.SapplyBillModelService">
+		<!--<property name="icUIContext" ref="icUIContext"></property> <property 
+			name="voClass" value="nc.vo.ic.m4455.entity.SapplyBillVO" /> -->
+	</bean>
+
+	<!-- 管理应用模型 -->
+	<bean id="icBizModel" class="nc.ui.ic.general.model.ICGenBizModel">
+		<property name="service" ref="manageModelService" />
+		<property name="businessObjectAdapterFactory" ref="boadatorfactory" />
+		<property name="icUIContext" ref="icUIContext" />
+		<property name="billType" value="4455" />
+		<!-- 启用权限控制 -->
+		<property name="powerValidate" value="true" />
+	</bean>
+	<!-- 
+	<bean id="besideApproveForm" class="nc.ui.pf.workflownote.beside.BesideApproveForm">
+		<property name="model" ref="icBizModel"></property>
+		<property name="besideapproveAction" ref="approveAction"></property>
+		<property name="besideunapproveaction" ref="unApproveAction"></property>
+	</bean>
+
+	<bean id="besideHistoryForm" class="nc.ui.pf.workflownote.beside.BesideHistoryForm">
+		<property name="model" ref="icBizModel"></property>
+	</bean>
+
+	<bean id="besideHintMessageForm" class="nc.ui.pf.workflownote.beside.BesideHintMessageForm">
+		<property name="model" ref="icBizModel"></property>
+	</bean>
+	-->
+	<!-- 侧边栏 -->
+	<!-- 
+	<bean id="multiBesideWidget" class="nc.ui.uif2.components.widget.MultiBesideWidget"
+		init-method="initUI">
+		<property name="model" ref="icBizModel"></property>
+		<property name="besideWidgetInfoMap">
+			<map>
+				<entry>
+					<key>
+						<bean class="nc.ui.uif2.I18nFB">
+							<property name="resDir" value="uif2" />
+							<property name="resId" value="ActionRegistry-000055" />
+							<property name="defaultValue" value="审批" />
+						</bean>
+					</key>
+					<list>
+						<ref bean="besideApproveForm" />
+						<ref bean="besideHintMessageForm" />
+						<ref bean="besideHistoryForm" />
+					</list>
+				</entry>
+			</map>
+		</property>
+	</bean>
+	 -->
+	<!-- 卡片部分,包含翻页按钮、卡片编辑器、存量面板 、条码输入面板 -->
+	<bean id="vscard" class="nc.ui.uif2.tangramlayout.node.VSNode">
+		<property name="up">
+			<bean class="nc.ui.uif2.tangramlayout.node.CNode">
+				<property name="component" ref="cardInfoPnl" />
+			</bean>
+		</property>
+		<property name="down">
+			<bean class="nc.ui.uif2.tangramlayout.node.VSNode">
+				<property name="name">
+					<bean class="nc.ui.uif2.I18nFB">
+						<property name="resDir" value="common" />
+						<property name="resId" value="UC001-0000106" />
+						<property name="defaultValue" value="卡片" />
+					</bean>
+				</property>
+				<property name="up">
+					<bean class="nc.ui.uif2.tangramlayout.node.CNode">
+						<property name="name">
+							<bean class="nc.ui.uif2.I18nFB">
+								<property name="resDir" value="common" />
+								<property name="resId" value="UC001-0000106" />
+								<property name="defaultValue" value="卡片" />
+							</bean>
+						</property>
+						<property name="component" ref="card" />
+					</bean>
+				</property>
+				<property name="down">
+					<!-- 条码输入面板 -->
+					<bean class="nc.ui.uif2.tangramlayout.node.CNode">
+						<property name="component" ref="barcodecard" />
+					</bean>
+				</property>
+				<property name="dividerLocation" value="0.95f" />
+			</bean>
+		</property>
+		<property name="dividerLocation" value="30f" />
+	</bean>
+
+	<!--界面元素 ########################################################### -->
+	<bean id="container" class="nc.ui.uif2.TangramContainer"
+		init-method="initUI">
+		<property name="tangramLayoutRoot" ref="vsnodequery" />
+		<property name="model" ref="icBizModel" />
+	</bean>
+
+	<bean id="addFrom422XAction" class="nc.ui.ic.m4455.action.AddFrom442XAction">
+		<property name="editorModel" ref="icBizEditorModel" />
+		<property name="sourceBillType" value="422X" />
+		<property name="sourceBillName">
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="4008001_0" />
+				<property name="resId" value="04008001-0491" />
+				<property name="defaultValue" value="参照物资需求申请单" />
+			</bean>
+		</property>
+		<property name="destBillType" value="4455" />
+		<property name="transferViewProcessor" ref="transferViewProcessor" />
+	</bean>
+	<!-- 新增菜单 -->
+	<bean id="addMenu" class="nc.funcnode.ui.action.MenuAction">
+		<property name="code" value="MaintainMenu" />
+		<property name="name">
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="4008001_0" />
+				<property name="resId" value="04008001-0739" />
+				<property name="defaultValue" value="新增" />
+			</bean>
+		</property>
+		<property name="actions">
+			<list>
+				<!-- 自制 -->
+				<ref bean="selfAddAction" />
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 参照物资需求申请单 -->
+				<ref bean="addFrom422XAction" />
+			</list>
+		</property>
+	</bean>
+	<!-- 行关闭/打开控制菜单 -->
+	<bean id="rowCtrlMenu" class="nc.funcnode.ui.action.GroupAction">
+		<property name="code">
+			<value>rowCtrlMenu</value>
+		</property>
+		<property name="name">
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="4008001_0" />
+				<property name="resId" value="04008001-0381" />
+				<property name="defaultValue" value="行关闭" />
+			</bean>
+		</property>
+		<property name="actions">
+			<list>
+				<ref bean="rowCloseAction" />
+				<ref bean="rowOpenAction" />
+			</list>
+		</property>
+	</bean>
+	<!-- 行关闭 -->
+	<bean id="rowCloseAction" class="nc.ui.ic.m4455.action.RowCloseAction">
+		<property name="billForm" ref="card" />
+		<property name="list" ref="list" />
+		<property name="editorModel" ref="icBizEditorModel" />
+	</bean>
+	<!-- 行打开 -->
+	<bean id="rowOpenAction" class="nc.ui.ic.m4455.action.RowOpenAction">
+		<property name="billForm" ref="card" />
+		<property name="list" ref="list" />
+		<property name="editorModel" ref="icBizEditorModel" />
+	</bean>
+
+	<!-- 修改动作 -->
+	<bean id="editAction" class="nc.ui.ic.m4455.action.SapplyBillEditAction">
+		<property name="model" ref="icBizModel" />
+		<property name="editorModel" ref="icBizEditorModel" />
+		<property name="interceptor">
+			<ref bean="cardInterceptor" />
+		</property>
+	</bean>
+
+	<bean id="approveAction" class="nc.ui.ic.m4455.action.SapplyBillApproveAction">
+		<property name="model" ref="icBizModel" />
+		<property name="editorModel" ref="icBizEditorModel" />
+	</bean>
+
+	<bean id="unApproveAction" class="nc.ui.ic.m4455.action.SapplyBillUnApproveAction">
+		<property name="model" ref="icBizModel" />
+		<property name="editorModel" ref="icBizEditorModel" />
+	</bean>
+
+	<!-- 单据复制动作 -->
+	<bean id="copyAction" class="nc.ui.ic.m4455.action.CopyAction">
+		<property name="model" ref="icBizModel" />
+		<property name="editorModel" ref="icBizEditorModel" />
+		<property name="editor" ref="card" />
+		<property name="interceptor">
+			<ref bean="cardInterceptor" />
+		</property>
+	</bean>
+
+	<!-- 现存量面板显示与隐藏动作 -->
+	<!--<bean id="displayOrhideAction" class="nc.ui.ic.m4455.action.DisplayOrhideActionFor4455">
+		<property name="editorModel" ref="icBizEditorModel" />
+	</bean>
+	-->
+	<!-- 普通单审批按钮列表 -->
+	<bean id="approveActionMenu" class="nc.funcnode.ui.action.GroupAction">
+		<property name="code" value="ApproveMenu" />
+		<property name="actions">
+			<list>
+				<ref bean="approveAction" />
+				<ref bean="unApproveAction" />
+				<ref bean="separatorAction" />
+				<ref bean="approvingStatusAction" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- 审批流状态 -->
+	<bean id="approvingStatusAction" class="nc.ui.ic.pf.action.PFApproveStatusInfoActionForIC">
+		<property name="model" ref="icBizModel" />
+	</bean>
+	<!-- 联查动作菜单(浏览状态) -->
+	<bean id="linkQryBrowseGroupAction" class="nc.funcnode.ui.action.MenuAction">
+		<property name="code">
+			<value>linkQryAction</value>
+		</property>
+		<property name="name">
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="4008001_0" />
+				<property name="resId" value="04008001-0742" />
+				<property name="defaultValue" value="联查" />
+			</bean>
+		</property>
+		<property name="actions">
+			<list>
+				<ref bean="linkQryAction" />
+				<bean class="nc.funcnode.ui.action.SeparatorAction" />
+				<ref bean="displayOrhideAction" />
+			</list>
+		</property>
+	</bean>
+	<!-- 联查动作菜单(编辑状态) -->
+	<bean id="linkQryEditGroupAction" class="nc.funcnode.ui.action.MenuAction">
+		<property name="code">
+			<value>linkQryAction</value>
+		</property>
+		<property name="name">
+			<bean class="nc.ui.uif2.I18nFB">
+				<property name="resDir" value="4008001_0" />
+				<property name="resId" value="04008001-0742" />
+				<property name="defaultValue" value="联查" />
+			</bean>
+		</property>
+		<property name="actions">
+			<list>
+				<ref bean="displayOrhideAction" />
+			</list>
+		</property>
+	</bean>
+	<!-- 打印菜单 -->
+	<bean id="printMngAction" class="nc.funcnode.ui.action.GroupAction">
+		<property name="code">
+			<value>printMngAction</value>
+		</property>
+		<property name="actions">
+			<list>
+				<ref bean="templatePrintAction" />
+				<ref bean="templatePreviewAction" />
+				<ref bean="outputAction" />
+				<bean class="nc.funcnode.ui.action.SeparatorAction" />
+				<ref bean="mergerShowAction" />
+				<ref bean="printCountQueryAction" />
+			</list>
+		</property>
+	</bean>
+	
+	<!-- 打印次数查询 -->
+	<bean id="printCountQueryAction" class="nc.ui.ic.pub.action.ICPrintCountQueryAction">
+	<!-- 单据日期属性名称 -->
+	    <property name="billdateFieldName" value=""/>
+	    <property name="model" ref="icBizModel" />
+	</bean>
+
+	<bean id="UIProcesorInfo" class="nc.ui.ic.m4455.deal.SapplyBillUIProcessorInfo" />
+	<!-- 界面布局总装########################################################### -->
+	<!-- 此bean不是必须的,如果没有各个界面按钮的差异,可以将一下三个bean都去掉 -->
+	<bean id="toftpanelActionContributors" class="nc.ui.uif2.actions.ActionContributors">
+		<property name="contributors">
+			<list>
+				<ref bean="actionsOfList" />
+				<ref bean="actionsOfCard" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- 构造方法中传入的界面显示时,配置的Action才可见 -->
+	<bean id="actionsOfList" class="nc.ui.uif2.actions.StandAloneToftPanelActionContainer">
+		<constructor-arg ref="list" />
+		<!-- 可以配置非编辑状态下和编辑状态下分别可见的Action,没有此需求时可以配置得一样 -->
+		<property name="actions">
+			<list>
+				<ref bean="addMenu" />
+				<ref bean="editAction" />
+				<ref bean="deleteAction" />
+				<!-- 复制 -->
+				<ref bean="copyAction" />
+
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 查询 -->
+				<ref bean="queryAction" />
+				<!-- 刷新 -->
+				<ref bean="refreshAction" />
+
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 提交 -->
+				<ref bean="commitActionMenu" />
+				<!-- 审批 -->
+				<ref bean="approveActionMenu" />
+
+				<!-- 行打开/关闭 -->
+				<ref bean="rowCtrlMenu" />
+
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 联查 -->
+				<ref bean="linkQryBrowseGroupAction" />
+
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 打印功能 -->
+				<ref bean="printMngAction" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- 构造方法中传入的界面显示时,配置的Action才可见 -->
+	<bean id="actionsOfCard" class="nc.ui.uif2.actions.StandAloneToftPanelActionContainer">
+		<constructor-arg ref="card" />
+		<property name="model" ref="icBizModel" />
+		<!-- 可以配置非编辑状态下和编辑状态下分别可见的Action,没有此需求时可以配置得一样 -->
+		<property name="actions">
+			<list>
+				<ref bean="addMenu" />
+				<ref bean="editAction" />
+				<ref bean="deleteAction" />
+				<!-- 复制 -->
+				<ref bean="copyAction" />
+
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 查询 -->
+				<ref bean="queryAction" />
+				<!-- 刷新 -->
+				<ref bean="refreshCardAction" />
+
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 提交 -->
+				<ref bean="commitActionMenu" />
+
+
+				<!-- 审批 -->
+				<ref bean="approveActionMenu" />
+
+
+				<!-- 行打开/关闭 -->
+				<ref bean="rowCtrlMenu" />
+
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 联查 -->
+				<ref bean="linkQryBrowseGroupAction" />
+
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 打印功能 -->
+				<ref bean="printMngAction" />
+			</list>
+		</property>
+		<property name="editActions">
+			<list>
+				<ref bean="saveAction" />
+				<ref bean="separatorAction" />
+				<!-- 提交 -->
+				<ref bean="savecommitAction" />
+				<ref bean="separatorAction" />
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<ref bean="cancelAction" />
+				<!-- 分割 -->
+				<ref bean="separatorAction" />
+				<!-- 联查 -->
+				<ref bean="linkQryEditGroupAction" />
+			</list>
+		</property>
+	</bean>
+
+
+	<!-- 出库申请单查询对话框初始化处理 -->
+	<bean id="qryDLGInitializer" class="nc.ui.ic.m4455.deal.QueryConditionDLGWrapper">
+		<property name="model" ref="icBizModel" />
+	</bean>
+
+	<!-- 消息中心数据监听 -->
+	<bean name="InitDataListener"
+		class="nc.ui.pubapp.uif2app.model.DefaultFuncNodeInitDataListener">
+		<property name="queryAction" ref="queryAction" />
+		<property name="model" ref="icBizModel"></property>
+		<!-- VO的类名 -->
+		<property name="voClassName" value="nc.vo.ic.m4455.entity.SapplyBillVO" />
+		<!-- 打开节点节点后要显示的界面 -->
+		<property name="autoShowUpComponent" ref="card" />
+		<property name="processorMap">
+			<map>
+				<entry>
+					<key>
+						<value>89</value>
+					</key>
+					<!-- 查询多PK联查 -->
+					<bean id="icGenMutiPkLinkQuery" class="nc.ui.ic.inandoutui.linkquery.ICGenMutiPkLinkQuery">
+						<property name="model" ref="icBizModel" />
+						<property name="autoShowUpComponent" ref="list" />
+						<property name="voClass" value="nc.vo.ic.m4455.entity.SapplyBillVO" />
+					</bean>
+				</entry>
+				<entry key="426">
+					<bean class="nc.ui.ic.m4455.deal.SapplyInitDataProcessor">
+						<property name="model" ref="icBizModel" />
+						<property name="autoShowUpComponent" ref="card" />
+						<property name="editorModel" ref="icBizEditorModel" />
+					</bean>
+				</entry>
+			</map>
+		</property>
+	</bean>
+
+	<!-- 出库申请单重写事件 -->
+	<bean id="cardLoadDataHandler" class="nc.ui.ic.m4455.handler.SapplyBillLoadDataEventHandler" />
+
+	<bean id="cmaterialvidHandler" class="nc.ui.ic.m4455.handler.CmaterialvidHandlerFor4455" />
+
+	<bean id="vbatchcodeHandler" class="nc.ui.ic.m4455.handler.VbatchcodeHandlerFor4455" />
+
+	<bean id="cprojectidHandler" class="nc.ui.ic.m4455.handler.CprojectidHandler" />
+	<bean id="cprojecttaskidHandler" class="nc.ui.ic.m4455.handler.CprojecttaskidHandler" />
+	<bean id="cmffileidHandler" class="nc.ui.ic.m4455.handler.CmffileidHandlerFor4455" />
+	<bean id="pk_orgHandler" class="nc.ui.ic.m4455.handler.Pk_orgHandler">
+		<property name="editorModel" ref="icBizEditorModel" />
+		<property name="context" ref="icUIContext" />
+	</bean>
+
+	<!-- 编辑事件处理 -->
+	<bean id=" childCardEditHandlerMap" class="nc.ui.ic.pub.handler.card.ICCardEditEventHandlerMap">
+		<property name="handlerMap">
+			<map>
+				<entry key="cissueorg">
+					<bean class="nc.ui.ic.m4455.handler.CissueOrgHandler" />
+				</entry>
+				<entry key="cwastewarehouseid">
+					<bean class="nc.ui.ic.m4455.handler.CwastewarehouseidHandler" />
+				</entry>
+				<entry key="cmffileid">
+					<ref bean="cmffileidHandler"/>
+				</entry>
+				<entry key="cprojectid">
+					<ref bean="cprojectidHandler" />
+				</entry>
+				<entry key="cprojecttaskid">
+					<ref bean="cprojecttaskidHandler" />
+				</entry>
+				<entry key="pk_cbsnode">
+					<bean class="nc.ui.ic.m4455.handler.Pk_cbsnodeHandlerFor4455" />
+				</entry>
+				<entry key="cconstructvendorid">
+					<bean class="nc.ui.ic.m4455.handler.CconstructvendoridHandler" />
+				</entry>
+			</map>
+		</property>
+	</bean>
+
+	<!-- "新增"下拉菜单的信息加载bean -->
+	<bean id="pfAddInfoLoader" class="nc.ui.pubapp.uif2app.actions.PfAddInfoLoader">
+		<property name="billType" value="4455" />
+		<property name="model" ref="icBizModel" />
+	</bean>
+
+	<!--	转单后公共代码处理 -转单精度处理-精度控制  -->
+    <bean id="scalePrcStrategy" class="nc.ui.ic.m4455.deal.SapplyBillScaleProcessor">
+    </bean>
+	<!-- 自由项、自定义项组件的卡片配置 -->
+	<bean id="userdefAndMarAsstCardPreparator" class="nc.ui.pubapp.uif2app.view.CompositeBillDataPrepare">
+		<property name="billDataPrepares">
+			<list>
+				<ref bean="userdefitemPreparator" />
+				<ref bean="marAsstPreparator" />
+				<ref bean="marProdAsstPreparator" />
+				<!-- <ref bean="bcuserdefitemPreparator"/> -->
+			</list>
+		</property>
+	</bean>
+
+	<!-- 自由项、自定义项组件的列表配置 -->
+	<bean id="userdefAndMarAsstListPreparator" class="nc.ui.pubapp.uif2app.view.CompositeBillListDataPrepare">
+		<property name="billListDataPrepares">
+			<list>
+				<ref bean="userdefitemlistPreparator" />
+				<ref bean="marProdAsstPreparator" />
+				<ref bean="marAsstPreparator" />
+				<!-- <ref bean="bcuserdefitemlistPreparator"/> -->
+			</list>
+		</property>
+	</bean>
+	<!-- 成本自由项组件的配置 -->
+	<bean id="marProdAsstPreparator"
+		class="nc.ui.pubapp.uif2app.view.material.assistant.MarAsstPreparator">
+		<property name="model" ref="icBizModel" />
+		<property name="container" ref="userdefitemContainer" />
+		<property name="prefix" value="vprodfree" />
+		<property name="materialField" value="ccostobjectid" />
+		<property name="projectField" value="cprodprojectid" />
+		<property name="supplierField" value="cprodvendorid" />
+		<property name="productorField" value="cprodproductorid" />
+		<property name="customerField" value="cprodasscustid" />
+	</bean>
+
+	<!-- 交叉校验规则 -->
+	<bean id="crossRuleMediator" class="nc.ui.scmpub.listener.crossrule.CrossRuleMediator"
+		init-method="init">
+		<property name="model" ref="icBizModel" />
+		<property name="billType" value="4455" />
+	</bean> 
+</beans>

+ 38 - 0
ic/ic/src/client/nc/ui/ic/m4455/addAction.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="GBK"?>
+ 
+<!DOCTYPE beans PUBLIC ".//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+<beans>
+    
+    
+    <!--新增按钮配置-->
+    <bean class="nc.ui.pubapp.plugin.action.InsertActionInfo">
+    <!--actionsOfCard 表示按钮会出现在卡片状态下,actionsOfList表示会出现在列表状态下-->
+    <property name="actionContainer" ref="actionsOfCard" />
+    <!--notedit表示当前单据为非编辑状态下才会出现,edit表示编辑状态下才可以出现-->
+    <property name="actionType" value="notedit" />
+    <!--printActionGroup参数是根据BeanConfigFilePath对应的xml中找到的,作用是加载当前单据哪个按钮周围,根据名称我将按钮加在打印按钮组周围-->
+    <property name="target" ref="printMngAction" />
+    <!--before表示加载打印按钮组之前,如果填写after表示加在打印按钮组之后-->
+    <property name="pos" value="after" />
+    <!--importExcelAction客开的按钮的id-->
+    <property name="action" ref="importExcelAction" /> 
+    </bean>
+
+   <!--新增按钮-->
+    <bean class="nc.ui.pubapp.plugin.action.InsertActionInfo">
+    <property name="actionContainer" ref="actionsOfList" />
+    <property name="actionType" value="notedit" />
+    <property name="target" ref="printMngAction" />
+    <property name="pos" value="after" />
+    <property name="action" ref="importExcelAction" /> 
+    </bean>
+
+
+
+    <bean id="importExcelAction" class="nc.ui.ic.m4451.action.ImportExcelActionAction">
+        <property name="model" ref="icBizModel" />
+        <!--code按钮编码-->
+        <property name="code" value="importExcelAction" />
+    </bean>
+    
+</beans>

+ 49 - 0
ic/ic/src/client/nc/ui/ic/m4455/addAction222.xml

@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="GBK"?>
+ 
+<!DOCTYPE beans PUBLIC ".//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+<beans>
+    
+    
+    <!--新增按钮配置-->
+    <bean class="nc.ui.pubapp.plugin.action.InsertActionInfo">
+    <!--actionsOfCard 表示按钮会出现在卡片状态下,actionsOfList表示会出现在列表状态下-->
+    <property name="actionContainer" ref="actionsOfCard" />
+    <!--notedit表示当前单据为非编辑状态下才会出现,edit表示编辑状态下才可以出现-->
+    <property name="actionType" value="notedit" />
+    <!--printActionGroup参数是根据BeanConfigFilePath对应的xml中找到的,作用是加载当前单据哪个按钮周围,根据名称我将按钮加在打印按钮组周围-->
+    <property name="target" ref="printMngAction" />
+    <!--before表示加载打印按钮组之前,如果填写after表示加在打印按钮组之后-->
+    <property name="pos" value="after" />
+    <!--importExcelAction客开的按钮的id-->
+    <property name="action" ref="ImportData" /> 
+    </bean>
+
+   <!--新增按钮-->
+    <bean class="nc.ui.pubapp.plugin.action.InsertActionInfo">
+    <property name="actionContainer" ref="actionsOfList" />
+    <property name="actionType" value="notedit" />
+    <property name="target" ref="printMngAction" />
+    <property name="pos" value="after" />
+    <property name="action" ref="ImportData" /> 
+    </bean>
+
+
+
+   	<!-- 导入Excel(根据模板填充数据) -->
+	<bean id="ImportData" class="nc.ui.uif2.excelimport.ImportAction">
+		<property name="model" ref="manageAppModel" />
+		<property name="importableEditor" ref="ImportExportEditor" />
+		<property name="btnName" value="导入Excel" />
+	</bean>
+	
+	
+		<!-- 导入项目编辑器 -->
+	<bean id="ImportExportEditor" class="nc.ui.uif2.excelimport.DefaultUIF2ImportableEditor">
+		<property name="billcardPanelEditor" ref="billFormEditor" />
+		<property name="addAction" ref="addAction" />
+		<property name="cancelAction" ref="cancelAction" />
+		<property name="saveAction" ref="saveAction" />
+		<property name="appModel" ref="manageAppModel" />
+	</bean>
+    
+</beans>

+ 0 - 0
ic/ic/src/private/zwf.gitkeep


+ 310 - 0
ic/ic/src/public/nc/bs/dzgy/pub/db/JDBCUtils.java

@@ -0,0 +1,310 @@
+package nc.bs.dzgy.pub.db;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import nc.bs.framework.common.InvocationInfoProxy;
+import nc.bs.framework.common.NCLocator;
+import nc.itf.uap.IUAPQueryBS;
+import nc.jdbc.framework.processor.BeanListProcessor;
+import nc.jdbc.framework.processor.ColumnProcessor;
+import nc.jdbc.framework.processor.MapListProcessor;
+import nc.vo.bd.defdoc.DefdocVO;
+import nc.vo.bd.material.MaterialVO;
+import nc.vo.bd.psn.PsndocVO;
+import nc.vo.org.DeptVO;
+import nc.vo.org.StockOrgVO;
+import nc.vo.pmpub.project.ProjectHeadVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.billtype.BilltypeVO;
+import nc.vo.vorg.DeptVersionVO;
+
+public class JDBCUtils {
+
+	private IUAPQueryBS  iuapquerybs=(IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());
+	
+	
+	@SuppressWarnings("unused")
+	public String obtainpk(String bdp, String bdt, String whereap) throws BusinessException {
+		StringBuilder sb = new StringBuilder();
+		sb.append("select " + bdp + " from " + bdt + " where nvl(dr,0)=0 and " + whereap + " order by ts desc");
+		Object robj = iuapquerybs.executeQuery(sb.toString(), new ColumnProcessor());
+		return robj == null ? null : robj.toString();
+	}
+	
+	
+	//组织主键
+	public  Map<String,String>  obtainvo() throws BusinessException {
+		StringBuilder sb = new StringBuilder();
+		sb.append("select code,pk_stockorg  from  org_stockorg  where enablestate ='2' and nvl(dr,0)=0 and code like '0103%'");
+		List<Map<String,String>> lismap = (List<Map<String, String>>) iuapquerybs.executeQuery(sb.toString(), new MapListProcessor());
+		Map<String,String> mapcodepk=new HashMap<String,String>();
+		for(Map<String,String> map: lismap){
+			String codevalue="";
+			String pkvalue="";
+			for (Map.Entry<String, String> entry : map.entrySet()) {  
+				String key=entry.getKey(); 
+				String value=entry.getValue(); 
+				if("code".equals(key)){
+					if(!"".equals(pkvalue)){
+						mapcodepk.put(value,pkvalue);
+					}else{
+						codevalue=value;
+					}
+					
+				}
+				
+				if("pk_stockorg".equals(key)){
+					if(!"".equals(codevalue)){
+						mapcodepk.put(codevalue,value);
+					}else{
+						pkvalue=value;
+					}
+					
+				}
+			}
+			
+		}
+		
+		return mapcodepk;
+	}
+	
+	
+
+	/**
+	 * queryPsndocVOMap:人员Map
+	 * @param whereSql
+	 * @return	Map<String,PsndocVO>
+	 * @throws BusinessException 
+	 */
+	@SuppressWarnings("unchecked")
+	public  Map<String,PsndocVO> queryPsndocVOMap(String whereSql) throws BusinessException{
+		StringBuffer sql = new StringBuffer();
+		ArrayList<PsndocVO> psndocVOs = null;
+		sql.append(" select * from bd_psndoc where nvl(dr,0) = 0 and enablestate = 2 ");
+		if (whereSql != null &&  !"".equals(whereSql)) {
+			sql.append(" and (").append(whereSql).append(" ) ");
+		}
+		
+		psndocVOs = (ArrayList<PsndocVO>) iuapquerybs.executeQuery(sql.toString(), new BeanListProcessor(PsndocVO.class));
+		
+		if(psndocVOs == null || psndocVOs.size() == 0){
+			return null;
+		}
+		Map<String,PsndocVO> map = new HashMap<String, PsndocVO>();
+		for (int i = 0; i < psndocVOs.size(); i++) {
+			map.put(psndocVOs.get(i).getCode(),psndocVOs.get(i));
+			map.put(psndocVOs.get(i).getName(),psndocVOs.get(i));
+		}
+		return map;
+	}
+	
+	/**
+	 * 
+	 * @param whereSql 部门map
+	 * @return
+	 * @throws BusinessException 
+	 */
+	
+	public  Map<String,DeptVO> queryDeptVOMap(String whereSql) throws BusinessException {
+		StringBuffer sql = new StringBuffer();
+		ArrayList<DeptVO> deptVO = null;
+		sql.append(" select * from org_dept where nvl(dr,0) = 0 and enablestate = 2         ");
+		if (whereSql != null &&  !"".equals(whereSql)) {
+			sql.append(" and (").append(whereSql).append(" ) ");
+		}
+		
+		deptVO = (ArrayList<DeptVO>) iuapquerybs.executeQuery(sql.toString(), new BeanListProcessor(DeptVO.class));
+		
+		if(deptVO == null || deptVO.size() == 0){
+			return null;
+		}
+		Map<String,DeptVO> map = new HashMap<String, DeptVO>();
+		for (int i = 0; i < deptVO.size(); i++) {
+			map.put(deptVO.get(i).getCode(),deptVO.get(i));
+			map.put(deptVO.get(i).getName(),deptVO.get(i));
+		}
+		return map;
+		
+		
+	}
+	
+	
+	/**
+	 * 
+	 * @param whereSql 部门map+组织过滤
+	 * @return
+	 * @throws BusinessException 
+	 */
+	
+	public  Map<String,DeptVO> queryOrgDeptVOMap(String whereSql) throws BusinessException {
+		StringBuffer sql = new StringBuffer();
+		ArrayList<DeptVO> deptVO = null;
+		sql.append(" select * from org_dept where nvl(dr,0) = 0 and enablestate = 2 ");
+		if (whereSql != null &&  !"".equals(whereSql)) {
+			sql.append(" and (").append(whereSql).append(" ) ");
+		}
+		
+		deptVO = (ArrayList<DeptVO>) iuapquerybs.executeQuery(sql.toString(), new BeanListProcessor(DeptVO.class));
+		
+		if(deptVO == null || deptVO.size() == 0){
+			return null;
+		}
+		Map<String,DeptVO> map = new HashMap<String, DeptVO>();
+		for (int i = 0; i < deptVO.size(); i++) {
+			map.put(deptVO.get(i).getCode(),deptVO.get(i));
+			map.put(deptVO.get(i).getName(),deptVO.get(i));
+		}
+		return map;
+		
+		
+	}
+
+	
+	
+	/**
+	 * 
+	 * @param whereSql 工程项目map
+	 * @return
+	 * @throws BusinessException 
+	 */
+	
+	public  Map<String,ProjectHeadVO > queryProjectHeadVOMap(String whereSql) throws BusinessException {
+		StringBuffer sql = new StringBuffer();
+		ArrayList<ProjectHeadVO > projectVO = null;
+		sql.append(" select * from bd_project where nvl(dr,0) = 0 and enablestate = 2 ");
+		if (whereSql != null &&  !"".equals(whereSql)) {
+			sql.append(" and (").append(whereSql).append(" ) ");
+		}
+		
+		projectVO = (ArrayList<ProjectHeadVO >) iuapquerybs.executeQuery(sql.toString(), new BeanListProcessor(ProjectHeadVO.class));
+		
+		if(projectVO == null || projectVO.size() == 0){
+			return null;
+		}
+		Map<String, ProjectHeadVO> map = new HashMap<String, ProjectHeadVO>();
+		for (int i = 0; i < projectVO.size(); i++) {
+			map.put(projectVO.get(i).getPk_org()+projectVO.get(i).getProject_name(),projectVO.get(i));
+			map.put(projectVO.get(i).getPk_org()+projectVO.get(i).getProject_code(),projectVO.get(i));
+		}
+		return map;
+		
+		
+	}
+	
+	
+	
+	
+	
+	/**
+	 * 
+	 * @param whereSql 自定领料人map
+	 * @return
+	 * @throws BusinessException 
+	 */
+	
+	public  Map<String,DefdocVO> queryProjectDefdocVOMap(String whereSql) throws BusinessException {
+		StringBuffer sql = new StringBuffer();
+		ArrayList<DefdocVO> defdocVO = null;
+		sql.append(" select  bd_defdoc.* from bd_defdoc inner join bd_defdoclist on  bd_defdoc.  pk_defdoclist =bd_defdoclist.pk_defdoclist and   nvl(bd_defdoc.dr,0) = 0 and bd_defdoc.enablestate = 2  and  nvl(bd_defdoclist.dr,0) = 0  and bd_defdoclist.code='17' ");
+		if (whereSql != null &&  !"".equals(whereSql)) {
+			sql.append(" and (").append(whereSql).append(" ) ");
+		}
+		
+		defdocVO = (ArrayList<DefdocVO >) iuapquerybs.executeQuery(sql.toString(), new BeanListProcessor(DefdocVO.class));
+		
+		if(defdocVO == null || defdocVO.size() == 0){
+			return null;
+		}
+		Map<String,DefdocVO> map = new HashMap<String, DefdocVO>();
+		for (int i = 0; i < defdocVO.size(); i++) {
+			map.put(defdocVO.get(i).getCode(),defdocVO.get(i));
+			map.put(defdocVO.get(i).getName(),defdocVO.get(i));
+		}
+		return map;
+		
+		
+	}
+	
+	
+	public  Map<String,BilltypeVO> querybillTypeMap(String whereSql) throws BusinessException{
+		StringBuffer sql = new StringBuffer();
+		ArrayList<BilltypeVO> billTypeVOs = null;
+		sql.append(" select * from bd_billtype where nvl(dr,0) = 0 and pk_group='"+InvocationInfoProxy.getInstance().getGroupId()+"' ");
+		if (whereSql != null) {
+			sql.append(" and (").append(whereSql).append(" ) ");
+		}
+		
+	    billTypeVOs = (ArrayList<BilltypeVO>) iuapquerybs.executeQuery(sql.toString(), new BeanListProcessor(BilltypeVO.class));
+		
+		if(billTypeVOs == null || billTypeVOs.size() == 0){
+			return null;
+		}
+		Map<String,BilltypeVO> map = new HashMap<String, BilltypeVO>();
+		for (int i = 0; i < billTypeVOs.size(); i++) {
+			map.put(billTypeVOs.get(i).getPk_billtypecode(),billTypeVOs.get(i));
+			map.put(billTypeVOs.get(i).getBilltypename(),billTypeVOs.get(i));
+		}
+		return map;
+	}
+	
+	
+	/**
+	 * queryOrgVOMap:	查询业务单元信息
+	 * @author	
+	 * @date	
+	 * @param whereSql
+	 * @return	Map<String,OrgVO>
+	 * @throws BusinessException 
+	 */
+	@SuppressWarnings("unchecked")
+	public  Map<String,StockOrgVO> queryOrgVOMap(String whereSql) throws BusinessException{
+		StringBuffer sql = new StringBuffer();
+		ArrayList<StockOrgVO> orgVOs = null;
+		sql.append(" select * from org_stockorg where nvl(dr,0) = 0 and enablestate = 2  and islastversion = 'Y'  ");
+		if (whereSql != null) {
+			sql.append(" and (").append(whereSql).append(" ) ");
+		}
+
+		orgVOs = (ArrayList<StockOrgVO>) iuapquerybs.executeQuery(sql.toString(), new BeanListProcessor(StockOrgVO.class));
+		
+		if(orgVOs == null || orgVOs.size() == 0){
+			return null;
+		}
+		Map<String,StockOrgVO> orgMap = new HashMap<String, StockOrgVO>();
+		for (int i = 0; i < orgVOs.size(); i++) {
+			orgMap.put(orgVOs.get(i).getCode(),orgVOs.get(i));
+		}
+		return orgMap;
+	}
+	
+	public  Map<String, MaterialVO> queryMaterialMap(String wheresql) throws BusinessException {
+		Map<String, MaterialVO> mapMater = new HashMap<String, MaterialVO>();
+		ArrayList<MaterialVO> listVo = null;
+		StringBuffer sqlBuffer = new StringBuffer();
+		sqlBuffer.append(" select a.code,a.name,a.pk_material, bd_material_v.pk_source,a.materialspec,a.materialtype,a.pk_marbasclass,a.pk_mattaxes,a.pk_measdoc  ");
+		sqlBuffer.append(" ,b.pk_measdoc as def2,b.measrate as def1,c.wholemanaflag as discountflag,d.pk_taxcode as def3 from bd_material a  ");
+		sqlBuffer.append("  left join bd_material_v  on a.pk_material =bd_material_v.pk_material ");
+		sqlBuffer.append(" left join bd_materialconvert b on a.pk_material = b.pk_material ");
+		sqlBuffer.append(" left join bd_materialstock c on a.pk_material = c.pk_material ");
+		sqlBuffer.append(" left join bd_taxcode d on d.mattaxes = a.pk_mattaxes ");
+		sqlBuffer.append(" where nvl(a.dr,0)=0  and nvl(bd_material_v.dr, 0) = 0 and nvl(b.dr,0)=0 and nvl(c.dr,0)=0 and a.enablestate = 2    and bd_material_v.enablestate = 2 ");
+	//	sqlBuffer.append(" and b.isstockmeasdoc = 'Y'  ");
+		
+		if (wheresql != null) {
+			sqlBuffer.append(" and ").append(" ( ").append(wheresql).append(" )");
+		}
+		
+			listVo = (ArrayList<MaterialVO>) iuapquerybs.executeQuery(sqlBuffer.toString(), new BeanListProcessor(MaterialVO.class));
+	
+		if (listVo != null && listVo.size() > 0) {
+			for (int i = 0; i < listVo.size(); i++) {
+				mapMater.put(listVo.get(i).getCode(), listVo.get(i));
+			}
+		}
+		return mapMater;
+	}
+	
+}

+ 0 - 0
ic/ic/src/test/zwf.gitkeep