private void SXJ_Process_Select(SXJ_WMSEntity item, List <SXJ_CELLNOEntity> cellList) { ReturnResult result = new ReturnResult(); SXJ_R_KITT_PN_TEntity r_kitt_pn_Entity = new SXJ_R_KITT_PN_TEntity(); r_kitt_pn_Entity.MOGP = item.MOGP; r_kitt_pn_Entity.MATERIAL = item.MATERIAL; r_kitt_pn_Entity.VENDORCODE = item.VENDORCODE; r_kitt_pn_Entity.QTY = item.QTY; r_kitt_pn_Entity.ONRACKQTY = item.ONRACKQTY; r_kitt_pn_Entity.RACKNO = item.RACKNO; r_kitt_pn_Entity.CREATE_NAME = item.USER; r_kitt_pn_Entity.DESC1 = r_kitt_pn_Entity.DESC2 = r_kitt_pn_Entity.DESC3 = string.Empty; SXJ_R_KITT_PN_LOG_TEntity r_kitt_pn_log_Entity = new SXJ_R_KITT_PN_LOG_TEntity(); r_kitt_pn_log_Entity.MOGP = item.MOGP; r_kitt_pn_log_Entity.MATERIAL = item.MATERIAL; r_kitt_pn_log_Entity.VENDORCODE = item.VENDORCODE; r_kitt_pn_log_Entity.QTY = item.QTY; r_kitt_pn_log_Entity.ONRACKQTY = item.ONRACKQTY; r_kitt_pn_log_Entity.RACKNO = item.RACKNO; r_kitt_pn_log_Entity.CREATE_NAME = item.USER; r_kitt_pn_log_Entity.DESC1 = r_kitt_pn_log_Entity.DESC2 = r_kitt_pn_log_Entity.DESC3 = string.Empty; //判断WMS传过来的储位号,在MES中存在 if (cellList.Any(x => x.CELL_NO == item.RACKNO)) { string line_Name = cellList.Where(x => x.CELL_NO == item.RACKNO).FirstOrDefault().LINE_NAME; SXJ_R_KITT_PN_TEntity r_kitt_pn_t_Entity = dataProviderService.Get_SXJ_R_KITT_PN_TEntityByWMSEntity(item); //判断Lot号、储位号、物料号和供应商编号,在SXJ_R_KITT_PN_T表中是否存在 if (r_kitt_pn_t_Entity != null) { //Lot号、储位号、物料号和供应商编号,在SXJ_R_KITT_PN_T表中存在:更新SXJ_R_KITT_PN_T表数据 if (r_kitt_pn_t_Entity.ONRACKQTY + item.ONRACKQTY > 0) //储位库存+上下架数>0 { result = dataProviderService.Update_SXJ_R_KITT_PN_TEntity(r_kitt_pn_Entity); //更新SXJ_R_KITT_PN_T数据 if (result.Status) { r_kitt_pn_log_Entity.LINE_NAME = line_Name; item.STATUS = r_kitt_pn_log_Entity.STATUS = 2; item.STATUS_INFO = r_kitt_pn_log_Entity.STATUS_INFO = "更新SXJ_R_KITT_PN_T数据"; result = dataProviderService.Insert_SXJ_R_KITT_PN_LOG_T(r_kitt_pn_log_Entity); } } else if (r_kitt_pn_t_Entity.ONRACKQTY + item.ONRACKQTY == 0) //储位库存+上下架数=0 { result = dataProviderService.Delete_SXJ_R_KITT_PN_TEntity(r_kitt_pn_Entity); //删除SXJ_R_KITT_PN_T数据" if (result.Status) { r_kitt_pn_log_Entity.LINE_NAME = line_Name; item.STATUS = r_kitt_pn_log_Entity.STATUS = 8; item.STATUS_INFO = r_kitt_pn_log_Entity.STATUS_INFO = "下架数量和库存数相等,删除SXJ_R_KITT_PN_T数据"; result = dataProviderService.Insert_SXJ_R_KITT_PN_LOG_T(r_kitt_pn_log_Entity); } } else //储位库存+上下架数<0,直接告警 { r_kitt_pn_log_Entity.LINE_NAME = line_Name; item.STATUS = r_kitt_pn_log_Entity.STATUS = 7; item.STATUS_INFO = r_kitt_pn_log_Entity.STATUS_INFO = "下架数量:" + Math.Abs(item.ONRACKQTY) + ";大于现有库存:" + r_kitt_pn_t_Entity.ONRACKQTY; result = dataProviderService.Insert_SXJ_R_KITT_PN_LOG_T(r_kitt_pn_log_Entity); } } else { //RAckNO是否存在 SXJ_R_KITT_PN_TEntity r_kitt_pn_t_Entity_byRackNO = dataProviderService.Get_SXJ_R_KITT_PN_TEntityByRackNo(item.RACKNO); if (r_kitt_pn_t_Entity_byRackNO != null)//rackno 存在 { SXJ_R_KITT_PN_TEntity r_kitt_pn_t_Entity_byPnVcRack = dataProviderService.Get_SXJ_R_KITT_PN_TEntityByPNAndVCAndRack(item.RACKNO, item.MATERIAL, item.VENDORCODE); if (r_kitt_pn_t_Entity_byPnVcRack != null)//pn,vc,rackno存在 { r_kitt_pn_Entity.LINE_NAME = line_Name; result = dataProviderService.Insert_SXJ_R_KITT_PN_T(r_kitt_pn_Entity); if (result.Status) { r_kitt_pn_log_Entity.LINE_NAME = line_Name; item.STATUS = r_kitt_pn_log_Entity.STATUS = 4; item.STATUS_INFO = r_kitt_pn_log_Entity.STATUS_INFO = "pn,vc,rackno相同,lot不同,插入数据到SXJ_R_KITT_PN_T表"; result = dataProviderService.Insert_SXJ_R_KITT_PN_LOG_T(r_kitt_pn_log_Entity); } } else { r_kitt_pn_log_Entity.LINE_NAME = line_Name; item.STATUS = r_kitt_pn_log_Entity.STATUS = 3; item.STATUS_INFO = r_kitt_pn_log_Entity.STATUS_INFO = "相同的RackNO,不能插入不同的pn和vc"; result = dataProviderService.Insert_SXJ_R_KITT_PN_LOG_T(r_kitt_pn_log_Entity); } } else //rackno 不存在 { SXJ_R_KITT_PN_TEntity r_kitt_pn_t_Entity_byLotPnVc = dataProviderService.Get_SXJ_R_KITT_PN_TEntityByLotAndPNAndVC(item.MOGP, item.MATERIAL, item.VENDORCODE); if (r_kitt_pn_t_Entity_byLotPnVc != null) { r_kitt_pn_log_Entity.LINE_NAME = line_Name; item.STATUS = r_kitt_pn_log_Entity.STATUS = 5; item.STATUS_INFO = r_kitt_pn_log_Entity.STATUS_INFO = "相同的:Lot,pn,vc,不能存在不同的储位"; result = dataProviderService.Insert_SXJ_R_KITT_PN_LOG_T(r_kitt_pn_log_Entity); } else { //线体,物料号、供应商不同时存在不同的货架,插入数据到SXJ_R_KITT_PN_T表中 r_kitt_pn_Entity.LINE_NAME = line_Name; result = dataProviderService.Insert_SXJ_R_KITT_PN_T(r_kitt_pn_Entity); if (result.Status) { r_kitt_pn_log_Entity.LINE_NAME = line_Name; item.STATUS = r_kitt_pn_log_Entity.STATUS = 6; item.STATUS_INFO = r_kitt_pn_log_Entity.STATUS_INFO = "不同的rackno,不同的pn或vc或lot,插入数据到SXJ_R_KITT_PN_T表"; result = dataProviderService.Insert_SXJ_R_KITT_PN_LOG_T(r_kitt_pn_log_Entity); } } } } } else { //WMS传过来的储位号,在MES中不存在,写日志 r_kitt_pn_log_Entity.LINE_NAME = ""; item.STATUS = r_kitt_pn_log_Entity.STATUS = 1; item.STATUS_INFO = r_kitt_pn_log_Entity.STATUS_INFO = "储位号在MES中不存在"; result = dataProviderService.Insert_SXJ_R_KITT_PN_LOG_T(r_kitt_pn_log_Entity); } }
/// <summary> /// 插入数据到,架位信息存储历史表 /// </summary> /// <param name="entity"></param> /// <returns></returns> public ReturnResult Insert_SXJ_R_KITT_PN_LOG_T(SXJ_R_KITT_PN_LOG_TEntity entity) { ReturnResult result = new ReturnResult(); string strInsert = string.Format(@"INSERT INTO SFISM4.R_KITT_PN_LOG_T (MOGP, MATERIAL, VENDORCODE, QTY, ONRACKQTY, RACKNO, CREATE_TIME, LINE_NAME, CREATE_NAME, DESC1, DESC2, DESC3, CLOSE_TIME, STATUS, STATUS_INFO) VALUES (:MOGP, :MATERIAL, :VENDORCODE, :QTY, :ONRACKQTY, :RACKNO, SYSDATE, :LINE_NAME, :CREATE_NAME, :DESC1, :DESC2, :DESC3, SYSDATE, :STATUS, :STATUS_INFO)"); DBParameter dbParameter = new DBParameter(); dbParameter.Clear(); dbParameter.Add(":MOGP", OracleDbType.Varchar2, entity.MOGP); dbParameter.Add(":MATERIAL", OracleDbType.Varchar2, entity.MATERIAL); dbParameter.Add(":VENDORCODE", OracleDbType.Varchar2, entity.VENDORCODE); dbParameter.Add(":QTY", OracleDbType.Int32, entity.QTY); dbParameter.Add(":ONRACKQTY", OracleDbType.Int32, entity.ONRACKQTY); dbParameter.Add(":RACKNO", OracleDbType.Varchar2, entity.RACKNO); //dbParameter.Add(":CREATE_TIME", OracleType.DateTime, entity.CREATE_TIME); dbParameter.Add(":LINE_NAME", OracleDbType.Varchar2, entity.LINE_NAME); dbParameter.Add(":CREATE_NAME", OracleDbType.Varchar2, entity.CREATE_NAME); dbParameter.Add(":DESC1", OracleDbType.Varchar2, entity.DESC1); dbParameter.Add(":DESC2", OracleDbType.Varchar2, entity.DESC2); dbParameter.Add(":DESC3", OracleDbType.Varchar2, entity.DESC3); dbParameter.Add(":STATUS", OracleDbType.Int32, entity.STATUS); dbParameter.Add(":STATUS_INFO", OracleDbType.Varchar2, entity.STATUS_INFO); 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_SXJ_R_KITT_PN_LOG Fail: " + ex.Message); } return result; }