/// <summary> /// 批量插入和更新 /// </summary> /// <param name="lotEntityList"></param> /// <param name="insertlotEntityList"></param> /// <returns></returns> public ReturnResult UpdateLogAndInsertTracking(List<LotMoEntity> lotEntityList, List<LotMoEntity> insertlotEntityList) { ReturnResult result = new ReturnResult();// { Status=false}; result = DeleteTracking(lotEntityList); if (result.Status) { List<KeyValuePair<string, List<OracleParameter>>> strSqlList = new List<KeyValuePair<string, List<OracleParameter>>>(); string strUpdate = string.Format(@"UPDATE SFISM4.R_WIP_LOT_MO_LOG_T SET LOT_NUMBER=:LOT_NO,JOB_STATUS='2' WHERE MO=:MO_ORDER"); foreach (var entity in lotEntityList) { DBParameter dbParameter = new DBParameter(); dbParameter.Clear(); dbParameter.Add(":LOT_NO", OracleDbType.Varchar2, entity.LOT_NO); dbParameter.Add(":MO_ORDER", OracleDbType.Varchar2, entity.MO_ORDER); strSqlList.Add(new KeyValuePair<string, List<OracleParameter>>(strUpdate, dbParameter.GetParameters())); } 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)"); foreach (var insertEntity in insertlotEntityList) { DBParameter udbParameter = new DBParameter(); udbParameter.Clear(); udbParameter.Add(":LOT_NUMBER", OracleDbType.Varchar2, insertEntity.LOT_NO); udbParameter.Add(":LINE_NAME", OracleDbType.Varchar2, insertEntity.LINE_NAME); udbParameter.Add(":STATION_NAME", OracleDbType.Varchar2, "0"); udbParameter.Add(":MATERIAL_STATION_NAME", OracleDbType.Varchar2, "0"); udbParameter.Add(":LOT_SEQ", OracleDbType.Varchar2, insertEntity.LOT_SEQ); udbParameter.Add(":CREATE_TIME", OracleDbType.Varchar2, insertEntity.CREATE_TIME); udbParameter.Add(":SHIFT", OracleDbType.Varchar2, insertEntity.SHIFT); strSqlList.Add(new KeyValuePair<string, List<OracleParameter>>(strInsert, udbParameter.GetParameters())); } try { result = dbHander.ExecuteNonQueryBatchSql(strSqlList); result.Status = true; } catch (Exception ex) { result.Status = false; result.Message = ex.Message; this.logHandler.Error(MethodBase.GetCurrentMethod().Name, "Call UpdateLogAndInsertTracking Fail: " + ex.Message); } } return result; }