コード例 #1
0
        public virtual CheckResult CheckData()
        {
            CheckResult result = new CheckResult();

            if (errorEpcNumber > 0)
            {
                result.UpdateMessage(Consts.Default.EPC_WEI_ZHU_CE);
                result.InventoryResult = false;
            }
            if (mainEpcNumber != addEpcNumber && addEpcNumber > 0)
            {
                result.UpdateMessage(Consts.Default.TWO_NUMBER_ERROR);
                result.InventoryResult = false;
            }
            if (addEpcNumber == 0)
            {
                if (tagDetailList.Exists(i => !string.IsNullOrEmpty(i.BARCD_ADD)))
                {
                    result.UpdateMessage(Consts.Default.TWO_NUMBER_ERROR);
                    result.InventoryResult = false;
                }
            }

            /*
             * if (epcList.Count == 0)
             * {
             *  result.UpdateMessage(Consts.Default.WEI_SAO_DAO_EPC);
             *  result.InventoryResult = false;
             * }*/

            return(result);
        }
コード例 #2
0
        void checkPeibi(ref CheckResult cr)
        {
            string sapre  = "";
            string sapmsg = "";
            string peibi  = "";
            string BARCD  = tagDetailList.FirstOrDefault(i => !string.IsNullOrEmpty(i.BARCD)).BARCD;

            if (string.IsNullOrEmpty(BARCD))
            {
                cr.UpdateMessage("无可用条码");
                cr.InventoryResult = false;
                return;
            }

            List <CMatQty> re = SAPDataService.Z_EW_RFID_058B(BARCD, ref sapre, ref sapmsg, ref peibi);

            if (re.Count > 0)
            {
                if (hasDif(duibi(re)))
                {
                    cr.UpdateMessage(string.Format("配比不符"));
                    cr.InventoryResult = false;
                }
            }
            else
            {
                cr.UpdateMessage(string.Format("无配比信息 BARCD:{0}", BARCD));
                cr.InventoryResult = false;
            }

            if (!string.IsNullOrEmpty(peibi))
            {
                mPackmat = peibi;
            }
        }
コード例 #3
0
        public virtual CheckResult CheckData()
        {
            CheckResult result = new CheckResult();

            if (errorEpcNumber > 0)
            {
                result.UpdateMessage(Consts.Default.EPC_WEI_ZHU_CE);
                result.InventoryResult = false;
            }
            if (mainEpcNumber != addEpcNumber && addEpcNumber > 0)
            {
                result.UpdateMessage(Consts.Default.TWO_NUMBER_ERROR);
                result.InventoryResult = false;
            }
            if (boxNoList.Count > 0)
            {
                boxNoList.Clear();
                result.UpdateMessage(Consts.Default.XIANG_MA_BU_YI_ZHI);
                result.InventoryResult = false;
            }
            if (epcList.Count == 0)
            {
                result.UpdateMessage(Consts.Default.WEI_SAO_DAO_EPC);
                result.InventoryResult = false;
            }

            return(result);
        }
コード例 #4
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);
        }
コード例 #5
0
        public override void StopInventory()
        {
            if (isInventory)
            {
                Invoke(new Action(() => {
                    label11_status.Text = "停止扫描";
                }));
                isInventory = false;
                reader.StopInventory();

                CheckResult checkResult = check();

                if (checkResult.InventoryResult)
                {
                    checkResult.UpdateMessage(Consts.Default.RIGHT);
                }

                Invoke(new Action(() => {
                    lblInventoryRe.Text = checkResult.Message;
                }));

                //play sound
                playSound(checkResult.InventoryResult);

                if (checkResult.InventoryResult)
                {
                    SetInventoryResult(1);
                }
                else
                {
                    SetInventoryResult(1);
                }
            }
        }
