private void Do_AfterInit(UFSoft.UBF.UI.IView.IPart part, EventArgs args)
{
_strongPart = part as UFIDA.U9.MFG.MO.DiscreteMOUIModel.DiscreteMOMainUIFormWebPart;
if (_strongPart == null)
return;
IUFButton btnCustPrint = new UFWebButtonAdapter();
btnCustPrint.ID = "BtnCustMOPrint";
//(2)、找到工具栏控件
IUFToolbar _Toolbar = (IUFToolbar)_strongPart.FindControl("Toolbar1");
//(3)、将按钮添加到工具栏
string guid = "1A120563-5578-4298-BA7A-162D3BA8A3C9";
btnCustPrint = UIControlBuilder.BuilderToolbarButton(_Toolbar, "True", "btnCustMOPrint", "True", "True", 60, 28, "7", "", true, false, guid, guid, guid);
btnCustPrint.Text = "指令单打印";
btnCustPrint.AutoPostBack = true;
UIControlBuilder.SetButtonAccessKey(btnCustPrint);
btnCustPrint.UIModel = part.Model.ElementID;
btnCustPrint.Action = "";
((UFWebToolbarAdapter)_Toolbar).Items.Add(btnCustPrint as System.Web.UI.WebControls.WebControl);
//(4)、绑定按钮事件
btnCustPrint.Click += new EventHandler(BtnBCPrint_Clickk);
}
private void BtnBCPrint_Clickk(object sender, EventArgs e)
{
var record = this._strongPart.Model.MO.FocusedRecord;
if (record == null || record.ID <= 0)
return;
IExportSettings settings = PDPrintHelper.GetExportSettings(record);
settings.DirectPrintWithDefaultSettings = false;
settings.PrintTemplateCatalogType = "U9.MFG.DispatchOrder.BCPrint";
PrepareDataService prepareDataService = new PrepareDataService();
settings.UserDataCallBack = new DataCallBackHandle(this.GetBarCodeDataSet);
//settings.OnFinished = new FinishCallBackHandle(OnPrintFinished);
var uiE = new UIActionEventArgs();
uiE.Tag = settings;
UFIDA.U9.UI.Commands.CommandFactory.DoCommand("PrintClick", _strongPart.Action, sender, uiE);
}
private void GetBarCodeDataSet(object sender, DataCallBackEventArgs args)
{
logger.Error("开始打印MO指令单信息");
var moBarCode = "";
var dispatchOrderBarCode = "";
var dispatchLineBCDic = new Dictionary<long, string>();
var moOPBCDic = new Dictionary<long, string>();
var record = this._strongPart.Model.MO.FocusedRecord;
var moId = record.ID;
long dispatchOrderID = 0;
var moOPIDs = new List<UFSoft.UBF.Business.BusinessEntity.EntityKey>();
var dispatchLineIDs = new List<UFSoft.UBF.Business.BusinessEntity.EntityKey>();
using (BPForEngine bp = new BPForEngine())
{
DispatchOrderDoc dispatchOrder = DispatchOrderDoc.Finder.Find("MO=" + record.ID);
if (dispatchOrder == null)
{
throw new Exception("当前生产订单没有找到对应派工单");
}
else
{
dispatchOrderID = dispatchOrder.ID;
}
}
var checkSql = @" select top 1 a.Code
from BC_BarCode a
inner join BC_BarCodeRule b on a.BarCodeRule=b.ID
where CreateEntity_EntityID=@ID and b.Code=@Rule";
var ds = new DataSet();
var checkInparam = new DataParamList();
checkInparam.Add(DataParamFactory.CreateInput("ID", dispatchOrderID.ToString()));
checkInparam.Add(DataParamFactory.CreateInput("Rule", "DJPG01"));
var checkRt = DataAccessor.RunSQL(DataAccessor.GetConn(), checkSql, checkInparam,out ds);
if (checkRt == 1)
{
dispatchOrderBarCode = ds.Tables[0].Rows[0][0].ToString();
}
else
{
//生成派工单头条码
CreateBarCodeSVProxy DisPatchOrderDocproxy = new UFIDA.U9.BC.CalcData.Proxy.CreateBarCodeSVProxy();
DisPatchOrderDocproxy.IsCreateHeadBarCode = true;
DisPatchOrderDocproxy.BarCodeRuleCode = "DJPG01";
DisPatchOrderDocproxy.Org = long.Parse(PDContext.Current.OrgID);
DisPatchOrderDocproxy.CreateEntityKeys = new List<UFSoft.UBF.Business.BusinessEntity.EntityKey>();
DisPatchOrderDocproxy.CreateEntityKeys.Add(new UFSoft.UBF.Business.BusinessEntity.EntityKey(dispatchOrderID, "UFIDA.U9.MO.SFC.DispatchOrder.DispatchOrderDoc"));
var tempRt = DisPatchOrderDocproxy.Do();
if (tempRt != null && tempRt.Count > 0)
{
dispatchOrderBarCode = tempRt[0].BarCode;
}
}
checkInparam.Clear();
checkInparam.Add(DataParamFactory.CreateInput("ID", moId.ToString()));
checkInparam.Add(DataParamFactory.CreateInput("Rule", "DJMO01"));
checkRt = DataAccessor.RunSQL(DataAccessor.GetConn(), checkSql, checkInparam, out ds);
if (checkRt == 1)
{
moBarCode= ds.Tables[0].Rows[0][0].ToString();
}
else
{
CreateBarCodeSVProxy moBCCreateProxy = new UFIDA.U9.BC.CalcData.Proxy.CreateBarCodeSVProxy();
//生成生产订单头条码
moBCCreateProxy.IsCreateHeadBarCode = true;
moBCCreateProxy.BarCodeRuleCode = "DJMO01";
moBCCreateProxy.Org = long.Parse(PDContext.Current.OrgID);
moBCCreateProxy.CreateEntityKeys = new List<UFSoft.UBF.Business.BusinessEntity.EntityKey>();
moBCCreateProxy.CreateEntityKeys.Add(new UFSoft.UBF.Business.BusinessEntity.EntityKey(moId, "UFIDA.U9.MO.MO.MO"));
var tempRt = moBCCreateProxy.Do();
if (tempRt != null && tempRt.Count > 0)
{
moBarCode = tempRt[0].BarCode;
}
}
using (BPForEngine bp = new BPForEngine())
{
DispatchOrderDoc dispatchOrder = DispatchOrderDoc.Finder.FindByID(dispatchOrderID);
if (dispatchOrder != null)
{
dispatchOrderID = dispatchOrder.ID;
foreach (var line in dispatchOrder.DispatchOrderDocLines)
{
checkInparam.Clear();
checkInparam.Add(DataParamFactory.CreateInput("ID", line.ID.ToString()));
checkInparam.Add(DataParamFactory.CreateInput("Rule", "DJPG02"));
checkRt = DataAccessor.RunSQL(DataAccessor.GetConn(), checkSql, checkInparam, out ds);
if (checkRt == 1)
{
dispatchLineBCDic.Add(line.ID, ds.Tables[0].Rows[0][0].ToString());
}
else if(!dispatchLineIDs.Contains(line.Key))
{
dispatchLineIDs.Add(line.Key);
}
}
}
}
//生成派工单行条码
CreateBarCodeSVProxy DisPatchOrderDocLineproxy = new UFIDA.U9.BC.CalcData.Proxy.CreateBarCodeSVProxy();
DisPatchOrderDocLineproxy.IsCreateLineBarCode = true;
DisPatchOrderDocLineproxy.BarCodeRuleCode = "DJPG02";
DisPatchOrderDocLineproxy.Org = long.Parse(PDContext.Current.OrgID);
DisPatchOrderDocLineproxy.CreateEntityKeys = dispatchLineIDs;
var rt = DisPatchOrderDocLineproxy.Do();
if (rt != null && rt.Count > 0)
{
foreach (var item in rt)
{
dispatchLineBCDic.Add(item.CreateEntity.ID, item.BarCode);
}
}
using (BPForEngine bp = new BPForEngine())
{
var moOps = MOOperation.Finder.FindAll("MO=" + record.ID);
foreach (var item in moOps)
{
checkInparam.Clear();
checkInparam.Add(DataParamFactory.CreateInput("ID", item.ID.ToString()));
checkInparam.Add(DataParamFactory.CreateInput("Rule", "DJMOGH01"));
checkRt = DataAccessor.RunSQL(DataAccessor.GetConn(), checkSql, checkInparam, out ds);
if (checkRt == 1)
{
logger.Error("MO工序条码已经存在实体ID:" + item.ID);
moOPBCDic.Add(item.ID, ds.Tables[0].Rows[0][0].ToString());
}
else
{
moOPIDs.Add(new UFSoft.UBF.Business.BusinessEntity.EntityKey(item.ID, "UFIDA.U9.MO.MO.MOOperation"));
}
}
}
//生成派工单行上MO工序条码
CreateBarCodeSVProxy MOOPProxy = new UFIDA.U9.BC.CalcData.Proxy.CreateBarCodeSVProxy();
MOOPProxy.IsCreateItemBarCode = true;
MOOPProxy.BarCodeRuleCode = "DJMOGH01";
MOOPProxy.Org = long.Parse(PDContext.Current.OrgID);
MOOPProxy.CreateEntityKeys = moOPIDs;
rt = MOOPProxy.Do();
if (rt != null && rt.Count > 0)
{
foreach (var item in rt)
{
logger.Error("MO工序条码创建实体ID:"+item.CreateEntity.ID);
moOPBCDic.Add(item.CreateEntity.ID, item.BarCode);
}
}
//根据派工单ID获取打印数据
DataParamList paramList = new DataParamList();
paramList.Add(DataParamFactory.CreateInput("DocID", dispatchOrderID.ToString()));
paramList.Add(DataParamFactory.CreateInput("IsMO", "1"));
DataSet rtDs = new DataSet();
DataAccessor.RunSP("Cust_GetDispatchOrderInfoForPrint", paramList, out rtDs);
if (rtDs != null && rtDs.Tables.Count > 0 && rtDs.Tables[0].Rows.Count > 0)
{
rtDs.Tables[0].Columns.Add("RepairInfo");
foreach (DataRow dsRow in rtDs.Tables[0].Rows)
{
dsRow["MOBarCode"] = moBarCode;
dsRow["DispatchBarCode"] = dispatchOrderBarCode;
var lineID = (long)dsRow["DispatchOrderLine"];
var moOPID = (long)dsRow["MOOperationID"];
if (moOPBCDic.ContainsKey(moOPID))
{
dsRow["MOOPBarCode"] = moOPBCDic[moOPID];
}
if (dispatchLineBCDic.ContainsKey(lineID))
{
dsRow["DispatchLineBarCode"] = dispatchLineBCDic[lineID];
}
}
}
args.ReturnData = rtDs;
}