示例#1
0
        public string ajqxUpQM_Batch_Error(QM_Batch_Error_Param def)
        {
            try
            {
                QM_Batch_Error      defList           = new QM_Batch_Error();
                LES_REQUEST_RECEIVE updateReceiveTime = new LES_REQUEST_RECEIVE();
                string orderID    = "";
                string materialID = "";
                string lotID      = "";
                if (def.IsMoisture == "1" || def.IsMoisture == "是")
                {
                    defList.RowDelete = true;
                    defList.PK        = def.PK;
                    IQM_Batch_ErrorBOibo.UpdateSome(defList);
                    materialID = defList.MaterialID;
                    orderID    = defList.OrderID;
                    lotID      = defList.lotID;
                    string sqlGetReceivePK = @"SELECT ReceivePK FROM dbo.LES_REQUEST_RECEIVE WHERE OrderID='{0}' AND MaterialID='{1}' AND LotID='{2}' and Status=3";
                    sqlGetReceivePK = string.Format(sqlGetReceivePK, orderID, materialID, lotID);
                    DataTable dtReceivePk = co_BSC_BO.GetDataTableBySql(sqlGetReceivePK);
                    if (dtReceivePk == null || dtReceivePk.Rows.Count == 0)
                    {
                    }
                    else
                    {
                        for (int i = 0; i < dtReceivePk.Rows.Count; i++)
                        {
                            updateReceiveTime.ReceivePK   = Convert.ToInt32(dtReceivePk.Rows[i][0]);
                            updateReceiveTime.ReceiveTime = DateTime.Now;
                            ILES_Request_ReceiveBO.UpdateSome(updateReceiveTime);
                            //string updateLesReceiveTime = @"UPDATE dbo.LES_REQUEST_RECEIVE SET ReceiveTime=GETDATE() WHERE ReceivePK='" + dtReceivePk.Rows[i][0] + "'";
                            //updateLesReceiveTime = string.Format(updateLesReceiveTime);
                            //co_BSC_BO.ExecuteNonQueryBySql(updateLesReceiveTime);
                        }
                    }
                }
                else
                {
                    return("当前产品不需要释放。");
                }


                return("OK");
            }
            catch (Exception ex) {
                return("系统内部出现异常:" + ex.Message);
            }
        }
        [Route("SplitLots")]  //原批次              拆分批次号             拆分批次数
        public string SplitLots(IList <SMT_MMLotsSplit> SMT_SplitLots)
        {
            try
            {
                foreach (var item in SMT_SplitLots)
                {
                    if (item.IsSplit == "0")
                    {
                        s = Convert.ToInt32(item.Quantity);
                        break;
                    }
                }

                foreach (var item in SMT_SplitLots)
                {
                    //更新送料表拆分的状态
                    LES_REQUEST_RECEIVE receive = new LES_REQUEST_RECEIVE();
                    receive.ReceivePK = item.ReceivePK;
                    receive.IsSplit   = true;
                    receiveBO.UpdateSome(receive);

                    if (item.IsSplit == "0")
                    {
                        continue;
                    }
                    //添加PM_SMT_RECEIPE_SETUP_DETAIL_REPLACE拆分数据
                    string sqlRequestReceive = @"SELECT * FROM dbo.LES_REQUEST_RECEIVE WHERE ReceivePK='{0}'";
                    sqlRequestReceive = string.Format(sqlRequestReceive, item.ReceivePK);
                    DataTable dtrequest = co_BSC_BO.GetDataTableBySql(sqlRequestReceive);
                    PM_SMT_RECEIPE_SETUP_DETAIL_REPLACE replace = new PM_SMT_RECEIPE_SETUP_DETAIL_REPLACE();
                    replace.OldLotID      = dtrequest.Rows[0]["HutID"].ToString();
                    replace.OldLotQty     = s;
                    replace.NewLotID      = item.HutID;
                    replace.NewLotQty     = Convert.ToInt32(item.Quantity);
                    replace.Operator      = "zwg";
                    replace.OperationTime = SSGlobalConfig.Now;
                    replace.ReceivePK     = item.ReceivePK;
                    string sqlreplace = @"INSERT INTO dbo.PM_SMT_RECEIPE_SETUP_DETAIL_REPLACE(OldLotID,OldLotQty,NewLotID,NewLotQty,
                    Operator,OperationTime,ReceivePK,OldOrderID)
                    VALUES('{0}','{1}','{2}','{3}','{4}',GETDATE(),'{5}','{6}');select @@identity";
                    sqlreplace = string.Format(sqlreplace, replace.OldLotID, replace.OldLotQty, replace.NewLotID, replace.NewLotQty, replace.Operator, replace.ReceivePK, dtrequest.Rows[0]["OrderID"].ToString());
                    DataTable       dtreplace = co_BSC_BO.GetDataTableBySql(sqlreplace);
                    LESSplit_ReelID reelid    = new LESSplit_ReelID();
                    reelid.RequestPK     = Convert.ToInt32(dtreplace.Rows[0][0]);
                    reelid.NewReelID     = replace.NewLotID.ToString();
                    reelid.NewQuantity   = Convert.ToDouble(replace.NewLotQty);
                    reelid.OldReelID     = replace.OldLotID;
                    reelid.OperationTime = Convert.ToDateTime(replace.OperationTime);
                    reelid.Operator      = replace.Operator;
                    ReturnValue rv = WMSBO.SplitReelID(reelid);
                    if (rv.Success)
                    {
                        replace.Attribute01 = "1";
                        setupdetailBO.UpdateSome(replace);
                    }
                    else
                    {
                        replace.Attribute01 = "0";
                        setupdetailBO.UpdateSome(replace);
                        return("拆分失败:" + rv.Message);
                    }
                }
                return("拆分成功");
            }
            catch (Exception ex)
            {
                return("拆分异常:" + ex.Message);
            }
        }