コード例 #6
0
        public virtual CheckResult CheckData()
        {
            CheckResult result = new CheckResult();

            if (errorEpcNumber > 0)
            {
                result.UpdateMessage(Consts.Default.EPC_WEI_ZHU_CE);
                result.InventoryResult = false;
            }

            /*
             * if (mainEpcNumber != addEpcNumber && tagDetailList.Exists(i => !string.IsNullOrEmpty(i.BARCD_ADD)))
             * {
             *  result.UpdateMessage(Consts.Default.TWO_NUMBER_ERROR);
             *  result.InventoryResult = false;
             * }
             */
            int checkAdd2Re = checkAdd2();

            if (checkAdd2Re == 1)
            {
                result.UpdateMessage("主副条码数量不一致");
                result.InventoryResult = false;
            }
            if (checkAdd2Re == 2)
            {
                result.UpdateMessage("主条码和副2条码数量不一致");
                result.InventoryResult = false;
            }

            if (boxNoList.Count > 0)
            {
                boxNoList.Clear();
                result.UpdateMessage(Consts.Default.XIANG_MA_BU_YI_ZHI);
                result.InventoryResult = false;
            }
            if (epcList.Count == 0)
            {
                result.UpdateMessage(Consts.Default.WEI_SAO_DAO_EPC);
                result.InventoryResult = false;
            }

            return(result);
        }
コード例 #7
0
        public virtual CheckResult CheckData()
        {
            CheckResult result = new CheckResult();

            if (mErrorEpcNumber > 0)
            {
                result.UpdateMessage(Consts.Default.EPC_WEI_ZHU_CE);
                result.InventoryResult = false;
            }
            if (mMainEpcNumber != mAddEpcNumber && mAddEpcNumber > 0)
            {
                result.UpdateMessage(Consts.Default.TWO_NUMBER_ERROR);
                result.InventoryResult = false;
            }

            if (mAddEpcNumber == 0)
            {
                if (mTagDetailList.Exists(i => !string.IsNullOrEmpty(i.BARCD_ADD)))
                {
                    result.UpdateMessage(Consts.Default.TWO_NUMBER_ERROR);
                    result.InventoryResult = false;
                }
            }

            if (mBoxNoList.Count > 0)
            {
                mBoxNoList.Clear();
                result.UpdateMessage(Consts.Default.XIANG_MA_BU_YI_ZHI);
                result.InventoryResult = false;
            }
            if (mEpcList.Count == 0)
            {
                result.UpdateMessage(Consts.Default.WEI_SAO_DAO_EPC);
                result.InventoryResult = false;
            }

            return(result);
        }
コード例 #8
0
        public CheckResult baseCheck()
        {
            CheckResult result = new CheckResult();

            if (errorEpcNumber > 0)
            {
                result.UpdateMessage(Consts.Default.EPC_WEI_ZHU_CE);
                result.InventoryResult = false;
            }
            if (boxNoList.Count > 0)
            {
                boxNoList.Clear();
                result.UpdateMessage(Consts.Default.XIANG_MA_BU_YI_ZHI);
                result.InventoryResult = false;
            }
            if (epcList.Count == 0)
            {
                result.UpdateMessage(Consts.Default.WEI_SAO_DAO_EPC);
                result.InventoryResult = false;
            }

            return(result);
        }
コード例 #9
0
        public override void StopInventory()
        {
            if (isInventory)
            {
                Invoke(new Action(() => {
                    label11_status.Text = "停止扫描";
                }));
                isInventory = false;
                reader.StopInventory();

                CheckResult checkResult = check(label17_currentHu.Text);

                if (checkResult.InventoryResult)
                {
                    checkResult.UpdateMessage(Consts.Default.RIGHT);
                }

                Invoke(new Action(() => {
                    lblInventoryRe.Text = checkResult.InventoryResult ? "正常" : "异常";
                }));

                CJJBox curBox = getCurBox(checkResult);

                if (checkResult.Message.Contains(HAS_SAOMIAO_CHONGTOU) ||
                    checkResult.Message.Contains(WEI_SAO_DAO_XIANGHU) ||
                    checkResult.Message.Contains(Consts.Default.XIANG_MA_BU_YI_ZHI) ||
                    checkResult.Message.Contains(HAS_SAOMIAO_YICHANG))
                {
                }
                else
                {
                    //上传
                    saveAndUpdate(curBox);
                }

                //add grid
                addgrid(curBox);

                playSound(checkResult.InventoryResult);

                if (checkResult.InventoryResult)
                {
                    SetInventoryResult(1);
                }
                else
                {
                    SetInventoryResult(1);
                }
            }
        }
