public ReturnResult Update_Add_LotFromSap_Process(List <LotMoEntity> lotMoList)//LotEntity
        {
            int          lotSeq = 0;
            ReturnResult result = new ReturnResult();

            result = dataProviderService.UpdateBatch_R_WIP_LOT_MO_LOG_T(lotMoList);

            List <LotMoEntity> lotMoListSort = lotMoList.OrderBy(x => int.Parse(x.MO_NO)).GroupBy(y => y.LOT_NO).Select(z => z.FirstOrDefault()).ToList();//根据mo顺序排序,并按lot号分组,得到唯一lot的最小mo序列值

            List <LotMoEntity> lotSeqList = new List <LotMoEntity>();

            lotSeqList.Clear();
            lotMoListSort.Select(x =>
            {
                LotMoEntity lotMoEntity = dataProviderService.GetMoEntityByMoOrder(x.MO_ORDER);
                if (lotSeqList != null && lotSeqList.Count > 0)
                {
                    var temp = lotSeqList.OrderByDescending(t => int.Parse(t.LOT_SEQ)).Where(t => t.SHIFT == lotMoEntity.SHIFT && t.CREATE_TIME == lotMoEntity.CREATE_TIME && t.LINE_NAME == lotMoEntity.LINE_NAME).ToList();
                    if (temp != null && temp.Count > 0)
                    {
                        lotSeq = int.Parse(temp.FirstOrDefault().LOT_SEQ) + 1;
                    }
                    else
                    {
                        lotSeq = dataProviderService.GetMaxLotSeq(lotMoEntity.SHIFT, lotMoEntity.CREATE_TIME, lotMoEntity.LINE_NAME);
                    }
                }
                else
                {
                    lotSeq = dataProviderService.GetMaxLotSeq(lotMoEntity.SHIFT, lotMoEntity.CREATE_TIME, lotMoEntity.LINE_NAME);
                }

                lotSeqList.Add(new LotMoEntity {
                    LOT_SEQ = lotSeq.ToString(), LINE_NAME = lotMoEntity.LINE_NAME, CREATE_TIME = lotMoEntity.CREATE_TIME, SHIFT = lotMoEntity.SHIFT
                });
                x.LOT_SEQ = lotSeq.ToString();
                // var entity = dataProviderService.GetMoEntityByMoOrder(x.MO_ORDER);
                x.LINE_NAME   = lotMoEntity.LINE_NAME;
                x.CREATE_TIME = lotMoEntity.CREATE_TIME;
                x.SHIFT       = lotMoEntity.SHIFT;
                return(x);
            }).ToList();

            var s = lotMoList.GroupBy(x => new { x.LINE_NAME, x.CREATE_TIME, x.SHIFT });

            //批量插入Lot数据到r_wip_lot_tracking_t表
            //result = dataProviderService.InsertBatch_R_WIP_LOT_TRACKING_T(lotMoListSort);
            result = dataProviderService.UpdateLogAndInsertTracking(lotMoList, lotMoListSort);

            return(result);
        }
 /// <summary>
 /// 插入Lot数据到R_WIP_LOT_TRACKING_t
 /// </summary>
 /// <param name="entity"></param>
 /// <returns></returns>
 public ReturnResult Insert_R_WIP_LOT_TRACKING_T(LotMoEntity entity)
 {
     ReturnResult result = new ReturnResult();
     string strInsert = string.Format(@"INSERT INTO  SFISM4.R_WIP_LOT_TRACKING_T 
         (LOT_NUMBER,
         LINE_NAME,
         STATION_NAME,
         IN_STATION_TIME ,
         MATERIAL_STATION_NAME,
         MATERIAL_IN_STATION_TIME ,
         LOT_SEQ,
         CREATE_TIME,
         SHIFT)
         VALUES
         (:LOT_NUMBER,
         :LINE_NAME,
         :STATION_NAME,
         SYSDATE,
         :MATERIAL_STATION_NAME,
         SYSDATE ,
         :LOT_SEQ,
         TO_DATE(:CREATE_TIME,'YYYY/MM/DD'),
         :SHIFT)");
     DBParameter dbParameter = new DBParameter();
     dbParameter.Clear();
     dbParameter.Add(":LOT_NUMBER", OracleDbType.Varchar2, entity.LOT_NO);
     dbParameter.Add(":LINE_NAME", OracleDbType.Varchar2, entity.LINE_NAME);
     dbParameter.Add(":STATION_NAME", OracleDbType.Varchar2, "0");
     dbParameter.Add(":MATERIAL_STATION_NAME", OracleDbType.Varchar2, "0");
     dbParameter.Add(":LOT_SEQ", OracleDbType.Varchar2, entity.LOT_SEQ);
     dbParameter.Add(":CREATE_TIME", OracleDbType.Varchar2, entity.CREATE_TIME);
     dbParameter.Add(":SHIFT", OracleDbType.Varchar2, entity.SHIFT);
     try
     {
         result = dbHander.ExecuteNonQuery(strInsert, dbParameter.GetParameters());
         result.Status = true;
     }
     catch (Exception ex)
     {
         result.Status = false;
         result.Message = ex.Message;
         this.logHandler.Error(MethodBase.GetCurrentMethod().Name, "Call Insert_R_WIP_LOT_TRACKING_T Fail: " + ex.Message);
     }
     return result;
 }
        /// <summary>
        /// 根据Mo编号获取,LOt和MO信息
        /// </summary>
        /// <param name="MO"></param>
        /// <returns></returns>
        public LotMoEntity GetMoEntityByMoOrder(string MO_ORDER)
        {
            LotMoEntity lotMoEntity = new LotMoEntity();
            string strSql = string.Format(@"SELECT LM.LOT_NUMBER LOT_NO,LM.LINE_NAME,LM.MO MO_ORDER,LM.MO_SEQ MO_NO,TO_CHAR(LM.MO_START_TIME,'YYYY/MM/dd') CREATE_TIME,LM.SHIFT FROM SFISM4.R_WIP_LOT_MO_LOG_T LM WHERE LM.MO=:MO_ORDER");
            DBParameter oracleParamets = new DBParameter();
            oracleParamets.Clear();
            oracleParamets.Add(":MO_ORDER", OracleDbType.Varchar2, MO_ORDER);
            try
            {
                lotMoEntity = dbHander.ExecuteAsObject<LotMoEntity>(strSql, CommandType.Text, oracleParamets.GetParameters());
            }
            catch (Exception ex)
            {

                this.logHandler.Error(MethodBase.GetCurrentMethod().Name, "Call GetMoEntityByMo Fail: " + ex.Message);
            }
            return lotMoEntity;
        }
Пример #4
0
        public ReturnResult Get_PPM_LotFromSap_Process(List <LotMoEntity> lotMoList)//LotEntity
        {
            ReturnResult result = new ReturnResult();

            // List<LotMoEntity> lotMoList = dataProviderService.TEST();
            if (lotMoList != null && lotMoList.Count > 0)
            {
                var monumberList             = lotMoList.Select(x => x.MO_ORDER).ToArray();
                List <LotMoEntity> toSapList = dataProviderService.GetMoEntityListByMoOrders(string.Join("','", monumberList));
                // List<LotMoEntity> toSapList = dataProviderService.GetMoEntityListByStatus();
                if (toSapList != null && toSapList.Count > 0)
                {
                    int lotSeq = 0;
                    //List<LotMoEntity> lotMoList = DataSourceConvertHelper.DataTableToListCollection<LotMoEntity>(dt);
                    //批量更新R_WIP_LOT_MO_LOG_T表的Lot号

                    //在lotMoList[SAp根据toSapList生成lot后,回传给Mes的数据列表]存在,而在toSapList[job_status=1:传送给Sap的数据列表]中不存的值
                    var joinList = lotMoList.Where(x => !toSapList.Exists(y => x.MO_ORDER.Contains(y.MO_ORDER))).ToList();
                    if (joinList.Count == 0)
                    {
                        result = dataProviderService.UpdateBatch_R_WIP_LOT_MO_LOG_T(lotMoList);

                        List <LotMoEntity> lotMoListSort = lotMoList.OrderBy(x => int.Parse(x.MO_NO)).GroupBy(y => y.LOT_NO).Select(z => z.FirstOrDefault()).ToList();//根据mo顺序排序,并按lot号分组,得到唯一lot的最小mo序列值

                        List <LotMoEntity> lotSeqList = new List <LotMoEntity>();
                        lotSeqList.Clear();
                        lotMoListSort.Select(x =>
                        {
                            LotMoEntity lotMoEntity = dataProviderService.GetMoEntityByMoOrder(x.MO_ORDER);
                            if (lotSeqList != null && lotSeqList.Count > 0)
                            {
                                var temp = lotSeqList.OrderByDescending(t => int.Parse(t.LOT_SEQ)).Where(t => t.SHIFT == lotMoEntity.SHIFT && t.CREATE_TIME == lotMoEntity.CREATE_TIME && t.LINE_NAME == lotMoEntity.LINE_NAME).ToList();
                                if (temp != null && temp.Count > 0)
                                {
                                    lotSeq = int.Parse(temp.FirstOrDefault().LOT_SEQ) + 1;
                                }
                                else
                                {
                                    lotSeq = dataProviderService.GetMaxLotSeq(lotMoEntity.SHIFT, lotMoEntity.CREATE_TIME, lotMoEntity.LINE_NAME);
                                }
                            }
                            else
                            {
                                lotSeq = dataProviderService.GetMaxLotSeq(lotMoEntity.SHIFT, lotMoEntity.CREATE_TIME, lotMoEntity.LINE_NAME);
                            }

                            lotSeqList.Add(new LotMoEntity {
                                LOT_SEQ = lotSeq.ToString(), LINE_NAME = lotMoEntity.LINE_NAME, CREATE_TIME = lotMoEntity.CREATE_TIME, SHIFT = lotMoEntity.SHIFT
                            });
                            x.LOT_SEQ = lotSeq.ToString();
                            // var entity = dataProviderService.GetMoEntityByMoOrder(x.MO_ORDER);
                            x.LINE_NAME   = lotMoEntity.LINE_NAME;
                            x.CREATE_TIME = lotMoEntity.CREATE_TIME;
                            x.SHIFT       = lotMoEntity.SHIFT;
                            return(x);
                        }).ToList();

                        if (result.Status)
                        {
                            //批量插入Lot数据到r_wip_lot_tracking_t表
                            result = dataProviderService.InsertBatch_R_WIP_LOT_TRACKING_T(lotMoListSort);
                        }
                    }
                    else
                    {
                        var Mo_OrderList = joinList.Select(x => x.MO_ORDER).ToArray();
                        result.Status  = false;
                        result.Message = "工单号:" + string.Join(",", Mo_OrderList) + " 在SFISM4.R_WIP_LOT_MO_LOG_T表中不存在";
                    }
                }
                else
                {
                    result.Status  = false;
                    result.Message = "SFISM4.R_WIP_LOT_MO_LOG_T表没有ToSap的数据";
                }
            }
            else
            {
                result.Status  = false;
                result.Message = "lotMoList数据为空";
            }
            if (!result.Status)
            {
                this.logHandler.Error(MethodBase.GetCurrentMethod().Name, "Call Get_PPM_LotFromSap_Process Fail: " + result.Message);
            }
            return(result);
        }