新线程,进度条

该代码实现了一个期货修订操作,首先检查单据状态和出库关闭情况,然后判断是否为长单客户,如果是则启动修订任务并在后台计算,显示进度条。如果遇到错误,会显示相应的错误提示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package nc.ui.so.m30.billui.action;

import java.awt.event.ActionEvent;

import org.apache.commons.lang.StringUtils;

import nc.bs.framework.common.NCLocator;
import nc.itf.so.m30.task.IReviseTaskService;
import nc.itf.uap.IUAPQueryBS;
import nc.jdbc.framework.processor.ColumnProcessor;
import nc.ui.pubapp.uif2app.model.BillManageModel;
import nc.ui.so.m30.billui.view.SaleOrderBillForm;
import nc.ui.uif2.NCAction;
import nc.ui.uif2.components.progress.TPAProgressUtil;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.pub.lang.UFDateTime;
import nc.vo.so.m30.entity.SaleOrderBVO;
import nc.vo.so.m30.entity.SaleOrderHVO;
import nc.vo.so.m30.entity.SaleOrderVO;
import nc.ui.pub.beans.MessageDialog;
import nc.ui.pub.beans.progress.DefaultProgressMonitor;
import nc.ui.pub.beans.progress.IProgressMonitor;

public class ReviseOrderAction extends NCAction {
	/**
	 * 
	 */
	private static final long serialVersionUID = 3646143778512288342L;
	private BillManageModel model;
	private SaleOrderBillForm editor;
	
	private TPAProgressUtil tpaProgressUtil;

	public ReviseOrderAction() {
		super.setBtnName("期货修订");
		super.setCode("orderRevise");
	}

	public void doAction(ActionEvent event) throws Exception {
		SaleOrderVO orderVO = (SaleOrderVO) getModel().getSelectedData();
		SaleOrderBVO[] bodys = orderVO.getChildrenVO();
		SaleOrderHVO head = orderVO.getParentVO();
		for (SaleOrderBVO body : bodys) {
			if (body.getBboutendflag() == UFBoolean.TRUE) {
				MessageDialog.showErrorDlg(editor, "修订错误", "当前单据【" + head.getVbillcode() 
						+ "】第【" + body.getCrowno() + "】行出库关闭不允许修订!");
				return;
			}
		}
		if (StringUtils.isNotBlank(head.getVdef17())) {
			IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class);
			String longOrderCustomerPk = (String) queryBS.executeQuery("select d.pk_defdoc\r\n" + 
					"                    from bd_defdoc d\r\n" + 
					"                    left join bd_defdoclist l\r\n" + 
					"                      on l.pk_defdoclist = d.pk_defdoclist\r\n" + 
					"                   where l.code = 'YXJT_30_CDKH'\r\n" + 
					"                     and d.code = '01'", new ColumnProcessor());
			if (StringUtils.equals(head.getVdef17(), longOrderCustomerPk)) {
				new Thread(new Runnable() {
					public void run() {
						// 方案计算进度条
						DefaultProgressMonitor montior = getTpaProgressUtil().getTPAProgressMonitor();
						montior.beginTask("正在刷新", IProgressMonitor.UNKNOWN_TOTAL_TASK);
						montior.setProcessInfo("正在刷新");
						try {
							SaleOrderVO orderVO = (SaleOrderVO) getModel().getSelectedData();
							IReviseTaskService reviseTaskService = NCLocator.getInstance().lookup(IReviseTaskService.class);
							reviseTaskService.handlerSaleOrderByPK_RequiresNew(orderVO.getPrimaryKey(), new UFDateTime());
							montior.done();
							MessageDialog.showHintDlg(editor, "修订成功", "长单客户订单修订成功,请手动刷新单据!");
						} catch (Exception e) {
							montior.done();
							MessageDialog.showErrorDlg(editor, "修订错误", e.getMessage());
						}
					}
				}).start();
				
			}else {
				MessageDialog.showErrorDlg(editor, "修订错误", "当前单据【" + head.getVbillcode() 
						+ "】客户类型不是长单客户不允许修订!");
				return;
			}
		}else {
			MessageDialog.showErrorDlg(editor, "修订错误", "当前单据【" + head.getVbillcode() 
					+ "】客户类型不是长单客户不允许修订!");
		}
	}

	public BillManageModel getModel() {
		return this.model;
	}

	public void setModel(BillManageModel model) {
		this.model = model;
		model.addAppEventListener(this);
	}

	public SaleOrderBillForm getEditor() {
		return this.editor;
	}

	public void setEditor(SaleOrderBillForm editor) {
		this.editor = editor;
	}

	protected boolean isActionEnable() {
		if ((getModel().getSelectedOperaDatas() == null)
				|| (getModel().getSelectedOperaDatas().length == 0)) {
			return false;
		}
		SaleOrderVO orderVO = (SaleOrderVO) getModel().getSelectedData();
		if (orderVO.getParentVO().getFstatusflag().intValue() == 2) {
			return true;
		}
		return false;
	}
	
	/**
	 * loading
	 * @return
	 */
	private TPAProgressUtil getTpaProgressUtil() {
		if (tpaProgressUtil == null) {
			tpaProgressUtil = new TPAProgressUtil();
			tpaProgressUtil.setContext(getModel().getContext()); // 传入界面的上下文
		}
		return tpaProgressUtil;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值