示例#3
0
        public IList <CV_PM_SMT_RECEIPE_DETAIL> checkAgain(CV_PM_SMT_RECEIPE_DETAIL_QueryParam Entitie)
        {
            bool isFinishedAll = true;
            IList <CV_PM_SMT_ReceipeDetailSetup> detaillist    = new List <CV_PM_SMT_ReceipeDetailSetup>();
            CV_MM_LOTS_EXT_QueryParam            lotqp         = new CV_MM_LOTS_EXT_QueryParam();
            IList <CV_MM_LOTS_EXT>                  lotList    = new List <CV_MM_LOTS_EXT>();
            IList <CV_PM_SMT_RECEIPE_DETAIL>        cvfourList = new List <CV_PM_SMT_RECEIPE_DETAIL>();
            CV_PM_SMT_ReceipeDetailSetup_QueryParam sanQP      = new CV_PM_SMT_ReceipeDetailSetup_QueryParam();

            sanQP.Slot      = Entitie.Slot;
            sanQP.OrderID   = Entitie.OrderID;
            sanQP.MachineID = Entitie.MachineID;
            sanQP.PcbSide   = Entitie.PcbSide;
            detaillist      = CV_PM_SMT_ReceipeDetailSetupBO.GetEntities(sanQP);

            ////在视图中查
            //lotqp.LotID = Entitie.LotID;
            //lotqp.OrderID = Entitie.OrderID;
            //lotList = CV_MM_LOTS_EXTBO.GetEntities(lotqp);
            //if (lotList.Count == 0)
            //{
            //    cvfourList.Clear();
            //    return cvfourList;
            //}

            //if (lotList[0].DefID != detaillist[0].MaterialID) //条码是否存在,必须由WMS导入MES
            //{
            //    cvfourList.Clear();
            //    return cvfourList;
            //}
            LES_REQUEST_RECEIVE receive = new LES_REQUEST_RECEIVE();

            receive.HutID = Entitie.LotID;
            IList <LES_REQUEST_RECEIVE> detailPKList = receiveBO.GetEntities(receive);

            if (detailPKList == null || detailPKList.Count == 0 || detailPKList[0].OrderID != Entitie.OrderID || detailPKList[0].MaterialID != detaillist[0].MaterialID)//核对工单、物料
            {
                cvfourList.Clear();
                return(cvfourList);
            }
            receive.ReceivePK = detailPKList[0].ReceivePK;
            //hutID对应的接料信息,调wms接口用
            LESReceive lesReceive = new LESReceive();

            lesReceive.HutID         = receive.HutID;
            lesReceive.DetailPK      = Convert.ToInt32(detailPKList[0].DetailPK);
            lesReceive.OperationTime = SSGlobalConfig.Now;
            lesReceive.Operator      = Entitie.UpdatedBy;
            lesReceive.ReceivePK     = (int)detailPKList[0].ReceivePK;
            lesReceive.IsLastHut     = Convert.ToBoolean(detailPKList[0].IsLastHut);

            LES_REQUEST_DETAIL lesDetail = lesDetailBO.GetEntity(Convert.ToInt32(detailPKList[0].DetailPK));

            if (lesDetail == null)
            {
                cvfourList.Clear();
                return(cvfourList);
            }
            lesReceive.RequestPK = (int)lesDetail.RequestPK;

            PM_SMT_RECEIPE_SETUP_DETAIL         detail    = new PM_SMT_RECEIPE_SETUP_DETAIL();
            PM_SMT_RECEIPE_SETUP_DETAIL         detailQP  = new PM_SMT_RECEIPE_SETUP_DETAIL();
            CV_PM_SMT_RECEIPE_DETAIL_QueryParam cvFourQP  = new CV_PM_SMT_RECEIPE_DETAIL_QueryParam();
            PM_SMT_RECEIPE_SETUP_DETAIL         setDetail = new PM_SMT_RECEIPE_SETUP_DETAIL();

            setDetail.DetailPK = detaillist[0].DetailPK;
            //查询SetupDetailPK
            IList <PM_SMT_RECEIPE_SETUP_DETAIL> listSet = setupDetailBO.GetEntities(setDetail);

            if (listSet != null && listSet.Count != 0)
            {
                detail.SetupDetailPK = listSet[0].SetupDetailPK;
            }
            detail.DetailPK      = detaillist[0].DetailPK;
            detail.CfmedLotID    = Entitie.CfmedLotID;
            detail.SetupPK       = detaillist[0].SetupPK;
            detail.CfmedOperator = Entitie.UpdatedBy;
            detailQP.SetupPK     = detaillist[0].SetupPK;
            detailQP.DetailPK    = detaillist[0].DetailPK;
            detailQP.CfmedLotID  = Entitie.CfmedLotID;

            //防止二次添加。
            IList <PM_SMT_RECEIPE_SETUP_DETAIL> listCV = setupDetailBO.GetEntities(detailQP);

            if (listCV != null && listCV.Count != 0 && detail.SetupDetailPK != null)
            {
                if (listCV[0].CfmedLotID == null)
                {
//                    //调用存储过程
//                    string Sql = string.Format( //如果已存在会返回LocPK
//                            @"DECLARE	@return_value int,
//		                      @ReturnMessage nvarchar(1000)
//
//                             EXEC	@return_value = [dbo].[CP_LES_CheckReceiveMaterial_1.18]
//		                     @HutID = N'{0}',
//		                     @LotID = N'{0}',
//		                     @ReturnMessage = @ReturnMessage OUTPUT
//
//                             SELECT	@ReturnMessage as N'@ReturnMessage'", Entitie.LotID);
//                    DataTable exelist = null;
//                    exelist = co_BSC_BO.GetDataTableBySql(Sql);
//                    string result = exelist.Rows[0][0].ToString();
//                    if (result!="OK")   //realID校验不通过
//                    {
//                        return cvfourList;
//                    }
                    //调wms接口,二次核对同时接料
                    ReturnValue rv = new ReturnValue();
                    rv = API_WMS_BO.ReceiveMaterial(lesReceive);
                    if (rv.Success == false)
                    {
                        return(cvfourList);
                    }
                    //修改接料状态
                    string s = receiveBO.ModifyMaterialStatus(Entitie.UpdatedBy, Convert.ToInt32(receive.ReceivePK));
                    if (s.Contains("OK"))
                    {
                        detail.CfmedOperationTime = SSGlobalConfig.Now;
                        setupDetailBO.UpdateSome(detail);
                    }
                }
            }
            cvFourQP.RcpPK = detaillist[0].RcpPK;
            cvfourList     = cvReceipeDetailBO.GetEntities(cvFourQP);

            //检查是否扫描完毕。
            for (int i = 0; i < cvfourList.Count; i++)
            {
                if (cvfourList[i].CfmedLotID == null)
                {
                    isFinishedAll = false;
                    break;
                }
            }
            if (!isFinishedAll)
            {
                PM_SMT_RECEIPE_SETUP Setup = new PM_SMT_RECEIPE_SETUP();
                Setup.UpdatedBy   = Entitie.UpdatedBy;
                Setup.UpdatedOn   = SSGlobalConfig.Now;
                Setup.SetupPK     = cvfourList[0].SetupPK;
                Setup.SetupStatus = 4;
                ReceipeSetupBO.UpdateSome(Setup);
            }
            return(cvfourList);
        }