コード例 #10
0
        public override void StopInventory()
        {
            if (isInventory)
            {
                Invoke(new Action(() => {
                    label11_status.Text = "停止扫描";
                }));
                isInventory = false;
                reader.StopInventory();

                List <CDianShangQty> qty         = new List <CDianShangQty>();
                CheckResult          checkResult = check(label17_currentHu.Text, out qty);

                if (checkResult.InventoryResult)
                {
                    checkResult.UpdateMessage(Consts.Default.RIGHT);
                }

                Invoke(new Action(() => {
                    lblInventoryRe.Text = checkResult.InventoryResult ? "正常" : "异常";
                }));

                CDianShangBox curBox = getCurBox(checkResult, qty);

                saveRecord(curBox);

                if (checkResult.InventoryResult)
                {
                    PrintRightTag(getTags(), label17_currentHu.Text);
                    //上传
                    saveAndUpdate(curBox);
                }

                //add grid
                addgrid(curBox);

                playSound(curBox.inventoryRe == "S" && curBox.sapRe == SUCCESS);

                if (checkResult.InventoryResult)
                {
                    SetInventoryResult(1);
                }
                else
                {
                    SetInventoryResult(1);
                }
            }
        }
コード例 #11
0
        CheckResult check(string hu)
        {
            CheckResult re = CheckData();

            if (button3_start.Enabled)
            {
                re.UpdateMessage("请点击开始按钮");
                re.InventoryResult = false;
            }

            if (string.IsNullOrEmpty(hu))
            {
                re.UpdateMessage(WEI_SAO_DAO_XIANGHU);
                re.InventoryResult = false;
            }

            //是否已经扫描过了
            if (mCurDanBoxList.Exists(i => i.hu == hu && i.inventoryRe == "S" && i.sapRe == "S"))
            {
                if (boxSame(hu))
                {
                    re.UpdateMessage(HAS_SAOMIAO_CHONGTOU);
                    re.InventoryResult = false;
                }
                else
                {
                    re.UpdateMessage(HAS_SAOMIAO_YICHANG);
                    re.InventoryResult = false;
                }
            }

            //不在本单,直接返回
            if (!mJiaoJieDan.huData.ContainsKey(hu))
            {
                re.UpdateMessage(XIANGHAO_BUZAI_BENDAN);
                re.InventoryResult = false;
            }

            if (!duibi(hu))
            {
                re.UpdateMessage(XIANGHAO_DATA_BUFU);
                re.InventoryResult = false;
            }

            return(re);
        }
