| 
					
				 | 
			
			
				@@ -0,0 +1,460 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package nc.impl.th;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.IOException;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.PrintWriter;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.StringWriter;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+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 javax.servlet.ServletException;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.http.HttpServletRequest;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.http.HttpServletResponse;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson.JSON;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson.JSONArray;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson.JSONObject;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.bs.framework.adaptor.IHttpServletAdaptor;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.bs.framework.common.InvocationInfoProxy;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.bs.framework.common.NCLocator;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.bs.framework.server.ISecurityTokenCallback;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.bs.pu.plugin.DataUtils.QueryDataUtil;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.bs.scmpub.pf.PfParameterUtil;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.bs.servlet.service.BaseServlet;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.itf.pu.m21.IOrderApprove;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.itf.pu.m21.IOrderMaintain;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.itf.uap.pf.IPFBusiAction;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.itf.uap.pf.IWorkflowMachine;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.log.NcLog;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.vo.bd.material.MaterialVO;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.vo.ct.purdaily.entity.CtPuBVO;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.vo.org.PurchaseOrgVO;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.vo.pu.m21.entity.OrderHeaderVO;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.vo.pu.m21.entity.OrderItemVO;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.vo.pu.m21.entity.OrderVO;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.vo.pub.lang.UFDate;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.vo.pub.lang.UFDouble;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.vo.pub.workflownote.WorkflownoteVO;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nc.vo.util.CloneUtil;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class OrderAddImpl extends BaseServlet implements IHttpServletAdaptor {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Override
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void doAction(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String vbillcode = "";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		try {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			NCLocator.getInstance().lookup(ISecurityTokenCallback.class).token("NCSystem".getBytes(),"pfxx".getBytes());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			String createStr = buildJson(req, resp, this.getClass().getName());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			JSONObject json = JSON.parseObject(createStr);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			NcLog.info(json.toString());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			vbillcode = json.getString("vbillcode");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//InvocationInfoProxy.getInstance().setUserDataSource("NC6337");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			QueryDataUtil.getBillno(vbillcode);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			checkJson(json);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			OrderVO orderVO = new OrderVO();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			OrderHeaderVO orderHeaderVO = new OrderHeaderVO();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			String userPK = QueryDataUtil.getUserPK(json.getString("billmaker"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			String pk_group = QueryDataUtil.getGroupPK(json.getString("pk_group"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			InvocationInfoProxy.getInstance().setUserId(userPK);//用户主键
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			InvocationInfoProxy.getInstance().setGroupId(pk_group);//指定集团pk
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//制单人
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setBillmaker(userPK);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//审批人即制单人
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setApprover(userPK);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//币种
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setCorigcurrencyid(QueryDataUtil.getCurrtypePK(json.getString("corigcurrencyid")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//订单类型
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setCtrantypeid(QueryDataUtil.getBilltypePK(json.getString("vtrantypecode")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//订单日期
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setDbilldate(new UFDate(json.getString("dbilldate")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//制单日期
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setDmakedate(new UFDate(json.getString("dmakedate")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//审批日期即制单时间
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setTaudittime(orderHeaderVO.getDmakedate());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//整单扣税类别
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setFhtaxtypeflag(Integer.parseInt(json.getString("fhtaxtypeflag")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//总数量
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setNtotalastnum(new UFDouble(json.getString("ntotalastnum")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//价税合计
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setNtotalorigmny(new UFDouble(json.getString("ntotalorigmny")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//业务流程
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setPk_busitype(QueryDataUtil.getBusitypePK(json.getString("pk_busitype")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//采购员-计划员
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setCemployeeid(QueryDataUtil.getPsndocPK(json.getString("cemployeeid")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//采购部门最新版本-计划部门
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setPk_dept(QueryDataUtil.getDeptVPK(json.getString("pk_dept")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//采购部门-计划部门
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setPk_dept_v(orderHeaderVO.getPk_dept());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//集团
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setPk_group(pk_group);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//开票供应商
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setPk_invcsupllier(QueryDataUtil.getSupplierPK(json.getString("pk_invcsupllier")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//供应商
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setPk_supplier(orderHeaderVO.getPk_invcsupllier());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//开户银行
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setPk_bankdoc(QueryDataUtil.getBankaccsubPK(json.getString("payaccount"),orderHeaderVO.getPk_invcsupllier()));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			PurchaseOrgVO purchaseOrgVO = QueryDataUtil.getFinanceOrgVO(json.getString("pk_org"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//采购组织版本
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setPk_org(purchaseOrgVO.getPk_purchaseorg());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//采购组织
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setPk_org_v(purchaseOrgVO.getPk_vid());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//订单号
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setVbillcode(vbillcode);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//备注
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setVmemo(json.getString("vmemo"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//订单类型
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setVtrantypecode(json.getString("vtrantypecode"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//是否需要投标
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setVdef2(QueryDataUtil.getDefdocPK(json.getString("vdef2"), "11", "是否需要投标"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//有无框架协议
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setVdef3(QueryDataUtil.getDefdocPK(json.getString("vdef3"), "12", "有无框架协议"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//预算名称
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setVdef5(QueryDataUtil.getInoutbusiclassPK(json.getString("vdef5")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//预算编码
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setVdef9(json.getString("vdef5"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//付款计划简述
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setVdef6(json.getString("vdef6"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//预算所在部门
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setVdef7(QueryDataUtil.getDeptPK(json.getString("vdef7")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//供应商开户行
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setVdef8(QueryDataUtil.getBankdocName(json.getString("payaccount"),orderHeaderVO.getPk_invcsupllier()));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//是否有附件
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setVdef10(QueryDataUtil.getDefdocPK(json.getString("vdef10"), "18", "是否有附件"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//收货人
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setVdef15(QueryDataUtil.getPsndocPK(json.getString("vdef15")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//收货人联系电话
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setVdef16(json.getString("vdef16"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//收货地址
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setVdef17(QueryDataUtil.getDefdocPK(json.getString("vdef17"), "shdz", "收货地址"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//采购员
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setVdef18(QueryDataUtil.getPsndocPK(json.getString("vdef18")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//采购部门
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setVdef19(QueryDataUtil.getDeptPK(json.getString("vdef19")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setStatus(2);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderHeaderVO.setForderstatus(3);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderVO.setParent(orderHeaderVO);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			JSONArray josns = json.getJSONArray("childrenVO");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			List<OrderItemVO> listOrderItemVO = new ArrayList<OrderItemVO>();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (int i = 0; i < josns.size(); i++) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				JSONObject item = josns.getJSONObject(i);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				OrderItemVO orderItemVO = new OrderItemVO();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//行号
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setCrowno(item.getString("crowno"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				String vcontractcode = item.getString("vcontractcode");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				Map<String,String> map = new HashMap<String,String>();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(!"".equals(vcontractcode)) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					map = QueryDataUtil.getDataMap("Z2", vcontractcode, item.getString("vcontractcrowno"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					//合同号
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					orderItemVO.setVcontractcode(vcontractcode);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					//合同主键
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					orderItemVO.setCcontractid(map.get("pk_id"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					//合同表体主键
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					orderItemVO.setCcontractrowid(map.get("pk_id_b"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//本币币种
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setCcurrencyid(QueryDataUtil.getCurrtypePK(item.getString("ccurrencyid")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//币种
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setCorigcurrencyid(orderItemVO.getCcurrencyid());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				String vfirstcode = item.getString("vfirstcode");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(!"".equals(vfirstcode)) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					String cfirsttypecode = item.getString("cfirsttypecode");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					String vfirstrowno = item.getString("vfirstrowno");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					map = QueryDataUtil.getDataMap(cfirsttypecode, vfirstcode, vfirstrowno);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					//源头单据号
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					orderItemVO.setVfirstcode(vfirstcode);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					//源头单据
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					orderItemVO.setCfirstid(map.get("pk_id"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					//源头单据明细
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					orderItemVO.setCfirstbid(map.get("pk_id_b"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					//源头单据行号
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					orderItemVO.setVfirstrowno(vfirstrowno);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					//源头交易类型
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					orderItemVO.setVfirsttrantype(QueryDataUtil.getBilltypePK(item.getString("vfirsttrantype")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					//源头单据类型
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					orderItemVO.setCfirsttypecode(QueryDataUtil.getBilltypePK(cfirsttypecode));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				String vsourcecode = item.getString("vsourcecode");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(!"".equals(vsourcecode)) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					String vsourcerowno = item.getString("vsourcerowno");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					String csourcetypecode = item.getString("csourcetypecode");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					map = QueryDataUtil.getDataMap(csourcetypecode, vsourcecode, vsourcerowno);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					//来源单据号 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					orderItemVO.setVsourcecode(vsourcecode);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					//来源单据行号
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					orderItemVO.setVsourcerowno(vsourcerowno);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					//来源交易类型
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					orderItemVO.setVsourcetrantype(QueryDataUtil.getBilltypePK(item.getString("vsourcetrantype")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					//来源单据
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					orderItemVO.setCsourceid(map.get("pk_id"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					//来源单据明细
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					orderItemVO.setCsourcebid(map.get("pk_id_b"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					//来源单据类型
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					orderItemVO.setCsourcetypecode(QueryDataUtil.getBilltypePK(csourcetypecode));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//税码
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setCtaxcodeid(QueryDataUtil.getTaxcodePK(item.getString("ctaxcodeid")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//税率
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNtaxrate(new UFDouble(item.getString("ntaxrate")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//主单位
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setCunitid(QueryDataUtil.getMeasdocPK(item.getString("cunitid")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//单位
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setCastunitid(orderItemVO.getCunitid());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//报价单位
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setCqtunitid(orderItemVO.getCunitid());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//订单日期
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setDbilldate(orderHeaderVO.getDbilldate());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//计划到货日期
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setDplanarrvdate(orderHeaderVO.getDbilldate());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//购销类型
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setFbuysellflag(Integer.parseInt(item.getString("fbuysellflag")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//扣税类别
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setFtaxtypeflag(orderHeaderVO.getFhtaxtypeflag());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//计税金额
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNcaltaxmny(new UFDouble(item.getString("ncaltaxmny")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//计成本金额
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNcalcostmny(orderItemVO.getNcaltaxmny());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//折本汇率
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNexchangerate(new UFDouble(1));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//折扣
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNitemdiscountrate(new UFDouble(100));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//主数量
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNnum(new UFDouble(item.getString("nnum")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//数量
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNastnum(orderItemVO.getNnum());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//报价数量
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNqtunitnum(orderItemVO.getNnum());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//无税单价
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNqtorigprice(new UFDouble(item.getString("nqtorigprice")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//无税净价 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNqtorignetprice(orderItemVO.getNqtorigprice());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//主无税单价
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNorigprice(orderItemVO.getNqtorigprice());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//主无税净价
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNorignetprice(orderItemVO.getNqtorigprice());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//本币无税单价
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNqtprice(orderItemVO.getNqtorigprice());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//本币无税净价
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNqtnetprice(orderItemVO.getNqtorigprice());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//主本币无税单价
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNprice(orderItemVO.getNqtorigprice());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//主本币无税净价
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNnetprice(orderItemVO.getNqtorigprice());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//含税单价 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNqtorigtaxprice(new UFDouble(item.getString("nqtorigtaxprice")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//含税净价
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNqtorigtaxnetprc(orderItemVO.getNqtorigtaxprice());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//主含税单价
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNorigtaxprice(orderItemVO.getNqtorigtaxprice());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//主含税净价
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNorigtaxnetprice(orderItemVO.getNqtorigtaxprice());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//本币含税单价 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNqttaxprice(orderItemVO.getNqtorigtaxprice());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//本币含税净价
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNqttaxnetprice(orderItemVO.getNqtorigtaxprice());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//主本币含税单价
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNtaxprice(orderItemVO.getNqtorigtaxprice());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//主本币含税净价
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNtaxnetprice(orderItemVO.getNqtorigtaxprice());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//税额
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNtax(new UFDouble(item.getString("ntax")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//无税金额
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNorigmny(new UFDouble(item.getString("norigmny")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//本币无税金额
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNmny(orderItemVO.getNorigmny());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//价税合计
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNorigtaxmny(new UFDouble(item.getString("norigtaxmny")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//本币价税合计
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setNtaxmny(orderItemVO.getNorigtaxmny());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//应付组织最新版本 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_apfinanceorg(orderHeaderVO.getPk_org());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//应付组织
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_apfinanceorg_v(orderHeaderVO.getPk_org_v());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//结算利润中心最新版本 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_apliabcenter(orderHeaderVO.getPk_org());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//结算利润中心
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_apliabcenter_v(orderHeaderVO.getPk_org_v());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//收货库存组织最新版本
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_arrvstoorg(orderHeaderVO.getPk_org());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//收货库存组织
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_arrvstoorg_v(orderHeaderVO.getPk_org_v());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//采购组织版本信息
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_org(orderHeaderVO.getPk_org());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//采购组织
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_org_v(orderHeaderVO.getPk_org_v());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//结算财务组织最新版本
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_psfinanceorg(orderHeaderVO.getPk_org());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//结算财务组织
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_psfinanceorg_v(orderHeaderVO.getPk_org_v());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//需求公司 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_reqcorp(orderHeaderVO.getPk_org());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//需求库存组织最新版本
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_reqstoorg(orderHeaderVO.getPk_org());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//需求库存组织
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_reqstoorg_v(orderHeaderVO.getPk_org_v());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//需求部门最新版本
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_reqdept(QueryDataUtil.getDeptPK(item.getString("pk_reqdept")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//需求部门
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_reqdept_v(QueryDataUtil.getDeptVPK(item.getString("pk_reqdept")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//所属集团
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_group(orderHeaderVO.getPk_group());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				MaterialVO materialVO = QueryDataUtil.getMaterialPK(item.getString("pk_material"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//物料版本信息
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_material(materialVO.getPk_material());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//物料信息
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_srcmaterial(materialVO.getPk_source());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//供应商
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setPk_supplier(orderHeaderVO.getPk_supplier());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//备注
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setVbmemo(item.getString("vbmemo"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//换算率
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setVchangerate(item.getString("vchangerate"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//报价换算率
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setVqtunitrate(orderItemVO.getVchangerate());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//发货国家/地区
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setCsendcountryid(QueryDataUtil.getCountryzonePK("CN"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//收货国家/地区
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setCrececountryid(orderItemVO.getCsendcountryid());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//报税国家/地区
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setCtaxcountryid(orderItemVO.getCsendcountryid());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//领用单号
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setVbdef4(item.getString("vbdef4"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//采购含税预估单价
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setVbdef5(item.getString("vbdef5"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//员工承担金额
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setVbdef7(item.getString("vbdef7"));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//使用人
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setVbdef13(QueryDataUtil.getPsndocPK(item.getString("vbdef13")));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				orderItemVO.setStatus(2);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				listOrderItemVO.add(orderItemVO);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			orderVO.setChildrenVO(listOrderItemVO.toArray(new OrderItemVO[listOrderItemVO.size()]));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//设置线程时间
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Object dateTimeString  = orderHeaderVO.getDbilldate();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(dateTimeString != null) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			    Date date = format.parse(dateTimeString.toString());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			    long timestamp = date.getTime();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			    InvocationInfoProxy.getInstance().setBizDateTime(timestamp);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			IPFBusiAction ipf = NCLocator.getInstance().lookup(IPFBusiAction.class);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			OrderVO[] orderVOs = (OrderVO[]) ipf.processAction("SAVEBASE", "21", null, orderVO, null, null);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//			HashMap hmPfExParams = new HashMap();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//			WorkflownoteVO workflownoteVO = NCLocator.getInstance().lookup(IWorkflowMachine.class).checkWorkFlow("SAVE", "21", orderVOs[0], hmPfExParams);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//			if(workflownoteVO == null) { 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//				//没有审批流
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//				ipf.processAction("APPROVE", "21", workflownoteVO, orderVOs[0], null, null);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//			}else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//				ipf.processAction("SAVE", "21", workflownoteVO, orderVOs[0], null, null);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//			}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			resp.getWriter().write(formatRSJsonData("成功", "", vbillcode).toString());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} catch (Exception e) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			resp.getWriter().write(formatRSJsonData("失败",e.getMessage() == null ? "" : e.getMessage(),vbillcode).toString());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			StringWriter stringWriter = new StringWriter();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			e.printStackTrace(new PrintWriter(stringWriter));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//获取详细信息
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			String msg=stringWriter.getBuffer().toString();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			NcLog.info(msg);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private void checkJson(JSONObject json) throws Exception {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		StringBuffer mags = new StringBuffer();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Boolean empty = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String pk_group = "pk_group";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String pk_org = "pk_org";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String vbillcode = "vbillcode";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String billmaker  = "billmaker";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String cemployeeid = "cemployeeid";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String corigcurrencyid = "corigcurrencyid";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String dbilldate = "dbilldate";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String dmakedate = "dmakedate";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String fhtaxtypeflag = "fhtaxtypeflag";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String ntotalastnum = "ntotalastnum";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String ntotalorigmny = "ntotalorigmny";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String pk_busitype = "pk_busitype";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String pk_invcsupllier = "pk_invcsupllier";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String vtrantypecode = "vtrantypecode";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String vdef5 = "vdef5";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String vdef7 = "vdef7";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String vdef18 = "vdef18";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String vdef19 = "vdef19";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String body = "childrenVO";//表体
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String[] HeadKey = {pk_group,pk_org,vbillcode,billmaker,cemployeeid,corigcurrencyid,dbilldate,dmakedate,dmakedate,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fhtaxtypeflag,ntotalastnum,ntotalorigmny,pk_busitype,pk_invcsupllier,vtrantypecode,vdef5,vdef7,vdef18,vdef19};
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (String as : HeadKey) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (json.getString(as).isEmpty()) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				empty = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				mags.append("'" + as + "'");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (json.getJSONArray(body)==null) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			empty = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			mags.append("表体不存在! ");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		JSONArray childrenVO = json.getJSONArray("childrenVO");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (childrenVO == null || childrenVO.size() == 0) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new Exception("表体内容不可为空!");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String rowno = "crowno";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String ccurrencyid = "ccurrencyid";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String ctaxcodeid = "ctaxcodeid";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String ntaxrate = "ntaxrate";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String cunitid = "cunitid";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String fbuysellflag = "fbuysellflag";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String ncaltaxmny = "ncaltaxmny";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String nnum = "nnum";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String nqtorigprice = "nqtorigprice";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String nqtorigtaxprice = "nqtorigtaxprice";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String ntax = "ntax";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String norigmny = "norigmny";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String norigtaxmny = "norigtaxmny";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String pk_material = "pk_material";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String vchangerate = "vchangerate";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String vbdef7 = "vbdef7";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for(int i = 0; i < childrenVO.size(); i++) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			JSONObject oprepJsonObjectB = childrenVO.getJSONObject(i);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			String[] BodyKey = {rowno,ccurrencyid,ctaxcodeid,ntaxrate,cunitid,fbuysellflag,ncaltaxmny,nnum,nqtorigprice,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					nqtorigtaxprice,ntax,norigmny,norigtaxmny,pk_material,vchangerate,vbdef7};
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			int num = i+1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			mags.append("第"+num+"块表体:{");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (String as : BodyKey) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (oprepJsonObjectB.getString(as).isEmpty()) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					empty = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					mags.append("'" + as + "' ");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			mags.append("}");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (!empty) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new Exception("以下字段不可为空:"+mags);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}
 
			 |