public async Task SendPrintMoveStoreAsync(string who, MoveStore ms)
 {
     foreach (var connectionId in PrintHub.connections.GetConnections(who))
     {
         await _hub.Clients.Client(connectionId).SendAsync("printmovestore", ms);
     }
 }
 public ResultJSON <MoveStore> ChangeState([FromBody] MoveStore m)
 {
     r.CurrentUser = UserName;
     return(new ResultJSON <MoveStore>
     {
         Code = 0,
         Data = r.UpdateState(m)
     });
 }
        public async Task <ResultJSON <MoveStore> > PrintMoveStore(int id, string to)
        {
            MoveStore bc = r.Get(id);

            await SendPrintMoveStoreAsync(to, bc);

            return(new ResultJSON <MoveStore>
            {
                Code = 0,
                Data = bc
            });
        }
        /// <summary>
        /// 生产转仓单
        /// </summary>
        /// <param name="m"></param>

        private void PrintMoveStore(MoveStore m)
        {
            Log.Logs += $"正在打印生产转仓:{m.Name}\r";

            Word.Application thisApplication = new Word.ApplicationClass();
            wApp = thisApplication;
            string tmpDocFile   = AppDomain.CurrentDomain.BaseDirectory + folder + Properties.Settings.Default.PrintMoveStoreDocx;
            object templatefile = tmpDocFile;

            wDoc = wApp.Documents.Add(ref templatefile, ref missing, ref missing, ref missing); //在现有进程内打开文档
            wDoc.Activate();                                                                    //当前文档置前

            //填充数据
            WordReplace(wApp, "#Name#", m.Name);
            WordReplace(wApp, "#OutStoreName#", m.OutStoreName);
            WordReplace(wApp, "#OutPlan#", m.OutPlan.ToString("0.00"));
            WordReplace(wApp, "#OutDensity#", m.OutDensity.ToString("0.000"));
            WordReplace(wApp, "#OutTemperature#", m.OutTemperature.ToString());
            WordReplace(wApp, "#OutFact#", m.OutFact.ToString("0.00"));
            WordReplace(wApp, "#InStoreName#", m.InStoreName);
            WordReplace(wApp, "#InDensity#", m.InDensity.ToString("0.000"));
            WordReplace(wApp, "#InTemperature#", m.InTemperature.ToString());
            WordReplace(wApp, "#InFact#", m.InFact.ToString("0.00"));
            WordReplace(wApp, "#Manufacturer#", m.Worker);
            WordReplace(wApp, "#LastUpdatedAt#", m.LastUpdatedAt.ToString("yyyy-MM-dd HH:mm"));
            PrintTime(wApp);

            object background = false; //这个很重要,否则关闭的时候会提示请等待Word打印完毕后再退出,加上这个后可以使Word所有
            object filename   = AppDomain.CurrentDomain.BaseDirectory + createdfolder + m.Name + ".docx";

            wDoc.SaveAs(ref filename, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                        missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
            wDoc.PrintOut(ref background, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref
                          missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                          ref missing);
            object saveOption = Word.WdSaveOptions.wdSaveChanges;

            wDoc.Close(ref saveOption, ref missing, ref missing); //关闭当前文档,如果有多个模版文件进行操作,则执行完这一步后接着执行打开Word文档的方法即可
                        saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;

            wApp.Quit(ref saveOption, ref missing, ref missing); //关闭Word进程
        }
        public async Task <ResultJSON <MoveStore> > UpdateInOutFact([FromBody] MoveStore m)
        {
            r.CurrentUser = UserName;

            var result = r.UpdateInOutFact(m);

            //推送到“油仓情况”
            this.option.油仓情况AccessToken = AccessTokenContainer.TryGetToken(this.option.CorpId, this.option.油仓情况Secret);
            await MassApi.SendTextCardAsync(option.油仓情况AccessToken, option.油仓情况AgentId, "转仓生产完工,已更新油仓油量"
                                            , $"<div class=\"gray\">单号:{result.Name}</div>" +
                                            $"<div class=\"normal\">施工人:{result.LastUpdatedBy}</div>" +
                                            $"<div class=\"normal\">转出:{result.OutStoreName} - {result.OutFact}升</div>" +
                                            $"<div class=\"normal\">转入:{result.InStoreName} - {result.InFact}升</div>"
                                            , $"https://vue.car0774.com/#/oilstore/inout", toUser : "******");

            return(new ResultJSON <MoveStore>
            {
                Code = 0,
                Data = result
            });
        }
        public ResultJSON <MoveStore> Post([FromBody] MoveStore m)
        {
            //判断是否重复单号
            if (r.Has(ms => ms.Name == m.Name))
            {
                return new ResultJSON <MoveStore> {
                           Code = 502
                }
            }
            ;

            r.CurrentUser = UserName;
            var result = r.Insert(m);

            return(new ResultJSON <MoveStore>
            {
                Code = 0,
                Data = result
            });
        }

        #endregion
    }
    private void storeload()//数据绑定
    {
        //需要添加权限判断-判断是否为走动干部进入

        var data = from m in dc.VMoveplan
                   where m.Maindept == SessionBox.GetUserSession().DeptNumber
                   select new
        {
            Name      = m.Name,
            PlaceName = m.Placename,
            DeptName  = m.Deptname,
            PosName   = m.Posname,
            ID        = m.Id,
            PersonID  = m.Personid,
            StartTime = m.Starttime,
            EndTime   = m.Endtime,
            MoveState = m.Movestate,
            m.Posid,
            m.Placeid
        };

        if (df_begin.SelectedDate > df_end.SelectedDate)
        {
            Ext.Msg.Alert("提示", "日期选择有误!").Show();
            return;
        }
        #region 直接linq查询-数据搜索速度慢,先改成上述视图
        //var data = from m in dc.Moveplan
        //           from p in dc.Person
        //           from pl in dc.Place
        //           from d in dc.Department
        //           from pos in dc.Position
        //           where m.Personid == p.Personnumber && m.Placeid == pl.Placeid && p.Deptid == d.Deptnumber && p.Posid == pos.Posid && m.Maindept == SessionBox.GetUserSession().DeptNumber
        //           && m.Starttime.Value >= (df_begin.IsNull ? m.Starttime.Value : df_begin.SelectedDate.Date) && m.Endtime.Value <= (df_end.IsNull ? m.Endtime.Value : df_end.SelectedDate.Date)
        //               //&& pos.Posid == (cbb_zhiwu.SelectedIndex == -1 ? pos.Posid : Convert.ToInt32(cbb_zhiwu.SelectedItem.Value))
        //           && p.Personnumber == (cbb_person.SelectedIndex == -1 ? p.Personnumber : cbb_person.SelectedItem.Value.Trim())
        //           //&& pl.Placeid == (cbb_place.SelectedIndex == -1 ? pl.Placeid : Decimal.Parse(cbb_place.SelectedItem.Value.Trim()))
        //           select new
        //           {
        //               Name = p.Name,
        //               PlaceName = pl.Placename,
        //               DeptName = d.Deptname,
        //               PosName = pos.Posname,
        //               ID = m.Id,
        //               PersonID = m.Personid,
        //               StartTime = m.Starttime,
        //               EndTime = m.Endtime,
        //               MoveState = m.Movestate,
        //               pos.Posid,
        //               pl.Placeid
        //           };
        #endregion
        if (!df_begin.IsNull)
        {
            data = data.Where(p => p.StartTime >= df_begin.SelectedDate.Date);
        }
        if (!df_end.IsNull)
        {
            data = data.Where(p => p.EndTime <= df_end.SelectedDate.Date);
        }
        if (cbb_person.SelectedIndex > -1)
        {
            data = data.Where(p => p.PersonID == cbb_person.SelectedItem.Value.Trim());
        }
        if (cbb_place.SelectedIndex > -1)
        {
            data = data.Where(p => p.Placeid == Decimal.Parse(cbb_place.SelectedItem.Value.Trim()));
        }
        if (cbb_zhiwu.SelectedIndex > -1)
        {
            data = data.Where(p => p.Posid == Decimal.Parse(cbb_zhiwu.SelectedItem.Value.Trim()));
        }
        MoveStore.DataSource = data;
        MoveStore.DataBind();
    }
 public Task PrintMoveStore(MoveStore model)
 {
     return(Clients.All.SendAsync("printmovestore", model));
 }