示例#4
0
        public string checkNewReelID(DockMaterial entity)
        {
            LES_REQUEST_RECEIVE receive = new LES_REQUEST_RECEIVE();

            receive.HutID = entity.NewReelID;
            IList <LES_REQUEST_RECEIVE> detailPKList = receiveBO.GetEntities(receive);

            if (detailPKList == null || detailPKList.Count == 0)
            {
                return("新批次信息错误");
            }

            if (detailPKList[0].Status == 3)
            {
                return("此物料已接料,无需再次操作");
            }
            if (detailPKList[0].Quantity.ToString() == "")
            {
                return("新物料数量丢失,对接失败");
            }
            receive.ReceivePK = detailPKList[0].ReceivePK;
            LES_REQUEST_DETAIL lesDetail = lesDetailBO.GetEntity(Convert.ToInt32(detailPKList[0].DetailPK));

            if (lesDetail == null || lesDetail.MaterialID != entity.MaterialID)
            {
                return("新批次与物料不符,请扫描正确批次");
            }
            //旧物料个数
            int oldQuantity = 0;
            LES_REQUEST_RECEIVE receiveOld = new LES_REQUEST_RECEIVE();

            receive.HutID = entity.OldReelID;
            IList <LES_REQUEST_RECEIVE> detailPKListOld = receiveBO.GetEntities(receiveOld);

            if (detailPKListOld == null || detailPKListOld.Count == 0 || detailPKList[0].Quantity.ToString() == "")
            {
                return("旧物料数量丢失,对接失败");
            }

            oldQuantity = Convert.ToInt32(detailPKListOld[0].Quantity);
            //调接口,接料
            LESReceive lesReceive = new LESReceive();

            lesReceive.HutID         = entity.NewReelID;
            lesReceive.DetailPK      = Convert.ToInt32(detailPKList[0].DetailPK);
            lesReceive.ReceivePK     = (int)detailPKList[0].ReceivePK;
            lesReceive.RequestPK     = (int)lesDetail.RequestPK;
            lesReceive.OperationTime = SSGlobalConfig.Now;
            lesReceive.Operator      = entity.Operator;
            lesReceive.IsLastHut     = Convert.ToBoolean(detailPKList[0].IsLastHut);
            ReturnValue rv = new ReturnValue();

            rv = API_WMS_BO.ReceiveMaterial(lesReceive);
            if (rv.Success == false)
            {
                return("接料失败");
            }
            //修改接料状态

            string s = receiveBO.ModifyMaterialStatus(entity.Operator, Convert.ToInt32(receive.ReceivePK));

            if (s.Contains("NG"))
            {
                return(s);
            }
            else
            {
                //新批次正确,像PM_SMT_RECEIPE_SETUP_DETAIL_REPLACE中添加数据
                PM_SMT_RECEIPE_SETUP_DETAIL_REPLACE replace = new PM_SMT_RECEIPE_SETUP_DETAIL_REPLACE();
                replace.NewLotID      = entity.NewReelID;
                replace.NewLotQty     = Convert.ToInt32(detailPKList[0].Quantity);
                replace.OldLotID      = entity.OldReelID;
                replace.OldLotQty     = oldQuantity;
                replace.OperationTime = SSGlobalConfig.Now;
                replace.Operator      = entity.Operator;
                replace.SetupDetailPK = entity.SetupDetailPK;
                replaceBO.Insert(replace);

                return("物料对接成功");
            }
        }
