Пример #1
0
        /// <summary>
        /// 生成订单和 对应的盒号
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOrder_Click(object sender, EventArgs e)
        {
            try
            {
                using (_dbcontext = new FlowManageSystemEntities())
                {
                    orderRepositoy     = new OrderRepository(_dbcontext);
                    orderBoxRepository = new OrderBoxRepository(_dbcontext);

                    OrderPlacing orderPlacing = new OrderPlacing()
                    {
                        OrderDate            = Convert.ToDateTime(this.OrderDateTimePic.Text),
                        Type                 = this.TypeTxtBox.Text,
                        PlanNo               = this.PlanNoTxtBox.Text,
                        FinishedProductNo    = this.FinishedProductNocBox.Text,
                        ProductTypeNo        = this.ProductTypecBox.Text,
                        OnLineQuantity       = Convert.ToInt32(this.OnlineQuantityTxtBox.Text),
                        SnMin                = SnMinTxtBox.Text,
                        SnMax                = SnMinTxtBox.Text,
                        LabelingRequirements = this.LableRequireTxtBox.Text,
                        TestReport           = this.TestReportTxtBox.Text,
                        CodingRequirements   = this.CodingRequireTxtBox.Text,
                        PackingRequirement   = this.PackingRequireTxtBox.Text,
                        SpecialRequirement   = this.SpecialRequireTxtBox.Text,
                        TestSoftConfigFile   = this.TestSoftConfigFIleTxtBox.Text,
                        Remark               = this.RemarkTxtBox.Text,
                        CustomDemandDate     = Convert.ToDateTime(this.CustonRequireTimePic.Text),
                        PlannedLaunchDate    = Convert.ToDateTime(this.PlanOnlineTimePic.Text),
                        PlanStorageDate      = Convert.ToDateTime(this.PlanStorageTimePic.Text),
                        DaysOfProduction     = Convert.ToByte(this.ProductDaysTxtBox.Text),
                        OrderCreateTime      = DateTime.Now
                    };



                    //注意此处一对多关联数据的保存  设置关联
                    IEnumerable <OrderBox> orderBoxes = SnHelper.GetListboxNumber(this.SnMinTxtBox.Text, Convert.ToInt32(this.OnlineQuantityTxtBox.Text)).Select(item => new OrderBox()
                    {
                        //设置导航属性
                        OrderPlacing = orderPlacing,
                        //设置外键Id
                        OrderId = orderPlacing.OrderId,
                        //盒号
                        BoxNumber = item,
                        //新建时间
                        OrderBoxCreateTime = DateTime.Now
                    });

                    //添加所有 多的 一端数据
                    orderBoxRepository.AddOrderAllBoxes(orderBoxes);

                    //添加 一的  一端数据  //下单
                    orderRepositoy.AddOrder(orderPlacing);

                    //一对多的数据一起保存  两个仓储公用一个dbcontext  可以防止添加部分失败    会以一个事务的形式保存
                    _dbcontext.SaveChanges();

                    MessageBox.Show("下单成功!");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("下单失败,请检查数据" + ex.Message);
            }
        }
Пример #2
0
        /// <summary>
        /// 当前盒完成
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void textBox_BoxNumber_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (!RegexHelper.regExpNumber.IsMatch(this.textBox_DoNumber.Text))
                {
                    MessageBox.Show("完成的数量应该是数字");
                    return;
                }

                byte doNumber = Convert.ToByte(this.textBox_DoNumber.Text);

                DialogResult dialogResult = MessageBox.Show("当前盒完成数量:" + doNumber, "询问", MessageBoxButtons.OKCancel);

                if (dialogResult == DialogResult.Cancel)
                {
                    return;
                }

                using (_dbcontext = new FlowManageSystemEntities())
                {
                    orderBoxRepository = new OrderBoxRepository(_dbcontext);

                    var boxNumber = this.textBox_BoxNumber.Text.Trim();

                    //通过盒号找到订单号
                    var id = orderBoxRepository.GetOrderId(boxNumber);

                    List <string> boxNumbersNeedFinished = null;

                    //根据订单号 找到需要完成的所有盒号
                    if (id != 0)
                    {
                        boxNumbersNeedFinished = orderBoxRepository.GetOrderIdBoxes(id);
                    }
                    else                      //不存在当前盒号 直接退出
                    {
                        MessageBox.Show("不存在的盒号,请联系下单人员,检查是否下单错误!");
                        return;
                    }

                    //根据id找到订单记录
                    orderRepositoy = new OrderRepository(_dbcontext);

                    //设置界面显示当前计划单号
                    var order = orderRepositoy.getOrderByOrderId(id);
                    this.lbPlanNo.Text = order.PlanNo;

                    assembleRepository = new AssembleRepository(_dbcontext);
                    //设置界面已组装好的数量
                    this.lbDoNo.Text = assembleRepository.GetAssembleCount(id).ToString();

                    //获取已完成的盒号
                    var hasFinished = assembleRepository.GetAssembleFinishedBoxNo(id);

                    //在组装完成前 判断是否重复扫
                    if (hasFinished.Contains(this.textBox_BoxNumber.Text.Trim()))
                    {
                        MessageBox.Show("此盒已完成,勿重复扫!");
                        this.textBox_BoxNumber.Select();
                        return;
                    }
                    assembleRepository.assembleOneBox(id, boxNumber, doNumber);
                    assembleRepository.SaveChanges();

                    //获取已完成的盒号
                    hasFinished = assembleRepository.GetAssembleFinishedBoxNo(id);
                    //设置界面ListBox绑定
                    unFinishedBoxes.Clear();
                    boxNumbersNeedFinished.Except(hasFinished).ToList().ForEach(o => unFinishedBoxes.Add(o));
                }
            }
        }