后台审批功能 销售发货单 生成 销售出库单 java NC633 接口开发

Posted 廿二又

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了后台审批功能 销售发货单 生成 销售出库单 java NC633 接口开发相关的知识,希望对你有一定的参考价值。

我感觉有必要分享一下,历时2周搁置的功能 

应该有很多小伙伴都在找的问题  祝你们好运

关键代码

 集团id一定要填 , 两周的时间就是栽在这id上

try {
			
			BaseDAO bd = new BaseDAO();
			nc.vo.so.m4331.entity.DeliveryHVO deliveryHVO=new nc.vo.so.m4331.entity.DeliveryHVO();
			 //fstatusflag //1=自由,2=审批通过,3=冻结,4=关闭,7=审批中,8=审批不通过,5=失效,
			//获取销售发货单(4331) 进行审批  产生 销售出库单 (4C)
			deliveryHVO = (nc.vo.so.m4331.entity.DeliveryHVO) bd.executeQuery("select * from jpncdb1.so_delivery where dr=0 and vbillcode ='"+vsourcebillcode2+"'", new BeanProcessor(nc.vo.so.m4331.entity.DeliveryHVO.class));
			if (deliveryHVO != null){
				String so_delivery_pk=deliveryHVO.getAttributeValue("cdeliveryid").toString();//主键
				SuperVO[] deliveryBVO = HYPubBO_Client.queryByCondition(DeliveryBVO.class,  " cdeliveryid = '"+so_delivery_pk+"'");
				// 30   4331  4C
				//String flag2 = PfUtilTools.approveSilently("4331",so_delivery_pk, "Y", "批准","hcj",null);
				IplatFormEntry iIplatFormEntry = (IplatFormEntry) NCLocator.getInstance().lookup(IplatFormEntry.class.getName());
				//这是集团ID 一般每个表都有 随便找 pk_group 字段
				InvocationInfoProxy.getInstance().setGroupId("00013910000000000N4S"); //这个字段很重要
				AggregatedValueObject deliveryVO= new nc.vo.so.m4331.entity.DeliveryVO();
				deliveryVO.setParentVO(deliveryHVO);
				deliveryVO.setChildrenVO(deliveryBVO);
				
				HashMap map = new HashMap();
				map.put("notechecked", "notechecked");
				// 审批动作 ,审批单据类型 , null ,billvo,null, 环境  ,
				Object processAction = iIplatFormEntry.processAction("APPROVE", "4331", null, deliveryVO,null, map);
				
				
			}
		} catch (Exception e1) {
			e1.printStackTrace();
		}

package nc.impl.jpncinterface;

import java.awt.event.ActionEvent;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.regex.Pattern;

import nc.bs.dao.BaseDAO;
import nc.bs.dao.DAOException;
import nc.bs.framework.common.InvocationInfoProxy;
import nc.bs.framework.common.NCLocator;
import nc.bs.ic.general.businessevent.ICGeneralCommonEvent;
import nc.bs.pub.pf.PfUtilTools;
import nc.impl.pubapp.pattern.data.bill.BillQuery;
import nc.itf.uap.pf.IPFBusiAction;
import nc.itf.uap.pf.IplatFormEntry;
import nc.jdbc.framework.processor.BeanListProcessor;
import nc.jdbc.framework.processor.BeanProcessor;
import nc.jdbc.framework.processor.ColumnProcessor;
import nc.md.persist.framework.IMDPersistenceQueryService;
import nc.ui.so.m30.billui.action.SaleOrderMESApproveAction;
import nc.ui.so.m4331.billui.action.DeliveryApproveAction;
import nc.ui.trade.business.HYPubBO_Client;
import nc.vo.ic.m4c.entity.SaleOutBodyVO;
import nc.vo.ic.m4c.entity.SaleOutHeadVO;
import nc.vo.pu.m21.entity.OrderItemVO;
import nc.vo.pub.AggregatedValueObject;
import nc.vo.pub.SuperVO;
import nc.vo.pub.pf.workflow.IPFActionName;
import nc.vo.rmex.rmupload.deliverybill.DeliveryBillHVO;
import nc.vo.so.m4331.entity.DeliveryBVO;
import nc.vo.so.m4331.entity.DeliveryVO;