コード例 #12
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 (checkSame())
                    {
                        result.UpdateMessage("重投");
                        result.InventoryResult = false;

                        return(result);
                    }

                    if (dmLabel1_peibi.DM_Key == DMSkin.Controls.DMLabelKey.正确)
                    {
                        checkPeibi(ref result);
                        return(result);
                    }

                    if (tagDetailList.First().LIFNRS != null && tagDetailList.First().LIFNRS.Count > 1)
                    {
                        result.UpdateMessage(Consts.Default.JIAO_JIE_HAO_BU_YI_ZHI);
                        result.InventoryResult = false;
                    }

                    if (lblCheckSku.DM_Key == DMSkin.Controls.DMLabelKey.正确)
                    {
                        if (tagDetailList.Select(i => i.MATNR).Distinct().Count() > 10)
                        {
                            result.UpdateMessage(Consts.Default.SHANG_PIN_DA_YU_SHI);
                            result.InventoryResult = false;
                        }
                    }
                    if (lblCheckPinSe.DM_Key == DMSkin.Controls.DMLabelKey.正确)
                    {
                        if (tagDetailList != null && tagDetailList.Count > 0)
                        {
                            TagDetailInfo t = tagDetailList[0];
                            foreach (var v in tagDetailList)
                            {
                                if (v.ZSATNR == t.ZSATNR && v.ZCOLSN == t.ZCOLSN)
                                {
                                }
                                else
                                {
                                    result.UpdateMessage(Consts.Default.PIN_SE_BU_FU);
                                    result.InventoryResult = false;

                                    break;
                                }
                            }
                        }
                    }

                    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;
                            mPackmat = material.PXMAT;
                        }
                        else
                        {
                            pxqty    = material.PXQTY_FH;
                            mPackmat = material.PXMAT_FH;
                        }

                        /*
                         * 如果设备信息中配置了带G开头的权限信息
                         * 且对应的AUTH_VALUE的值与当前选择的源存储类型一致
                         * 则取收货箱规
                         */
                        if (mGAuthList?.Count > 0 && mGAuthList.Exists(i => i.AUTH_VALUE == cboSource.Text))
                        {
                            pxqty = material.PXQTY;
                        }
                        if (lblUseBoxStandard.DM_Key == DMSkin.Controls.DMLabelKey.正确)
                        {
                            if (mainEpcNumber != pxqty)
                            {
                                mIsFull = false;
                                result.UpdateMessage(Consts.Default.BU_FU_HE_XIANG_GUI + string.Format("({0})", pxqty));
                                result.InventoryResult = false;
                            }
                            else
                            {
                                mIsFull = 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.正确)
                    {
                        mPackmat = cboPxmat.SelectedValue.CastTo("未选择包材");
                    }
                }
            }
            catch (Exception ex)
            {
                Log4netHelper.LogError(ex);
            }

            if (result.InventoryResult)
            {
                result.UpdateMessage(Consts.Default.RIGHT);
            }

            return(result);
        }
コード例 #13
0
ファイル: Form1.cs プロジェクト: windygu/HaiLan
        CheckResult check(string hu)
        {
            CheckResult re = CheckData();

            if (button3_start.Enabled)
            {
                re.UpdateMessage("请点击开始按钮");
                re.InventoryResult = false;
            }

            if (string.IsNullOrEmpty(hu))
            {
                re.UpdateMessage(WEI_SAO_DAO_XIANGHU);
                re.InventoryResult = false;
                return(re);
            }

            //是否已经扫描过了
            if (mCurDanBoxList.Exists(i => i.hu == hu && i.inventoryRe == "S" && i.sapRe == SUCCESS))
            {
                if (boxSame(hu))
                {
                    re.UpdateMessage(HAS_SAOMIAO_CHONGTOU);
                    re.InventoryResult = false;
                }
                else
                {
                    re.UpdateMessage(HAS_SAOMIAO_YICHANG);
                    re.InventoryResult = false;
                }
            }
            //epc 是否扫描过了
            string sameEpcHu = "";

            if (sameEpc(out sameEpcHu))
            {
                re.UpdateMessage(string.Format("商品已扫描 {0}", sameEpcHu));
                re.InventoryResult = false;
            }

            List <string> notInDoc = checkInDoc();

            if (notInDoc.Count > 0)
            {
                string msg = "";
                foreach (var v in notInDoc)
                {
                    msg += v;
                    msg += " ";
                }
                re.UpdateMessage(msg + " 不在本单");
                re.InventoryResult = false;
            }

            Dictionary <string, int> moreBar = checkTagQty();

            if (moreBar.Count > 0)
            {
                string msg = "";
                foreach (var v in moreBar)
                {
                    msg += string.Format(v.Key + "超量" + v.Value);
                    msg += " ";
                }
                re.UpdateMessage(msg);
                re.InventoryResult = false;
            }

            return(re);
        }
