/// <summary> /// 根据(lot,pn,vc)获取SXJ_R_KITT_PN_T数据 /// </summary> /// <param name="lotNo">lot号</param> /// <param name="material">物料号</param> /// <param name="VendorCode">供应商号</param> /// <returns></returns> public SXJ_R_KITT_PN_TEntity Get_SXJ_R_KITT_PN_TEntityByLotAndPNAndVC(string lotNo, string material, string VendorCode) { SXJ_R_KITT_PN_TEntity entity = new SXJ_R_KITT_PN_TEntity(); string strSql = string.Format(@" SELECT MOGP, MATERIAL, VENDORCODE, QTY, ONRACKQTY, RACKNO, CREATE_TIME, LINE_NAME, USER, DESC1, DESC2, DESC3 FROM SFISM4.R_KITT_PN_T WHERE MOGP=:MOGP AND MATERIAL=:MATERIAL AND VENDORCODE=:VENDORCODE "); DBParameter oracleParamets = new DBParameter(); oracleParamets.Clear(); oracleParamets.Add(":MOGP", OracleDbType.Varchar2, lotNo); oracleParamets.Add(":MATERIAL", OracleDbType.Varchar2, material); oracleParamets.Add(":VendorCode", OracleDbType.Varchar2, VendorCode); try { entity = dbHander.ExecuteAsObject<SXJ_R_KITT_PN_TEntity>(strSql, CommandType.Text, oracleParamets.GetParameters()); } catch (Exception ex) { this.logHandler.Error(MethodBase.GetCurrentMethod().Name, "Call Get_SXJ_R_KITT_PN_TEntity Fail: " + ex.Message); } return entity; }
/// <summary> /// 根据储位号,获取储位信息,储位号在SXJ_R_KITT_PN_T表中数据 /// </summary> /// <param name="rackNO"></param> /// <returns></returns> public SXJ_R_KITT_PN_TEntity Get_SXJ_R_KITT_PN_TEntityByRackNo(string rackNO) { SXJ_R_KITT_PN_TEntity entity = new SXJ_R_KITT_PN_TEntity(); string strSql = string.Format(@" SELECT MOGP, MATERIAL, VENDORCODE, QTY, ONRACKQTY, RACKNO, CREATE_TIME, LINE_NAME, USER, DESC1, DESC2, DESC3 FROM SFISM4.R_KITT_PN_T WHERE RACKNO=:RACKNO"); DBParameter oracleParamets = new DBParameter(); oracleParamets.Clear(); oracleParamets.Add(":RACKNO", OracleDbType.Varchar2, rackNO); try { entity = dbHander.ExecuteAsObject<SXJ_R_KITT_PN_TEntity>(strSql, CommandType.Text, oracleParamets.GetParameters()); } catch (Exception ex) { this.logHandler.Error(MethodBase.GetCurrentMethod().Name, "Call Get_SXJ_R_KITT_PN_TEntity Fail: " + ex.Message); } return entity; }
/// <summary> /// 插入数据到,架位信息表 /// </summary> /// <param name="entity"></param> /// <returns></returns> public ReturnResult Insert_SXJ_R_KITT_PN_T(SXJ_R_KITT_PN_TEntity entity) { ReturnResult result = new ReturnResult(); string strInsert = string.Format(@"INSERT INTO SFISM4.R_KITT_PN_T (MOGP, MATERIAL, VENDORCODE, QTY, ONRACKQTY, RACKNO, CREATE_TIME, LINE_NAME, CREATE_NAME, DESC1, DESC2, DESC3) VALUES (:MOGP, :MATERIAL, :VENDORCODE, :QTY, :ONRACKQTY, :RACKNO, SYSDATE, :LINE_NAME, :CREATE_NAME, :DESC1, :DESC2, :DESC3)"); 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); 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_T Fail: " + ex.Message); } return result; }
/// <summary> /// 删除R_KITT_PN_T表数据 /// </summary> /// <param name="entity"></param> /// <returns></returns> public ReturnResult Delete_SXJ_R_KITT_PN_TEntity(SXJ_R_KITT_PN_TEntity entity) { ReturnResult result = new ReturnResult(); string updateSql = string.Format(@" DELETE FROM SFISM4.R_KITT_PN_T WHERE MOGP=:MOGP AND MATERIAL=:MATERIAL AND VENDORCODE=:VENDORCODE AND RACKNO=:RACKNO"); DBParameter dbParameter = new DBParameter(); dbParameter.Clear(); dbParameter.Add(":MOGP", OracleDbType.Varchar2, entity.MOGP); dbParameter.Add(":RACKNO", OracleDbType.Varchar2, entity.RACKNO); dbParameter.Add(":ONRACKQTY", OracleDbType.Int32, entity.ONRACKQTY); dbParameter.Add(":MATERIAL", OracleDbType.Varchar2, entity.MATERIAL); dbParameter.Add(":VENDORCODE", OracleDbType.Varchar2, entity.VENDORCODE); try { result = dbHander.ExecuteNonQuery(updateSql, dbParameter.GetParameters()); } catch (Exception ex) { this.logHandler.Error(MethodBase.GetCurrentMethod().Name, "Call Delete_SXJ_R_KITT_PN_TEntity Fail: " + ex.Message); } return result; }
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); } }