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; }
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); }