コード例 #14
0
        CheckResult check()
        {
            CheckResult re = baseCheck();

            try
            {
                string hu = getBoxNo();

                if (string.IsNullOrEmpty(hu))
                {
                    re.InventoryResult = false;
                    re.UpdateMessage("未扫到箱号");
                }

                CDianShangOutDocInfo doc = getDoc(hu);
                if (string.IsNullOrEmpty(doc.mDoc))
                {
                    re.InventoryResult = false;
                    re.UpdateMessage("箱号无绑定信息");
                }

                if (re.InventoryResult == false)
                {
                    grid.Rows.Insert(0, hu, doc.mDoc, "", "", "", "", "", "", "", re.Message);
                    grid.Rows[0].DefaultCellStyle.BackColor = Color.OrangeRed;
                    return(re);
                }

                //重投 商品已扫描
                if (doc.mHuDetail.ContainsKey(hu))
                {
                    re.InventoryResult = false;
                    re.UpdateMessage("重投");
                }
                foreach (var v in doc.mHuDetail.Values)
                {
                    if (v.Select(i => i.EPC).ToList().Intersect(epcList).Count() > 0)
                    {
                        re.InventoryResult = false;
                        re.UpdateMessage("商品已扫描");
                    }
                }
                if (re.InventoryResult == false)
                {
                    grid.Rows.Insert(0, hu, doc.mDoc, "", "", "", "", "", "", "", re.Message);
                    grid.Rows[0].DefaultCellStyle.BackColor = Color.OrangeRed;
                    return(re);
                }

                List <CTagSumDif> tagDif = getChaYi(doc, hu);

                foreach (var v in tagDif)
                {
                    if (v.qty_diff != 0 || v.qty_add_diff != 0)
                    {
                        re.InventoryResult = false;
                        re.UpdateMessage("明细不一致");
                        break;
                    }
                }
                if (re.InventoryResult)
                {
                    re.UpdateMessage("正常");
                }

                //add grid
                foreach (var v in tagDif)
                {
                    grid.Rows.Insert(0, hu, doc.mDoc, v.zsatnr, v.zcolsn, v.zsiztx, v.qty, v.qty_diff, v.qty_add, v.qty_add_diff, re.Message);
                    if (v.qty_diff != 0 || v.qty_add_diff != 0)
                    {
                        grid.Rows[0].DefaultCellStyle.BackColor = Color.OrangeRed;
                    }
                }
                //if ok,save sql
                if (re.InventoryResult)
                {
                    doc.mHuDetail[hu] = tagDetailList.ToList();
                    saveDoc(doc);
                }
                //print
                if (re.InventoryResult)
                {
                    string huCount = string.Format("{0}-{1}", doc.mHu.Count, doc.mHuDetail.Count);
                    printOKLabel(hu, huCount, doc.WHAreaId, doc.mDocTime, doc.OrigBillId, doc.mDoc, mainEpcNumber.ToString());
                }
                else
                {
                    printErrorLabelMulti(hu, doc.mDoc, tagDif);
                }
            }
            catch (Exception ex)
            {
                Log4netHelper.LogError(ex);
            }

            return(re);
        }
コード例 #15
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);
        }
