|  | @@ -1,233 +1,221 @@
 | 
	
		
			
				|  |  | -package nc.bs.xh.impl;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import java.io.IOException;
 | 
	
		
			
				|  |  | -import java.io.PrintWriter;
 | 
	
		
			
				|  |  | -import java.io.StringWriter;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import javax.servlet.ServletException;
 | 
	
		
			
				|  |  | -import javax.servlet.http.HttpServletRequest;
 | 
	
		
			
				|  |  | -import javax.servlet.http.HttpServletResponse;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import nc.bs.dao.BaseDAO;
 | 
	
		
			
				|  |  | -import nc.bs.dao.DAOException;
 | 
	
		
			
				|  |  | -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.servlet.service.BaseServlet;
 | 
	
		
			
				|  |  | -import nc.itf.ic.m4n.ITransformMaitain;
 | 
	
		
			
				|  |  | -import nc.itf.pu.m21.IOrderMaintain;
 | 
	
		
			
				|  |  | -import nc.itf.uap.IUAPQueryBS;
 | 
	
		
			
				|  |  | -import nc.itf.uap.pf.IPFBusiAction;
 | 
	
		
			
				|  |  | -import nc.jdbc.framework.processor.ColumnProcessor;
 | 
	
		
			
				|  |  | -import nc.log.NcLog;
 | 
	
		
			
				|  |  | -import nc.vo.ic.m4n.entity.TransformHeadVO;
 | 
	
		
			
				|  |  | -import nc.vo.ic.m4n.entity.TransformVO;
 | 
	
		
			
				|  |  | -import nc.vo.mmsfc.operationrep.entity.OprepItemVO;
 | 
	
		
			
				|  |  | -import nc.vo.pub.BusinessException;
 | 
	
		
			
				|  |  | -import nc.vo.pub.lang.UFDate;
 | 
	
		
			
				|  |  | -import nc.vo.pub.lang.UFDateTime;
 | 
	
		
			
				|  |  | -import nc.vo.pub.lang.UFDouble;
 | 
	
		
			
				|  |  | -import net.sf.json.JSONArray;
 | 
	
		
			
				|  |  | -import net.sf.json.JSONObject;
 | 
	
		
			
				|  |  | -import nc.vo.ic.m4n.entity.TransformBodyVO;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -public class TransformAddImpl extends BaseServlet implements IHttpServletAdaptor{
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | -	IUAPQueryBS iuap= (IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	public void doAction(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 | 
	
		
			
				|  |  | -		// TODO Auto-generated method stub
 | 
	
		
			
				|  |  | -		NCLocator.getInstance().lookup(ISecurityTokenCallback.class).token("NCSystem".getBytes(),"pfxx".getBytes());
 | 
	
		
			
				|  |  | -        try {
 | 
	
		
			
				|  |  | -			String createStr = buildJson(req, resp, this.getClass().getName());
 | 
	
		
			
				|  |  | -			JSONObject json = JSONObject.fromObject(createStr);
 | 
	
		
			
				|  |  | -			String vbillcode = "";
 | 
	
		
			
				|  |  | -			PrintWriter out = resp.getWriter();
 | 
	
		
			
				|  |  | -			vbillcode = json.getString("vbillcode");
 | 
	
		
			
				|  |  | -			checkJson(json);//非空判断
 | 
	
		
			
				|  |  | -			
 | 
	
		
			
				|  |  | -			
 | 
	
		
			
				|  |  | -			InvocationInfoProxy.getInstance().setGroupId(SqlexecuteQuery("pk_group", "org_group", "code", json.getString("pk_group")));
 | 
	
		
			
				|  |  | -			InvocationInfoProxy.getInstance().setUserId(SqlexecuteQuery("cuserid", "sm_user", "user_code", json.getString("creator")));
 | 
	
		
			
				|  |  | -			
 | 
	
		
			
				|  |  | -			TransformVO[] transformvos = new TransformVO[1];
 | 
	
		
			
				|  |  | -			TransformVO transformvo = new TransformVO();
 | 
	
		
			
				|  |  | -			transformvos[0] = transformvo;
 | 
	
		
			
				|  |  | -			TransformHeadVO transformheadvo = new TransformHeadVO();
 | 
	
		
			
				|  |  | -			TransformBodyVO[] transformbodyvos = new TransformBodyVO[json.getJSONArray("cspecialbid").size()];
 | 
	
		
			
				|  |  | -			
 | 
	
		
			
				|  |  | -			/**
 | 
	
		
			
				|  |  | -			 * 封装表头VO
 | 
	
		
			
				|  |  | -			 */
 | 
	
		
			
				|  |  | -			transformheadvo.setVbillcode(vbillcode);
 | 
	
		
			
				|  |  | -			transformheadvo.setPk_group(SqlexecuteQuery("pk_group", "org_group", "code", json.getString("pk_group")));
 | 
	
		
			
				|  |  | -			transformheadvo.setPk_org(SqlexecuteQuery("pk_stockorg", "org_stockorg", "code", json.getString("pk_org")));
 | 
	
		
			
				|  |  | -			transformheadvo.setPk_org_v(SqlexecuteQuery("pk_vid", "org_stockorg_v", "code", json.getString("pk_org")));
 | 
	
		
			
				|  |  | -			transformheadvo.setCorpoid(SqlexecuteQuery("pk_corp", "org_corp", "code", json.getString("corpoid")));
 | 
	
		
			
				|  |  | -			transformheadvo.setCorpvid(SqlexecuteQuery("pk_vid", "org_corp", "code", json.getString("corpoid")));
 | 
	
		
			
				|  |  | -			transformheadvo.setDbilldate(new UFDate(json.getString("dbilldate")));
 | 
	
		
			
				|  |  | -			transformheadvo.setVtrantypecode(json.getString("vtrantypecode"));
 | 
	
		
			
				|  |  | -			transformheadvo.setCreator(SqlexecuteQuery("cuserid", "sm_user", "user_code", json.getString("creator")));
 | 
	
		
			
				|  |  | -			transformheadvo.setCreationtime(new UFDateTime(json.getString("dbilldate")));
 | 
	
		
			
				|  |  | -			transformheadvo.setBillmaker(SqlexecuteQuery("cuserid", "sm_user", "user_code", json.getString("creator")));
 | 
	
		
			
				|  |  | -			transformheadvo.setDmakedate(new UFDate(json.getString("dbilldate")));
 | 
	
		
			
				|  |  | -			transformheadvo.setCtrantypeid(QueryTrantype(json.getString("vtrantypecode"),SqlexecuteQuery("pk_group", "org_group", "code", json.getString("pk_group"))));
 | 
	
		
			
				|  |  | -			transformvo.setParentVO(transformheadvo);
 | 
	
		
			
				|  |  | -			
 | 
	
		
			
				|  |  | -			/**
 | 
	
		
			
				|  |  | -			 * 封装表体VO
 | 
	
		
			
				|  |  | -			 */
 | 
	
		
			
				|  |  | -			JSONArray bodyArray = json.getJSONArray("cspecialbid");
 | 
	
		
			
				|  |  | -			int i=0;
 | 
	
		
			
				|  |  | -			for (Object Object : bodyArray) {
 | 
	
		
			
				|  |  | -				JSONObject bodyObject = JSONObject.fromObject(Object);
 | 
	
		
			
				|  |  | -				TransformBodyVO transformbodyvo = new TransformBodyVO();
 | 
	
		
			
				|  |  | -				transformbodyvo.setCrowno(bodyObject.getString("crowno"));
 | 
	
		
			
				|  |  | -				transformbodyvo.setFbillrowflag(Integer.parseInt(bodyObject.getString("fbillrowflag")));
 | 
	
		
			
				|  |  | -				transformbodyvo.setPk_group(SqlexecuteQuery("pk_group", "org_group", "code", bodyObject.getString("pk_group")));
 | 
	
		
			
				|  |  | -				transformbodyvo.setPk_org(SqlexecuteQuery("pk_stockorg", "org_stockorg", "code", bodyObject.getString("pk_org")));
 | 
	
		
			
				|  |  | -				transformbodyvo.setPk_org_v(SqlexecuteQuery("pk_vid", "org_stockorg_v", "code", bodyObject.getString("pk_org")));
 | 
	
		
			
				|  |  | -				transformbodyvo.setCorpoid(SqlexecuteQuery("pk_corp", "org_corp", "code", bodyObject.getString("corpoid")));
 | 
	
		
			
				|  |  | -				transformbodyvo.setCorpvid(SqlexecuteQuery("pk_vid", "org_corp", "code", bodyObject.getString("corpoid")));
 | 
	
		
			
				|  |  | -				transformbodyvo.setCbodywarehouseid(SqlexecuteQuery("pk_stordoc", "bd_stordoc", "code", bodyObject.getString("cbodywarehouseid")));
 | 
	
		
			
				|  |  | -				transformbodyvo.setCmaterialoid(SqlexecuteQuery("pk_source", "bd_material_v", "code", bodyObject.getString("cmaterialoid")));
 | 
	
		
			
				|  |  | -				transformbodyvo.setCmaterialvid(SqlexecuteQuery("pk_material", "bd_material", "code", bodyObject.getString("cmaterialoid")));
 | 
	
		
			
				|  |  | -				transformbodyvo.setCunitid(SqlexecuteQuery("pk_measdoc", "bd_measdoc", "code", bodyObject.getString("cunitid")));
 | 
	
		
			
				|  |  | -				transformbodyvo.setCastunitid(SqlexecuteQuery("pk_measdoc", "bd_measdoc", "code", bodyObject.getString("castunitid")));
 | 
	
		
			
				|  |  | -				transformbodyvo.setVchangerate(bodyObject.getString("vchangerate"));
 | 
	
		
			
				|  |  | -				transformbodyvo.setNnum(new UFDouble(bodyObject.getString("nnum")));
 | 
	
		
			
				|  |  | -				transformbodyvo.setNassistnum(new UFDouble(bodyObject.getString("nassistnum")));
 | 
	
		
			
				|  |  | -				transformbodyvo.setNcostprice(new UFDouble(bodyObject.getString("ncostprice")));
 | 
	
		
			
				|  |  | -				transformbodyvo.setNcostmny(new UFDouble(bodyObject.getString("ncostmny")));
 | 
	
		
			
				|  |  | -				transformbodyvos[i] = transformbodyvo;
 | 
	
		
			
				|  |  | -				i++;
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			transformvo.setChildrenVO(transformbodyvos);
 | 
	
		
			
				|  |  | -			
 | 
	
		
			
				|  |  | -			ITransformMaitain itransform=(ITransformMaitain)NCLocator.getInstance().lookup(ITransformMaitain.class);
 | 
	
		
			
				|  |  | -			itransform.insert(transformvos);
 | 
	
		
			
				|  |  | -			IPFBusiAction service = NCLocator.getInstance().lookup(IPFBusiAction.class);
 | 
	
		
			
				|  |  | -			service.processAction("APPROVE",
 | 
	
		
			
				|  |  | -	                "4N", null, transformvos[0], null, null);
 | 
	
		
			
				|  |  | -			out.print(formatRSJsonData("成功","",vbillcode)); 
 | 
	
		
			
				|  |  | -			
 | 
	
		
			
				|  |  | -		} catch (Exception e) {
 | 
	
		
			
				|  |  | -			// TODO Auto-generated catch block
 | 
	
		
			
				|  |  | -			resp.getWriter().write(formatRSJsonData("失败",
 | 
	
		
			
				|  |  | -				     e.getMessage().toString(),"").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 vbillcode = "vbillcode";//单据号
 | 
	
		
			
				|  |  | -		String group = "pk_group";//集团编码
 | 
	
		
			
				|  |  | -		String creator = "creator";//创建人
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -		String body = "cspecialbid";//表体
 | 
	
		
			
				|  |  | - 
 | 
	
		
			
				|  |  | -		String[] HeadKey = {vbillcode,group,creator};
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -		for (String as : HeadKey) {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			if (json.getString(as).isEmpty()) {
 | 
	
		
			
				|  |  | -				empty = false;
 | 
	
		
			
				|  |  | -				mags.append("'" + as + "'");
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -		if (json.getJSONArray(body)==null) {
 | 
	
		
			
				|  |  | -			empty = false;
 | 
	
		
			
				|  |  | -			mags.append("表体不存在! ");
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -		JSONArray oprepObjectBs = json.getJSONArray("cspecialbid");
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -		if (oprepObjectBs == null || oprepObjectBs.size() == 0) {
 | 
	
		
			
				|  |  | -			throw new Exception("表体内容不可为空!");
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -		String cmaterialoid = "cmaterialoid";//物料编码
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -		for(int i = 0; i < oprepObjectBs.size(); i++) {
 | 
	
		
			
				|  |  | -			
 | 
	
		
			
				|  |  | -			JSONObject oprepJsonObjectB = oprepObjectBs.getJSONObject(i);
 | 
	
		
			
				|  |  | -			String[] BodyKey = {cmaterialoid};
 | 
	
		
			
				|  |  | -			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);
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | -	/*
 | 
	
		
			
				|  |  | -	 * 数据库查询
 | 
	
		
			
				|  |  | -	 */
 | 
	
		
			
				|  |  | -	private String SqlexecuteQuery(String out,String table,String key,String value) throws DAOException {
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -		String sql = "select "+out+" from "+table+" where "+key+" = '"+value+"' and nvl(dr,0)=0";
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -		Object object;
 | 
	
		
			
				|  |  | -		try {
 | 
	
		
			
				|  |  | -			object = iuap.executeQuery(sql, new ColumnProcessor());
 | 
	
		
			
				|  |  | -			if (object==null) {
 | 
	
		
			
				|  |  | -				throw new DAOException("未查询到数据!请检查编码"+value+"是否正确!");
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			
 | 
	
		
			
				|  |  | -			return object.toString();
 | 
	
		
			
				|  |  | -		} catch (BusinessException e) {
 | 
	
		
			
				|  |  | -			// TODO Auto-generated catch block
 | 
	
		
			
				|  |  | -			e.printStackTrace();
 | 
	
		
			
				|  |  | -			return e.getMessage();
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | -	/*
 | 
	
		
			
				|  |  | -	 * 查询转换类型pk
 | 
	
		
			
				|  |  | -	 */
 | 
	
		
			
				|  |  | -	private String QueryTrantype(String code,String group) throws DAOException {
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -		String sql = "select pk_billtypeid from bd_billtype where pk_billtypecode = '"+code+"' and pk_group = '"+group+"' and nvl(dr,0)=0";
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -		Object object;
 | 
	
		
			
				|  |  | -		try {
 | 
	
		
			
				|  |  | -			object = iuap.executeQuery(sql, new ColumnProcessor());
 | 
	
		
			
				|  |  | -			if (object==null) {
 | 
	
		
			
				|  |  | -				throw new DAOException("未查询到数据!请检查编码"+code+"是否正确!");
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			
 | 
	
		
			
				|  |  | -			return object.toString();
 | 
	
		
			
				|  |  | -		} catch (BusinessException e) {
 | 
	
		
			
				|  |  | -			// TODO Auto-generated catch block
 | 
	
		
			
				|  |  | -			e.printStackTrace();
 | 
	
		
			
				|  |  | -			return e.getMessage();
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | +package nc.bs.xh.impl;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import java.io.IOException;
 | 
	
		
			
				|  |  | +import java.io.PrintWriter;
 | 
	
		
			
				|  |  | +import java.io.StringWriter;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import javax.servlet.ServletException;
 | 
	
		
			
				|  |  | +import javax.servlet.http.HttpServletRequest;
 | 
	
		
			
				|  |  | +import javax.servlet.http.HttpServletResponse;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import nc.bs.dao.BaseDAO;
 | 
	
		
			
				|  |  | +import nc.bs.dao.DAOException;
 | 
	
		
			
				|  |  | +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.servlet.service.BaseServlet;
 | 
	
		
			
				|  |  | +import nc.itf.ic.m4n.ITransformMaitain;
 | 
	
		
			
				|  |  | +import nc.itf.pu.m21.IOrderMaintain;
 | 
	
		
			
				|  |  | +import nc.itf.uap.IUAPQueryBS;
 | 
	
		
			
				|  |  | +import nc.itf.uap.pf.IPFBusiAction;
 | 
	
		
			
				|  |  | +import nc.jdbc.framework.processor.ColumnProcessor;
 | 
	
		
			
				|  |  | +import nc.log.NcLog;
 | 
	
		
			
				|  |  | +import nc.vo.ic.m4n.entity.TransformHeadVO;
 | 
	
		
			
				|  |  | +import nc.vo.ic.m4n.entity.TransformVO;
 | 
	
		
			
				|  |  | +import nc.vo.mmsfc.operationrep.entity.OprepItemVO;
 | 
	
		
			
				|  |  | +import nc.vo.pub.BusinessException;
 | 
	
		
			
				|  |  | +import nc.vo.pub.lang.UFDate;
 | 
	
		
			
				|  |  | +import nc.vo.pub.lang.UFDateTime;
 | 
	
		
			
				|  |  | +import nc.vo.pub.lang.UFDouble;
 | 
	
		
			
				|  |  | +import net.sf.json.JSONArray;
 | 
	
		
			
				|  |  | +import net.sf.json.JSONObject;
 | 
	
		
			
				|  |  | +import nc.vo.ic.m4n.entity.TransformBodyVO;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +public class TransformAddImpl extends BaseServlet implements IHttpServletAdaptor{
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	IUAPQueryBS iuap= (IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	@Override
 | 
	
		
			
				|  |  | +	public void doAction(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 | 
	
		
			
				|  |  | +		// TODO Auto-generated method stub
 | 
	
		
			
				|  |  | +		NCLocator.getInstance().lookup(ISecurityTokenCallback.class).token("NCSystem".getBytes(),"pfxx".getBytes());
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +			String createStr = buildJson(req, resp, this.getClass().getName());
 | 
	
		
			
				|  |  | +			JSONObject json = JSONObject.fromObject(createStr);
 | 
	
		
			
				|  |  | +			String vbillcode = "";
 | 
	
		
			
				|  |  | +			PrintWriter out = resp.getWriter();
 | 
	
		
			
				|  |  | +			vbillcode = json.getString("vbillcode");
 | 
	
		
			
				|  |  | +			checkJson(json);//非空判断
 | 
	
		
			
				|  |  | +			
 | 
	
		
			
				|  |  | +			
 | 
	
		
			
				|  |  | +			InvocationInfoProxy.getInstance().setGroupId(SqlexecuteQuery("pk_group", "org_group", "code", json.getString("pk_group")));
 | 
	
		
			
				|  |  | +			InvocationInfoProxy.getInstance().setUserId(SqlexecuteQuery("cuserid", "sm_user", "user_code", json.getString("creator")));
 | 
	
		
			
				|  |  | +			
 | 
	
		
			
				|  |  | +			TransformVO[] transformvos = new TransformVO[1];
 | 
	
		
			
				|  |  | +			TransformVO transformvo = new TransformVO();
 | 
	
		
			
				|  |  | +			transformvos[0] = transformvo;
 | 
	
		
			
				|  |  | +			TransformHeadVO transformheadvo = new TransformHeadVO();
 | 
	
		
			
				|  |  | +			TransformBodyVO[] transformbodyvos = new TransformBodyVO[json.getJSONArray("cspecialbid").size()];
 | 
	
		
			
				|  |  | +			
 | 
	
		
			
				|  |  | +			/**
 | 
	
		
			
				|  |  | +			 * 封装表头VO
 | 
	
		
			
				|  |  | +			 */
 | 
	
		
			
				|  |  | +			transformheadvo.setVbillcode(vbillcode);
 | 
	
		
			
				|  |  | +			transformheadvo.setPk_group(SqlexecuteQuery("pk_group", "org_group", "code", json.getString("pk_group")));
 | 
	
		
			
				|  |  | +			transformheadvo.setPk_org(SqlexecuteQuery("pk_stockorg", "org_stockorg", "code", json.getString("pk_org")));
 | 
	
		
			
				|  |  | +			transformheadvo.setPk_org_v(SqlexecuteQuery("pk_vid", "org_stockorg_v", "code", json.getString("pk_org")));
 | 
	
		
			
				|  |  | +			transformheadvo.setCorpoid(SqlexecuteQuery("pk_corp", "org_corp", "code", json.getString("corpoid")));
 | 
	
		
			
				|  |  | +			transformheadvo.setCorpvid(SqlexecuteQuery("pk_vid", "org_corp", "code", json.getString("corpoid")));
 | 
	
		
			
				|  |  | +			transformheadvo.setDbilldate(new UFDate(json.getString("dbilldate")));
 | 
	
		
			
				|  |  | +			transformheadvo.setVtrantypecode(json.getString("vtrantypecode"));
 | 
	
		
			
				|  |  | +			transformheadvo.setCreator(SqlexecuteQuery("cuserid", "sm_user", "user_code", json.getString("creator")));
 | 
	
		
			
				|  |  | +			transformheadvo.setCreationtime(new UFDateTime(json.getString("dbilldate")));
 | 
	
		
			
				|  |  | +			transformheadvo.setBillmaker(SqlexecuteQuery("cuserid", "sm_user", "user_code", json.getString("creator")));
 | 
	
		
			
				|  |  | +			transformheadvo.setDmakedate(new UFDate(json.getString("dbilldate")));
 | 
	
		
			
				|  |  | +			transformheadvo.setCtrantypeid(QueryTrantype(json.getString("vtrantypecode"),SqlexecuteQuery("pk_group", "org_group", "code", json.getString("pk_group"))));
 | 
	
		
			
				|  |  | +			transformvo.setParentVO(transformheadvo);
 | 
	
		
			
				|  |  | +			
 | 
	
		
			
				|  |  | +			/**
 | 
	
		
			
				|  |  | +			 * 封装表体VO
 | 
	
		
			
				|  |  | +			 */
 | 
	
		
			
				|  |  | +			JSONArray bodyArray = json.getJSONArray("cspecialbid");
 | 
	
		
			
				|  |  | +			int i=0;
 | 
	
		
			
				|  |  | +			for (Object Object : bodyArray) {
 | 
	
		
			
				|  |  | +				JSONObject bodyObject = JSONObject.fromObject(Object);
 | 
	
		
			
				|  |  | +				TransformBodyVO transformbodyvo = new TransformBodyVO();
 | 
	
		
			
				|  |  | +				transformbodyvo.setCrowno(bodyObject.getString("crowno"));
 | 
	
		
			
				|  |  | +				transformbodyvo.setFbillrowflag(Integer.parseInt(bodyObject.getString("fbillrowflag")));
 | 
	
		
			
				|  |  | +				transformbodyvo.setPk_group(SqlexecuteQuery("pk_group", "org_group", "code", bodyObject.getString("pk_group")));
 | 
	
		
			
				|  |  | +				transformbodyvo.setPk_org(SqlexecuteQuery("pk_stockorg", "org_stockorg", "code", bodyObject.getString("pk_org")));
 | 
	
		
			
				|  |  | +				transformbodyvo.setPk_org_v(SqlexecuteQuery("pk_vid", "org_stockorg_v", "code", bodyObject.getString("pk_org")));
 | 
	
		
			
				|  |  | +				transformbodyvo.setCorpoid(SqlexecuteQuery("pk_corp", "org_corp", "code", bodyObject.getString("corpoid")));
 | 
	
		
			
				|  |  | +				transformbodyvo.setCorpvid(SqlexecuteQuery("pk_vid", "org_corp", "code", bodyObject.getString("corpoid")));
 | 
	
		
			
				|  |  | +				transformbodyvo.setCbodywarehouseid(SqlexecuteQuery("pk_stordoc", "bd_stordoc", "code", bodyObject.getString("cbodywarehouseid")));
 | 
	
		
			
				|  |  | +				transformbodyvo.setCmaterialoid(SqlexecuteQuery("pk_source", "bd_material_v", "code", bodyObject.getString("cmaterialoid")));
 | 
	
		
			
				|  |  | +				transformbodyvo.setCmaterialvid(SqlexecuteQuery("pk_material", "bd_material", "code", bodyObject.getString("cmaterialoid")));
 | 
	
		
			
				|  |  | +				transformbodyvo.setCunitid(SqlexecuteQuery("pk_measdoc", "bd_measdoc", "code", bodyObject.getString("cunitid")));
 | 
	
		
			
				|  |  | +				transformbodyvo.setCastunitid(SqlexecuteQuery("pk_measdoc", "bd_measdoc", "code", bodyObject.getString("castunitid")));
 | 
	
		
			
				|  |  | +				transformbodyvo.setVchangerate(bodyObject.getString("vchangerate"));
 | 
	
		
			
				|  |  | +				transformbodyvo.setNnum(new UFDouble(bodyObject.getString("nnum")));
 | 
	
		
			
				|  |  | +				transformbodyvo.setNassistnum(new UFDouble(bodyObject.getString("nassistnum")));
 | 
	
		
			
				|  |  | +				transformbodyvo.setNcostprice(new UFDouble(bodyObject.getString("ncostprice")));
 | 
	
		
			
				|  |  | +				transformbodyvo.setNcostmny(new UFDouble(bodyObject.getString("ncostmny")));
 | 
	
		
			
				|  |  | +				transformbodyvos[i] = transformbodyvo;
 | 
	
		
			
				|  |  | +				i++;
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			transformvo.setChildrenVO(transformbodyvos);
 | 
	
		
			
				|  |  | +			
 | 
	
		
			
				|  |  | +			ITransformMaitain itransform=(ITransformMaitain)NCLocator.getInstance().lookup(ITransformMaitain.class);
 | 
	
		
			
				|  |  | +			itransform.insert(transformvos);
 | 
	
		
			
				|  |  | +			IPFBusiAction service = NCLocator.getInstance().lookup(IPFBusiAction.class);
 | 
	
		
			
				|  |  | +			service.processAction("APPROVE",
 | 
	
		
			
				|  |  | +	                "4N", null, transformvos[0], null, null);
 | 
	
		
			
				|  |  | +			out.print(formatRSJsonData("成功","",vbillcode)); 
 | 
	
		
			
				|  |  | +			
 | 
	
		
			
				|  |  | +		} catch (Exception e) {
 | 
	
		
			
				|  |  | +			// TODO Auto-generated catch block
 | 
	
		
			
				|  |  | +			resp.getWriter().write(formatRSJsonData("失败",
 | 
	
		
			
				|  |  | +				     e.getMessage().toString(),"").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 vbillcode = "vbillcode";//单据号
 | 
	
		
			
				|  |  | +		String group = "pk_group";//集团编码
 | 
	
		
			
				|  |  | +		String creator = "creator";//创建人
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		String body = "cspecialbid";//表体
 | 
	
		
			
				|  |  | + 
 | 
	
		
			
				|  |  | +		String[] HeadKey = {vbillcode,group,creator};
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		for (String as : HeadKey) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			if (json.getString(as).isEmpty()) {
 | 
	
		
			
				|  |  | +				empty = false;
 | 
	
		
			
				|  |  | +				mags.append("'" + as + "'");
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		if (json.getJSONArray(body)==null) {
 | 
	
		
			
				|  |  | +			empty = false;
 | 
	
		
			
				|  |  | +			mags.append("表体不存在! ");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		JSONArray oprepObjectBs = json.getJSONArray("cspecialbid");
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		if (oprepObjectBs == null || oprepObjectBs.size() == 0) {
 | 
	
		
			
				|  |  | +			throw new Exception("表体内容不可为空!");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		String cmaterialoid = "cmaterialoid";//物料编码
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		for(int i = 0; i < oprepObjectBs.size(); i++) {
 | 
	
		
			
				|  |  | +			
 | 
	
		
			
				|  |  | +			JSONObject oprepJsonObjectB = oprepObjectBs.getJSONObject(i);
 | 
	
		
			
				|  |  | +			String[] BodyKey = {cmaterialoid};
 | 
	
		
			
				|  |  | +			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);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	/*
 | 
	
		
			
				|  |  | +	 * 数据库查询
 | 
	
		
			
				|  |  | +	 */
 | 
	
		
			
				|  |  | +	private String SqlexecuteQuery(String out,String table,String key,String value) throws Exception {
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		String sql = "select "+out+" from "+table+" where "+key+" = '"+value+"' and nvl(dr,0)=0";
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		Object object;
 | 
	
		
			
				|  |  | +			object = iuap.executeQuery(sql, new ColumnProcessor());
 | 
	
		
			
				|  |  | +			if (object==null) {
 | 
	
		
			
				|  |  | +				throw new DAOException("未查询到数据!请检查编码"+value+"是否正确!");
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			
 | 
	
		
			
				|  |  | +			return object.toString();
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	
 | 
	
		
			
				|  |  | +	/*
 | 
	
		
			
				|  |  | +	 * 查询转换类型pk
 | 
	
		
			
				|  |  | +	 */
 | 
	
		
			
				|  |  | +	private String QueryTrantype(String code,String group) throws Exception {
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		String sql = "select pk_billtypeid from bd_billtype where pk_billtypecode = '"+code+"' and pk_group = '"+group+"' and nvl(dr,0)=0";
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		Object object;
 | 
	
		
			
				|  |  | +			object = iuap.executeQuery(sql, new ColumnProcessor());
 | 
	
		
			
				|  |  | +			if (object==null) {
 | 
	
		
			
				|  |  | +				throw new DAOException("未查询到数据!请检查编码"+code+"是否正确!");
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			
 | 
	
		
			
				|  |  | +			return object.toString();
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 |