U9C 打印模板

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;


}

 

posted @ 2026-03-11 10:30  江境纣州  阅读(22)  评论(0)    收藏  举报