コード例 #16
0
ファイル: InventoryFormNew.cs プロジェクト: windygu/HaiLan
        /// <summary>
        /// 检查数据
        /// </summary>
        /// <returns></returns>
        public override CheckResult CheckData()
        {
            CheckResult cr = new CheckResult();

            if (string.IsNullOrEmpty(this.lblHU.Text.Trim()))
            {
                cr.UpdateMessage(WEI_SAO_DAO_XIANG_MA);
                cr.InventoryResult = false;
            }
            else
            {
                if (this.currentBox != null && this.currentBox.Count > 0)
                {
                    //检查当前箱子是否是当前选择的发运日期
                    if (this.currentBox[0].SHIPDATE != shipDate)
                    {
                        cr.UpdateMessage(BU_SHU_YU_DA_QIAN_FA_YUN_RI_QI);
                        cr.InventoryResult = false;
                    }
                }
            }

            if (this.lblErrorNum.Text.Trim() != "0")
            {
                cr.UpdateMessage(EPC_WEI_ZHU_CE);
                cr.InventoryResult = false;
            }

            if (this.epcList.Count == 0)
            {
                cr.UpdateMessage(WEI_SAO_DAO_EPC);
                cr.InventoryResult = false;
            }

            if (this.boxNoList.Count > 0)
            {
                boxNoList.Clear();
                cr.UpdateMessage(XIANG_MA_BU_YI_ZHI);
                cr.InventoryResult = false;
            }
            List <string> matnrList = new List <string>();

            if (tagDetailList != null)
            {
                tagDetailList.ForEach(new Action <TagDetailInfo>((tag) => {
                    if (!matnrList.Contains(tag.MATNR))
                    {
                        matnrList.Add(tag.MATNR);
                    }
                    if (!lvtagList.Exists(i => i.MATNR == tag.MATNR))
                    {
                        lvtagList.Add(new ListViewTagInfo(
                                          tag.MATNR, tag.ZSATNR, tag.ZCOLSN, tag.ZSIZTX, tag.CHARG,
                                          tagDetailList.FindAll(x => x.MATNR == tag.MATNR && !x.IsAddEpc).Count));
                    }
                }));
            }

            //判断当前读取的标签信息中,是否是多SKU
            if (matnrList.Count > 1)
            {
                isMultiSku = true;
            }
            else
            {
                isMultiSku = false;
            }

            if (this.currentBox != null)
            {
                currentBox.ForEach(new Action <EbBoxInfo>((box) => {
                    if (!matnrList.Contains(box.PRODUCTNO))
                    {
                        matnrList.Add(box.PRODUCTNO);
                    }
                }));
            }

            foreach (string matnr in matnrList)
            {
                List <TagDetailInfo> scanList = tagDetailList == null ? null : tagDetailList.FindAll(i => i.MATNR == matnr);
                int scanCount = scanList == null ? 0 : scanList.Count;
                List <EbBoxInfo> currentBoxList = currentBox == null ? null : currentBox.FindAll(i => i.PRODUCTNO == matnr);
                int boxCount = currentBoxList == null ? 0 : currentBoxList.Sum(i => i.QTY);
                int diff     = scanCount - boxCount;

                if (diff != 0)
                {
                    if (currentBoxList != null && currentBoxList.Count > 0)
                    {
                        //存在差异,记录错误信息
                        cr.InventoryResult = false;
                        EbBoxErrorRecordInfo error = new EbBoxErrorRecordInfo();
                        error.DIFF      = diff;
                        error.HU        = currentBoxList[0].HU;
                        error.PRODUCTNO = currentBoxList[0].PRODUCTNO;
                        error.REMARK    = cr.Message;
                        if (scanList != null && scanList.Count > 0)
                        {
                            error.ZCOLSN = scanList[0].ZCOLSN;
                            error.ZSATNR = scanList[0].ZSATNR;
                            error.ZSIZTX = scanList[0].ZSIZTX;
                        }
                        else if (currentBoxList != null && currentBoxList.Count > 0)
                        {
                            MaterialInfo material = materialList.Find(i => i.MATNR == currentBoxList[0].PRODUCTNO);
                            if (material != null)
                            {
                                error.ZCOLSN = material.ZCOLSN;
                                error.ZSATNR = material.ZSATNR;
                                error.ZSIZTX = material.ZSIZTX;
                            }
                            else
                            {
                                error.ZCOLSN = "";
                                error.ZSATNR = "";
                                error.ZSIZTX = "";
                            }
                        }
                        else
                        {
                            error.ZCOLSN = "";
                            error.ZSATNR = "";
                            error.ZSIZTX = "";
                        }
                        EnqueueUploadData(error);
                    }
                    else
                    {
                        cr.InventoryResult = false;
                        EbBoxErrorRecordInfo error = new EbBoxErrorRecordInfo();
                        error.DIFF   = diff;
                        error.HU     = this.lblHU.Text;
                        error.REMARK = cr.Message;
                        if (scanList != null && scanList.Count > 0)
                        {
                            error.PRODUCTNO = scanList[0].MATNR;
                            error.ZCOLSN    = scanList[0].ZCOLSN;
                            error.ZSATNR    = scanList[0].ZSATNR;
                            error.ZSIZTX    = scanList[0].ZSIZTX;
                        }
                        else
                        {
                            error.PRODUCTNO = "";
                            error.ZCOLSN    = "";
                            error.ZSATNR    = "";
                            error.ZSIZTX    = "";
                        }
                        EnqueueUploadData(error);
                    }
                }

                if (this.currentBox == null || this.currentBox.Count <= 0)
                {
                    cr.UpdateMessage(WEI_ZHAO_DAO_DANG_QIAN_XIANG_SHU_JU);
                    cr.InventoryResult = false;
                }
            }
            if (matnrList.Count == 0)
            {
                EbBoxErrorRecordInfo error = new EbBoxErrorRecordInfo();
                error.DIFF      = 0;
                error.HU        = this.lblHU.Text;
                error.REMARK    = cr.Message;
                error.PRODUCTNO = "";
                error.ZCOLSN    = "";
                error.ZSATNR    = "";
                error.ZSIZTX    = "";
                EnqueueUploadData(error);
            }

            if (cr.InventoryResult)
            {
                if (isMultiSku)
                {
                    //多SKU,走异常口,显示正常
                    cr.UpdateMessage("正常");
                    SetInventoryResult(3);
                }
                else
                {
                    //单SKU
                    SetInventoryResult(1);
                }
            }
            else
            {
                SetInventoryResult(3);
            }
            return(cr);
        }