示例#5
0
        public IList <CV_PM_SMT_RECEIPE_DETAIL> GetScanningEntities(CV_PM_SMT_RECEIPE_DETAIL_QueryParam Entitie) //传入的参数是对象,用Post,不能用Get
        {
            bool isFinishedAll = true;
            IList <CV_PM_SMT_ReceipeDetailSetup> setupList = new List <CV_PM_SMT_ReceipeDetailSetup>();
            //CV_MM_LOTS_EXT_QueryParam lotQP = new CV_MM_LOTS_EXT_QueryParam();
            //IList<CV_MM_LOTS_EXT> lotList = new List<CV_MM_LOTS_EXT>();
            PM_SMT_RECEIPE_SETUP_DETAIL             detailNew  = new PM_SMT_RECEIPE_SETUP_DETAIL();
            IList <CV_PM_SMT_RECEIPE_DETAIL>        cvfourList = new List <CV_PM_SMT_RECEIPE_DETAIL>();
            CV_PM_SMT_ReceipeDetailSetup_QueryParam setuoQP    = new CV_PM_SMT_ReceipeDetailSetup_QueryParam();

            setuoQP.Slot      = Entitie.Slot;
            setuoQP.OrderID   = Entitie.OrderID;
            setuoQP.MachineID = Entitie.MachineID;
            setuoQP.PcbSide   = Entitie.PcbSide;
            setupList         = CV_PM_SMT_ReceipeDetailSetupBO.GetEntities(setuoQP);
            //根据lotID查询物料
            //lotQP.LotID = Entitie.LotID;
            //lotQP.OrderID = Entitie.OrderID;
            // lotList = CV_MM_LOTS_EXTBO.GetEntities(lotQP);
            //if (lotList == null || lotList.Count == 0)
            //{
            //    cvfourList.Clear();
            //    return cvfourList;
            //}

            //if (lotList[0].DefID != setupList[0].MaterialID)
            //{
            //    cvfourList.Clear();
            //    return cvfourList;
            //}
            LES_REQUEST_RECEIVE receive = new LES_REQUEST_RECEIVE();

            receive.HutID = Entitie.LotID;//接料表中hutID(reelID)
            IList <LES_REQUEST_RECEIVE> detailPKList = receiveBO.GetEntities(receive);

            if (detailPKList == null || detailPKList.Count == 0 || detailPKList[0].OrderID != Entitie.OrderID || detailPKList[0].MaterialID != setupList[0].MaterialID)
            {
                cvfourList.Clear();
                return(cvfourList);
            }

            //LES_REQUEST_DETAIL lesDetail = lesDetailBO.GetEntity(Convert.ToInt32(detailPKList[0].DetailPK));
            //if (lesDetail == null || lesDetail.MaterialID != setupList[0].MaterialID)
            //{
            //    cvfourList.Clear();
            //    return cvfourList;
            //}

            PM_SMT_RECEIPE_SETUP_DETAIL detailQP = new PM_SMT_RECEIPE_SETUP_DETAIL();

            detailQP.SetupPK  = setupList[0].SetupPK;
            detailQP.DetailPK = setupList[0].DetailPK;
            detailQP.LotID    = Entitie.LotID;
            //防止二次添加。
            IList <PM_SMT_RECEIPE_SETUP_DETAIL> detailList = setupDetailBO.GetEntities(detailQP);

            if (detailList == null || detailList.Count == 0)
            {
                detailNew.LotID         = Entitie.LotID;
                detailNew.SetupPK       = setupList[0].SetupPK;
                detailNew.DetailPK      = setupList[0].DetailPK;
                detailNew.Operator      = Entitie.UpdatedBy;
                detailNew.OperationTime = SSGlobalConfig.Now;

                setupDetailBO.Insert(detailNew);
                //sacnningNum++;
            }

            CV_PM_SMT_RECEIPE_DETAIL_QueryParam cvfourQP = new CV_PM_SMT_RECEIPE_DETAIL_QueryParam();

            cvfourQP.RcpPK = setupList[0].RcpPK;
            cvfourList     = cvReceipeDetailBO.GetEntities(cvfourQP);
            //检查是否扫描完毕。
            for (int i = 0; i < cvfourList.Count; i++)
            {
                if (string.IsNullOrEmpty(cvfourList[i].LotID))
                {
                    isFinishedAll = false;
                    break;
                }
            }
            if (!isFinishedAll)
            {
                PM_SMT_RECEIPE_SETUP Setup = new PM_SMT_RECEIPE_SETUP();
                Setup.UpdatedBy   = Entitie.UpdatedBy;
                Setup.UpdatedOn   = SSGlobalConfig.Now;
                Setup.SetupPK     = cvfourList[0].SetupPK;
                Setup.SetupStatus = 2; //1:已生成 2:一次核对中 3:一次核对完成 4:二次核对中 5:二次核对完成
                ReceipeSetupBO.UpdateSome(Setup);
            }

            return(cvfourList);
        }