Esempio n. 1
0
        public static YKBoxInfo GetBoxByHu(string hu)
        {
            string    sql    = string.Format(@"SELECT * FROM dbo.YKBox WHERE Hu = '{0}' AND Status = 'S' 
SELECT * FROM dbo.YKBoxDetail WHERE Hu = '{0}'", hu);
            DataSet   ds     = DBHelper.GetDataSet(sql, false);
            YKBoxInfo result = null;

            if (ds?.Tables?.Count == 2)
            {
                DataTable dtMain   = ds.Tables[0];
                DataTable dtDetail = ds.Tables[1];
                if (dtMain.Rows.Count > 0)
                {
                    result = YKBoxInfo.BuildBoxInfo(dtMain.Rows[0]);
                    if (dtDetail.Rows.Count > 0)
                    {
                        foreach (DataRow row in dtDetail.Rows)
                        {
                            result.Details.Add(YKBoxDetailInfo.BuildBoxDetailInfo(row));
                        }
                    }
                }
            }
            return(result);
        }
Esempio n. 2
0
        private void AddGrid(YKBoxInfo box)
        {
            if (box.Details != null && box.Details.Count > 0)
            {
                List <string> matnrlist = box.Details.Select(i => i.Matnr).Distinct().ToList();
                Invoke(new Action(() =>
                {
                    foreach (string matnr in matnrlist)
                    {
                        grid.Rows.Insert(0, box.Source, box.Target, box.Hu,
                                         box.Details.First(i => i.Matnr == matnr).Zsatnr,
                                         box.Details.First(i => i.Matnr == matnr).Zcolsn,
                                         box.Details.First(i => i.Matnr == matnr).Zsiztx,
                                         box.Details.Count(i => i.Matnr == matnr && i.IsAdd == 0), box.Remark + " SAP:" + box.SapRemark);
                        grid.Rows[0].Tag = matnr;

                        if (box.Status == "E" || box.SapStatus == "E")
                        {
                            grid.Rows[0].DefaultCellStyle.BackColor = Color.OrangeRed;
                        }
                    }
                }));
            }
            else
            {
                Invoke(new Action(() =>
                {
                    grid.Rows.Insert(0, box.Source, box.Target, box.Hu, "", "", "", 0, box.Remark);
                    grid.Rows[0].Tag = "";
                    grid.Rows[0].DefaultCellStyle.BackColor = Color.OrangeRed;
                }));
            }
        }
Esempio n. 3
0
        private YKBoxInfo GetCurrentYKBox(CheckResult cr)
        {
            YKBoxInfo result = new YKBoxInfo()
            {
                EquipHla     = SysConfig.DeviceInfo.EQUIP_HLA,
                EquipXindeco = SysConfig.DeviceNO,
                Hu           = lblHu.Text,
                IsFull       = (byte)(isFull ? 1 : 0),
                LouCeng      = SysConfig.DeviceInfo.LOUCENG,
                Remark       = cr.Message,
                IsHandover   = 0,
                Status       = cr.InventoryResult ? "S" : "E",
                Source       = cboSource.Text,
                Target       = cboTarget.Text,
                SubUser      = SysConfig.CurrentLoginUser.UserId,
                SapRemark    = "",
                SapStatus    = "",
                PackMat      = packmat,
                LIFNR        = lifnr
            };

            tagDetailList.ForEach(a => {
                result.Details.Add(new YKBoxDetailInfo()
                {
                    Barcd  = a.BARCD, Epc = a.EPC, Hu = result.Hu,
                    Matnr  = a.MATNR, Zcolsn = a.ZCOLSN, Zsatnr = a.ZSATNR,
                    Zsiztx = a.ZSIZTX, IsAdd = (byte)(a.IsAddEpc ? 1 : 0)
                });
            });
            return(result);
        }
Esempio n. 4
0
        public static List <YKBoxInfo> GetUnHandoverBoxList(string device)
        {
            List <YKBoxInfo> result = new List <YKBoxInfo>();
            string           sql    = string.Format(@"SELECT * FROM dbo.YKBox WHERE EquipXindeco = '{0}' AND IsHandover = 0 AND Status='S'
SELECT * FROM dbo.YKBoxDetail WHERE Hu IN (SELECT Hu FROM dbo.YKBox WHERE EquipXindeco = '{0}' AND IsHandover = 0 AND Status='S')
", device);
            DataSet          ds     = DBHelper.GetDataSet(sql, false);

            if (ds != null && ds.Tables.Count == 2)
            {
                result = new List <YKBoxInfo>();
                DataTable dtBox    = ds.Tables[0];
                DataTable dtDetail = ds.Tables[1];
                if (dtBox != null && dtBox.Rows.Count > 0)
                {
                    foreach (DataRow row in dtBox.Rows)
                    {
                        YKBoxInfo item       = YKBoxInfo.BuildBoxInfo(row);
                        DataRow[] rowsDetail = dtDetail.Select(string.Format("Hu ='{0}'", item.Hu));
                        if (rowsDetail.Length > 0)
                        {
                            foreach (DataRow rowdetail in rowsDetail)
                            {
                                YKBoxDetailInfo detail = YKBoxDetailInfo.BuildBoxDetailInfo(rowdetail);
                                item.Details.Add(detail);
                            }
                        }
                        result.Add(item);
                    }
                }
            }
            return(result);
        }
Esempio n. 5
0
        private void savingDataThreadFunc()
        {
            while (true)
            {
                try
                {
                    if (mCancel)
                    {
                        return;
                    }

                    CUploadData ud = getQueueData();

                    if (ud != null)
                    {
                        YKBoxInfo upData = ud.Data as YKBoxInfo;
                        if (upData != null)
                        {
                            //upload
                            string uploadRe = "";
                            string sapMsg   = "";

                            SapResult result = SAPDataService.UploadYKBoxInfo(SysConfig.LGNUM, upData);
                            uploadRe = result.STATUS;
                            sapMsg   = result.MSG;

                            if (uploadRe == "E")
                            {
                                SqliteDataService.updateMsgToSqlite(ud.Guid, sapMsg);
                                playSoundWarn();
                            }
                            else
                            {
                                SqliteDataService.delUploadFromSqlite(ud.Guid);
                            }

                            upData.SapRemark = result.MSG;
                            upData.SapStatus = result.STATUS;

                            //save
                            YKBoxService.SaveBox(upData);

                            if (upData.Status == "S" && uploadRe == "S")
                            {
                                updateBoxList(upData);
                                UpdateTotalInfo();
                            }

                            updateUploadCount();
                            updateExpButton();
                        }
                    }
                    Thread.Sleep(500);
                }
                catch (Exception)
                {
                    //LogHelper.WriteLine(ex.Message + "\r\n" + ex.StackTrace.ToString());
                }
            }
        }
Esempio n. 6
0
 void updateBoxList(YKBoxInfo box)
 {
     Invoke(new Action(() =>
     {
         mBoxList.RemoveAll(i => i.Hu == box.Hu);
         mBoxList.Add(box);
     }));
 }
Esempio n. 7
0
        public override void StopInventory()
        {
            try
            {
                if (isInventory)
                {
                    Invoke(new Action(() =>
                    {
                        lblWorkStatus.Text = "停止扫描";
                    }));
                    isInventory = false;
                    //reader.StopInventory();
                    stopTarReader();

                    CheckResult checkResult = CheckData();

                    Invoke(new Action(() =>
                    {
                        lblResult.Text = checkResult.Message;
                    }));
                    if (checkResult.Message.Contains("重投"))
                    {
                        AddGrid(checkResult.Message);
                        playSound(false);
                        SetInventoryResult(1);
                        return;
                    }
                    YKBoxInfo box = GetCurrentYKBox(checkResult);
                    updateSAP(box);

                    playSound(checkResult.InventoryResult && box.SapStatus == "S");

                    AddGrid(box);

                    SetInventoryResult(1);

                    if (dmLabel1_peibi.DM_Key == DMSkin.Controls.DMLabelKey.错误)
                    {
                        if (lblUsePrint.DM_Key == DMSkin.Controls.DMLabelKey.正确)
                        {
                            if (checkResult.InventoryResult)
                            {
                                PrintHelper.PrintRightTag(box, materialList);
                            }
                            else
                            {
                                PrintHelper.PrintErrorTag(box, lblCheckSku.DM_Key == DMSkin.Controls.DMLabelKey.正确);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Log4netHelper.LogError(ex);
                SetInventoryResult(1);
            }
        }
Esempio n. 8
0
        private void btnClear_Click(object sender, EventArgs e)
        {
            List <YKBoxInfo> rowBoxList = new List <YKBoxInfo>();

            List <DataGridViewRow> rows = GetCheckedRows();

            if (rows != null && rows.Count > 0)
            {
                foreach (DataGridViewRow row in rows)
                {
                    YKBoxInfo box = row.Tag as YKBoxInfo;
                    if (box != null)
                    {
                        if (!rowBoxList.Exists(r => r.Hu == box.Hu))
                        {
                            rowBoxList.Add(box);
                        }
                    }
                }
            }
            if (rowBoxList.Count > 0)
            {
                if (MetroMessageBox.Show(this, "确认清除列表中箱记录?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
                {
                    if (YKBoxService.DeleteBoxByHu(rowBoxList.Select(i => i.Hu).Distinct().ToList()))
                    {
                        MetroMessageBox.Show(this, "清除成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        DialogResult = DialogResult.OK;

                        currentBoxList.RemoveAll(i => rowBoxList.Exists(j => j.Hu == i.Hu));
                        updateGrid();
                    }
                    else
                    {
                        MetroMessageBox.Show(this, "清除失败,可能是网络不稳定,请稍候再试", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }



            //if (boxList!=null && boxList.Count>0)
            //{
            //    if (MetroMessageBox.Show(this, "确认清除列表中所有箱记录?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
            //    {
            //        if(YKBoxService.DeleteBoxByHu(boxList.Select(i=>i.Hu).Distinct().ToList()))
            //        {
            //            MetroMessageBox.Show(this, "清除成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            //            DialogResult = DialogResult.OK;
            //            Close();
            //        }
            //        else
            //        {
            //            MetroMessageBox.Show(this, "清除失败,可能是网络不稳定,请稍候再试", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            //        }
            //    }
            //}
        }
Esempio n. 9
0
        public override void StopInventory()
        {
            try
            {
                if (!isInventory)
                {
                    SetInventoryResult(1);
                    return;
                }
                Invoke(new Action(() =>
                {
                    lblWorkStatus.Text = "停止扫描";
                }));
                isInventory = false;
                reader.StopInventory();

                CheckResult checkResult = CheckData();

                playSound(checkResult);

                YKBoxInfo box = GetCurrentYKBox(checkResult);

                if (lblUsePrint.DM_Key == DMSkin.Controls.DMLabelKey.正确)
                {
                    if (checkResult.InventoryResult)
                    {
                        PrintHelper.PrintRightTag(box, materialList);
                    }
                    else
                    {
                        PrintHelper.PrintErrorTag(box, lblCheckSku.DM_Key == DMSkin.Controls.DMLabelKey.正确);
                    }
                }

                if (!checkResult.IsRecheck)
                {
                    addToSavingQueue(box);
                }

                AddGrid(box);

                if (checkResult.InventoryResult || checkResult.IsRecheck)
                {
                    SetInventoryResult(1);
                }
                else
                {
                    SetInventoryResult(1);
                }
            }
            catch (Exception ex)
            {
                Log4netHelper.LogError(ex);
                SetInventoryResult(1);
            }
        }
Esempio n. 10
0
        bool checkSame(ref CheckResult result)
        {
            bool      re  = false;
            YKBoxInfo box = mBoxList == null ? null : mBoxList.Find(i => i.Hu == lblHu.Text);

            if (box != null && box.Status != null && box.Status == "S" && box.SapStatus == "S")
            {
                re = true;
                //上次检测结果为正常,
                bool isAllSame    = true;
                bool isAllNotSame = true;
                List <YKBoxDetailInfo> lastCheckDetail = box.Details;
                if (lastCheckDetail != null && lastCheckDetail.Count > 0)
                {
                    if (lastCheckDetail.Count != epcList.Count)
                    {
                        isAllSame = false;
                    }
                    foreach (YKBoxDetailInfo item in lastCheckDetail)
                    {
                        if (!epcList.Contains(item.Epc))
                        {
                            isAllSame = false;
                            break;
                        }
                        else
                        {
                            isAllNotSame = false;
                        }
                    }
                }
                else
                {
                    isAllSame    = false;
                    isAllNotSame = true;
                }

                if (isAllSame)
                {
                    result.IsRecheck = true;
                }
                else if (isAllNotSame)
                {
                    //两批EPC对比,完全不一样,示为箱码重复使用
                    result.UpdateMessage(Consts.Default.XIANG_MA_CHONG_FU_SHI_YONG);
                    result.InventoryResult = false;
                }

                if (lastCheckDetail.Count > 0 && !isAllSame && !isAllNotSame)
                {
                    result.UpdateMessage(Consts.Default.EPC_YI_SAO_MIAO);
                    result.InventoryResult = false;
                }
            }
            return(re);
        }
Esempio n. 11
0
        private void EnqueueUploadData(YKBoxInfo data)
        {
            SqliteUploadDataInfo ud = new SqliteUploadDataInfo();

            ud.Guid       = Guid.NewGuid().ToString();
            ud.Data       = data;
            ud.IsUpload   = 0;
            ud.CreateTime = DateTime.Now;
            YKBoxSqliteService.InsertUploadData(ud);
            UploadServer.GetInstance().CurrentUploadQueue.Push(ud);
        }
Esempio n. 12
0
        public static bool SaveBox(YKBoxInfo box)
        {
            if (SysConfig.IsTest)
            {
                return(true);
            }

            try
            {
                string sql = string.Format(@"
delete from YKBox where HU='{0}'
delete from YKBoxDetail where HU='{0}'", box.Hu);

                string sql1 = string.Format(@"INSERT INTO dbo.YKBox(
Hu ,Source , Target ,  Status , Remark , Timestamps , EquipHla , EquipXindeco , 
IsHandover , IsFull , SubUser,SapStatus,SapRemark,LouCeng,PackMat,LIFNR)
VALUES  ( '{0}' , '{1}' , '{2}' , '{3}' , '{4}' , GETDATE() , '{5}' , 
'{6}' , {7} , {8} , '{9}','{10}','{11}','{12}','{13}','{14}')",
                                            box.Hu, box.Source, box.Target, box.Status, box.Remark, box.EquipHla,
                                            box.EquipXindeco, box.IsHandover, box.IsFull,
                                            box.SubUser, box.SapStatus, box.SapRemark.Replace("'", ""),
                                            box.LouCeng, box.PackMat, box.LIFNR);

                string sql2 = "";
                if (box.Details != null && box.Details.Count > 0)
                {
                    sql2 = string.Format(@" INSERT INTO dbo.YKBoxDetail( Hu , Epc , Matnr , Zsatnr , Zcolsn , Zsiztx , Timestamps , Barcd, IsAdd) VALUES");
                    foreach (YKBoxDetailInfo item in box.Details)
                    {
                        string sonsql = string.Format(@"('{0}','{1}','{2}','{3}','{4}','{5}',GETDATE() ,'{6}',{7}),", item.Hu, item.Epc, item.Matnr, item.Zsatnr, item.Zcolsn, item.Zsiztx, item.Barcd, item.IsAdd);
                        sql2 += sonsql;
                    }

                    if (sql2.EndsWith(","))
                    {
                        sql2 = sql2.Remove(sql2.Length - 1, 1);
                    }
                }

                return(DBHelper.ExecuteNonQuery(sql + " " + sql1 + " " + sql2) > 0);
            }
            catch (Exception ex)
            {
                Log4netHelper.LogError(ex);
            }

            return(true);
        }
Esempio n. 13
0
        bool checkSame()
        {
            bool re = false;

            if (mBoxList != null && mBoxList.Exists(i => i.Hu == lblHu.Text))
            {
                YKBoxInfo box = mBoxList.First(i => i.Hu == lblHu.Text);
                if (box.Status == "S" && box.SapStatus == "S")
                {
                    List <string> a = box.Details.Select(i => i.Epc).ToList();
                    re = LocalDataService.compareListStr(a, epcList);
                }
            }

            return(re);
        }
Esempio n. 14
0
        public void updateSAP(YKBoxInfo uploadData)
        {
            CUploadData ud = new CUploadData();

            ud.Guid       = Guid.NewGuid().ToString();
            ud.Data       = uploadData;
            ud.IsUpload   = 0;
            ud.CreateTime = DateTime.Now;
            SqliteDataService.saveToSqlite(ud);

            YKBoxInfo upData = ud.Data as YKBoxInfo;

            if (upData == null)
            {
                return;
            }

            string uploadRe = "";
            string sapMsg   = "";

            SapResult result = SAPDataService.UploadYKBoxInfo(SysConfig.LGNUM, upData);

            uploadRe = result.STATUS;
            sapMsg   = result.MSG;

            if (uploadRe == "E")
            {
                SqliteDataService.updateMsgToSqlite(ud.Guid, sapMsg);
            }
            else
            {
                SqliteDataService.delUploadFromSqlite(ud.Guid);
            }

            upData.SapRemark = result.MSG;
            upData.SapStatus = result.STATUS;

            //save
            YKBoxService.SaveBox(upData);

            if (upData.Status == "S" && uploadRe == "S")
            {
                updateBoxList(upData);
                UpdateTotalInfo();
            }
        }
Esempio n. 15
0
        public void addToSavingQueue(YKBoxInfo uploadData)
        {
            CUploadData ud = new CUploadData();

            ud.Guid       = Guid.NewGuid().ToString();
            ud.Data       = uploadData;
            ud.IsUpload   = 0;
            ud.CreateTime = DateTime.Now;
            SqliteDataService.saveToSqlite(ud);

            lock (savingDataLockObject)
            {
                savingData.Enqueue(ud);
            }

            updateUploadCount();
        }
Esempio n. 16
0
        /// <summary>
        /// 取出队列中第一个上传任务,进行上传,上传完成后删除这条
        /// </summary>
        public void Upload()
        {
            lock (_lockObject)
            {
                if (isbusy)
                {
                    return;
                }
                else
                {
                    isbusy = true;
                }
                try
                {
                    if (CurrentUploadQueue.Count > 0)
                    {
                        //取出任务上传
                        object o = CurrentUploadQueue.Pop();
                        if (o.GetType() == typeof(SqliteUploadDataInfo))
                        {
                            YKBoxInfo box = (o as SqliteUploadDataInfo).Data;
                            //if(box.Status == "S")
                            //{
                            SapResult result = SAPDataService.UploadYKBoxInfo(SysConfig.LGNUM, box);
                            box.SapRemark = result.MSG;
                            box.SapStatus = result.STATUS;
                            bool xdSaveResult = YKBoxService.SaveBox(box);
                            YKBoxSqliteService.SetUploaded((o as SqliteUploadDataInfo).Guid);
                            if (OnUploaded != null)
                            {
                                OnUploaded(box);
                            }
                            //}
                        }
                    }
                }
                catch (Exception ex)
                {
                    LogHelper.WriteLine(ex.Message + "\r\n" + ex.StackTrace);
                }

                isbusy = false;
            }
        }
Esempio n. 17
0
        private void initData()
        {
            grid.Rows.Clear();

            List <CUploadData> list = SqliteDataService.GetExpUploadFromSqlite <YKBoxInfo>();

            if (list != null && list.Count > 0)
            {
                foreach (var item in list)
                {
                    YKBoxInfo ju = item.Data as YKBoxInfo;
                    if (ju != null)
                    {
                        grid.Rows.Insert(0, false, ju.Hu, item.MSG);
                        grid.Rows[0].Tag = item;
                    }
                }
            }
        }
Esempio n. 18
0
        //private object boxListLock = new object();
        private void UploadServer_OnUploaded(YKBoxInfo Box)
        {
            if (boxList == null)
            {
                boxList = new List <YKBoxInfo>();
            }
            foreach (YKBoxInfo item in boxList)
            {
                if (item.Hu == Box.Hu)
                {
                    item.SapRemark = Box.SapRemark;
                    item.SapStatus = Box.SapStatus;
                    break;
                }
            }

            UpdateErrorBoxButton();
            UpdateTotalInfo();
        }
Esempio n. 19
0
 private void AddGrid(YKBoxInfo box)
 {
     if (box.Details != null && box.Details.Count > 0)
     {
         List <string> matnrlist = box.Details.Select(i => i.Matnr).Distinct().ToList();
         foreach (string matnr in matnrlist)
         {
             grid.Rows.Insert(0, false, box.Source, box.Target, box.Hu,
                              box.Details.First(i => i.Matnr == matnr).Zsatnr,
                              box.Details.First(i => i.Matnr == matnr).Zcolsn,
                              box.Details.First(i => i.Matnr == matnr).Zsiztx,
                              box.Details.Count(i => i.Matnr == matnr), box.SapRemark);
             grid.Rows[0].Tag = box;
         }
     }
     else
     {
         grid.Rows.Insert(0, false, box.Source, box.Target, box.Hu, "", "", "", 0, box.SapRemark);
         grid.Rows[0].Tag = box;
     }
 }
Esempio n. 20
0
        void uploadSap(YKBoxInfo box)
        {
            try
            {
                SqliteUploadDataInfo ud = new SqliteUploadDataInfo();
                ud.Guid       = Guid.NewGuid().ToString();
                ud.Data       = box;
                ud.IsUpload   = 0;
                ud.CreateTime = DateTime.Now;
                YKBoxSqliteService.InsertUploadData(ud);

                SapResult result = SAPDataService.UploadYKBoxInfo(SysConfig.LGNUM, box);
                box.SapRemark = result.MSG;
                box.SapStatus = result.STATUS;
                bool xdSaveResult = YKBoxService.SaveBox(box);
                YKBoxSqliteService.SetUploaded(ud.Guid);
            }
            catch (Exception e)
            {
                Log4netHelper.LogError(e);
            }
        }
Esempio n. 21
0
        private void uploadAgainButton_Click(object sender, EventArgs e)
        {
            List <YKBoxInfo> rowBoxList = new List <YKBoxInfo>();

            List <DataGridViewRow> rows = GetCheckedRows();

            if (rows != null && rows.Count > 0)
            {
                foreach (DataGridViewRow row in rows)
                {
                    YKBoxInfo box = row.Tag as YKBoxInfo;
                    if (box != null)
                    {
                        if (!rowBoxList.Exists(r => r.Hu == box.Hu))
                        {
                            rowBoxList.Add(box);
                        }
                    }
                }
            }

            foreach (YKBoxInfo data in rowBoxList)
            {
                SqliteUploadDataInfo ud = new SqliteUploadDataInfo();
                ud.Guid       = Guid.NewGuid().ToString();
                ud.Data       = data;
                ud.IsUpload   = 0;
                ud.CreateTime = DateTime.Now;
                YKBoxSqliteService.InsertUploadData(ud);
                UploadServer.GetInstance().CurrentUploadQueue.Push(ud);
            }

            if (rowBoxList.Count > 0)
            {
                MetroMessageBox.Show(this, "成功加入上传列表", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                Close();
            }
        }
Esempio n. 22
0
        public override void StopInventory()
        {
            try
            {
                if (isInventory)
                {
                    Invoke(new Action(() =>
                    {
                        lblWorkStatus.Text = "停止扫描";
                    }));
                    isInventory = false;
                    reader.StopInventory();

                    CheckResult checkResult = CheckData();
                    playSound(checkResult);
                    YKBoxInfo box = GetCurrentYKBox(checkResult);

                    if (lblUsePrint.DM_Key == DMSkin.Controls.DMLabelKey.正确)
                    {
                        if (checkResult.InventoryResult)
                        {
                            PrintHelper.PrintRightTag(box, materialList);
                        }
                        else
                        {
                            PrintHelper.PrintErrorTag(box, lblCheckSku.DM_Key == DMSkin.Controls.DMLabelKey.正确);
                        }
                    }

                    if (!checkResult.IsRecheck)
                    {
                        uploadSap(box);
                    }

                    if (boxList == null)
                    {
                        boxList = new List <YKBoxInfo>();
                    }
                    if (lblCheckPinSe.DM_Key == DMSkin.Controls.DMLabelKey.正确)
                    {
                        if (boxList.Count(i => i.Status == "S") == 0 && box.Status == "S")
                        {
                            currentZcolsn = box.Details?.First().Zcolsn;
                            currentZsatnr = box.Details?.First().Zsatnr;
                        }
                    }

                    if (!checkResult.IsRecheck)
                    {
                        boxList.RemoveAll(i => i.Hu == box.Hu);
                        boxList.Add(box);
                    }

                    AddGrid(box);
                    updateUIInfo();

                    if (checkResult.InventoryResult || checkResult.IsRecheck)
                    {
                        SetInventoryResult(1);
                    }
                    else
                    {
                        SetInventoryResult(1);
                    }
                }
            }
            catch (Exception ex)
            {
                Log4netHelper.LogError(ex);
                SetInventoryResult(1);
            }
        }
Esempio n. 23
0
        public static void PrintRightTag(YKBoxInfo box,List<MaterialInfo> mats)
        {
            try
            {
                int skuCount = 0;
                if(box.Details!=null && box.Details.Count>0)
                {
                    skuCount = box.Details.Select(i => i.Matnr).Distinct().Count();
                }
                string filepath = "";
                if (skuCount>1)
                {
                    filepath = Application.StartupPath + "\\LabelMultiSku.mrt";
                }
                else if(skuCount == 1)
                {
                    filepath = Application.StartupPath + "\\LabelSku.mrt";
                }
                if(filepath == "")
                {
                    throw new Exception("no sku");
                }

                StiReport report = new StiReport();
                report.Load(filepath);
                report.Compile();

                if(skuCount>1)
                {
                    //multi
                    report["HU"] = box.Hu;
                    report["STORAGETYPE"] = box.Target;

                    string content = "";
                    List<string> matnrlist = box.Details.Select(i => i.Matnr).Distinct().ToList();
                    foreach (string matnr in matnrlist)
                    {
                        string zsatnr = box?.Details?.First(i => i.Matnr == matnr).Zsatnr;
                        string zcolsn = box?.Details?.First(i => i.Matnr == matnr).Zcolsn;
                        string zsiztx = box?.Details?.First(i => i.Matnr == matnr).Zsiztx;
                        int count = box.Details.FindAll(i => i.Matnr == matnr).Count;

                        string controlFlag = "";
                        controlFlag = mats.FirstOrDefault(i => i.MATNR == matnr).PUT_STRA;

                        content += string.Format("|{0,-13}|{1,-7}|{2,-14}|{3,-3}|{4,-7}|\r\n",
                            zsatnr, zcolsn, zsiztx, count, controlFlag);
                    }
                    report["CONTENT"] = content;

                }
                else
                {
                    string zsatnr = box?.Details?.First().Zsatnr;
                    string zcolsn = box?.Details?.First().Zcolsn;
                    string zsiztx = box?.Details?.First().Zsiztx;
                    int count = box.Details.Count(i => i.IsAdd != 1);

                    string controlFlag = "";
                    string mat = box?.Details?.First().Matnr;
                    controlFlag = mats.FirstOrDefault(i => i.MATNR == mat).PUT_STRA;
                    string MAKTX = mats.FirstOrDefault(i => i.MATNR == mat).MAKTX;

                    report["HU"] = box.Hu;
                    report["STORAGETYPE"] = box.Target;
                    report["RUKUBIAOZHI"] = controlFlag;
                    report["LIFNR"] = box.LIFNR;
                    report["PINHAO"] = zsatnr;
                    report["SEHAO"] = zcolsn;
                    report["GUIGE"] = zsiztx;
                    report["SHULIANG"] = count.ToString();
                    report["MAKTX"] = MAKTX;
                }

                PrinterSettings printerSettings = new PrinterSettings();
                report.Print(false, printerSettings);

            }
            catch (Exception ex)
            {
                LogHelper.Error("打印正常箱标(按规格)出错", ex.Message + "\r\n" + ex.StackTrace);
            }
        }
Esempio n. 24
0
        public static void PrintErrorTag(YKBoxInfo box,bool checkSku)
        {
            try
            {
                string content = "";
                string filepath = Application.StartupPath + "\\LabelError.mrt";
                if (box.Details.Count > 0)
                {
                    List<string> matnrlist = box.Details.Select(i => i.Matnr).Distinct().ToList();
                    if (matnrlist.Count > 10)
                    {
                        if (checkSku)
                        {
                            content = Consts.Default.SHANG_PIN_DA_YU_SHI;
                        }
                    }
                    else
                    {
                        bool isExist = false;
                        foreach (string matnr in matnrlist)
                        {
                            string zsatnr = box?.Details?.First(i => i.Matnr == matnr).Zsatnr;
                            string zcolsn = box?.Details?.First(i => i.Matnr == matnr).Zcolsn;
                            string zsiztx = box?.Details?.First(i => i.Matnr == matnr).Zsiztx;
                            int count = box.Details.FindAll(i => i.Matnr == matnr).Count;
                            if (zsiztx.Contains("/"))
                            {
                            }
                            else
                            {
                                isExist = true;
                            }
                            content += string.Format("{0}/{1}/{2}/{3}\r\n",
                                zsatnr, zcolsn, zsiztx, count);
                        }

                        if(isExist)
                        {
                            filepath = Application.StartupPath + "\\LabelError_Small.mrt";
                        }
                    }
                }
                else
                {
                    content = "未扫描到商品";
                }

                
                StiReport report = new StiReport();
                report.Load(filepath);
                report.Compile();
                report["HU"] = box.Hu;
                report["CONTENT"] = content;
                PrinterSettings printerSettings = new PrinterSettings();
                report.Print(false, printerSettings);

            }
            catch (Exception ex)
            {
                LogHelper.Error("打印异常箱标出错", ex.Message + "\r\n" + ex.StackTrace);
            }
        }
Esempio n. 25
0
        public override CheckResult CheckData()
        {
            CheckResult result = new CheckResult();

            try
            {
                result = base.CheckData();
                //检查商品已扫描,重投,箱码重复使用
                if (string.IsNullOrEmpty(lblHu.Text.Trim()))
                {
                    result.UpdateMessage(Consts.Default.WEI_SAO_DAO_XIANG_MA);
                    result.InventoryResult = false;

                    string hu = LocalDataService.GetNewErrorHu(SysConfig.DeviceNO);
                    Invoke(new Action(() =>
                    {
                        lblHu.Text = hu;
                    }));
                }

                if (tagDetailList.Count > 0)
                {
                    if (tagDetailList.First().LIFNRS?.Count > 1)
                    {
                        result.UpdateMessage(Consts.Default.JIAO_JIE_HAO_BU_YI_ZHI);
                        result.InventoryResult = false;
                    }
                    else
                    {
                        lifnr = tagDetailList.First().LIFNRS?.FirstOrDefault();
                    }

                    YKBoxInfo box = boxList == null ? null : boxList.Find(i => i.Hu == lblHu.Text);
                    if (box != null && box.Status != null && box.Status == "S" && box.SapStatus == "S")
                    {
                        //上次检测结果为正常,
                        bool isAllSame    = true;
                        bool isAllNotSame = true;
                        List <YKBoxDetailInfo> lastCheckDetail = box.Details;
                        if (lastCheckDetail != null && lastCheckDetail.Count > 0)
                        {
                            if (lastCheckDetail.Count != epcList.Count)
                            {
                                isAllSame = false;
                            }
                            foreach (YKBoxDetailInfo item in lastCheckDetail)
                            {
                                if (!epcList.Contains(item.Epc))
                                {
                                    isAllSame = false;
                                    break;
                                }
                                else
                                {
                                    isAllNotSame = false;
                                }
                            }
                        }
                        else
                        {
                            isAllSame    = false;
                            isAllNotSame = true;
                        }

                        if (isAllSame)
                        {
                            result.IsRecheck = true;
                        }
                        else if (isAllNotSame)
                        {
                            //两批EPC对比,完全不一样,示为箱码重复使用
                            result.UpdateMessage(Consts.Default.XIANG_MA_CHONG_FU_SHI_YONG);
                            result.InventoryResult = false;
                        }

                        if (lastCheckDetail.Count > 0 && !isAllSame && !isAllNotSame)
                        {
                            result.UpdateMessage(Consts.Default.EPC_YI_SAO_MIAO);
                            result.InventoryResult = false;
                        }
                    }
                    else
                    {
                        if (tagDetailList.Select(i => i.MATNR).Distinct().Count() > 10)
                        {
                            if (lblCheckSku.DM_Key == DMSkin.Controls.DMLabelKey.正确)
                            {
                                result.UpdateMessage(Consts.Default.SHANG_PIN_DA_YU_SHI);
                                result.InventoryResult = false;
                            }
                        }
                        if (lblCheckPinSe.DM_Key == DMSkin.Controls.DMLabelKey.正确)
                        {
                            if (!string.IsNullOrEmpty(currentZsatnr) && !string.IsNullOrEmpty(currentZcolsn))
                            {
                                if (tagDetailList?.First().ZSATNR != currentZsatnr || tagDetailList?.First().ZCOLSN != currentZcolsn)
                                {
                                    result.UpdateMessage(Consts.Default.PIN_SE_BU_FU);
                                    result.InventoryResult = false;
                                }
                            }
                        }

                        if (ExistsSameEpc())
                        {
                            result.UpdateMessage(Consts.Default.EPC_YI_SAO_MIAO);
                            result.InventoryResult = false;
                        }

                        if (GetCurrentReceiveMode() == ReceiveMode.品色装箱)
                        {
                            if (!IsOnePinSe())
                            {
                                result.UpdateMessage(Consts.Default.DUO_GE_PIN_SE);
                                result.InventoryResult = false;
                            }
                        }
                        if (GetCurrentReceiveMode() == ReceiveMode.规格装箱)
                        {
                            if (!IsOneSku())
                            {
                                result.UpdateMessage(Consts.Default.DUO_GE_SHANG_PIN);
                                result.InventoryResult = false;
                            }

                            int          pxqty    = 0;
                            MaterialInfo material = materialList.Find(i => i.MATNR == tagDetailList.First().MATNR);

                            if (material.PUT_STRA == "ADM1" || cboTarget.Text == "BDMX")
                            {
                                pxqty   = material.PXQTY;
                                packmat = material.PXMAT;
                            }
                            else
                            {
                                pxqty   = material.PXQTY_FH;
                                packmat = material.PXMAT_FH;
                            }

                            /*
                             * 如果设备信息中配置了带G开头的权限信息
                             * 且对应的AUTH_VALUE的值与当前选择的源存储类型一致
                             * 则取收货箱规
                             */
                            if (GAuthList?.Count > 0 && GAuthList.Exists(i => i.AUTH_VALUE == cboSource.Text))
                            {
                                pxqty = material.PXQTY;
                            }
                            if (lblUseBoxStandard.DM_Key == DMSkin.Controls.DMLabelKey.正确)
                            {
                                if (mainEpcNumber != pxqty)
                                {
                                    isFull = false;
                                    result.UpdateMessage(Consts.Default.BU_FU_HE_XIANG_GUI + string.Format("({0})", pxqty));
                                    result.InventoryResult = false;
                                }
                                else
                                {
                                    isFull = true;
                                }
                            }
                            else
                            {
                                if (mainEpcNumber > pxqty)
                                {
                                    result.UpdateMessage(Consts.Default.SHU_LIANG_DA_YU_XIANG_GUI + string.Format("({0})", pxqty));
                                    result.InventoryResult = false;
                                }
                            }
                        }
                        else
                        {
                            if (shouldCheckNum())
                            {
                                //075接口获取数量对比
                                string sapRe  = "";
                                string sapMsg = "";
                                int    re     = SAPDataService.RFID_075F(lblHu.Text, ref sapRe, ref sapMsg);
                                if (sapRe == "E")
                                {
                                    result.UpdateMessage(string.Format("未获取到装箱数据 {0}", lblHu.Text));
                                    result.InventoryResult = false;
                                }
                                else
                                {
                                    if (mainEpcNumber != re)
                                    {
                                        result.UpdateMessage(string.Format("装箱数量错误 {0}-{1}", re, mainEpcNumber));
                                        result.InventoryResult = false;
                                    }
                                }
                            }
                        }

                        if (lblUseBoxStandard.DM_Key != DMSkin.Controls.DMLabelKey.正确)
                        {
                            packmat = cboPxmat.SelectedValue.CastTo("未选择包材");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Log4netHelper.LogError(ex);
                result.InventoryResult = false;
                result.IsRecheck       = false;
                result.Message         = ex.ToString();
            }

            if (result.InventoryResult || result.IsRecheck)
            {
                result.UpdateMessage(result.IsRecheck ? Consts.Default.CHONG_TOU : Consts.Default.RIGHT);
            }

            lblResult.Text = result.Message;
            return(result);
        }