Pārlūkot izejas kodu

材料出库更新

zthwr 1 gadu atpakaļ
vecāks
revīzija
99417f8884
1 mainītis faili ar 1070 papildinājumiem un 1069 dzēšanām
  1. 1070 1069
      mmpac/mmpac/src/client/u8c/ui/mmpac/action/ToMaterialOutDialog.java

+ 1070 - 1069
mmpac/mmpac/src/client/u8c/ui/mmpac/action/ToMaterialOutDialog.java

@@ -1,1069 +1,1070 @@
-package u8c.ui.mmpac.action;
-
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.FlowLayout;
-import java.awt.Toolkit;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-import nc.vo.pubapp.pattern.pub.SqlBuilder;
-import javax.swing.BorderFactory;
-import javax.swing.JSplitPane;
-import javax.swing.border.BevelBorder;
-
-import nc.ui.pub.beans.UIPanel;
-import nc.bs.framework.common.NCLocator;
-import nc.hr.utils.PubEnv;
-import nc.itf.uap.IUAPQueryBS;
-import nc.jdbc.framework.processor.BeanListProcessor;
-import nc.jdbc.framework.processor.ColumnProcessor;
-import nc.jdbc.framework.processor.MapProcessor;
-import nc.ui.pub.ClientEnvironment;
-import nc.ui.pub.beans.MessageDialog;
-import nc.ui.pub.beans.UIButton;
-import nc.ui.pub.beans.UIDialog;
-import nc.ui.pub.beans.UISplitPane;
-import nc.ui.pub.bill.BillCardPanel;
-import nc.ui.pub.bill.BillEditEvent;
-import nc.ui.pub.bill.BillEditListener;
-import nc.ui.querytemplate.QueryConditionDLG;
-import nc.vo.arap.util.StringUtils;
-import nc.vo.bd.invdoc.InvbasdocVO;
-import nc.vo.bd.invdoc.InvmandocVO;
-import nc.vo.hr.tools.pub.HRAggVO;
-import nc.vo.ic.pub.bill.GeneralBillHeaderVO;
-import nc.vo.ic.pub.bill.GeneralBillItemVO;
-import nc.vo.ic.pub.bill.GeneralBillVO;
-import nc.vo.pub.BusinessException;
-import nc.vo.pub.CircularlyAccessibleValueObject;
-import nc.vo.pub.lang.UFBoolean;
-import nc.vo.pub.lang.UFDate;
-import nc.vo.pub.lang.UFDouble;
-import nc.vo.querytemplate.TemplateInfo;
-import u8c.bs.servlet.service.GetBaseDAOUtil;
-import u8c.itf.mmpac.mmpac.IOrderTotalInfo;
-import u8c.pubitf.ic.out.IMaterialOutMaintainAPI;
-import u8c.vo.OrderIssueVO;
-import u8c.vo.OrderMainVO;
-
-
-@SuppressWarnings("deprecation")
-public class ToMaterialOutDialog extends UIDialog implements ActionListener,BillEditListener{
-	/**
-	 * 弹框勾选推单生成下游单据-材料出
-	 */
-	private static final long serialVersionUID = -2605551888165671265L;
-	/** 按钮组 **/
-	private UISplitPane mainpanel = null;
-	private int focus=1;
-	private UIPanel ivjUIPanel0 = null;
-	private UIPanel ivjUIPanel2 = null;
-	private BillCardPanel datepanel = null;
-	private BillCardPanel jlcardPanel = null;//卡面面板
-	private UIPanel jlbtnpanel = null;//存放按钮的panel
-	private UIButton saveCardBtn = null ; //保存按钮
-	private UIButton cancelBtn = null ; //取消按钮
-	private UIButton selectallBtn= null ; //全选按钮
-	private UIButton cancelallBtn= null ; //全消按钮
-	private UIButton queryBtn= null ;//查询按钮 
-	private ClientEnvironment ce = ClientEnvironment.getInstance();
-	private OrderIssueVO[] issueArrays = null;
-	private HRAggVO aggvo;
-	IMaterialOutMaintainAPI imaterapi=(IMaterialOutMaintainAPI) NCLocator.getInstance().lookup(IMaterialOutMaintainAPI.class.getName());
-	private IUAPQueryBS iuap=(IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());
-	IOrderTotalInfo iorder = NCLocator.getInstance().lookup(IOrderTotalInfo.class);
-	public ToMaterialOutDialog(HRAggVO aggvo) {
-		super();
-		initialize(aggvo);
-		
-	}
-	
-	
-	public void initialize(HRAggVO aggvo){
-		Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
-		setName("clc");
-		setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
-		setTitle("生产总订单-材料明细");
-//		setSize(1000,360);
-		setSize(dimension.width-100,dimension.height-200);
-		this.setResizable(true);
-		add(getUIPanel0(), BorderLayout.NORTH);
-		add(getUIPanel2(), BorderLayout.CENTER);
-//		setLocation((dimension.width-1000)/2, (dimension.height-360)/2);
-		setLocation(100/2, 200/2);
-		addListenerEvent();
-		this.aggvo = aggvo;
-		//展示数据
-		this.issueArrays = getIssueVOs(aggvo);
-		getJlcardPanel().getBillModel().setBodyDataVO(issueArrays);
-		
-	}
-	
-
-
-	//根据传入的aggvo获取issuevo数组
-	private OrderIssueVO[] getIssueVOs(HRAggVO aggvo) {
-		//查询最新的数据
-		OrderMainVO headvo=(OrderMainVO) aggvo.getParentVO();
-		String pk_order=headvo.getPk_order();//主表主键
-		IUAPQueryBS iuap=NCLocator.getInstance().lookup(IUAPQueryBS.class);
-		String sql="select * from mmpac_order_issue where pk_order='"+pk_order+"' and isnull(dr,0)=0  ";
-		List<OrderIssueVO> orderissuvos=null;
-		try {
-			orderissuvos=(List<OrderIssueVO>) iuap.executeQuery(sql, new BeanListProcessor(OrderIssueVO.class));
-		} catch (BusinessException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-		
-		
-//		CircularlyAccessibleValueObject[] vos = aggvo.getAllChildrenVO();
-//		List<OrderIssueVO> issuevos = new ArrayList<OrderIssueVO>();
-//		for(CircularlyAccessibleValueObject vo : vos) {
-//			if(vo instanceof OrderIssueVO) {
-//				//本次执行数量不填就默认
-//				//执行完的表体在生单界面不展示
-//				OrderIssueVO issuevo = (OrderIssueVO) vo;
-//				UFDouble num = issuevo.getNum() == null ? UFDouble.ZERO_DBL : issuevo.getNum();
-//				UFDouble execnum = issuevo.getExecnum() == null ? UFDouble.ZERO_DBL : issuevo.getExecnum();
-//				if(num.sub(execnum).compareTo(UFDouble.ZERO_DBL)==0){
-//					continue;
-//				}
-//				issuevo.setBdef5(num.sub(execnum).setScale(2, UFDouble.ROUND_HALF_UP).toString());
-//				issuevos.add(issuevo);
-//			}
-//		}
-		List<OrderIssueVO> issuevos = new ArrayList<OrderIssueVO>();
-		if(null!=orderissuvos && orderissuvos.size()>0) {
-			for(OrderIssueVO vo:orderissuvos) {
-				//本次执行数量不填就默认
-				//执行完的表体在生单界面不展示
-				OrderIssueVO issuevo = (OrderIssueVO) vo;
-				UFDouble num = issuevo.getNum() == null ? UFDouble.ZERO_DBL : issuevo.getNum();
-				UFDouble nastnum=issuevo.getNastnum() == null ? UFDouble.ZERO_DBL : issuevo.getNastnum();//辅数量
-				
-				
-				UFDouble execnum = issuevo.getExecnum() == null ? UFDouble.ZERO_DBL : issuevo.getExecnum();
-				UFDouble exenastnum = issuevo.getExecnastnum() == null ? UFDouble.ZERO_DBL : issuevo.getExecnastnum();//已执行辅数量
-				
-				if(num.sub(execnum).compareTo(UFDouble.ZERO_DBL)==0 && num.compareTo(UFDouble.ZERO_DBL)>0){
-					continue;
-				}
-				
-				if(num.compareTo(UFDouble.ZERO_DBL)==0) {
-					issuevo.setBdef5(null);//本次执行数量
-				}else {
-					issuevo.setBdef5(num.sub(execnum).setScale(2, UFDouble.ROUND_HALF_UP).toString());//本次执行数量
-				}
-				
-				//没有辅数量
-				if(nastnum.compareTo(UFDouble.ZERO_DBL)!=0 ) {
-					issuevo.setBdef8(nastnum.sub(exenastnum).setScale(2, UFDouble.ROUND_HALF_UP).toString());//本次执行辅数量
-				}
-				
-				//查询入库颜色,显示入库颜色,生成材料出库以入库颜色为准
-				String rkcolur=issuevo.getBdef4();
-				if(!StringUtils.isEmpty(rkcolur)) {
-					issuevo.setColor(rkcolur);
-				}
-				
-				issuevos.add(issuevo);
-			}
-			
-		}else {
-			CircularlyAccessibleValueObject[] vos = aggvo.getAllChildrenVO();
-			for(CircularlyAccessibleValueObject vo : vos) {
-				if(vo instanceof OrderIssueVO) {
-					//本次执行数量不填就默认
-					//执行完的表体在生单界面不展示
-					OrderIssueVO issuevo = (OrderIssueVO) vo;
-					UFDouble num = issuevo.getNum() == null ? UFDouble.ZERO_DBL : issuevo.getNum();
-					UFDouble nastnum=issuevo.getNastnum() == null ? UFDouble.ZERO_DBL : issuevo.getNastnum();//辅数量
-					UFDouble execnum = issuevo.getExecnum() == null ? UFDouble.ZERO_DBL : issuevo.getExecnum();
-					UFDouble exenastnum = issuevo.getExecnastnum() == null ? UFDouble.ZERO_DBL : issuevo.getExecnastnum();//已执行辅数量
-					if(num.sub(execnum).compareTo(UFDouble.ZERO_DBL)==0  && num.compareTo(UFDouble.ZERO_DBL)>0){
-						continue;
-					}
-					
-					if(num.compareTo(UFDouble.ZERO_DBL)==0) {
-						issuevo.setBdef5(null);//本次执行数量
-					}else {
-						issuevo.setBdef5(num.sub(execnum).setScale(2, UFDouble.ROUND_HALF_UP).toString());//本次执行数量
-					}
-					
-					issuevo.setBdef8(nastnum.sub(exenastnum).setScale(2, UFDouble.ROUND_HALF_UP).toString());//本次执行辅数量
-					issuevos.add(issuevo);
-				}
-			}
-		}
-		
-		
-		OrderIssueVO[] issueArrays =issuevos.toArray(new OrderIssueVO[0]);
-		
-		return issueArrays;
-	}
-	
-	
-	private void addListenerEvent() {
-		getSaveCardBtn().addActionListener(this);
-		getCancelBtn().addActionListener(this);
-		getQueryBtn().addActionListener(this);
-		getSelectallBtn().addActionListener(this);
-		getCancelallBtn().addActionListener(this);
-		getJlcardPanel().addEditListener(this);
-		
-	}
-	
-	
-	private UIPanel getUIPanel2() {
-		if (ivjUIPanel2 == null) {
-			ivjUIPanel2 = new UIPanel();
-			ivjUIPanel2.setLayout(new BorderLayout());
-			ivjUIPanel2.setPreferredSize(new Dimension(0, 500));
-			// ivjUIPanel2.add(getTablePanel(), BorderLayout.CENTER);
-			////ivjUIPanel2.add(getMainPanel(), BorderLayout.CENTER);// ZTH
-			ivjUIPanel2.add(getJlbtnpanel(), BorderLayout.SOUTH);// ZTH
-			ivjUIPanel2.add(getJlcardPanel(), BorderLayout.CENTER);// ZTH
-		}
-		return this.ivjUIPanel2;
-	}
-
-
-	public UISplitPane getMainPanel(){
-		if(mainpanel==null){
-			mainpanel = new UISplitPane();
-			mainpanel.setOrientation(JSplitPane.VERTICAL_SPLIT);
-			mainpanel.setTopComponent(getJlcardPanel());
-			mainpanel.setBottomComponent(getJlbtnpanel());
-			mainpanel.setDividerLocation(700);//分割位置
-			mainpanel.setOneTouchExpandable(true);
-			mainpanel.setDividerSize(8);
-		}
-		
-		return mainpanel;
-	}
-	
-	
-	private UIPanel getUIPanel0() {
-		if (ivjUIPanel0 == null) {
-			try {
-				ivjUIPanel0 = new UIPanel();
-				ivjUIPanel0.setLayout(new FlowLayout(FlowLayout.LEFT));
-				ivjUIPanel0.add(getQueryBtn());
-				ivjUIPanel0.add(getSelectallBtn());
-				ivjUIPanel0.add(getCancelallBtn());
-			} catch (Throwable ivjExc) {
-				handleException(ivjExc);
-			}
-		}
-		return this.ivjUIPanel0;
-	}
-	
-	private void handleException(Throwable e) {
-		
-	}
-	
-	
-	public UIPanel getJlbtnpanel() {
-		if(jlbtnpanel==null){
-			jlbtnpanel = new UIPanel();
-			jlbtnpanel.setName("jlbtnpanel");
-			jlbtnpanel.add(getSaveCardBtn());
-			jlbtnpanel.add(getCancelBtn());
-		}
-		return jlbtnpanel;
-	}
-	
-
-	
-	/**
-	 * 全选与反选,flag为true时,全选操作,flag为false时,进行反选操作
-	 */
-	private void onselectall(boolean flag) {
-		switch (focus) {
-		case 1:
-			int jfRowCount = getJlcardPanel().getRowCount();
-			if (jfRowCount > 0) {
-			String storcode = "";	
-				if(flag) {
-					//获取当前单据的业务类型
-					String pk_order=(String) getJlcardPanel().getBillModel().getValueAt(0, "pk_order");//生产总订单主键
-					String sql="select busitype from mmpac_order_main where  pk_order='"+pk_order+"' ";
-					String billtype = null;
-					try {
-						billtype = (String) iuap.executeQuery(sql.toString(), new ColumnProcessor());
-					} catch (BusinessException e1) {
-						MessageDialog.showErrorDlg(mainpanel, "错误", "业务类型获取失败!");
-						return;
-					}
-					if("工装".equals(billtype.trim())) {
-						storcode ="GZ001";
-					}else if("家装".equals(billtype.trim())) {
-						storcode= "JZ002";
-					}
-				}
-				
-				
-				for (int row = 0; row < jfRowCount; row++) {
-					if(flag) {
-						String cmaterialcode=(String) getJlcardPanel().getBillModel().getValueAt(row, "cmaterialcode");//存货编码
-						String vbatchcode=(String) getJlcardPanel().getBillModel().getValueAt(row, "vbatchcode");//批次号
-						String color=(String) getJlcardPanel().getBillModel().getValueAt(row, "color");//颜色
-						String sizing=(String) getJlcardPanel().getBillModel().getValueAt(row, "sizing");
-						String alloy=(String) getJlcardPanel().getBillModel().getValueAt(row, "alloy");
-						String standard=(String) getJlcardPanel().getBillModel().getValueAt(row, "standard");
-						Object objnastnum=getJlcardPanel().getBillModel().getValueAt(row, "nastnum");//辅数量
-						
-						UFDouble nastnum=objnastnum==null? UFDouble.ZERO_DBL:new UFDouble(objnastnum.toString());//辅数量
-						
-						if(cmaterialcode.startsWith("MA") && nastnum.compareTo(UFDouble.ZERO_DBL)>0 ) {
-							try {
-								//型材没有换算率
-//								String storcode = "";
-//								if("工装".equals(billtype.trim())) {
-//									storcode ="GZ001";
-//								}else if("家装".equals(billtype.trim())) {
-//									storcode= "JZ002";
-//								}
-								InvbasdocVO  invbasvo = GetBaseDAOUtil.getInvVO(cmaterialcode);
-							    String pk_invbasdoc = invbasvo.getPrimaryKey();
-							    Object objbdef6 =getHandNum("1001", storcode, pk_invbasdoc, vbatchcode, color, sizing, alloy, standard);//现存量换算率
-							    
-							    if(null==objbdef6 || "".equals(objbdef6.toString())) {
-									MessageDialog.showErrorDlg(mainpanel, "错误", "请检查换算率不能为空!");
-									return;
-								}
-							    String value=(String) getJlcardPanel().getBillModel().getValueAt(row, "bdef8");//本次执行辅数量 
-							    UFDouble  ufbdef8=new UFDouble(value).multiply(new UFDouble(objbdef6.toString())).setScale(2, UFDouble.ROUND_HALF_UP);
-							    //主数量
-								UFDouble  num=new UFDouble((String) getJlcardPanel().getBillModel().getValueAt(row, "nastnum").toString())
-										.multiply(new UFDouble(objbdef6.toString())).setScale(2, UFDouble.ROUND_HALF_UP);
-							    getJlcardPanel().getBillModel().setValueAt(ufbdef8, row, "bdef5");//本次执行主数量
-							    getJlcardPanel().getBillModel().setValueAt(objbdef6, row, "bdef6");//换算率
-							    getJlcardPanel().getBillModel().setValueAt(num, row, "num");//主数量
-							} catch (Exception e) {
-								MessageDialog.showErrorDlg(mainpanel, "错误", "存货:"+cmaterialcode+",未查询到对应现存量,主数量计算失败!");
-								return;
-							}
-							
-						}
-						
-					}
-					
-					getJlcardPanel().getBillModel().setValueAt(flag, row, "bdef4");
-				}
-				
-			 }
-			         break;
-
-		  }
-	}
-	
-	
-
-	
-	private UIButton getQueryBtn() {
-		if (queryBtn == null) {
-			queryBtn = new UIButton();
-			queryBtn.setName("queryBtn");
-			queryBtn.setText("  筛选  ");
-			Color clrBack = new Color(0XC4C4C4);
-			queryBtn.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED,
-					Color.white,clrBack, new Color(0X5F5F5F), clrBack));
-		
-			
-		}
-		return this.queryBtn;
-	}
-
-	
-	private UIButton getSelectallBtn() {
-		if (selectallBtn == null) {
-			selectallBtn = new UIButton();
-			selectallBtn.setName("selectallBtn");
-			selectallBtn.setText("  全选  ");
-			Color clrBack = new Color(0XC4C4C4);
-			selectallBtn.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED,
-					Color.white,clrBack, new Color(0X5F5F5F), clrBack));
-		}
-		return this.selectallBtn;
-	}
-
-	private UIButton getCancelallBtn() {
-		if (cancelallBtn == null) {
-			cancelallBtn = new UIButton();
-			cancelallBtn.setName("cancelallBtn");
-			cancelallBtn.setText("  全消  ");
-			Color clrBack = new Color(0XC4C4C4);
-			cancelallBtn.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED,
-					Color.white,clrBack, new Color(0X5F5F5F), clrBack));
-		}
-		return this.cancelallBtn;
-	}
-	
-	
-	
-	public UIButton getSaveCardBtn() {
-		
-		if(saveCardBtn == null){
-			saveCardBtn = new UIButton();
-			saveCardBtn.setBounds(530,210, 20, 20);
-			saveCardBtn.setName("saveCardBtn");
-			saveCardBtn.setText("确定");
-		}
-		return saveCardBtn;
-	}
-	
-	public UIButton getCancelBtn() {
-		if(cancelBtn == null){
-			cancelBtn = new UIButton();
-			cancelBtn.setBounds(530,210, 75, 20);
-			cancelBtn.setName("cancelBtn");
-			cancelBtn.setText("取消");
-		}
-		return cancelBtn;
-	}
-	
-	
-	private BillCardPanel getJlcardPanel() {
-		if(jlcardPanel==null){
-			jlcardPanel=new BillCardPanel();
-			jlcardPanel.setName("jlcardPanel");
-			//根据单据模板编码加载模板
-			jlcardPanel.loadTemplet("QS411",null,ce.getUser().getPrimaryKey(),ce.getCorporation().getPrimaryKey());
-		}
-		
-		return jlcardPanel;
-	}
-	
-	
-	@Override
-	public void afterEdit(BillEditEvent arg0) {
-		//获取当前单据的业务类型
-		String pk_order=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "pk_order");//生产总订单主键
-		String sql="select busitype from mmpac_order_main where  pk_order='"+pk_order+"' ";
-		
-		Object  objnastnum= this.jlcardPanel.getBodyValueAt(arg0.getRow(), "nastnum")  ;//辅数量
-		
-		UFDouble nastnum=objnastnum==null?UFDouble.ZERO_DBL:new UFDouble(objnastnum.toString());
-		
-		String cmaterialcode=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "cmaterialcode");//存货编码
-		
-		if(!cmaterialcode.startsWith("MA")) {
-			//没有辅数量
-			if(nastnum.compareTo(UFDouble.ZERO_DBL)==0 ) {
-				return;
-			}
-		}
-		
-		
-		String billtype = null;
-		try {
-			billtype = (String) iuap.executeQuery(sql.toString(), new ColumnProcessor());
-		} catch (BusinessException e1) {
-			MessageDialog.showErrorDlg(mainpanel, "错误", "业务类型获取失败!");
-			//this.jlcardPanel.setBodyValueAt(null, arg0.getRow(), "bdef6");
-			return;
-		}
-		
-		String storcode = "";
-		if("工装".equals(billtype.trim())) {
-			storcode ="GZ001";
-		}else if("家装".equals(billtype.trim())) {
-			storcode= "JZ002";
-		}
-		
-		//本次执行主数量
-		if("bdef5".equals(arg0.getKey())) {
-			String value=arg0.getValue().toString();//填写的主数量
-			
-			cmaterialcode=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "cmaterialcode");//存货编码
-			String vbatchcode=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "vbatchcode");//批次号
-			String color=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "color");//颜色
-			String sizing=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "sizing");
-			String alloy=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "alloy");
-			String standard=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "standard");
-			Object objbdef6=null;//换算率
-			if(cmaterialcode.startsWith("MA")) {
-				try {
-					//型材没有换算率
-//					String storcode = "";
-//					if("工装".equals(billtype.trim())) {
-//						storcode ="GZ001";
-//					}else if("家装".equals(billtype.trim())) {
-//						storcode= "JZ002";
-//					}
-					InvbasdocVO  invbasvo = GetBaseDAOUtil.getInvVO(cmaterialcode);
-				    String pk_invbasdoc = invbasvo.getPrimaryKey();
-				    objbdef6 =getHandNum("1001", storcode, pk_invbasdoc, vbatchcode, color, sizing, alloy, standard);//现存量换算率
-				} catch (Exception e) {
-					MessageDialog.showErrorDlg(mainpanel, "错误", "存货:"+cmaterialcode+",未查询到对应现存量,主数量计算失败!");
-					this.jlcardPanel.setBodyValueAt(null, arg0.getRow(), "bdef5");
-					return;
-				}
-				
-			}else {
-				objbdef6=this.jlcardPanel.getBodyValueAt(arg0.getRow(), "bdef6");//换算率
-			}
-			
-			if(null==objbdef6 || "".equals(objbdef6.toString())) {
-				MessageDialog.showErrorDlg(mainpanel, "错误", "请检查换算率不能为空或者MA开头的现存量未查询到!");
-				this.jlcardPanel.setBodyValueAt(null, arg0.getRow(), "bdef5");
-				return;
-			}
-			
-			UFDouble  ufbdef8=new UFDouble(value).div(new UFDouble(objbdef6.toString())).setScale(2, UFDouble.ROUND_HALF_UP);
-			
-			if(cmaterialcode.startsWith("MA")) {
-			  //主数量
-			  UFDouble  num=new UFDouble(this.jlcardPanel.getBodyValueAt(arg0.getRow(), "nastnum").toString())
-					.multiply(new UFDouble(objbdef6.toString())).setScale(2, UFDouble.ROUND_HALF_UP);
-			  this.jlcardPanel.setBodyValueAt(num, arg0.getRow(), "num");//主数量
-		   }
-			
-			this.jlcardPanel.setBodyValueAt(ufbdef8, arg0.getRow(), "bdef8");//本次执行辅数量
-			this.jlcardPanel.setBodyValueAt(objbdef6, arg0.getRow(), "bdef6");//换算率
-			
-		}
-		
-		//本次执行辅数量
-		if("bdef8".equals(arg0.getKey())) {
-			
-            String value=arg0.getValue().toString();//填写的辅数量
-			
-            cmaterialcode=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "cmaterialcode");//存货编码
-			String vbatchcode=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "vbatchcode");//批次号
-			String color=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "color");//颜色
-			String sizing=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "sizing");
-			String alloy=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "alloy");
-			String standard=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "standard");
-			Object objbdef6=null;//换算率
-			if(cmaterialcode.startsWith("MA")) {
-				try {
-					//型材没有换算率
-//					String storcode = "";
-//					if("工装".equals(billtype.trim())) {
-//						storcode ="GZ001";
-//					}else if("家装".equals(billtype.trim())) {
-//						storcode= "JZ002";
-//					}
-					InvbasdocVO  invbasvo = GetBaseDAOUtil.getInvVO(cmaterialcode);
-				    String pk_invbasdoc = invbasvo.getPrimaryKey();
-				    objbdef6 =getHandNum("1001", storcode, pk_invbasdoc, vbatchcode, color, sizing, alloy, standard);//现存量换算率
-				} catch (Exception e) {
-					MessageDialog.showErrorDlg(mainpanel, "错误", "存货:"+cmaterialcode+",未查询到对应现存量,主数量计算失败!");
-					this.jlcardPanel.setBodyValueAt(null, arg0.getRow(), "bdef8");
-					return;
-				}
-				
-			}else {
-				objbdef6=this.jlcardPanel.getBodyValueAt(arg0.getRow(), "bdef6");//换算率
-			}
-			
-			if(null==objbdef6 || "".equals(objbdef6.toString())) {
-				MessageDialog.showErrorDlg(mainpanel, "错误", "请检查换算率不能为空或者MA开头的现存量未查询到!");
-				this.jlcardPanel.setBodyValueAt(null, arg0.getRow(), "bdef5");
-				return;
-			}
-			
-			UFDouble  ufbdef8=new UFDouble(value).multiply(new UFDouble(objbdef6.toString())).setScale(2, UFDouble.ROUND_HALF_UP);
-			
-			if(cmaterialcode.startsWith("MA")) {
-			  //主数量
-			  UFDouble  num=new UFDouble(this.jlcardPanel.getBodyValueAt(arg0.getRow(), "nastnum").toString())
-					.multiply(new UFDouble(objbdef6.toString())).setScale(2, UFDouble.ROUND_HALF_UP);
-			  this.jlcardPanel.setBodyValueAt(num, arg0.getRow(), "num");//主数量
-		   }
-			
-			
-			this.jlcardPanel.setBodyValueAt(ufbdef8, arg0.getRow(), "bdef5");
-			this.jlcardPanel.setBodyValueAt(objbdef6, arg0.getRow(), "bdef6");//换算率
-		}
-		
-		//勾选
-		if("bdef4".equals(arg0.getKey())) {
-			
-			String value=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "bdef8");//填写的辅数量
-		    cmaterialcode=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "cmaterialcode");//存货编码
-			String vbatchcode=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "vbatchcode");//批次号
-			String color=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "color");//颜色
-			String sizing=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "sizing");
-			String alloy=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "alloy");
-			String standard=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "standard");
-			Object objbdef6=null;//换算率
-			if(cmaterialcode.startsWith("MA")) {
-				try {
-					//型材没有换算率
-//					String storcode = "";
-//					if("工装".equals(billtype.trim())) {
-//						storcode ="GZ001";
-//					}else if("家装".equals(billtype.trim())) {
-//						storcode= "JZ002";
-//					}
-					InvbasdocVO  invbasvo = GetBaseDAOUtil.getInvVO(cmaterialcode);
-				    String pk_invbasdoc = invbasvo.getPrimaryKey();
-				    objbdef6 =getHandNum("1001", storcode, pk_invbasdoc, vbatchcode, color, sizing, alloy, standard);//现存量换算率
-				} catch (Exception e) {
-					MessageDialog.showErrorDlg(mainpanel, "错误", "存货:"+cmaterialcode+",未查询到对应现存量,主数量计算失败!");
-				//	this.jlcardPanel.setBodyValueAt(null, arg0.getRow(), "bdef8");
-					this.jlcardPanel.setBodyValueAt(false, arg0.getRow(), "bdef4");
-					return;
-				}
-				
-			}else {
-				objbdef6=this.jlcardPanel.getBodyValueAt(arg0.getRow(), "bdef6");//换算率
-			}
-			
-			if(null==objbdef6 || "".equals(objbdef6.toString())) {
-				MessageDialog.showErrorDlg(mainpanel, "错误", "请检查换算率不能为空或者MA开头的现存量未查询到!");
-				this.jlcardPanel.setBodyValueAt(null, arg0.getRow(), "bdef8");
-				return;
-			}
-			
-			UFDouble  ufbdef8=new UFDouble(value).multiply(new UFDouble(objbdef6.toString())).setScale(2, UFDouble.ROUND_HALF_UP);
-			
-			if(cmaterialcode.startsWith("MA")) {
-			//主数量
-			UFDouble  num=new UFDouble(this.jlcardPanel.getBodyValueAt(arg0.getRow(), "nastnum").toString())
-					.multiply(new UFDouble(objbdef6.toString())).setScale(2, UFDouble.ROUND_HALF_UP);
-			 this.jlcardPanel.setBodyValueAt(num, arg0.getRow(), "num");//主数量
-		   }
-			
-			this.jlcardPanel.setBodyValueAt(ufbdef8, arg0.getRow(), "bdef5");//本次执行主数量
-			this.jlcardPanel.setBodyValueAt(objbdef6, arg0.getRow(), "bdef6");//换算率
-			
-			
-		}
-		
-	}
-
-	@Override
-	public void bodyRowChange(BillEditEvent arg0) {
-		// TODO Auto-generated method stub
-		
-	}
-
-	@SuppressWarnings("unchecked")
-	@Override
-	/**
-	 * 按钮确定和取消执行方法
-	 */
-	public void actionPerformed(ActionEvent e) {
-		//保存按钮
-		if(e.getSource() == getSaveCardBtn()){
-//			MessageDialog.showHintDlg(null, "测试", "开始");
-			Vector<Vector<Object>> vectors= getJlcardPanel().getBillModel().getDataVector();
-			StringBuffer errmsg = new StringBuffer();
-			//数量校验
-			try {
-				int execsize = 0;//勾选的条数
-				for(int i = 0; i < vectors.size(); i++) {
-					Vector<Object> vector = (Vector<Object>)vectors.get(i);
-					if(null!=vector.get(0) &&  "Y".equals(vector.get(0).toString())){
-						if(vector.get(1) == null) {
-							errmsg.append("第"+(i+1)+"行本次执行数量为空!");
-							continue;
-						}
-						execsize = execsize + 1;
-						UFDouble execnum = new UFDouble(vector.get(1).toString());//本次执行数量
-						UFDouble nnum =  vector.get(22) == null?new UFDouble(0):new UFDouble(vector.get(22).toString());//主数量
-						UFDouble usednum = vector.get(30) == null?new UFDouble(0):new UFDouble(vector.get(30).toString());//已执行主数量
-						if(execnum.compareTo(nnum.sub(usednum)) > 0 && nnum.compareTo(UFDouble.ZERO_DBL)>0) {
-							errmsg.append("第"+(i+1)+"行本次执行数量超过订单剩余数量!");
-						}
-					}
-				}
-				
-				if(!errmsg.toString().equals("")) {
-					MessageDialog.showErrorDlg(mainpanel, "错误", errmsg.toString());
-					return;
-				}
-				if(execsize == 0) {
-					MessageDialog.showHintDlg(mainpanel, "提示", "请勾选要生成材料出库的数据");
-					return;
-				}
-				OrderMainVO headvo = (OrderMainVO) this.aggvo.getParentVO();
-				String pk_corp = headvo.getPk_corp();
-				UFDate dbilldate = PubEnv.getLoginDate();
-				String pk_order = headvo.getPk_order();
-				//业务类型
-				String billtype=headvo.getBusitype();
-				//项目主键
-				String prjcode = headvo.getProjectid();
-				GeneralBillVO[] aggvos = new GeneralBillVO[1];
-				GeneralBillVO aggvo = new GeneralBillVO();
-				GeneralBillHeaderVO icheadvo = new GeneralBillHeaderVO();
-				icheadvo.setPk_corp(pk_corp);
-				icheadvo.setPk_calbody(GetBaseDAOUtil.getcalpk(pk_corp));
-				icheadvo.setDbilldate(dbilldate);
-				icheadvo.setCoperatorid(PubEnv.getPk_user());
-//				//项目编码 pk_defdoc9
-//				icheadvo.setAttributeValue("pk_defdoc9", prjcode);
-//				//项目名称pk_defdoc10
-//				icheadvo.setAttributeValue("pk_defdoc10", prjcode);
-//				//加工单号pk_defdoc2
-//				icheadvo.setAttributeValue("pk_defdoc2", headvo.getDef1());
-//				//收发类别
-//				icheadvo.setCdispatcherid(getpkrdcl("03"));
-//				//业务类型
-//				icheadvo.setAttributeValue("pk_defdoc8", billtype);
-				
-				
-				//项目编码 pk_defdoc9
-	////			icheadvo.setAttributeValue("vuserdef9", prjcode);
-				//项目名称pk_defdoc10
-	////			icheadvo.setAttributeValue("vuserdef10", prjcode);
-				
-				Map<String,String> mapcodename=getprojectmap(prjcode);
-				//项目编码 
-				icheadvo.setAttributeValue("vuserdef9",mapcodename.get("jobcode") );
-				//项目编码 pk_defdoc9
-				icheadvo.setAttributeValue("pk_defdoc9", prjcode);
-				//项目名称
-				icheadvo.setAttributeValue("vuserdef10", mapcodename.get("jobname"));
-				//项目名称pk_defdoc10
-				icheadvo.setAttributeValue("pk_defdoc10", prjcode);						
-				//加工单号
-				icheadvo.setAttributeValue("vuserdef1", headvo.getDef1());
-				//收发类别
-				icheadvo.setCdispatcherid(getpkrdcl("03"));
-				//业务类型
-				icheadvo.setAttributeValue("vuserdef7", billtype.trim());
-				
-				icheadvo.setAttributeValue("pk_defdoc7",getpkdefdoc(billtype.trim()));
-				
-				if("工装".equals(billtype.trim())) {
-					icheadvo.setCwarehouseid(GetBaseDAOUtil.getstordocpk("GZ001"));//仓库必填
-				}else if("家装".equals(billtype.trim())) {
-					icheadvo.setCwarehouseid(GetBaseDAOUtil.getstordocpk("JZ002"));//仓库必填
-				}
-				icheadvo.setBoutretflag(UFBoolean.FALSE);//是否退回 
-				icheadvo.setBsalecooppur(UFBoolean.FALSE); // 销售出是否已协同生成采购入 
-				icheadvo.setVnote("来源生产总订单");//备注
-				icheadvo.setCbilltypecode("4D");
-				aggvo.setParentVO(icheadvo);
-				GeneralBillItemVO[] itemvos = new GeneralBillItemVO[execsize];
-				Map<String, UFDouble> updatemap = new HashMap<>();//回写已执行主数量
-				Map<String, UFDouble> updatfzemap = new HashMap<>();//回写已执行辅数量
-				int k = 0;
-				for(int j = 0; j < vectors.size(); j++) {
-					Vector<Object> vector = (Vector<Object>)vectors.get(j);
-					//自定义项4 为勾选按钮 :勾选为Y 没有勾选是null
-					if(null!=vector.get(0) &&  "Y".equals(vector.get(0).toString())){
-						GeneralBillItemVO itemvo = new GeneralBillItemVO();
-						String cmaterialcode = vector.get(8).toString();
-						String pk_invbasdoc = "";//存货pk
-						if(cmaterialcode.startsWith("0001")) {
-							pk_invbasdoc = cmaterialcode;
-						}
-						else {
-							InvbasdocVO invbasvo  = GetBaseDAOUtil.getInvVO(cmaterialcode);
-							pk_invbasdoc = invbasvo.getPrimaryKey();
-						}
-//						String prjcode = vector.get(2).toString();
-//						String cprojectid = "";
-//						if(prjcode.startsWith("1001")) {
-//							cprojectid = prjcode;
-//						}
-//						else {
-//							cprojectid = GetBaseDAOUtil.getprojectid(prjcode);
-//						}
-						String cprojectid=prjcode;
-						
-						InvmandocVO invmanvo = GetBaseDAOUtil.getInvmanVO(pk_invbasdoc);
-						String pk_invmandoc = invmanvo.getPrimaryKey();
-						itemvo.setBbarcodeclose(UFBoolean.FALSE);
-						itemvo.setBreturnprofit(UFBoolean.FALSE);
-						itemvo.setBsafeprice(UFBoolean.FALSE);
-						itemvo.setBsourcelargess(UFBoolean.FALSE);
-						itemvo.setBtou8rm(UFBoolean.FALSE);
-						itemvo.setBtransasset(UFBoolean.FALSE);
-						itemvo.setBzgflag(UFBoolean.FALSE);
-						itemvo.setCbodybilltypecode("4D");
-					//	itemvo.setCbodywarehouseid("1001V5100000000003GB");
-						if("工装".equals(billtype)) {
-							itemvo.setCbodywarehouseid(GetBaseDAOUtil.getstordocpk("GZ001"));//仓库必填
-						}else if("家装".equals(billtype)) {
-							itemvo.setCbodywarehouseid(GetBaseDAOUtil.getstordocpk("JZ002"));//仓库必填
-						}
-						itemvo.setCfirstbillhid(pk_order);
-						itemvo.setCfirstbillbid(vector.get(51).toString());
-						itemvo.setCfirsttype("55A2");
-						itemvo.setCinvbasid(pk_invbasdoc);
-						itemvo.setCinventoryid(pk_invmandoc);
-	//					icheadvo.setCinventoryid(pk_invmandoc);
-						itemvo.setCprojectid(cprojectid);
-						itemvo.setCrowno(Integer.toString((k+1)*10));
-						itemvo.setCsourcebillhid(pk_order);
-						itemvo.setCsourcebillbid(vector.get(51).toString());
-						itemvo.setCsourcetype("55A2");
-						itemvo.setDbizdate(dbilldate);
-						itemvo.setFassertcardflag(UFBoolean.FALSE);
-						itemvo.setFchecked(0);
-						itemvo.setFlargess(UFBoolean.FALSE);
-						itemvo.setIsok(UFBoolean.FALSE);
-						itemvo.setNbarcodenum(new UFDouble(0));//条码数量
-						UFDouble ninnum = vector.get(1) == null ? null : new UFDouble(vector.get(1).toString());//本次执主数量
-						itemvo.setNoutnum(ninnum);//实出数量 
-						itemvo.setNshouldoutnum(ninnum);//应出数量 
-						UFDouble Hsl = vector.get(47) == null ? null : new UFDouble(vector.get(47).toString());//换算率
-						//换算率						
-						itemvo.setHsl(Hsl);
-						//没有换算率则辅数量为空
-						if(Hsl != null) {
-							UFDouble ninassistnum = new UFDouble(ninnum.div(Hsl).toString(),2);
-							itemvo.setNoutassistnum(new UFDouble(ninassistnum));//实出辅数量
-							itemvo.setNshouldoutassistnum(ninassistnum);//应入辅数量 
-						}
-					
-						itemvo.setAttributeValue("processcost", new UFDouble(vector.get(24)==null?"0":vector.get(24).toString()));
-						itemvo.setPk_calbody(GetBaseDAOUtil.getcalpk(pk_corp));
-						itemvo.setVbatchcode(vector.get(7)==null?"":vector.get(7).toString());//批次号
-						Object fzdw=vector.get(28);//辅计量单位
-						String castunitid=getpk(fzdw==null?"":fzdw.toString());
-						itemvo.setCastunitid(castunitid);//辅计量单位ID 
-						itemvo.setCastunitname(fzdw==null?"":fzdw.toString());//辅计量单位名称
-						itemvo.setVfirstbillcode(headvo.getVbillno());
-						itemvo.setVfree1(vector.get(12)==null?null:vector.get(12).toString());
-						itemvo.setVfree2(vector.get(14)==null?null:vector.get(14).toString());
-						itemvo.setVfree3(vector.get(13)==null?null:vector.get(13).toString());
-						itemvo.setVfree4(vector.get(15)==null?null:vector.get(15).toString());
-						itemvo.setVsourcebillcode(headvo.getVbillno());
-//						itemvo.setAttributeValue("pk_defdoc1", vector.get(34)==null?null:vector.get(34).toString());//楼号楼层
-//						itemvo.setAttributeValue("pk_defdoc2", vector.get(35)==null?null:vector.get(35).toString());//樘数(数量)
-//						itemvo.setAttributeValue("pk_defdoc3", vector.get(36)==null?null:vector.get(36).toString());//框统计
-//						itemvo.setAttributeValue("pk_defdoc4", vector.get(37)==null?null:vector.get(37).toString());//扇统计
-//						itemvo.setAttributeValue("pk_defdoc5", vector.get(38)==null?null:vector.get(38).toString());//半成品分类
-//						itemvo.setAttributeValue("pk_defdoc6", vector.get(39)==null?null:vector.get(39).toString());//面积
-//						itemvo.setAttributeValue("pk_defdoc7", vector.get(40)==null?null:vector.get(40).toString());//切割长度
-//						itemvo.setAttributeValue("pk_defdoc8", vector.get(41)==null?null:vector.get(41).toString());//切割角度左下
-//						itemvo.setAttributeValue("pk_defdoc9", vector.get(42)==null?null:vector.get(42).toString());//切割角度右上
-//						itemvo.setAttributeValue("pk_defdoc10",vector.get(43)==null?null:vector.get(43).toString());//备注
-//						itemvo.setAttributeValue("pk_defdoc11",vector.get(19)==null?null:vector.get(19).toString());//宽度
-//						itemvo.setAttributeValue("pk_defdoc12",vector.get(20)==null?null:vector.get(20).toString());//高度
-//						itemvo.setAttributeValue("pk_defdoc13",vector.get(44)==null?null:vector.get(44).toString());//系列
-//						itemvo.setAttributeValue("pk_defdoc14",vector.get(45)==null?null:vector.get(45).toString());//玻璃编号
-						
-						
-						
-						itemvo.setAttributeValue("vuserdef1", vector.get(34)==null?null:vector.get(34).toString());//楼号楼层
-						itemvo.setAttributeValue("vuserdef2", vector.get(35)==null?null:vector.get(35).toString());//樘数(数量)
-						itemvo.setAttributeValue("vuserdef3", vector.get(36)==null?null:vector.get(36).toString());//框统计
-						itemvo.setAttributeValue("vuserdef4", vector.get(37)==null?null:vector.get(37).toString());//扇统计
-						itemvo.setAttributeValue("vuserdef5", vector.get(38)==null?null:vector.get(38).toString());//半成品分类
-						itemvo.setAttributeValue("vuserdef6", vector.get(39)==null?null:vector.get(39).toString());//面积
-						itemvo.setAttributeValue("vuserdef7", vector.get(40)==null?null:vector.get(40).toString());//切割长度
-						itemvo.setAttributeValue("vuserdef8", vector.get(41)==null?null:vector.get(41).toString());//切割角度左下
-						itemvo.setAttributeValue("vuserdef9", vector.get(42)==null?null:vector.get(42).toString());//切割角度右上
-						itemvo.setAttributeValue("vuserdef10",vector.get(43)==null?null:vector.get(43).toString());//备注
-						itemvo.setAttributeValue("vuserdef11",vector.get(19)==null?null:vector.get(19).toString());//宽度
-						itemvo.setAttributeValue("vuserdef12",vector.get(20)==null?null:vector.get(20).toString());//高度
-						itemvo.setAttributeValue("vuserdef13",vector.get(44)==null?null:vector.get(44).toString());//系列
-						itemvo.setAttributeValue("vuserdef14",vector.get(45)==null?null:vector.get(45).toString());//玻璃编号
-											
-//						itemvo.setAttributeValue("vuserdef15",vector.get()==null?null:vector.get().toString());//开票类型
-						itemvo.setAttributeValue("vuserdef17",vector.get(18)==null?null:vector.get(18).toString());//窗号
-						itemvo.setAttributeValue("vuserdef18",vector.get(16)==null?null:vector.get(16).toString());//米重
-						itemvo.setAttributeValue("vuserdef19",vector.get(17)==null?null:vector.get(17).toString());//装饰面周长
-			//			itemvo.setAttributeValue("vuserdef20",vector.get(5)==null?null:vector.get(5).toString());//专用区
-						
-						
-						
-						//回写数量
-						UFDouble updatenum =  new UFDouble(vector.get(30)==null?"0":vector.get(30).toString())
-								.add(new UFDouble(vector.get(1)==null?"0":vector.get(1).toString()));//已执行主数量+本次执行主数量
-						
-						UFDouble updatexenum= new UFDouble(vector.get(31)==null?"0":vector.get(31).toString())
-								.add(new UFDouble(vector.get(2)==null?"0":vector.get(1).toString()));//已执行辅数量+本次执行辅数量
-						
-						updatemap.put(vector.get(51).toString(), updatenum);
-						updatfzemap.put(vector.get(51).toString(), updatexenum);
-						itemvos[k]=itemvo;
-						k = k + 1;
-					}
-				}
-				aggvo.setChildrenVO(itemvos);
-				aggvos[0] = aggvo;
-				GeneralBillVO[] res = imaterapi.insertMaterialOuts(aggvos);
-				GeneralBillVO resvo = res[0];
-				Boolean updateres = iorder.UpdateIssueExecNum(updatemap);
-				Boolean updatfzeres = iorder.UpdatefzExecNum(updatfzemap);
-//				MessageDialog.showHintDlg(mainpanel, "成功", "材料出库单"+resvo.getVBillCode()+"新增成功!");
-				MessageDialog.showHintDlg(mainpanel, "成功", "材料出库单新增成功!");
-				this.closeCancel();
-			}  catch (Exception e1) {
-				MessageDialog.showErrorDlg(mainpanel, "错误", e1.getMessage());
-				return;
-			}
-		}
-		
-		//取消按钮
-		if(e.getSource() == getCancelBtn()){
-			this.closeCancel();
-		}
-		
-		//全选
-		if(e.getSource() == getSelectallBtn()){
-			onselectall(true);
-		}
-		
-		//全消
-		if(e.getSource() == getCancelallBtn()){
-			onselectall(false);
-		}
-		
-		
-		//筛选  
-		if(e.getSource() == getQueryBtn()){
-			TemplateInfo ti = new TemplateInfo();
-			ti.setTemplateId(null);
-			ti.setPk_Org(ce.getCorporation().getPrimaryKey());
-			ti.setUserid(ce.getUser().getPrimaryKey());
-			ti.setCurrentCorpPk(ce.getCorporation().getPrimaryKey());
-			//功能节点默人模板分配后查询SELECT * from  pub_systemplate order by  ts desc
-			ti.setFunNode("40H206");
-			ti.setNodekey("qt");
-			QueryConditionDLG d=new QueryConditionDLG(this,ti,"材料明细");
-			Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
-		//	d.setSize(dimension.width-1000,dimension.height-650);
-			d.setLocation(500, 300);
-			if(d.showModal() != UIDialog.ID_OK){
-				return;
-		     }
-			
-			String dlgsql=d.getWhereSQL();
-			if(!(null!=dlgsql && !"".equals(dlgsql))) {
-				getJlcardPanel().getBillModel().setBodyDataVO(issueArrays);
-				return;
-			}
-			String quresql="select * from mmpac_order_issue where  "+dlgsql+" and " ;
-			IUAPQueryBS iuap=(IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());
-			
-			try {
-				List<String> pks=new ArrayList<String>();
-				if(null!=issueArrays && issueArrays.length>0) {
-					for(OrderIssueVO vo:issueArrays) {
-						String pk_order_issue=vo.getPk_order_issue();
-						pks.add(pk_order_issue);
-					}
-					SqlBuilder sqlbuild=new SqlBuilder();	
-					sqlbuild.append(quresql);
-					sqlbuild.append("pk_order_issue",pks.toArray(new String[0]));
-					List<OrderIssueVO> lisorderiussvos = (List<OrderIssueVO>) iuap.executeQuery(sqlbuild.toString(), new BeanListProcessor(OrderIssueVO.class));
-					OrderIssueVO[] issuevos = lisorderiussvos.toArray(new OrderIssueVO[0]);
-					getJlcardPanel().getBillModel().setBodyDataVO(issuevos);
-				
-				}else {
-					getJlcardPanel().getBillModel().setBodyDataVO(null);
-				}
-				
-				
-				
-			} catch (BusinessException e1) {
-				// TODO Auto-generated catch block
-				e1.printStackTrace();
-			}
-			
-		 }
-		
-	 }
-	
-	
-	//计量单位 
-	private String getpk(String shortname) throws BusinessException {
-	  String sql="select pk_measdoc from bd_measdoc where measname='"+shortname+"'  ";
-	  IUAPQueryBS iuap=(IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());
-	  
-	  String pk_measdoc = (String) iuap.executeQuery(sql, new ColumnProcessor());
-      if (pk_measdoc == null) {
-          return "";
-      }
-      return pk_measdoc;
-		
-	}
-	
-	//收发类别
-	private String getpkrdcl(String rdcode ) throws BusinessException {
-	  String sql="select pk_rdcl from bd_rdcl where rdcode='"+rdcode+"'  ";
-	  
-	  String pk_rdcl = (String) iuap.executeQuery(sql, new ColumnProcessor());
-      if (pk_rdcl == null) {
-          return "";
-      }
-      return pk_rdcl;
-		
-	}
-	
-    //项目管理档案-编码和名称
-    public  Map<String,String> getprojectmap(String pk_jobmngfil ) throws Exception {
-        String sql = "select jobcode,jobname  from   bd_jobbasfil where  "
-        		+ "pk_jobbasfil = (select pk_jobbasfil from bd_jobmngfil where pk_jobmngfil ='"+pk_jobmngfil+"' and dr = 0) "
-        		+ "and dr=0";
-        Map<String,String> map = (Map<String, String>) iuap.executeQuery(sql, new MapProcessor());
-        if (map == null || map.size()==0) {
-        	throw new Exception("项目管理档案"+pk_jobmngfil+"未查到,请检查"); 
-        }
-        return map;
-    }
-	
-	//业务类型自定义档案查询
-	private String getpkdefdoc(String docname ) throws Exception {
-	  String sql="select pk_defdoc from bd_defdoc  where pk_defdoclist = "
-	  		+ "(select pk_defdoclist from bd_defdef where defname = '业务类型' and dr=0 ) and dr=0 "
-	  		+ "and docname='"+docname+"'";
-	  
-	  Object pkdefdoc =  iuap.executeQuery(sql, new ColumnProcessor());
-	  if(pkdefdoc == null ||  "".equals(pkdefdoc)) {
-  		throw new Exception("业务类型【"+docname+"】未查到,请检查");
-  	  }
-
-      return pkdefdoc.toString();
-		
-	}
-	
-	
-	/**
-	 * 查询现存量物料换算率
-	 * @param pk_corp
-	 * @param storcode
-	 * @param cinvbasid
-	 * @param vbatchcode
-	 * @param color    颜色
-	 * @param sizing   定尺
-	 * @param alloy    合金
-	 * @param standard 标准
-	 * @return
-	 * @throws Exception
-	 */
-   	public  Object  getHandNum(String pk_corp,String storcode,String cinvbasid,String vbatchcode, String color ,String sizing,String alloy,String standard)throws Exception {
-   		StringBuffer sql = new StringBuffer();
-   		sql.append("SELECT ");
-   		sql.append(" nonhandnum/nonhandastnum as hsl");
-   		sql.append(" FROM");
-   		sql.append(" ic_onhandnum");
-   		sql.append(" WHERE");
-   		sql.append(" pk_corp = '"+pk_corp+"'");
-   		sql.append(" AND cwarehouseid = ( SELECT pk_stordoc FROM bd_stordoc WHERE storcode = '"+storcode+"' and sealflag = 'N' and dr = 0)");
-   		sql.append(" AND cinvbasid = '"+cinvbasid+"' AND vfree1='"+color+"' AND vfree2='"+alloy+"' AND vfree3='"+sizing+"' AND vfree4='"+standard+"' ");
-   		if(vbatchcode != null) {
-   			sql.append(" AND vlot = '"+vbatchcode+"'");
-   		}
-   		return  iuap.executeQuery(sql.toString(), new ColumnProcessor());
-   	}
-	
-
-}
-
-
-
-
-
-
-
+package u8c.ui.mmpac.action;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Vector;
+import nc.vo.pubapp.pattern.pub.SqlBuilder;
+import javax.swing.BorderFactory;
+import javax.swing.JSplitPane;
+import javax.swing.border.BevelBorder;
+
+import nc.ui.pub.beans.UIPanel;
+import nc.bs.framework.common.NCLocator;
+import nc.hr.utils.PubEnv;
+import nc.itf.uap.IUAPQueryBS;
+import nc.jdbc.framework.processor.BeanListProcessor;
+import nc.jdbc.framework.processor.ColumnProcessor;
+import nc.jdbc.framework.processor.MapProcessor;
+import nc.ui.pub.ClientEnvironment;
+import nc.ui.pub.beans.MessageDialog;
+import nc.ui.pub.beans.UIButton;
+import nc.ui.pub.beans.UIDialog;
+import nc.ui.pub.beans.UISplitPane;
+import nc.ui.pub.bill.BillCardPanel;
+import nc.ui.pub.bill.BillEditEvent;
+import nc.ui.pub.bill.BillEditListener;
+import nc.ui.querytemplate.QueryConditionDLG;
+import nc.vo.arap.util.StringUtils;
+import nc.vo.bd.invdoc.InvbasdocVO;
+import nc.vo.bd.invdoc.InvmandocVO;
+import nc.vo.hr.tools.pub.HRAggVO;
+import nc.vo.ic.pub.bill.GeneralBillHeaderVO;
+import nc.vo.ic.pub.bill.GeneralBillItemVO;
+import nc.vo.ic.pub.bill.GeneralBillVO;
+import nc.vo.pub.BusinessException;
+import nc.vo.pub.CircularlyAccessibleValueObject;
+import nc.vo.pub.lang.UFBoolean;
+import nc.vo.pub.lang.UFDate;
+import nc.vo.pub.lang.UFDouble;
+import nc.vo.querytemplate.TemplateInfo;
+import u8c.bs.servlet.service.GetBaseDAOUtil;
+import u8c.itf.mmpac.mmpac.IOrderTotalInfo;
+import u8c.pubitf.ic.out.IMaterialOutMaintainAPI;
+import u8c.vo.OrderIssueVO;
+import u8c.vo.OrderMainVO;
+
+
+@SuppressWarnings("deprecation")
+public class ToMaterialOutDialog extends UIDialog implements ActionListener,BillEditListener{
+	/**
+	 * 弹框勾选推单生成下游单据-材料出
+	 */
+	private static final long serialVersionUID = -2605551888165671265L;
+	/** 按钮组 **/
+	private UISplitPane mainpanel = null;
+	private int focus=1;
+	private UIPanel ivjUIPanel0 = null;
+	private UIPanel ivjUIPanel2 = null;
+	private BillCardPanel datepanel = null;
+	private BillCardPanel jlcardPanel = null;//卡面面板
+	private UIPanel jlbtnpanel = null;//存放按钮的panel
+	private UIButton saveCardBtn = null ; //保存按钮
+	private UIButton cancelBtn = null ; //取消按钮
+	private UIButton selectallBtn= null ; //全选按钮
+	private UIButton cancelallBtn= null ; //全消按钮
+	private UIButton queryBtn= null ;//查询按钮 
+	private ClientEnvironment ce = ClientEnvironment.getInstance();
+	private OrderIssueVO[] issueArrays = null;
+	private HRAggVO aggvo;
+	IMaterialOutMaintainAPI imaterapi=(IMaterialOutMaintainAPI) NCLocator.getInstance().lookup(IMaterialOutMaintainAPI.class.getName());
+	private IUAPQueryBS iuap=(IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());
+	IOrderTotalInfo iorder = NCLocator.getInstance().lookup(IOrderTotalInfo.class);
+	public ToMaterialOutDialog(HRAggVO aggvo) {
+		super();
+		initialize(aggvo);
+		
+	}
+	
+	
+	public void initialize(HRAggVO aggvo){
+		Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
+		setName("clc");
+		setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+		setTitle("生产总订单-材料明细");
+//		setSize(1000,360);
+		setSize(dimension.width-100,dimension.height-200);
+		this.setResizable(true);
+		add(getUIPanel0(), BorderLayout.NORTH);
+		add(getUIPanel2(), BorderLayout.CENTER);
+//		setLocation((dimension.width-1000)/2, (dimension.height-360)/2);
+		setLocation(100/2, 200/2);
+		addListenerEvent();
+		this.aggvo = aggvo;
+		//展示数据
+		this.issueArrays = getIssueVOs(aggvo);
+		getJlcardPanel().getBillModel().setBodyDataVO(issueArrays);
+		
+	}
+	
+
+
+	//根据传入的aggvo获取issuevo数组
+	private OrderIssueVO[] getIssueVOs(HRAggVO aggvo) {
+		//查询最新的数据
+		OrderMainVO headvo=(OrderMainVO) aggvo.getParentVO();
+		String pk_order=headvo.getPk_order();//主表主键
+		IUAPQueryBS iuap=NCLocator.getInstance().lookup(IUAPQueryBS.class);
+		String sql="select * from mmpac_order_issue where pk_order='"+pk_order+"' and isnull(dr,0)=0  ";
+		List<OrderIssueVO> orderissuvos=null;
+		try {
+			orderissuvos=(List<OrderIssueVO>) iuap.executeQuery(sql, new BeanListProcessor(OrderIssueVO.class));
+		} catch (BusinessException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		
+		
+//		CircularlyAccessibleValueObject[] vos = aggvo.getAllChildrenVO();
+//		List<OrderIssueVO> issuevos = new ArrayList<OrderIssueVO>();
+//		for(CircularlyAccessibleValueObject vo : vos) {
+//			if(vo instanceof OrderIssueVO) {
+//				//本次执行数量不填就默认
+//				//执行完的表体在生单界面不展示
+//				OrderIssueVO issuevo = (OrderIssueVO) vo;
+//				UFDouble num = issuevo.getNum() == null ? UFDouble.ZERO_DBL : issuevo.getNum();
+//				UFDouble execnum = issuevo.getExecnum() == null ? UFDouble.ZERO_DBL : issuevo.getExecnum();
+//				if(num.sub(execnum).compareTo(UFDouble.ZERO_DBL)==0){
+//					continue;
+//				}
+//				issuevo.setBdef5(num.sub(execnum).setScale(2, UFDouble.ROUND_HALF_UP).toString());
+//				issuevos.add(issuevo);
+//			}
+//		}
+		List<OrderIssueVO> issuevos = new ArrayList<OrderIssueVO>();
+		if(null!=orderissuvos && orderissuvos.size()>0) {
+			for(OrderIssueVO vo:orderissuvos) {
+				//本次执行数量不填就默认
+				//执行完的表体在生单界面不展示
+				OrderIssueVO issuevo = (OrderIssueVO) vo;
+				UFDouble num = issuevo.getNum() == null ? UFDouble.ZERO_DBL : issuevo.getNum();
+				UFDouble nastnum=issuevo.getNastnum() == null ? UFDouble.ZERO_DBL : issuevo.getNastnum();//辅数量
+				
+				
+				UFDouble execnum = issuevo.getExecnum() == null ? UFDouble.ZERO_DBL : issuevo.getExecnum();
+				UFDouble exenastnum = issuevo.getExecnastnum() == null ? UFDouble.ZERO_DBL : issuevo.getExecnastnum();//已执行辅数量
+				
+				if(num.sub(execnum).compareTo(UFDouble.ZERO_DBL)==0 && num.compareTo(UFDouble.ZERO_DBL)>0){
+					continue;
+				}
+				
+				if(num.compareTo(UFDouble.ZERO_DBL)==0) {
+					issuevo.setBdef5(null);//本次执行数量
+				}else {
+					issuevo.setBdef5(num.sub(execnum).setScale(2, UFDouble.ROUND_HALF_UP).toString());//本次执行数量
+				}
+				
+				//没有辅数量
+				if(nastnum.compareTo(UFDouble.ZERO_DBL)!=0 ) {
+					issuevo.setBdef8(nastnum.sub(exenastnum).setScale(2, UFDouble.ROUND_HALF_UP).toString());//本次执行辅数量
+				}
+				
+				//查询入库颜色,显示入库颜色,生成材料出库以入库颜色为准
+				String rkcolur=issuevo.getBdef4();
+				if(!StringUtils.isEmpty(rkcolur)) {
+					issuevo.setColor(rkcolur);
+				}
+				
+				issuevos.add(issuevo);
+			}
+			
+		}else {
+			CircularlyAccessibleValueObject[] vos = aggvo.getAllChildrenVO();
+			for(CircularlyAccessibleValueObject vo : vos) {
+				if(vo instanceof OrderIssueVO) {
+					//本次执行数量不填就默认
+					//执行完的表体在生单界面不展示
+					OrderIssueVO issuevo = (OrderIssueVO) vo;
+					UFDouble num = issuevo.getNum() == null ? UFDouble.ZERO_DBL : issuevo.getNum();
+					UFDouble nastnum=issuevo.getNastnum() == null ? UFDouble.ZERO_DBL : issuevo.getNastnum();//辅数量
+					UFDouble execnum = issuevo.getExecnum() == null ? UFDouble.ZERO_DBL : issuevo.getExecnum();
+					UFDouble exenastnum = issuevo.getExecnastnum() == null ? UFDouble.ZERO_DBL : issuevo.getExecnastnum();//已执行辅数量
+					if(num.sub(execnum).compareTo(UFDouble.ZERO_DBL)==0  && num.compareTo(UFDouble.ZERO_DBL)>0){
+						continue;
+					}
+					
+					if(num.compareTo(UFDouble.ZERO_DBL)==0) {
+						issuevo.setBdef5(null);//本次执行数量
+					}else {
+						issuevo.setBdef5(num.sub(execnum).setScale(2, UFDouble.ROUND_HALF_UP).toString());//本次执行数量
+					}
+					
+					issuevo.setBdef8(nastnum.sub(exenastnum).setScale(2, UFDouble.ROUND_HALF_UP).toString());//本次执行辅数量
+					issuevos.add(issuevo);
+				}
+			}
+		}
+		
+		
+		OrderIssueVO[] issueArrays =issuevos.toArray(new OrderIssueVO[0]);
+		
+		return issueArrays;
+	}
+	
+	
+	private void addListenerEvent() {
+		getSaveCardBtn().addActionListener(this);
+		getCancelBtn().addActionListener(this);
+		getQueryBtn().addActionListener(this);
+		getSelectallBtn().addActionListener(this);
+		getCancelallBtn().addActionListener(this);
+		getJlcardPanel().addEditListener(this);
+		
+	}
+	
+	
+	private UIPanel getUIPanel2() {
+		if (ivjUIPanel2 == null) {
+			ivjUIPanel2 = new UIPanel();
+			ivjUIPanel2.setLayout(new BorderLayout());
+			ivjUIPanel2.setPreferredSize(new Dimension(0, 500));
+			// ivjUIPanel2.add(getTablePanel(), BorderLayout.CENTER);
+			////ivjUIPanel2.add(getMainPanel(), BorderLayout.CENTER);// ZTH
+			ivjUIPanel2.add(getJlbtnpanel(), BorderLayout.SOUTH);// ZTH
+			ivjUIPanel2.add(getJlcardPanel(), BorderLayout.CENTER);// ZTH
+		}
+		return this.ivjUIPanel2;
+	}
+
+
+	public UISplitPane getMainPanel(){
+		if(mainpanel==null){
+			mainpanel = new UISplitPane();
+			mainpanel.setOrientation(JSplitPane.VERTICAL_SPLIT);
+			mainpanel.setTopComponent(getJlcardPanel());
+			mainpanel.setBottomComponent(getJlbtnpanel());
+			mainpanel.setDividerLocation(700);//分割位置
+			mainpanel.setOneTouchExpandable(true);
+			mainpanel.setDividerSize(8);
+		}
+		
+		return mainpanel;
+	}
+	
+	
+	private UIPanel getUIPanel0() {
+		if (ivjUIPanel0 == null) {
+			try {
+				ivjUIPanel0 = new UIPanel();
+				ivjUIPanel0.setLayout(new FlowLayout(FlowLayout.LEFT));
+				ivjUIPanel0.add(getQueryBtn());
+				ivjUIPanel0.add(getSelectallBtn());
+				ivjUIPanel0.add(getCancelallBtn());
+			} catch (Throwable ivjExc) {
+				handleException(ivjExc);
+			}
+		}
+		return this.ivjUIPanel0;
+	}
+	
+	private void handleException(Throwable e) {
+		
+	}
+	
+	
+	public UIPanel getJlbtnpanel() {
+		if(jlbtnpanel==null){
+			jlbtnpanel = new UIPanel();
+			jlbtnpanel.setName("jlbtnpanel");
+			jlbtnpanel.add(getSaveCardBtn());
+			jlbtnpanel.add(getCancelBtn());
+		}
+		return jlbtnpanel;
+	}
+	
+
+	
+	/**
+	 * 全选与反选,flag为true时,全选操作,flag为false时,进行反选操作
+	 */
+	private void onselectall(boolean flag) {
+		switch (focus) {
+		case 1:
+			int jfRowCount = getJlcardPanel().getRowCount();
+			if (jfRowCount > 0) {
+			String storcode = "";	
+				if(flag) {
+					//获取当前单据的业务类型
+					String pk_order=(String) getJlcardPanel().getBillModel().getValueAt(0, "pk_order");//生产总订单主键
+					String sql="select busitype from mmpac_order_main where  pk_order='"+pk_order+"' ";
+					String billtype = null;
+					try {
+						billtype = (String) iuap.executeQuery(sql.toString(), new ColumnProcessor());
+					} catch (BusinessException e1) {
+						MessageDialog.showErrorDlg(mainpanel, "错误", "业务类型获取失败!");
+						return;
+					}
+					if("工装".equals(billtype.trim())) {
+						storcode ="GZ001";
+					}else if("家装".equals(billtype.trim())) {
+						storcode= "JZ002";
+					}
+				}
+				
+				
+				for (int row = 0; row < jfRowCount; row++) {
+					if(flag) {
+						String cmaterialcode=(String) getJlcardPanel().getBillModel().getValueAt(row, "cmaterialcode");//存货编码
+						String vbatchcode=(String) getJlcardPanel().getBillModel().getValueAt(row, "vbatchcode");//批次号
+						String color=(String) getJlcardPanel().getBillModel().getValueAt(row, "color");//颜色
+						String sizing=(String) getJlcardPanel().getBillModel().getValueAt(row, "sizing");
+						String alloy=(String) getJlcardPanel().getBillModel().getValueAt(row, "alloy");
+						String standard=(String) getJlcardPanel().getBillModel().getValueAt(row, "standard");
+						Object objnastnum=getJlcardPanel().getBillModel().getValueAt(row, "nastnum");//辅数量
+						
+						UFDouble nastnum=objnastnum==null? UFDouble.ZERO_DBL:new UFDouble(objnastnum.toString());//辅数量
+						
+						if(cmaterialcode.startsWith("MA") && nastnum.compareTo(UFDouble.ZERO_DBL)>0 ) {
+							try {
+								//型材没有换算率
+//								String storcode = "";
+//								if("工装".equals(billtype.trim())) {
+//									storcode ="GZ001";
+//								}else if("家装".equals(billtype.trim())) {
+//									storcode= "JZ002";
+//								}
+								InvbasdocVO  invbasvo = GetBaseDAOUtil.getInvVO(cmaterialcode);
+							    String pk_invbasdoc = invbasvo.getPrimaryKey();
+							    Object objbdef6 =getHandNum("1001", storcode, pk_invbasdoc, vbatchcode, color, sizing, alloy, standard);//现存量换算率
+							    
+							    if(null==objbdef6 || "".equals(objbdef6.toString())) {
+									MessageDialog.showErrorDlg(mainpanel, "错误", "请检查换算率不能为空!");
+									return;
+								}
+							    String value=(String) getJlcardPanel().getBillModel().getValueAt(row, "bdef8");//本次执行辅数量 
+							    UFDouble  ufbdef8=new UFDouble(value).multiply(new UFDouble(objbdef6.toString())).setScale(2, UFDouble.ROUND_HALF_UP);
+							    //主数量
+								UFDouble  num=new UFDouble((String) getJlcardPanel().getBillModel().getValueAt(row, "nastnum").toString())
+										.multiply(new UFDouble(objbdef6.toString())).setScale(2, UFDouble.ROUND_HALF_UP);
+							    getJlcardPanel().getBillModel().setValueAt(ufbdef8, row, "bdef5");//本次执行主数量
+							    getJlcardPanel().getBillModel().setValueAt(objbdef6, row, "bdef6");//换算率
+							    getJlcardPanel().getBillModel().setValueAt(num, row, "num");//主数量
+							} catch (Exception e) {
+								MessageDialog.showErrorDlg(mainpanel, "错误", "存货:"+cmaterialcode+",未查询到对应现存量,主数量计算失败!");
+								return;
+							}
+							
+						}
+						
+					}
+					
+					getJlcardPanel().getBillModel().setValueAt(flag, row, "bdef4");
+				}
+				
+			 }
+			         break;
+
+		  }
+	}
+	
+	
+
+	
+	private UIButton getQueryBtn() {
+		if (queryBtn == null) {
+			queryBtn = new UIButton();
+			queryBtn.setName("queryBtn");
+			queryBtn.setText("  筛选  ");
+			Color clrBack = new Color(0XC4C4C4);
+			queryBtn.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED,
+					Color.white,clrBack, new Color(0X5F5F5F), clrBack));
+		
+			
+		}
+		return this.queryBtn;
+	}
+
+	
+	private UIButton getSelectallBtn() {
+		if (selectallBtn == null) {
+			selectallBtn = new UIButton();
+			selectallBtn.setName("selectallBtn");
+			selectallBtn.setText("  全选  ");
+			Color clrBack = new Color(0XC4C4C4);
+			selectallBtn.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED,
+					Color.white,clrBack, new Color(0X5F5F5F), clrBack));
+		}
+		return this.selectallBtn;
+	}
+
+	private UIButton getCancelallBtn() {
+		if (cancelallBtn == null) {
+			cancelallBtn = new UIButton();
+			cancelallBtn.setName("cancelallBtn");
+			cancelallBtn.setText("  全消  ");
+			Color clrBack = new Color(0XC4C4C4);
+			cancelallBtn.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED,
+					Color.white,clrBack, new Color(0X5F5F5F), clrBack));
+		}
+		return this.cancelallBtn;
+	}
+	
+	
+	
+	public UIButton getSaveCardBtn() {
+		
+		if(saveCardBtn == null){
+			saveCardBtn = new UIButton();
+			saveCardBtn.setBounds(530,210, 20, 20);
+			saveCardBtn.setName("saveCardBtn");
+			saveCardBtn.setText("确定");
+		}
+		return saveCardBtn;
+	}
+	
+	public UIButton getCancelBtn() {
+		if(cancelBtn == null){
+			cancelBtn = new UIButton();
+			cancelBtn.setBounds(530,210, 75, 20);
+			cancelBtn.setName("cancelBtn");
+			cancelBtn.setText("取消");
+		}
+		return cancelBtn;
+	}
+	
+	
+	private BillCardPanel getJlcardPanel() {
+		if(jlcardPanel==null){
+			jlcardPanel=new BillCardPanel();
+			jlcardPanel.setName("jlcardPanel");
+			//根据单据模板编码加载模板
+			jlcardPanel.loadTemplet("QS411",null,ce.getUser().getPrimaryKey(),ce.getCorporation().getPrimaryKey());
+		}
+		
+		return jlcardPanel;
+	}
+	
+	
+	@Override
+	public void afterEdit(BillEditEvent arg0) {
+		//获取当前单据的业务类型
+		String pk_order=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "pk_order");//生产总订单主键
+		String sql="select busitype from mmpac_order_main where  pk_order='"+pk_order+"' ";
+		
+		Object  objnastnum= this.jlcardPanel.getBodyValueAt(arg0.getRow(), "nastnum")  ;//辅数量
+		
+		UFDouble nastnum=objnastnum==null?UFDouble.ZERO_DBL:new UFDouble(objnastnum.toString());
+		
+		String cmaterialcode=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "cmaterialcode");//存货编码
+		
+		if(!cmaterialcode.startsWith("MA")) {
+			//没有辅数量
+			if(nastnum.compareTo(UFDouble.ZERO_DBL)==0 ) {
+				this.jlcardPanel.setBodyValueAt(null, arg0.getRow(), "bdef8");
+				return;
+			}
+		}
+		
+		
+		String billtype = null;
+		try {
+			billtype = (String) iuap.executeQuery(sql.toString(), new ColumnProcessor());
+		} catch (BusinessException e1) {
+			MessageDialog.showErrorDlg(mainpanel, "错误", "业务类型获取失败!");
+			//this.jlcardPanel.setBodyValueAt(null, arg0.getRow(), "bdef6");
+			return;
+		}
+		
+		String storcode = "";
+		if("工装".equals(billtype.trim())) {
+			storcode ="GZ001";
+		}else if("家装".equals(billtype.trim())) {
+			storcode= "JZ002";
+		}
+		
+		//本次执行主数量
+		if("bdef5".equals(arg0.getKey())) {
+			String value=arg0.getValue().toString();//填写的主数量
+			
+			cmaterialcode=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "cmaterialcode");//存货编码
+			String vbatchcode=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "vbatchcode");//批次号
+			String color=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "color");//颜色
+			String sizing=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "sizing");
+			String alloy=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "alloy");
+			String standard=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "standard");
+			Object objbdef6=null;//换算率
+			if(cmaterialcode.startsWith("MA")) {
+				try {
+					//型材没有换算率
+//					String storcode = "";
+//					if("工装".equals(billtype.trim())) {
+//						storcode ="GZ001";
+//					}else if("家装".equals(billtype.trim())) {
+//						storcode= "JZ002";
+//					}
+					InvbasdocVO  invbasvo = GetBaseDAOUtil.getInvVO(cmaterialcode);
+				    String pk_invbasdoc = invbasvo.getPrimaryKey();
+				    objbdef6 =getHandNum("1001", storcode, pk_invbasdoc, vbatchcode, color, sizing, alloy, standard);//现存量换算率
+				} catch (Exception e) {
+					MessageDialog.showErrorDlg(mainpanel, "错误", "存货:"+cmaterialcode+",未查询到对应现存量,主数量计算失败!");
+					this.jlcardPanel.setBodyValueAt(null, arg0.getRow(), "bdef5");
+					return;
+				}
+				
+			}else {
+				objbdef6=this.jlcardPanel.getBodyValueAt(arg0.getRow(), "bdef6");//换算率
+			}
+			
+			if(null==objbdef6 || "".equals(objbdef6.toString())) {
+				MessageDialog.showErrorDlg(mainpanel, "错误", "请检查换算率不能为空或者MA开头的现存量未查询到!");
+				this.jlcardPanel.setBodyValueAt(null, arg0.getRow(), "bdef5");
+				return;
+			}
+			
+			UFDouble  ufbdef8=new UFDouble(value).div(new UFDouble(objbdef6.toString())).setScale(2, UFDouble.ROUND_HALF_UP);
+			
+			if(cmaterialcode.startsWith("MA")) {
+			  //主数量
+			  UFDouble  num=new UFDouble(this.jlcardPanel.getBodyValueAt(arg0.getRow(), "nastnum").toString())
+					.multiply(new UFDouble(objbdef6.toString())).setScale(2, UFDouble.ROUND_HALF_UP);
+			  this.jlcardPanel.setBodyValueAt(num, arg0.getRow(), "num");//主数量
+		   }
+			
+			this.jlcardPanel.setBodyValueAt(ufbdef8, arg0.getRow(), "bdef8");//本次执行辅数量
+			this.jlcardPanel.setBodyValueAt(objbdef6, arg0.getRow(), "bdef6");//换算率
+			
+		}
+		
+		//本次执行辅数量
+		if("bdef8".equals(arg0.getKey())) {
+			
+            String value=arg0.getValue().toString();//填写的辅数量
+			
+            cmaterialcode=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "cmaterialcode");//存货编码
+			String vbatchcode=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "vbatchcode");//批次号
+			String color=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "color");//颜色
+			String sizing=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "sizing");
+			String alloy=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "alloy");
+			String standard=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "standard");
+			Object objbdef6=null;//换算率
+			if(cmaterialcode.startsWith("MA")) {
+				try {
+					//型材没有换算率
+//					String storcode = "";
+//					if("工装".equals(billtype.trim())) {
+//						storcode ="GZ001";
+//					}else if("家装".equals(billtype.trim())) {
+//						storcode= "JZ002";
+//					}
+					InvbasdocVO  invbasvo = GetBaseDAOUtil.getInvVO(cmaterialcode);
+				    String pk_invbasdoc = invbasvo.getPrimaryKey();
+				    objbdef6 =getHandNum("1001", storcode, pk_invbasdoc, vbatchcode, color, sizing, alloy, standard);//现存量换算率
+				} catch (Exception e) {
+					MessageDialog.showErrorDlg(mainpanel, "错误", "存货:"+cmaterialcode+",未查询到对应现存量,主数量计算失败!");
+					this.jlcardPanel.setBodyValueAt(null, arg0.getRow(), "bdef8");
+					return;
+				}
+				
+			}else {
+				objbdef6=this.jlcardPanel.getBodyValueAt(arg0.getRow(), "bdef6");//换算率
+			}
+			
+			if(null==objbdef6 || "".equals(objbdef6.toString())) {
+				MessageDialog.showErrorDlg(mainpanel, "错误", "请检查换算率不能为空或者MA开头的现存量未查询到!");
+				this.jlcardPanel.setBodyValueAt(null, arg0.getRow(), "bdef5");
+				return;
+			}
+			
+			UFDouble  ufbdef8=new UFDouble(value).multiply(new UFDouble(objbdef6.toString())).setScale(2, UFDouble.ROUND_HALF_UP);
+			
+			if(cmaterialcode.startsWith("MA")) {
+			  //主数量
+			  UFDouble  num=new UFDouble(this.jlcardPanel.getBodyValueAt(arg0.getRow(), "nastnum").toString())
+					.multiply(new UFDouble(objbdef6.toString())).setScale(2, UFDouble.ROUND_HALF_UP);
+			  this.jlcardPanel.setBodyValueAt(num, arg0.getRow(), "num");//主数量
+		   }
+			
+			
+			this.jlcardPanel.setBodyValueAt(ufbdef8, arg0.getRow(), "bdef5");
+			this.jlcardPanel.setBodyValueAt(objbdef6, arg0.getRow(), "bdef6");//换算率
+		}
+		
+		//勾选
+		if("bdef4".equals(arg0.getKey())) {
+			
+			String value=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "bdef8");//填写的辅数量
+		    cmaterialcode=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "cmaterialcode");//存货编码
+			String vbatchcode=(String) this.jlcardPanel.getBodyValueAt(arg0.getRow(), "vbatchcode");//批次号
+			String color=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "color");//颜色
+			String sizing=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "sizing");
+			String alloy=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "alloy");
+			String standard=(String) getJlcardPanel().getBillModel().getValueAt(arg0.getRow(), "standard");
+			Object objbdef6=null;//换算率
+			if(cmaterialcode.startsWith("MA")) {
+				try {
+					//型材没有换算率
+//					String storcode = "";
+//					if("工装".equals(billtype.trim())) {
+//						storcode ="GZ001";
+//					}else if("家装".equals(billtype.trim())) {
+//						storcode= "JZ002";
+//					}
+					InvbasdocVO  invbasvo = GetBaseDAOUtil.getInvVO(cmaterialcode);
+				    String pk_invbasdoc = invbasvo.getPrimaryKey();
+				    objbdef6 =getHandNum("1001", storcode, pk_invbasdoc, vbatchcode, color, sizing, alloy, standard);//现存量换算率
+				} catch (Exception e) {
+					MessageDialog.showErrorDlg(mainpanel, "错误", "存货:"+cmaterialcode+",未查询到对应现存量,主数量计算失败!");
+				//	this.jlcardPanel.setBodyValueAt(null, arg0.getRow(), "bdef8");
+					this.jlcardPanel.setBodyValueAt(false, arg0.getRow(), "bdef4");
+					return;
+				}
+				
+			}else {
+				objbdef6=this.jlcardPanel.getBodyValueAt(arg0.getRow(), "bdef6");//换算率
+			}
+			
+			if(null==objbdef6 || "".equals(objbdef6.toString())) {
+				MessageDialog.showErrorDlg(mainpanel, "错误", "请检查换算率不能为空或者MA开头的现存量未查询到!");
+				this.jlcardPanel.setBodyValueAt(null, arg0.getRow(), "bdef8");
+				return;
+			}
+			
+			UFDouble  ufbdef8=new UFDouble(value).multiply(new UFDouble(objbdef6.toString())).setScale(2, UFDouble.ROUND_HALF_UP);
+			
+			if(cmaterialcode.startsWith("MA")) {
+			//主数量
+			UFDouble  num=new UFDouble(this.jlcardPanel.getBodyValueAt(arg0.getRow(), "nastnum").toString())
+					.multiply(new UFDouble(objbdef6.toString())).setScale(2, UFDouble.ROUND_HALF_UP);
+			 this.jlcardPanel.setBodyValueAt(num, arg0.getRow(), "num");//主数量
+		   }
+			
+			this.jlcardPanel.setBodyValueAt(ufbdef8, arg0.getRow(), "bdef5");//本次执行主数量
+			this.jlcardPanel.setBodyValueAt(objbdef6, arg0.getRow(), "bdef6");//换算率
+			
+			
+		}
+		
+	}
+
+	@Override
+	public void bodyRowChange(BillEditEvent arg0) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	/**
+	 * 按钮确定和取消执行方法
+	 */
+	public void actionPerformed(ActionEvent e) {
+		//保存按钮
+		if(e.getSource() == getSaveCardBtn()){
+//			MessageDialog.showHintDlg(null, "测试", "开始");
+			Vector<Vector<Object>> vectors= getJlcardPanel().getBillModel().getDataVector();
+			StringBuffer errmsg = new StringBuffer();
+			//数量校验
+			try {
+				int execsize = 0;//勾选的条数
+				for(int i = 0; i < vectors.size(); i++) {
+					Vector<Object> vector = (Vector<Object>)vectors.get(i);
+					if(null!=vector.get(0) &&  "Y".equals(vector.get(0).toString())){
+						if(vector.get(1) == null) {
+							errmsg.append("第"+(i+1)+"行本次执行数量为空!");
+							continue;
+						}
+						execsize = execsize + 1;
+						UFDouble execnum = new UFDouble(vector.get(1).toString());//本次执行数量
+						UFDouble nnum =  vector.get(22) == null?new UFDouble(0):new UFDouble(vector.get(22).toString());//主数量
+						UFDouble usednum = vector.get(30) == null?new UFDouble(0):new UFDouble(vector.get(30).toString());//已执行主数量
+						if(execnum.compareTo(nnum.sub(usednum)) > 0 && nnum.compareTo(UFDouble.ZERO_DBL)>0) {
+							errmsg.append("第"+(i+1)+"行本次执行数量超过订单剩余数量!");
+						}
+					}
+				}
+				
+				if(!errmsg.toString().equals("")) {
+					MessageDialog.showErrorDlg(mainpanel, "错误", errmsg.toString());
+					return;
+				}
+				if(execsize == 0) {
+					MessageDialog.showHintDlg(mainpanel, "提示", "请勾选要生成材料出库的数据");
+					return;
+				}
+				OrderMainVO headvo = (OrderMainVO) this.aggvo.getParentVO();
+				String pk_corp = headvo.getPk_corp();
+				UFDate dbilldate = PubEnv.getLoginDate();
+				String pk_order = headvo.getPk_order();
+				//业务类型
+				String billtype=headvo.getBusitype();
+				//项目主键
+				String prjcode = headvo.getProjectid();
+				GeneralBillVO[] aggvos = new GeneralBillVO[1];
+				GeneralBillVO aggvo = new GeneralBillVO();
+				GeneralBillHeaderVO icheadvo = new GeneralBillHeaderVO();
+				icheadvo.setPk_corp(pk_corp);
+				icheadvo.setPk_calbody(GetBaseDAOUtil.getcalpk(pk_corp));
+				icheadvo.setDbilldate(dbilldate);
+				icheadvo.setCoperatorid(PubEnv.getPk_user());
+//				//项目编码 pk_defdoc9
+//				icheadvo.setAttributeValue("pk_defdoc9", prjcode);
+//				//项目名称pk_defdoc10
+//				icheadvo.setAttributeValue("pk_defdoc10", prjcode);
+//				//加工单号pk_defdoc2
+//				icheadvo.setAttributeValue("pk_defdoc2", headvo.getDef1());
+//				//收发类别
+//				icheadvo.setCdispatcherid(getpkrdcl("03"));
+//				//业务类型
+//				icheadvo.setAttributeValue("pk_defdoc8", billtype);
+				
+				
+				//项目编码 pk_defdoc9
+	////			icheadvo.setAttributeValue("vuserdef9", prjcode);
+				//项目名称pk_defdoc10
+	////			icheadvo.setAttributeValue("vuserdef10", prjcode);
+				
+				Map<String,String> mapcodename=getprojectmap(prjcode);
+				//项目编码 
+				icheadvo.setAttributeValue("vuserdef9",mapcodename.get("jobcode") );
+				//项目编码 pk_defdoc9
+				icheadvo.setAttributeValue("pk_defdoc9", prjcode);
+				//项目名称
+				icheadvo.setAttributeValue("vuserdef10", mapcodename.get("jobname"));
+				//项目名称pk_defdoc10
+				icheadvo.setAttributeValue("pk_defdoc10", prjcode);						
+				//加工单号
+				icheadvo.setAttributeValue("vuserdef1", headvo.getDef1());
+				//收发类别
+				icheadvo.setCdispatcherid(getpkrdcl("03"));
+				//业务类型
+				icheadvo.setAttributeValue("vuserdef7", billtype.trim());
+				
+				icheadvo.setAttributeValue("pk_defdoc7",getpkdefdoc(billtype.trim()));
+				
+				if("工装".equals(billtype.trim())) {
+					icheadvo.setCwarehouseid(GetBaseDAOUtil.getstordocpk("GZ001"));//仓库必填
+				}else if("家装".equals(billtype.trim())) {
+					icheadvo.setCwarehouseid(GetBaseDAOUtil.getstordocpk("JZ002"));//仓库必填
+				}
+				icheadvo.setBoutretflag(UFBoolean.FALSE);//是否退回 
+				icheadvo.setBsalecooppur(UFBoolean.FALSE); // 销售出是否已协同生成采购入 
+				icheadvo.setVnote("来源生产总订单");//备注
+				icheadvo.setCbilltypecode("4D");
+				aggvo.setParentVO(icheadvo);
+				GeneralBillItemVO[] itemvos = new GeneralBillItemVO[execsize];
+				Map<String, UFDouble> updatemap = new HashMap<>();//回写已执行主数量
+				Map<String, UFDouble> updatfzemap = new HashMap<>();//回写已执行辅数量
+				int k = 0;
+				for(int j = 0; j < vectors.size(); j++) {
+					Vector<Object> vector = (Vector<Object>)vectors.get(j);
+					//自定义项4 为勾选按钮 :勾选为Y 没有勾选是null
+					if(null!=vector.get(0) &&  "Y".equals(vector.get(0).toString())){
+						GeneralBillItemVO itemvo = new GeneralBillItemVO();
+						String cmaterialcode = vector.get(8).toString();
+						String pk_invbasdoc = "";//存货pk
+						if(cmaterialcode.startsWith("0001")) {
+							pk_invbasdoc = cmaterialcode;
+						}
+						else {
+							InvbasdocVO invbasvo  = GetBaseDAOUtil.getInvVO(cmaterialcode);
+							pk_invbasdoc = invbasvo.getPrimaryKey();
+						}
+//						String prjcode = vector.get(2).toString();
+//						String cprojectid = "";
+//						if(prjcode.startsWith("1001")) {
+//							cprojectid = prjcode;
+//						}
+//						else {
+//							cprojectid = GetBaseDAOUtil.getprojectid(prjcode);
+//						}
+						String cprojectid=prjcode;
+						
+						InvmandocVO invmanvo = GetBaseDAOUtil.getInvmanVO(pk_invbasdoc);
+						String pk_invmandoc = invmanvo.getPrimaryKey();
+						itemvo.setBbarcodeclose(UFBoolean.FALSE);
+						itemvo.setBreturnprofit(UFBoolean.FALSE);
+						itemvo.setBsafeprice(UFBoolean.FALSE);
+						itemvo.setBsourcelargess(UFBoolean.FALSE);
+						itemvo.setBtou8rm(UFBoolean.FALSE);
+						itemvo.setBtransasset(UFBoolean.FALSE);
+						itemvo.setBzgflag(UFBoolean.FALSE);
+						itemvo.setCbodybilltypecode("4D");
+					//	itemvo.setCbodywarehouseid("1001V5100000000003GB");
+						if("工装".equals(billtype)) {
+							itemvo.setCbodywarehouseid(GetBaseDAOUtil.getstordocpk("GZ001"));//仓库必填
+						}else if("家装".equals(billtype)) {
+							itemvo.setCbodywarehouseid(GetBaseDAOUtil.getstordocpk("JZ002"));//仓库必填
+						}
+						itemvo.setCfirstbillhid(pk_order);
+						itemvo.setCfirstbillbid(vector.get(51).toString());
+						itemvo.setCfirsttype("55A2");
+						itemvo.setCinvbasid(pk_invbasdoc);
+						itemvo.setCinventoryid(pk_invmandoc);
+	//					icheadvo.setCinventoryid(pk_invmandoc);
+						itemvo.setCprojectid(cprojectid);
+						itemvo.setCrowno(Integer.toString((k+1)*10));
+						itemvo.setCsourcebillhid(pk_order);
+						itemvo.setCsourcebillbid(vector.get(51).toString());
+						itemvo.setCsourcetype("55A2");
+						itemvo.setDbizdate(dbilldate);
+						itemvo.setFassertcardflag(UFBoolean.FALSE);
+						itemvo.setFchecked(0);
+						itemvo.setFlargess(UFBoolean.FALSE);
+						itemvo.setIsok(UFBoolean.FALSE);
+						itemvo.setNbarcodenum(new UFDouble(0));//条码数量
+						UFDouble ninnum = vector.get(1) == null ? null : new UFDouble(vector.get(1).toString());//本次执主数量
+						itemvo.setNoutnum(ninnum);//实出数量 
+						itemvo.setNshouldoutnum(ninnum);//应出数量 
+						UFDouble Hsl = vector.get(47) == null ? null : new UFDouble(vector.get(47).toString());//换算率
+						//换算率						
+						itemvo.setHsl(Hsl);
+						//没有换算率则辅数量为空
+						if(Hsl != null) {
+							UFDouble ninassistnum = new UFDouble(ninnum.div(Hsl).toString(),2);
+							itemvo.setNoutassistnum(new UFDouble(ninassistnum));//实出辅数量
+							itemvo.setNshouldoutassistnum(ninassistnum);//应入辅数量 
+						}
+					
+						itemvo.setAttributeValue("processcost", new UFDouble(vector.get(24)==null?"0":vector.get(24).toString()));
+						itemvo.setPk_calbody(GetBaseDAOUtil.getcalpk(pk_corp));
+						itemvo.setVbatchcode(vector.get(7)==null?"":vector.get(7).toString());//批次号
+						Object fzdw=vector.get(28);//辅计量单位
+						String castunitid=getpk(fzdw==null?"":fzdw.toString());
+						itemvo.setCastunitid(castunitid);//辅计量单位ID 
+						itemvo.setCastunitname(fzdw==null?"":fzdw.toString());//辅计量单位名称
+						itemvo.setVfirstbillcode(headvo.getVbillno());
+						itemvo.setVfree1(vector.get(12)==null?null:vector.get(12).toString());
+						itemvo.setVfree2(vector.get(14)==null?null:vector.get(14).toString());
+						itemvo.setVfree3(vector.get(13)==null?null:vector.get(13).toString());
+						itemvo.setVfree4(vector.get(15)==null?null:vector.get(15).toString());
+						itemvo.setVsourcebillcode(headvo.getVbillno());
+//						itemvo.setAttributeValue("pk_defdoc1", vector.get(34)==null?null:vector.get(34).toString());//楼号楼层
+//						itemvo.setAttributeValue("pk_defdoc2", vector.get(35)==null?null:vector.get(35).toString());//樘数(数量)
+//						itemvo.setAttributeValue("pk_defdoc3", vector.get(36)==null?null:vector.get(36).toString());//框统计
+//						itemvo.setAttributeValue("pk_defdoc4", vector.get(37)==null?null:vector.get(37).toString());//扇统计
+//						itemvo.setAttributeValue("pk_defdoc5", vector.get(38)==null?null:vector.get(38).toString());//半成品分类
+//						itemvo.setAttributeValue("pk_defdoc6", vector.get(39)==null?null:vector.get(39).toString());//面积
+//						itemvo.setAttributeValue("pk_defdoc7", vector.get(40)==null?null:vector.get(40).toString());//切割长度
+//						itemvo.setAttributeValue("pk_defdoc8", vector.get(41)==null?null:vector.get(41).toString());//切割角度左下
+//						itemvo.setAttributeValue("pk_defdoc9", vector.get(42)==null?null:vector.get(42).toString());//切割角度右上
+//						itemvo.setAttributeValue("pk_defdoc10",vector.get(43)==null?null:vector.get(43).toString());//备注
+//						itemvo.setAttributeValue("pk_defdoc11",vector.get(19)==null?null:vector.get(19).toString());//宽度
+//						itemvo.setAttributeValue("pk_defdoc12",vector.get(20)==null?null:vector.get(20).toString());//高度
+//						itemvo.setAttributeValue("pk_defdoc13",vector.get(44)==null?null:vector.get(44).toString());//系列
+//						itemvo.setAttributeValue("pk_defdoc14",vector.get(45)==null?null:vector.get(45).toString());//玻璃编号
+						
+						
+						
+						itemvo.setAttributeValue("vuserdef1", vector.get(34)==null?null:vector.get(34).toString());//楼号楼层
+						itemvo.setAttributeValue("vuserdef2", vector.get(35)==null?null:vector.get(35).toString());//樘数(数量)
+						itemvo.setAttributeValue("vuserdef3", vector.get(36)==null?null:vector.get(36).toString());//框统计
+						itemvo.setAttributeValue("vuserdef4", vector.get(37)==null?null:vector.get(37).toString());//扇统计
+						itemvo.setAttributeValue("vuserdef5", vector.get(38)==null?null:vector.get(38).toString());//半成品分类
+						itemvo.setAttributeValue("vuserdef6", vector.get(39)==null?null:vector.get(39).toString());//面积
+						itemvo.setAttributeValue("vuserdef7", vector.get(40)==null?null:vector.get(40).toString());//切割长度
+						itemvo.setAttributeValue("vuserdef8", vector.get(41)==null?null:vector.get(41).toString());//切割角度左下
+						itemvo.setAttributeValue("vuserdef9", vector.get(42)==null?null:vector.get(42).toString());//切割角度右上
+						itemvo.setAttributeValue("vuserdef10",vector.get(43)==null?null:vector.get(43).toString());//备注
+						itemvo.setAttributeValue("vuserdef11",vector.get(19)==null?null:vector.get(19).toString());//宽度
+						itemvo.setAttributeValue("vuserdef12",vector.get(20)==null?null:vector.get(20).toString());//高度
+						itemvo.setAttributeValue("vuserdef13",vector.get(44)==null?null:vector.get(44).toString());//系列
+						itemvo.setAttributeValue("vuserdef14",vector.get(45)==null?null:vector.get(45).toString());//玻璃编号
+											
+//						itemvo.setAttributeValue("vuserdef15",vector.get()==null?null:vector.get().toString());//开票类型
+						itemvo.setAttributeValue("vuserdef17",vector.get(18)==null?null:vector.get(18).toString());//窗号
+						itemvo.setAttributeValue("vuserdef18",vector.get(16)==null?null:vector.get(16).toString());//米重
+						itemvo.setAttributeValue("vuserdef19",vector.get(17)==null?null:vector.get(17).toString());//装饰面周长
+			//			itemvo.setAttributeValue("vuserdef20",vector.get(5)==null?null:vector.get(5).toString());//专用区
+						
+						
+						
+						//回写数量
+						UFDouble updatenum =  new UFDouble(vector.get(30)==null?"0":vector.get(30).toString())
+								.add(new UFDouble(vector.get(1)==null?"0":vector.get(1).toString()));//已执行主数量+本次执行主数量
+						
+						UFDouble updatexenum= new UFDouble(vector.get(31)==null?"0":vector.get(31).toString())
+								.add(new UFDouble(vector.get(2)==null?"0":vector.get(1).toString()));//已执行辅数量+本次执行辅数量
+						
+						updatemap.put(vector.get(51).toString(), updatenum);
+						updatfzemap.put(vector.get(51).toString(), updatexenum);
+						itemvos[k]=itemvo;
+						k = k + 1;
+					}
+				}
+				aggvo.setChildrenVO(itemvos);
+				aggvos[0] = aggvo;
+				GeneralBillVO[] res = imaterapi.insertMaterialOuts(aggvos);
+				GeneralBillVO resvo = res[0];
+				Boolean updateres = iorder.UpdateIssueExecNum(updatemap);
+				Boolean updatfzeres = iorder.UpdatefzExecNum(updatfzemap);
+//				MessageDialog.showHintDlg(mainpanel, "成功", "材料出库单"+resvo.getVBillCode()+"新增成功!");
+				MessageDialog.showHintDlg(mainpanel, "成功", "材料出库单新增成功!");
+				this.closeCancel();
+			}  catch (Exception e1) {
+				MessageDialog.showErrorDlg(mainpanel, "错误", e1.getMessage());
+				return;
+			}
+		}
+		
+		//取消按钮
+		if(e.getSource() == getCancelBtn()){
+			this.closeCancel();
+		}
+		
+		//全选
+		if(e.getSource() == getSelectallBtn()){
+			onselectall(true);
+		}
+		
+		//全消
+		if(e.getSource() == getCancelallBtn()){
+			onselectall(false);
+		}
+		
+		
+		//筛选  
+		if(e.getSource() == getQueryBtn()){
+			TemplateInfo ti = new TemplateInfo();
+			ti.setTemplateId(null);
+			ti.setPk_Org(ce.getCorporation().getPrimaryKey());
+			ti.setUserid(ce.getUser().getPrimaryKey());
+			ti.setCurrentCorpPk(ce.getCorporation().getPrimaryKey());
+			//功能节点默人模板分配后查询SELECT * from  pub_systemplate order by  ts desc
+			ti.setFunNode("40H206");
+			ti.setNodekey("qt");
+			QueryConditionDLG d=new QueryConditionDLG(this,ti,"材料明细");
+			Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
+		//	d.setSize(dimension.width-1000,dimension.height-650);
+			d.setLocation(500, 300);
+			if(d.showModal() != UIDialog.ID_OK){
+				return;
+		     }
+			
+			String dlgsql=d.getWhereSQL();
+			if(!(null!=dlgsql && !"".equals(dlgsql))) {
+				getJlcardPanel().getBillModel().setBodyDataVO(issueArrays);
+				return;
+			}
+			String quresql="select * from mmpac_order_issue where  "+dlgsql+" and " ;
+			IUAPQueryBS iuap=(IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());
+			
+			try {
+				List<String> pks=new ArrayList<String>();
+				if(null!=issueArrays && issueArrays.length>0) {
+					for(OrderIssueVO vo:issueArrays) {
+						String pk_order_issue=vo.getPk_order_issue();
+						pks.add(pk_order_issue);
+					}
+					SqlBuilder sqlbuild=new SqlBuilder();	
+					sqlbuild.append(quresql);
+					sqlbuild.append("pk_order_issue",pks.toArray(new String[0]));
+					List<OrderIssueVO> lisorderiussvos = (List<OrderIssueVO>) iuap.executeQuery(sqlbuild.toString(), new BeanListProcessor(OrderIssueVO.class));
+					OrderIssueVO[] issuevos = lisorderiussvos.toArray(new OrderIssueVO[0]);
+					getJlcardPanel().getBillModel().setBodyDataVO(issuevos);
+				
+				}else {
+					getJlcardPanel().getBillModel().setBodyDataVO(null);
+				}
+				
+				
+				
+			} catch (BusinessException e1) {
+				// TODO Auto-generated catch block
+				e1.printStackTrace();
+			}
+			
+		 }
+		
+	 }
+	
+	
+	//计量单位 
+	private String getpk(String shortname) throws BusinessException {
+	  String sql="select pk_measdoc from bd_measdoc where measname='"+shortname+"'  ";
+	  IUAPQueryBS iuap=(IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());
+	  
+	  String pk_measdoc = (String) iuap.executeQuery(sql, new ColumnProcessor());
+      if (pk_measdoc == null) {
+          return "";
+      }
+      return pk_measdoc;
+		
+	}
+	
+	//收发类别
+	private String getpkrdcl(String rdcode ) throws BusinessException {
+	  String sql="select pk_rdcl from bd_rdcl where rdcode='"+rdcode+"'  ";
+	  
+	  String pk_rdcl = (String) iuap.executeQuery(sql, new ColumnProcessor());
+      if (pk_rdcl == null) {
+          return "";
+      }
+      return pk_rdcl;
+		
+	}
+	
+    //项目管理档案-编码和名称
+    public  Map<String,String> getprojectmap(String pk_jobmngfil ) throws Exception {
+        String sql = "select jobcode,jobname  from   bd_jobbasfil where  "
+        		+ "pk_jobbasfil = (select pk_jobbasfil from bd_jobmngfil where pk_jobmngfil ='"+pk_jobmngfil+"' and dr = 0) "
+        		+ "and dr=0";
+        Map<String,String> map = (Map<String, String>) iuap.executeQuery(sql, new MapProcessor());
+        if (map == null || map.size()==0) {
+        	throw new Exception("项目管理档案"+pk_jobmngfil+"未查到,请检查"); 
+        }
+        return map;
+    }
+	
+	//业务类型自定义档案查询
+	private String getpkdefdoc(String docname ) throws Exception {
+	  String sql="select pk_defdoc from bd_defdoc  where pk_defdoclist = "
+	  		+ "(select pk_defdoclist from bd_defdef where defname = '业务类型' and dr=0 ) and dr=0 "
+	  		+ "and docname='"+docname+"'";
+	  
+	  Object pkdefdoc =  iuap.executeQuery(sql, new ColumnProcessor());
+	  if(pkdefdoc == null ||  "".equals(pkdefdoc)) {
+  		throw new Exception("业务类型【"+docname+"】未查到,请检查");
+  	  }
+
+      return pkdefdoc.toString();
+		
+	}
+	
+	
+	/**
+	 * 查询现存量物料换算率
+	 * @param pk_corp
+	 * @param storcode
+	 * @param cinvbasid
+	 * @param vbatchcode
+	 * @param color    颜色
+	 * @param sizing   定尺
+	 * @param alloy    合金
+	 * @param standard 标准
+	 * @return
+	 * @throws Exception
+	 */
+   	public  Object  getHandNum(String pk_corp,String storcode,String cinvbasid,String vbatchcode, String color ,String sizing,String alloy,String standard)throws Exception {
+   		StringBuffer sql = new StringBuffer();
+   		sql.append("SELECT ");
+   		sql.append(" nonhandnum/nonhandastnum as hsl");
+   		sql.append(" FROM");
+   		sql.append(" ic_onhandnum");
+   		sql.append(" WHERE");
+   		sql.append(" pk_corp = '"+pk_corp+"'");
+   		sql.append(" AND cwarehouseid = ( SELECT pk_stordoc FROM bd_stordoc WHERE storcode = '"+storcode+"' and sealflag = 'N' and dr = 0)");
+   		sql.append(" AND cinvbasid = '"+cinvbasid+"' AND vfree1='"+color+"' AND vfree2='"+alloy+"' AND vfree3='"+sizing+"' AND vfree4='"+standard+"' ");
+   		if(vbatchcode != null) {
+   			sql.append(" AND vlot = '"+vbatchcode+"'");
+   		}
+   		return  iuap.executeQuery(sql.toString(), new ColumnProcessor());
+   	}
+	
+
+}
+
+
+
+
+
+
+