コード例 #17
0
        CheckResult check(string hu, out List <CDianShangQty> qtys)
        {
            CheckResult re = CheckData();

            qtys = new List <CDianShangQty>();

            if (button3_start.Enabled)
            {
                re.UpdateMessage("请点击开始按钮");
                re.InventoryResult = false;
            }

            if (string.IsNullOrEmpty(hu))
            {
                re.UpdateMessage(WEI_SAO_DAO_XIANGHU);
                re.InventoryResult = false;
                return(re);
            }

            //是否已经扫描过了
            if (mCurDanBoxList.Exists(i => i.hu == hu && i.inventoryRe == "S" && i.sapRe == SUCCESS))
            {
                if (boxSame(hu))
                {
                    re.UpdateMessage(HAS_SAOMIAO_CHONGTOU);
                    re.InventoryResult = false;
                }
                else
                {
                    re.UpdateMessage(HAS_SAOMIAO_YICHANG);
                    re.InventoryResult = false;
                }
            }
            //epc 是否扫描过了
            string sameEpcHu = "";

            if (sameEpc(out sameEpcHu))
            {
                re.UpdateMessage(string.Format("商品已扫描 {0}", sameEpcHu));
                re.InventoryResult = false;
            }

            List <string> notInDoc = checkInDoc();

            if (notInDoc.Count > 0)
            {
                string msg = "";
                foreach (var v in notInDoc)
                {
                    msg += v;
                    msg += " ";
                }
                re.UpdateMessage(msg + " 不在本单");
                re.InventoryResult = false;
            }

            /*
             * Dictionary<string, int> moreBar = checkTagQty();
             * if(moreBar.Count>0)
             * {
             *  string msg = "";
             *  foreach(var v in moreBar)
             *  {
             *      msg += string.Format(v.Key + "超量" + v.Value);
             *      msg += " ";
             *  }
             *  re.UpdateMessage(msg);
             *  re.InventoryResult = false;
             * }*/
            List <string> matList = tagDetailList.Select(i => i.MATNR).Distinct().ToList();

            foreach (var v in matList)
            {
                int curQty = 0;
                foreach (var box in mCurDanBoxList)
                {
                    if (box.inventoryRe == "S" && box.sapRe == SUCCESS)
                    {
                        curQty += box.tags.Count(j => j.MATNR == v && !j.IsAddEpc);
                    }
                }

                CDianShangQty dsq = new CDianShangQty();
                dsq.mat    = v;
                dsq.curQty = tagDetailList.Count(i => i.MATNR == v && !i.IsAddEpc);
                dsq.hasQty = curQty;
                if (mJiaoJieDan.dsData.Exists(i => i.barcd == v))
                {
                    dsq.allQty = mJiaoJieDan.dsData.FirstOrDefault(i => i.barcd == v).qty;
                }
                qtys.Add(dsq);
            }

            foreach (var v in qtys)
            {
                if (v.allQty > 0 && v.curQty + v.hasQty > v.allQty)
                {
                    re.UpdateMessage("超量");
                    re.InventoryResult = false;

                    break;
                }
            }

            return(re);
        }
