| | |
| | | using MES.Service.Dto.service; |
| | | using MES.Service.Modes; |
| | | using MES.Service.service.BasicData; |
| | | using Oracle.ManagedDataAccess.Client; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Data; |
| | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 处理解绑 / 撤销解绑 |
| | | /// </summary> |
| | | public bool ProcessSn(UnbindAsnInfoDto dto) |
| | | { |
| | | if (dto == null || dto.snList == null || dto.snList.Count == 0) |
| | | throw new ArgumentException("输入参数无效"); |
| | | |
| | | var sqlHelper = new OracleSQLHelper(); |
| | | bool result = true; |
| | | var (connection, transaction) = sqlHelper.BeginTransaction(); |
| | | |
| | | try |
| | | { |
| | | foreach (var sn in dto.snList) |
| | | { |
| | | if (dto.ActionType == 0) // 解绑 |
| | | { |
| | | string sql = @" |
| | | UPDATE MES_SN_STATUS_DETAILS |
| | | SET IS_UNBIND = 1, |
| | | UNBIND_DATE = SYSDATE, |
| | | UNBIND_USER = :LoginId |
| | | WHERE TICKET_NO = :TicketNo |
| | | AND SN_NO = :SnNo |
| | | AND NVL(IS_UNBIND, 0) = 0"; |
| | | |
| | | var parameters = new[] |
| | | { |
| | | new OracleParameter(":LoginId", dto.loginId), |
| | | new OracleParameter(":TicketNo", sn.tickeNo), |
| | | new OracleParameter(":SnNo", sn.snNo) |
| | | }; |
| | | |
| | | int rows = sqlHelper.ExecuteNonQueryWithTransaction(sql, parameters, connection, transaction); |
| | | if (rows == 0) |
| | | { |
| | | throw new Exception($"解绑失败: 工单[{sn.tickeNo}], SN[{sn.snNo}] 未找到可解绑记录或已解绑!"); |
| | | } |
| | | } |
| | | else if (dto.ActionType == 1) // 撤销解绑 |
| | | { |
| | | string sql = @" |
| | | UPDATE MES_SN_STATUS_DETAILS |
| | | SET IS_UNBIND = 0, |
| | | UNBIND_DATE = NULL, |
| | | UNBIND_USER = NULL |
| | | WHERE TICKET_NO = :TicketNo |
| | | AND SN_NO = :SnNo |
| | | AND NVL(IS_UNBIND, 0) = 1"; |
| | | |
| | | var parameters = new[] |
| | | { |
| | | new OracleParameter(":TicketNo", sn.tickeNo), |
| | | new OracleParameter(":SnNo", sn.snNo) |
| | | }; |
| | | |
| | | int rows = sqlHelper.ExecuteNonQueryWithTransaction(sql, parameters, connection, transaction); |
| | | if (rows == 0) |
| | | { |
| | | throw new Exception($"撤销解绑失败: 工单[{sn.tickeNo}], SN[{sn.snNo}] 未找到已解绑记录!"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("无效的操作类型!只能是 0=解绑 或 1=撤销解绑"); |
| | | } |
| | | } |
| | | |
| | | transaction.Commit(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | transaction.Rollback(); |
| | | result = false; |
| | | // 建议这里写日志 ex.Message |
| | | throw; |
| | | } |
| | | finally |
| | | { |
| | | connection.Close(); |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | |
| | | } |
| | | } |