import org.apache.commons.lang3.StringUtils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class GetIcSaleout {
	
	

	//库存销售出库单
	public String getExecute(String operation,String orderform){
		String resultstr=null; 
		if (operation.equals("Insert")){
			//插入
			if(isJsonObject(orderform)){//验证入参
				resultstr = insert(operation, orderform);
			}else{
				JSONObject backinfojson=new JSONObject();
				backinfojson.put("$successful", "N");
				backinfojson.put("sendresult", "JSON格式错误");
				resultstr=backinfojson.toString();
			}
		}else if (operation.equals("Update")){
			//修改
			resultstr=update(operation, orderform);
			
		}else if (operation.equals("Delete")){
			//删除
			resultstr=delete(operation, orderform);
			
		}else if (operation.equals("Search")){
			//查询
			resultstr = search(operation, orderform);
			
		}else {
			
			JSONObject backinfojson=new JSONObject();
			backinfojson.put("$successful", "N");
			backinfojson.put("sendresult", "未开放!");
			resultstr=backinfojson.toString();
		}
		
		return resultstr;
	}
	
	/**
	 * 插入
	 * @param operation
	 * @param orderform
	 * @return
	 */
	public String insert(String operation,String orderform){
		
		JSONObject orderjson = JSON.parseObject(orderform);
		StringBuffer xml_sb=new StringBuffer();
		//String vbillcode = orderjson.getString("vbillcode");//单
		String vsourcebillcode2 = orderjson.getString("vsourcebillcode");//销售发货单号
		
		
		/*
		 * -- 订单类型
		select * from jpncdb1.bd_billtype where billtypename like '%整车销售%' and parentbilltype = '4C'
		-- 销售发货单 单据号审批 产生销售出库单
		
		 * */
		//String flag1 = PfUtilTools.approveSilently("交易类型编码或单据类型",主表主键, "是否通过", 审批批语, "",用户组, "动作");
		

		try {
			
			BaseDAO bd = new BaseDAO();
			nc.vo.so.m4331.entity.DeliveryHVO deliveryHVO=new nc.vo.so.m4331.entity.DeliveryHVO();
			//nc.vo.so.m4331.entity.DeliveryBVO deliveryBVO[]=null;
			//List<DeliveryBVO> deliveryBVO=new ArrayList<DeliveryBVO>();
			 //fstatusflag //1=自由,2=审批通过,3=冻结,4=关闭,7=审批中,8=审批不通过,5=失效,
			//获取销售发货单(4331) 进行审批  产生 销售出库单 (4C)
			deliveryHVO = (nc.vo.so.m4331.entity.DeliveryHVO) bd.executeQuery("select * from jpncdb1.so_delivery where dr=0 and vbillcode ='"+vsourcebillcode2+"'", new BeanProcessor(nc.vo.so.m4331.entity.DeliveryHVO.class));
			if (deliveryHVO != null){
				String so_delivery_pk=deliveryHVO.getAttributeValue("cdeliveryid").toString();//主键
				//deliveryBVO[0] = (nc.vo.so.m4331.entity.DeliveryBVO) bd.executeQuery("select * from jpncdb1.so_delivery_b where dr=0 and cdeliveryid ='"+so_delivery_pk+"'", new BeanProcessor(nc.vo.so.m4331.entity.DeliveryBVO.class));
				SuperVO[] deliveryBVO = HYPubBO_Client.queryByCondition(DeliveryBVO.class,  " cdeliveryid = '"+so_delivery_pk+"'");
				//deliveryBVO=(List<DeliveryBVO>) bd.executeQuery("select * from jpncdb1.so_delivery_b where dr=0 and cdeliveryid ='"+so_delivery_pk+"'", new BeanListProcessor(DeliveryBVO.class));
				String[] users = {"hcj"};
				// 30   4331  4C
				//String flag2 = PfUtilTools.approveSilently("4331",so_delivery_pk, "Y", "批准","hcj",null);
				//String flag2 = PfUtilTools.approveSilently("4C-Cxx-001",so_delivery_pk, "Y", "", "APPROVE",null);
				//String flag2 = PfUtilTools.approveSilently("4331",so_delivery_pk,null, null, "APPROVE",null);
				//System.out.println(flag2);
				//IplatFormEntry iIplatFormEntry = NCLocator.getInstance().lookup(IplatFormEntry.class);
				IplatFormEntry iIplatFormEntry = (IplatFormEntry) NCLocator.getInstance().lookup(IplatFormEntry.class.getName());
				InvocationInfoProxy.getInstance().setGroupId("00013910000000000N4S");
				AggregatedValueObject deliveryVO= new nc.vo.so.m4331.entity.DeliveryVO();
				 //deliveryVO
				 //nc.vo.so.m4331.entity.DeliveryVO
				 
				deliveryVO.setParentVO(deliveryHVO);
				deliveryVO.setChildrenVO(deliveryBVO);
				
				
				HashMap map = new HashMap();
				map.put("notechecked", "notechecked");
				Object processAction = iIplatFormEntry.processAction("APPROVE", "4331", null, deliveryVO,null, map);
				System.out.println(processAction);
				//流程平台动作处理 服务接口

				//destBill是aggvo
				/*BillQuery<DeliveryBillHVO> billquery = new BillQuery(DeliveryBillHVO.class);
				DeliveryBillHVO[] aggvo=billquery.query(new String[] {so_delivery_pk});
				*/
				/*IMDPersistenceQueryService service=NCLocator.getInstance().lookup(IMDPersistenceQueryService.class);
				QueryCondition queryCondition=new QueryCondition(src_class);
				queryCondition.addCondition(Restrictions.and(Restrictions.eq("vbillcode", billcode), Restrictions.eq("dr", 0)));
				service.queryBillOfVOByCond(queryCondition, false);
				*/
				//DeliveryBillHVO[] obj= (DeliveryBillHVO[]) ifbaction.processAction("WRITE", "4331", null, aggvo, null, null);
				
				//Object retObj = new PfUtilBO().processAction("APPROVE", "4331", "2005-05-30 12:23:44", null, billVo, userObj );
						
				
				
			}
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		
		
		
		
		String resultstr2 = ""; 
		JSONObject backinfojson2=new JSONObject();
		backinfojson2.put("$successful", "Y");
		backinfojson2.put("sendresult", "");
		resultstr2=backinfojson2.toString();
		boolean flag = true;
		if(flag){
			return resultstr2;
		}
		
		
		String pk_org = orderjson.getString("pk_orgcode"); //库存组织 10202 pk_orgcode
		String vtrantypecode = orderjson.getString("ctrantypecode"); //出入库类型编码 4C-Cxx-001 ctrantypecode
		String cwarehouseid = orderjson.getString("cwarehousecode"); //仓库 X06 cwarehousecode
		String cwhsmanagerid = orderjson.getString("cwhsmanagercode"); //库管员 08708 cwhsmanagercode
		String cbizid = orderjson.getString("cbizcode"); //业务员 0110 cbizcode
		String cdptvid  = orderjson.getString("cdptcode"); //部门 ""  cdptcode
		String ccustomerid = orderjson.getString("ccustomercode"); //订单客户 070204 ccustomercode
		//String ntotalnum = orderjson.getString("ntotalnum"); //总数量会自动计算
		String cfanaceorgoid = orderjson.getString("cfanaceorgcode"); //结算财务组织  100 cfanaceorgcode
		
		
		
		String cbiztype = orderjson.getString("cbiztype"); //业务流程 Cxx-001
		String dbilldate = orderjson.getString("dbilldate"); //单据日期 2021-09-07 08:33:49
		String trafficorgoid = orderjson.getString("trafficorgoid"); //物流组织 101
		String freplenishflag = orderjson.getString("freplenishflag");// 销售退货 N
		String boutretflag = orderjson.getString("boutretflag"); //销售退回 N
		String fbillflag = orderjson.getString("fbillflag"); //单据状态 2
		String vnote = orderjson.getString("vnote"); //备注
		String vdef2 = orderjson.getString("vdef2"); //表头自定义项2 02
		String creator = orderjson.getString("creator"); //创建人 hcj
		String billmaker = orderjson.getString("billmaker"); //制单人 hcj
		String csaleorgoid = orderjson.getString("csaleorgoid"); //销售组织 101
		String creceivfinorgoid = orderjson.getString("creceivfinorgoid"); //应收财务组织 100
		String ctrantypeid = orderjson.getString("ctrantypeid"); //出入库类型 4C-Cxx-001
		

		String creationtime = getDateStr(new Date(),"yyyy-MM-dd HH:mm:ss"); //制单日期
	
		//子表
		JSONArray body = (JSONArray) orderjson.get("body");
		StringBuffer body_sb=new StringBuffer();
		for (int i = 0;i<body.size();i++){
			
			JSONObject tmpb = body.getJSONObject(i);
			
			String crowno = tmpb.getString("crowno"); // 行号10 crowno
			String cmaterialoid = tmpb.getString("cmaterialoid"); //物料编码 91812160
			String cunitid = tmpb.getString("cunitid"); // 主单位 012
			String vfree1 = tmpb.getString("vfree1"); //自由辅助属性1 10014910000000002J0Q 颜色 0002 
			String nshouldnum = tmpb.getString("nshouldnum"); //应发主数量 5 
			String nnum = tmpb.getString("nnum"); //实发主数量 5 
			String price = tmpb.getString("price");// 单价 1000
			//String money = tmpb.getString("money"); //金额 5000	
			String dbizdate = tmpb.getString("dbizdate");//出库日期 2021-10-09 10:12:22
			String cinvoicecustid = tmpb.getString("cinvoicecustid"); //开票客户 350135 
			String csourcebillhid = tmpb.getString("csourcebillhid"); //来源单据表头主键 1001AZ10000001C3AK7J
			String csourcebillbid = tmpb.getString("csourcebillbid"); //来源单据表体主键  1001AZ10000001C3AK7K
			String csourcetype = tmpb.getString("csourcetype"); //来源单据类型 4331
			String csourcetranstype = tmpb.getString("csourcetranstype"); //来源交易类型 4331-Cxx-001
			String vsourcebillcode = tmpb.getString("vsourcebillcode"); //来源单据号 GFH210900002
			String vsourcerowno = tmpb.getString("vsourcerowno"); //来源单据行号 10
			String casscustid = tmpb.getString("casscustid"); //客户 350135
			
			String cfirsttype = tmpb.getString("cfirsttype"); //源头单据类型 30
			String cfirsttranstype = tmpb.getString("cfirsttranstype"); //源头交易类型 30
			String cfirstbillhid = tmpb.getString("cfirstbillhid"); //源头单据号pk //1001AZ10000001C3AK6U
			String cfirstbillbid = tmpb.getString("cfirstbillbid"); //源头单据行号pk //1001AZ10000001C3AK6Z
			String vfirstbillcode = tmpb.getString("vfirstbillcode"); //源头单据号 GXD210900006
			String vfirstrowno = tmpb.getString("vfirstrowno"); //源头单据行号 10
			String vnotebody = tmpb.getString("vnotebody"); //行备注 
			String flargess = tmpb.getString("flargess"); //赠品 N
			String bsourcelargess = tmpb.getString("bsourcelargess"); //上游赠品行 N	
			String bonroadflag = tmpb.getString("bonroadflag"); //在途 N
			String cbodytranstypecode = tmpb.getString("cbodytranstypecode"); //出入库类型 4C-Cxx-001
			String cbodywarehouseid = tmpb.getString("cbodywarehouseid"); //库存仓库 X06
			//String pk_org = tmpb.getString("pk_org"); //库存组织  10202
			String ddeliverdate = tmpb.getString("ddeliverdate"); //要求收货日期 2021-09-07 08:33:49
			String norignetprice = tmpb.getString("norignetprice"); //主无税净价 1000
			String norigtaxnetprice = tmpb.getString("norigtaxnetprice"); // 主含税净价 1000
			String csourcebilldate = tmpb.getString("csourcebilldate"); //来源单据日期 2021-09-07 08:33:49
			String cfirstbilldate = tmpb.getString("cfirstbilldate"); //源头单据日期 2021-09-07 08:33:49


			//总价
			//金额= 数量*单价
			BigDecimal bd_num = new BigDecimal(nnum);//数量
			BigDecimal bd_price = new BigDecimal(price).setScale(3, RoundingMode.HALF_UP);//单价
			BigDecimal bd_total = bd_num.multiply(bd_price);//总价
			
			
			BaseDAO bd_color = new BaseDAO();
			String pk_defdoc = "";
			try {
				//颜色代码查询
				pk_defdoc = (String) bd_color.executeQuery("SELECT pk_defdoc FROM bd_defdoc WHERE pk_defdoclist = '10014910000000002GJJ' and code = '"+vfree1+"'", new ColumnProcessor());
			} catch (DAOException e) {
				e.printStackTrace();
			}
			
			
			StringBuffer body_sb2 = new StringBuffer();
			JSONArray body2 = (JSONArray) tmpb.get("body");
			for (int j = 0;j<body2.size();j++){
				
				JSONObject tmpb2= body2.getJSONObject(j);
				//String nnum_2 = tmpb2.getString("nnum");
				String nnum_2 = nnum; //主数量 2 
				body_sb2.append(SetIcSaleoutXml.setPoOrderBody2(nnum_2));
				
			}
			
			
			body_sb.append(SetIcSaleoutXml.setPoOrderBody(body_sb2.toString(), crowno, cmaterialoid, cunitid, vfree1, nshouldnum, 
					nnum, price, bd_total.toString(), dbizdate, cinvoicecustid, csourcebillhid, csourcebillbid, csourcetype, 
					csourcetranstype, vsourcebillcode, vsourcerowno, casscustid, cfirsttype, cfirsttranstype, cfirstbillhid,
					cfirstbillbid, vfirstbillcode, vfirstrowno, vnotebody, flargess, bsourcelargess, bonroadflag, cbodytranstypecode, 
					cbodywarehouseid, pk_org, ddeliverdate, norignetprice, norigtaxnetprice, csourcebilldate, cfirstbilldate));
		}

		
		xml_sb = SetIcSaleoutXml.setPoOrderHead(body_sb.toString(), "", "", cbiztype, dbilldate, vtrantypecode, pk_org, cwarehouseid, trafficorgoid,
				cwhsmanagerid, cbizid, ccustomerid, freplenishflag, boutretflag, fbillflag, vnote, vdef2, creator, billmaker, creationtime, 
				cdptvid, csaleorgoid, cfanaceorgoid, creceivfinorgoid, ctrantypeid);
		
		//
		GetXChangeService gtxchangeservice=new GetXChangeService();
		
		Object ovbillcode = "";
		
		JSONObject backinfojson=gtxchangeservice.getXChangeservice(xml_sb.toString());
		if(backinfojson.getString("$successful").equals("Y")){
			String pk=backinfojson.getJSONObject("sendresult").getString("content");
			BaseDAO bd = new BaseDAO();
			try {
				//获取插入的订单单号  
				ovbillcode = bd.executeQuery("select vbillcode from ic_saleout_h where cgeneralhid ='"+pk+"'", new ColumnProcessor());
				
				backinfojson.put("$vbillcode", ovbillcode);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}else if(backinfojson.getString("$successful").equals("N")) {
			backinfojson.put("$vbillcode",ovbillcode);
			
		}
		return backinfojson.toJSONString();
		
	}
	
	/**
	 * 修改
	 * @param operation
	 * @param orderform
	 * @return
	 */
	public String update(String operation,String orderform){
		JSONObject orderjson = JSON.parseObject(orderform);

		String vbillcode = orderjson.getString("vbillcode");//单据号 
		
		String pk = "";

		JSONObject backinfojson=new JSONObject();
		if (StringUtils.isBlank(vbillcode)){
			backinfojson.put("sendresult", "vbillcode为空!");
			backinfojson.put("$successful", "N");
		}else{
			BaseDAO bd = new BaseDAO();
			SaleOutHeadVO saleOutHeadVO=new SaleOutHeadVO();
			try {
				
				saleOutHeadVO = (SaleOutHeadVO) bd.executeQuery("select * from ic_saleout_h where dr=0 and fbillflag <> 1 and vbillcode ='"+vbillcode+"'", new BeanProcessor(SaleOutHeadVO.class));
			} catch (Exception e1) {
				e1.printStackTrace();
			}
			
			if (saleOutHeadVO != null){
				pk=saleOutHeadVO.getAttributeValue("cgeneralhid").toString();
				if(StringUtils.isBlank(pk)){
					backinfojson.put("sendresult", "查询不到单据!");
					backinfojson.put("$successful", "N");
					
				}else{
					
					StringBuffer xml_sb=new StringBuffer();
					//String vbillcode = orderjson.getString("vbillcode");//单
					String pk_org = orderjson.getString("pk_orgcode"); //库存组织 10202 pk_orgcode
					String vtrantypecode = orderjson.getString("ctrantypecode"); //出入库类型编码 4C-Cxx-001 ctrantypecode
					String cwarehouseid = orderjson.getString("cwarehousecode"); //仓库 X06 cwarehousecode
					String cwhsmanagerid = orderjson.getString("cwhsmanagercode"); //库管员 08708 cwhsmanagercode
					String cbizid = orderjson.getString("cbizcode"); //业务员 0110 cbizcode
					String cdptvid  = orderjson.getString("cdptcode"); //部门 ""  cdptcode
					String ccustomerid = orderjson.getString("ccustomercode"); //订单客户 070204 ccustomercode
					//String ntotalnum = orderjson.getString("ntotalnum"); //总数量会自动计算
					String cfanaceorgoid = orderjson.getString("cfanaceorgcode"); //结算财务组织  100 cfanaceorgcode
					
					
					
					String cbiztype = orderjson.getString("cbiztype"); //业务流程 Cxx-001
					String dbilldate = orderjson.getString("dbilldate"); //单据日期 2021-09-07 08:33:49
					String trafficorgoid = orderjson.getString("trafficorgoid"); //物流组织 101
					String freplenishflag = orderjson.getString("freplenishflag");// 销售退货 N
					String boutretflag = orderjson.getString("boutretflag"); //销售退回 N
					String fbillflag = orderjson.getString("fbillflag"); //单据状态 2
					String vnote = orderjson.getString("vnote"); //备注
					String vdef2 = orderjson.getString("vdef2"); //表头自定义项2 02
					String creator = orderjson.getString("creator"); //创建人 hcj
					String billmaker = orderjson.getString("billmaker"); //制单人 hcj
					String csaleorgoid = orderjson.getString("csaleorgoid"); //销售组织 101
					String creceivfinorgoid = orderjson.getString("creceivfinorgoid"); //应收财务组织 100
					String ctrantypeid = orderjson.getString("ctrantypeid"); //出入库类型 4C-Cxx-001
					

					String creationtime = getDateStr(new Date(),"yyyy-MM-dd HH:mm:ss"); //制单日期
				
					//子表
					JSONArray body = (JSONArray) orderjson.get("body");
					StringBuffer body_sb=new StringBuffer();
					for (int i = 0;i<body.size();i++){
						
						JSONObject tmpb = body.getJSONObject(i);
						
						String crowno = tmpb.getString("crowno"); // 行号10 crowno
						String cmaterialoid = tmpb.getString("cmaterialoid"); //物料编码 91812160
						String cunitid = tmpb.getString("cunitid"); // 主单位 012
						String vfree1 = tmpb.getString("vfree1"); //自由辅助属性1 10014910000000002J0Q 颜色 0002 
						String nshouldnum = tmpb.getString("nshouldnum"); //应发主数量 5 
						String nnum = tmpb.getString("nnum"); //实发主数量 5 
						String price = tmpb.getString("price");// 单价 1000
						//String money = tmpb.getString("money"); //金额 5000	
						String dbizdate = tmpb.getString("dbizdate");//出库日期 2021-10-09 10:12:22
						String cinvoicecustid = tmpb.getString("cinvoicecustid"); //开票客户 350135 
						String csourcebillhid = tmpb.getString("csourcebillhid"); //来源单据表头主键 1001AZ10000001C3AK7J
						String csourcebillbid = tmpb.getString("csourcebillbid"); //来源单据表体主键  1001AZ10000001C3AK7K
						String csourcetype = tmpb.getString("csourcetype"); //来源单据类型 4331
						String csourcetranstype = tmpb.getString("csourcetranstype"); //来源交易类型 4331-Cxx-001
						String vsourcebillcode = tmpb.getString("vsourcebillcode"); //来源单据号 GFH210900002
						String vsourcerowno = tmpb.getString("vsourcerowno"); //来源单据行号 10
						String casscustid = tmpb.getString("casscustid"); //客户 350135
						
						String cfirsttype = tmpb.getString("cfirsttype"); //源头单据类型 30
						String cfirsttranstype = tmpb.getString("cfirsttranstype"); //源头交易类型 30
						String cfirstbillhid = tmpb.getString("cfirstbillhid"); //源头单据号pk //1001AZ10000001C3AK6U
						String cfirstbillbid = tmpb.getString("cfirstbillbid"); //源头单据行号pk //1001AZ10000001C3AK6Z
						String vfirstbillcode = tmpb.getString("vfirstbillcode"); //源头单据号 GXD210900006
						String vfirstrowno = tmpb.getString("vfirstrowno"); //源头单据行号 10
						String vnotebody = tmpb.getString("vnotebody"); //行备注 
						String flargess = tmpb.getString("flargess"); //赠品 N
						String bsourcelargess = tmpb.getString("bsourcelargess"); //上游赠品行 N	
						String bonroadflag = tmpb.getString("bonroadflag"); //在途 N
						String cbodytranstypecode = tmpb.getString("cbodytranstypecode"); //出入库类型 4C-Cxx-001
						String cbodywarehouseid = tmpb.getString("cbodywarehouseid"); //库存仓库 X06
						//String pk_org = tmpb.getString("pk_org"); //库存组织  10202
						String ddeliverdate = tmpb.getString("ddeliverdate"); //要求收货日期 2021-09-07 08:33:49
						String norignetprice = tmpb.getString("norignetprice"); //主无税净价 1000
						String norigtaxnetprice = tmpb.getString("norigtaxnetprice"); // 主含税净价 1000
						String csourcebilldate = tmpb.getString("csourcebilldate"); //来源单据日期 2021-09-07 08:33:49
						String cfirstbilldate = tmpb.getString("cfirstbilldate"); //源头单据日期 2021-09-07 08:33:49


						//总价
						//金额= 数量*单价
						BigDecimal bd_num = new BigDecimal(nnum);//数量
						BigDecimal bd_price = new BigDecimal(price).setScale(3, RoundingMode.HALF_UP);//单价
						BigDecimal bd_total = bd_num.multiply(bd_price);//总价
						
						
						BaseDAO bd_color = new BaseDAO();
						String pk_defdoc = "";
						try {
							//颜色代码查询
							pk_defdoc = (String) bd_color.executeQuery("SELECT pk_defdoc FROM bd_defdoc WHERE pk_defdoclist = '10014910000000002GJJ' and code = '"+vfree1+"'", new ColumnProcessor());
						} catch (DAOException e) {
							e.printStackTrace();
						}
						
						
						StringBuffer body_sb2 = new StringBuffer();
						JSONArray body2 = (JSONArray) tmpb.get("body");
						for (int j = 0;j<body2.size();j++){
							
							JSONObject tmpb2= body2.getJSONObject(j);
							//String nnum_2 = tmpb2.getString("nnum");
							String nnum_2 = nnum; //主数量 2 
							body_sb2.append(SetIcSaleoutXml.setPoOrderBody2(nnum_2));
							
						}
						
						
						body_sb.append(SetIcSaleoutXml.setPoOrderBody(body_sb2.toString(), crowno, cmaterialoid, cunitid, vfree1, nshouldnum, 
								nnum, price, bd_total.toString(), dbizdate, cinvoicecustid, csourcebillhid, csourcebillbid, csourcetype, 
								csourcetranstype, vsourcebillcode, vsourcerowno, casscustid, cfirsttype, cfirsttranstype, cfirstbillhid,
								cfirstbillbid, vfirstbillcode, vfirstrowno, vnotebody, flargess, bsourcelargess, bonroadflag, cbodytranstypecode, 
								cbodywarehouseid, pk_org, ddeliverdate, norignetprice, norigtaxnetprice, csourcebilldate, cfirstbilldate));
					}

					
					xml_sb = SetIcSaleoutXml.setPoOrderHead(body_sb.toString(), pk,vbillcode , cbiztype, dbilldate, vtrantypecode, pk_org, cwarehouseid, trafficorgoid,
							cwhsmanagerid, cbizid, ccustomerid, freplenishflag, boutretflag, fbillflag, vnote, vdef2, creator, billmaker, creationtime, 
							cdptvid, csaleorgoid, cfanaceorgoid, creceivfinorgoid, ctrantypeid);
					
					//
					GetXChangeService gtxchangeservice=new GetXChangeService();
					backinfojson=gtxchangeservice.getXChangeservice(xml_sb.toString());
					backinfojson.put("$vbillcode", vbillcode);
					if(backinfojson.getString("$successful").equals("Y")){
						String oldpk=backinfojson.getJSONObject("sendresult").getString("bdocid");
						
						try {
							bd.deleteByClause(SaleOutHeadVO.class, "cgeneralhid='"+oldpk+"'");
							bd.deleteByClause(SaleOutBodyVO.class, "cgeneralhid='"+oldpk+"'");
						} catch (Exception e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						String newpk=backinfojson.getJSONObject("sendresult").getString("content");
						try {
							String sql="update ic_saleout_h set vbillcode='"+vbillcode+"' where cgeneralhid='"+newpk+"'";
							bd.executeUpdate(sql);
						} catch (Exception e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
				}
			}else{
				backinfojson.put("sendresult", "查询不到单据!");
				backinfojson.put("$successful", "N");
				
			}
		}
		
		return backinfojson.toJSONString();
	}
	
	/**
	 * 删除
	 * @param operation
	 * @param orderform
	 * @return
	 */
	public String delete(String operation,String orderform){
		JSONObject orderjson=JSON.parseObject(orderform);
		String vbillcode=orderjson.getString("vbillcode");
		String pk=null;
		JSONObject backinfojson=new JSONObject();
		BaseDAO bd = new BaseDAO();
		if (vbillcode == null || "".equals(vbillcode)){
			backinfojson.put("sendresult", "vbillcode为空!");
			backinfojson.put("$successful", "N");
		}else{
			
			SaleOutHeadVO saleOutHeadVO = new SaleOutHeadVO();
			try {
				String sql="select * from ic_saleout_h where vbillcode = '"+vbillcode+"' and dr=0  and fbillflag <> 1 ";
				saleOutHeadVO = (SaleOutHeadVO) bd.executeQuery(sql, new BeanProcessor(SaleOutHeadVO.class));
			} catch (Exception e1) {
				e1.printStackTrace();
			}
			
			if (saleOutHeadVO != null){
				pk=saleOutHeadVO.getAttributeValue("cgeneralhid").toString();
				if(pk == null || "".equals(pk)){
					backinfojson.put("sendresult", "查询不到单据!");
					backinfojson.put("$successful", "N");
					
				}else{
					//单据状态
					if(saleOutHeadVO.getAttributeValue("fbillflag").toString().equals("2") || saleOutHeadVO.getAttributeValue("fbillflag").toString().equals("6")){
						//orderHeaderVO.setAttributeValue("dr", "1");
						saleOutHeadVO.setFbillflag(1);
						
						try {
							bd.updateVO(saleOutHeadVO);
						} catch (Exception e) {
							e.printStackTrace();
						}
						List<SaleOutBodyVO> orderItemVOList=new ArrayList<SaleOutBodyVO>();
						try {
							String sql="select * from ic_generalout_b where cgeneralhid = '"+pk+"' and dr=0 and fbillflag <> 1 ";
							orderItemVOList=(List<SaleOutBodyVO>) bd.executeQuery(sql, new BeanListProcessor(SaleOutBodyVO.class));
						} catch (Exception e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						for (int i=0;i<orderItemVOList.size();i++){
							orderItemVOList.get(i).setAttributeValue("dr", "1");
						}
						try {
							bd.updateVOList(orderItemVOList);
						} catch (Exception e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						backinfojson.put("$successful", "Y");
						backinfojson.put("sendresult", "单据删除成功!");
					}else{
						backinfojson.put("$successful", "N");
						backinfojson.put("sendresult", "单据状态不允许删除!");
					}
					
				}
			}
		}
		return backinfojson.toString();
	}

	/**
	 * 查询
	 * @param operation
	 * @param orderform
	 * @return
	 */
	public String search(String operation,String orderform){
		JSONObject backinfojson=new JSONObject();
		backinfojson.put("$successful", "N");
		backinfojson.put("sendresult", "未开放!");
		return backinfojson.toString();
	}
	
	
	
	
	
	

	 /**
    * 判断字符串是否为JsonObject {@link org.json.JSONObject}
    * @param jsonStr {@link java.lang.String}
    * @return boolean
    */
   public static boolean isJsonObject(final String jsonStr) {
       if (StringUtils.isBlank(jsonStr)) return false;
       return Pattern.matches("^\\\\{.*\\\\}$", jsonStr.trim());
   }

   /**
	 * 日期转换为字符串
	 * @param date 日期
	 * @param format 日期格式
	 * @return 字符串
	 */
	public static String getDateStr(Date date,String format) {
		if (null == date) {
			return null;
		}
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		return sdf.format(date);
	}
   
}

 

以上是关于后台审批功能 销售发货单 生成 销售出库单 java NC633 接口开发的主要内容,如果未能解决你的问题,请参考以下文章

金蝶K3 Wise 12.2版本 有一单出库单生成发票提示不能将值插入列FAuxPrice,UPDATE失败。

EPR u8销售发货单 SQL语句视图

金蝶K3自定义销售出库单在哪里设置

金蝶k3销售出库单不能审核,出现“审核单据时出错,”原因,由于数据移动,不能以NOLOCK方式扫描

金蝶k3销售出库单不能审核,出现“审核单据时出错,”原因,由于数据移动,不能以NOLOCK方式扫描

销售单怎么快速入金蝶软件里