コード例 #18
0
        public override CheckResult CheckData()
        {
            CheckResult result = base.CheckData();

            if (getBoxNo() == "")
            {
                result.UpdateMessage(HU_IS_NULL);
                result.InventoryResult = false;
            }

            if (!mDocData.docData.Exists(i => i.hu == getBoxNo()))
            {
                result.UpdateMessage(BU_ZAI_BEN_XIANG);
                result.InventoryResult = false;
            }

            if (result.Message.Contains(HU_IS_NULL) || result.Message.Contains(Consts.Default.XIANG_MA_BU_YI_ZHI))
            {
                //直接返回
                addGrid(result);
                return(result);
            }

            List <CChaYi> chayi = piPei3(getBoxNo());

            foreach (var v in chayi)
            {
                if (v.barChaYiQty != 0 || v.barAddChaYiQty != 0)
                {
                    result.UpdateMessage(BU_PIPEI);
                    result.InventoryResult = false;
                    break;
                }
            }

            if (result.InventoryResult)
            {
                result.UpdateMessage(Consts.Default.RIGHT);
            }

            foreach (var v in chayi)
            {
                v.inventoryRe = result.InventoryResult;
                v.msg         = result.Message;
            }

            ShowLoading("正在打印...");
            //print
            bool isHZ = false;

            Utils.CPrintData printData = getPrintData(chayi, result, ref isHZ);
            if (result.InventoryResult && printData.beizhu == "")
            {
            }
            else
            {
                Utils.PrintHelper.PrintTag(printData);
            }

            CCancelUpload uploadData = new CCancelUpload();

            uploadData.lgnum       = SysConfig.LGNUM;
            uploadData.boxno       = getBoxNo();
            uploadData.subuser     = SysConfig.CurrentLoginUser.UserId;
            uploadData.inventoryRe = result.InventoryResult;
            uploadData.equipID     = SysConfig.DeviceInfo.EQUIP_HLA;
            uploadData.loucheng    = SysConfig.DeviceInfo.LOUCENG;
            uploadData.docno       = mDocNo;
            uploadData.dianshuBoCi = mDianShuBoCi.ToString();
            uploadData.epcList.AddRange(epcList);
            uploadData.tagDetailList = tagDetailList.ToList();
            uploadData.isHZ          = isHZ;

            ShowLoading("正在上传SAP...");
            string sapRe  = "";
            string sapMsg = "";

            uploadSAP(uploadData, out sapRe, out sapMsg);

            playSound(result.InventoryResult && sapRe == "S");

            foreach (var v in chayi)
            {
                v.sapMsg = sapMsg;
                v.sapRe  = sapRe;
            }

            ShowLoading("正在保存到本地...");
            //save to local
            saveToLocal(mDocNo, getBoxNo(), result.InventoryResult ? "S" : "E", result.Message, chayi);

            addGrid(chayi);

            return(result);
        }