Browse Source

first

master
lirenjie 6 months ago
parent
commit
64be6c618d

+ 1
- 1
RDH.Data.Interfaces/IOperationRoomBLL.cs View File

{ {
public partial interface IOperationRoomBLL:IRegable,IBaseBLL<OperationRoom> public partial interface IOperationRoomBLL:IRegable,IBaseBLL<OperationRoom>
{ {
OperationRoom GetOperationRoomBySignalStation(String stationCode);
} }
} }

+ 1
- 0
RDH.Data.Models/SPILItemTransaction.cs View File

OnPropertyChanged("StorageSpaceItemLot"); OnPropertyChanged("StorageSpaceItemLot");
} }
} }
public ItemLot ItemLotInfo { get; set; }
#endregion #endregion
} }
} }

+ 6
- 0
RDH.Data/OperationRoomBLL.cs View File

Ext10 = operationroom.Ext10, //Params Ext10 = operationroom.Ext10, //Params
}; };
} }
public OperationRoom GetOperationRoomBySignalStation(String stationCode)
{
return SqlMapper.Query<OperationRoom>(ConnectionFactory.Current.GetSessionConnection(),
BuildBaseSql() + " WHERE ext02=:stationCode",
new { stationCode = stationCode }).FirstOrDefault();
}
} }


} }

+ 18
- 18
RDH.Data/PortableStorageTrackBLL.cs View File

{ {
return new return new
{ {
ItemCode_ = t.ItemCode,
TrackCode_ = t.TrackCode,
TrackValue_ = t.TrackValue,
CreateBy_ = t.CreateBy,
CreateTime_ = t.CreateTime,
Flag_ = t.Flag,
ClientTime_ = t.ClientTime,
ServerTime_ = t.ServerTime,
Ext01_ = t.Ext01,
Ext02_ = t.Ext02,
Ext03_ = t.Ext03,
Ext04_ = t.Ext04,
Ext05_ = t.Ext05,
Ext06_ = t.Ext06,
Ext07_ = t.Ext07,
Ext08_ = t.Ext08,
Ext09_ = t.Ext09,
Ext10_ = t.Ext10,
ItemCode = t.ItemCode,
TrackCode = t.TrackCode,
TrackValue = t.TrackValue,
CreateBy = t.CreateBy,
CreateTime = t.CreateTime,
Flag = t.Flag,
ClientTime = t.ClientTime,
ServerTime = t.ServerTime,
Ext01 = t.Ext01,
Ext02 = t.Ext02,
Ext03 = t.Ext03,
Ext04 = t.Ext04,
Ext05 = t.Ext05,
Ext06 = t.Ext06,
Ext07 = t.Ext07,
Ext08 = t.Ext08,
Ext09 = t.Ext09,
Ext10 = t.Ext10,
}; };
} }



+ 70
- 6
RDH.Data/SPILItemTransactionBLL.cs View File

using RDH.Data.Models; using RDH.Data.Models;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.DirectoryServices;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
{ {
public partial class SPILItemTransactionBLL : BaseOrclBLL<SPILItemTransaction> public partial class SPILItemTransactionBLL : BaseOrclBLL<SPILItemTransaction>
{ {

public SPILItemTransactionBLL() : base() public SPILItemTransactionBLL() : base()
{ {
AliasTableName = "spilt"; AliasTableName = "spilt";
internal override string ENTITY_NAME { get { return "SPILItemTransaction"; } } internal override string ENTITY_NAME { get { return "SPILItemTransaction"; } }
internal override String KEY_COLUMN { get { return "KEY"; } }//KEY_COLUMN internal override String KEY_COLUMN { get { return "KEY"; } }//KEY_COLUMN



internal override void InitMaps() internal override void InitMaps()
{ {


ItemLotKey = spilitemtransaction.ItemLotKey, //Params ItemLotKey = spilitemtransaction.ItemLotKey, //Params
}; };
} }




public IEnumerable<SPILItemTransaction> ListMekKitDrugLendTransactionByRoom(String roomName)
{
#region sql builder
ItemTransactionBLL itemTransactionBLL = new ItemTransactionBLL();
SqlBuilder sqlBuilder = new SqlBuilder(itemTransactionBLL);
//item
ItemBLL itemBLL = new ItemBLL();
TableJoinInfo itemTable = new TableJoinInfo
{
LeftDal = itemTransactionBLL,
LeftColumnName = "ITEM_KEY",
RightDal = itemBLL,
RightColumnName = "KEY",
JoinType = TableJoinTypes.Inner,
};
sqlBuilder.AppendSelectionTable(itemTable);
//SPILItemTransaction
TableJoinInfo spiltTable = new TableJoinInfo
{
LeftDal = itemTransactionBLL,
LeftColumnName = itemTransactionBLL.KEY_COLUMN,
RightDal = this,
RightColumnName = "ITEM_TRANSACTION_KEY",
JoinType = TableJoinTypes.Inner,
};
sqlBuilder.AppendSelectionTable(spiltTable);
//item lot
ItemLotBLL itemLotBLL = new ItemLotBLL();
TableJoinInfo itemlotTable = new TableJoinInfo
{
LeftDal = this,
LeftColumnName = "ITEM_LOT_KEY",
RightDal = itemLotBLL,
RightColumnName = itemLotBLL.KEY_COLUMN,
JoinType = TableJoinTypes.Inner,
};
sqlBuilder.AppendSelectionTable(itemlotTable);
sqlBuilder.AppendWherePhrases($"{itemTransactionBLL.AliasTableName}.EXT02=:roomName AND NVL({itemTransactionBLL.AliasTableName}.ext10,'0')='0'");
sqlBuilder.AppendWherePhrases($"{itemTransactionBLL.AliasTableName}.TRANSACTION_TYPE='LendByMedKit'");
sqlBuilder.AppendWherePhrases($"(SYSDATE-{itemTransactionBLL.AliasTableName}.CREATE_TIME)<1");
sqlBuilder.AppendOrderPhrases($"{itemTransactionBLL.AliasTableName}.CREATE_TIME DESC");
#endregion
List<SPILItemTransaction> rlt = new List<SPILItemTransaction>();
//只读取一条主表的数据,防止其它操作记录的数据
Guid? itemTransactionKey = null;
SqlMapper.Query<ItemTransaction, Item, SPILItemTransaction, ItemLot, SPILItemTransaction>(ConnectionFactory.Current.GetSessionConnection(),
sqlBuilder.ToString(),
(it, i, spilt, il) =>
{
if (itemTransactionKey == null)
{
itemTransactionKey = it.Key;
}
if (it.Key == itemTransactionKey)
{
spilt.ItemTransaction = it;
it.Item = i;
spilt.ItemLotInfo = il;
rlt.Add(spilt);
}
return spilt;
},
new
{
roomName = roomName
},
splitOn: sqlBuilder.GetSpiltors());
return rlt;
}
} }


} }

+ 26
- 0
RDH.Data/SqlBuilder/SqlBuilder.cs View File

private List<TableJoinInfo> _listJoinInfo; private List<TableJoinInfo> _listJoinInfo;
private StringBuilder _whereBuilder; private StringBuilder _whereBuilder;
private StringBuilder _selectionBuilder; private StringBuilder _selectionBuilder;
private StringBuilder _orderBuilder;


public SqlBuilder(BaseBLL dal) public SqlBuilder(BaseBLL dal)
{ {
{ {
_whereBuilder.AppendFormat(value, paramInfo); _whereBuilder.AppendFormat(value, paramInfo);
} }
public void AppendOrderPhrases(String phrase)
{
if (_orderBuilder == null)
{
_orderBuilder = new StringBuilder();
if (!phrase.Trim().ToLower().StartsWith("order"))
{
_orderBuilder.Append(" ORDER BY");
}
}
if (_orderBuilder.Length > 9
&& !phrase.Trim().StartsWith(","))
{
_orderBuilder.Append(",");
}
else
{
_orderBuilder.Append(" ");
}
_orderBuilder.Append(phrase);
}
public void AppendSelectionTable(TableJoinInfo joinInfo) public void AppendSelectionTable(TableJoinInfo joinInfo)
{ {
if (joinInfo == null || joinInfo.LeftDal == null || joinInfo.RightDal == null) if (joinInfo == null || joinInfo.LeftDal == null || joinInfo.RightDal == null)
builder.Append(" "); builder.Append(" ");
builder.Append(_whereBuilder.ToString()); builder.Append(_whereBuilder.ToString());
} }
if (_orderBuilder != null)
{
builder.Append(_orderBuilder.ToString());
}
return builder.ToString(); return builder.ToString();
} }
} }

+ 5
- 0
Rdh.SocketServer.Client/Models/EleMedKitCommand.cs View File

/// </summary> /// </summary>
public const String RequestSupplyList = "0F"; public const String RequestSupplyList = "0F";
/// <summary> /// <summary>
/// 药箱查询借药信息
/// </summary>
public const String RequestDrugLend = "0G";
/// <summary>
/// 药箱同步时钟 /// 药箱同步时钟
/// </summary> /// </summary>
public const String RequestClock = "TT"; public const String RequestClock = "TT";
public const String ResponseRobot = "0D"; public const String ResponseRobot = "0D";
public const String ResponseReturnMedKit = "0E"; public const String ResponseReturnMedKit = "0E";
public const String ResponseSupplyList = "0F"; public const String ResponseSupplyList = "0F";
public const String ResponseDrugLend = "0G";
public const String RepsonseClock = "TT"; public const String RepsonseClock = "TT";
} }
} }

+ 24
- 0
Rdh.SocketServer.Client/Models/EleMedKitProtocol/RequestDrugLendProtocol.cs View File

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rdh.SocketServer.Client.Models
{
/// <summary>
/// 药箱查询借药信息的数据协议类
/// </summary>
public class RequestDrugLendProtocol : EleMedKitProtocol
{
public RequestDrugLendProtocol()
{
base.Command = EleMedKitCommand.RequestDrugLend;
}
public override string GetContent()
{
return base.GetContent()
+ AddLineContent(CountFlag);
}
}
}

+ 30
- 0
Rdh.SocketServer.Client/Models/EleMedKitProtocol/ResponseLendDrugProtocol.cs View File

using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rdh.SocketServer.Client.Models
{
/// <summary>
/// 表示回传借药信息的数据协议的类
/// </summary>
public class ResponseLendDrugProtocol : EleMedKitProtocol
{
public ResponseLendDrugProtocol()
{
this.Command = EleMedKitCommand.ResponseDrugLend;
CountFlag = 1.ToString();
}
public List<SimpleDrugLotProtocol>? ListLendResult { get; set; }
public string LineEnd { get => EleMedKitProtocolFlags.LineSpiltor; }
public override string GetContent()
{
return base.GetContent()
+ AddList<SimpleDrugLotProtocol>(ListLendResult)
+ AddLineContent(LineEnd)
+ AddLineContent(CountFlag);
}
}
}

+ 24
- 0
Rdh.SocketServer.Client/Models/EleMedKitProtocol/SimpleDrugLotProtocol.cs View File

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rdh.SocketServer.Client.Models
{
/// <summary>
/// 表示药品和批号信息的协议的类
/// </summary>
public class SimpleDrugLotProtocol : ModelProtocol
{
public string? Barcode { get; set; }
public string? DrugKey { get; set; }
public string? DrugLotCode { get; set; }
public override string GetContent()
{
return Barcode
+ AddBlockContent(DrugKey)
+ AddBlockContent(DrugLotCode);
}
}
}

+ 2
- 0
Rdh.SocketServer.Client/Models/EleMedKitProtocolHelper.cs View File

return new RequestMedKitReturnProtocol(); return new RequestMedKitReturnProtocol();
case EleMedKitCommand.RequestSupplyList: case EleMedKitCommand.RequestSupplyList:
return new RequestSupplyDrugProtocol(); return new RequestSupplyDrugProtocol();
case EleMedKitCommand.RequestDrugLend:
return new RequestDrugLendProtocol();
default: default:
return new UnSupportProtocol(); return new UnSupportProtocol();
} }

+ 87
- 2
Rdh.SocketServer.Client/ViewModels/MainWindowViewModel.cs View File

curTrack.TrackCode = simpleStationCode; curTrack.TrackCode = simpleStationCode;
portableStorageTrackBLL.Save(curTrack); portableStorageTrackBLL.Save(curTrack);
} }
}
}
#endregion #endregion
}
}
else
{
Log($"基站编号[{locationRequest.StationCode}]未配置手术间");
}
#endregion #endregion
} }
catch (Exception ex) catch (Exception ex)
Log("归还出错:" + ex.Message, -1); Log("归还出错:" + ex.Message, -1);
} }
break; break;
case EleMedKitCommand.RequestDrugLend:
try
{
Log("请求借药");
RequestDrugLendProtocol requestLendProtocol = (RequestDrugLendProtocol)curPocket.Data.ProtocolDataInfo;
StorageSpacePortableLink? requestStorageLink = null;
String? state = null;
using (ConnectionSessionScope conn = new ConnectionSessionScope())
{
requestStorageLink = GetRequestStorageLink(null, requestLendProtocol.EleMedKitCode, out state);
if (state != null
|| requestStorageLink == null)
{
Log("检查药箱信息不通过", -1);
break;
}
//根据药箱定位,获取最近的手术间
PortableStorageTrackBLL portableStorageTrackBLL = new PortableStorageTrackBLL();
PortableStorageTrack lastTrack = portableStorageTrackBLL.GetLastTrackByItem(requestLendProtocol.EleMedKitCode.TrimStart('0'));
if (lastTrack == null)
{
Log($"未找到药箱[{requestLendProtocol.EleMedKitCode}]最近的定位信息");
break;
}
OperationRoomBLL operationRoomBLL = new OperationRoomBLL();
RDH.Data.Models.OperationRoom currentRoom = operationRoomBLL.GetOperationRoomBySignalStation(lastTrack.TrackCode.PadLeft(3, '0'));
if (currentRoom == null)
{
Log($"未找到基站[{lastTrack.TrackCode}]配置的手术间");
break;
}
//根据手术间,获取最近的借药信息
SPILItemTransactionBLL sPILItemTransactionBLL = new SPILItemTransactionBLL();
IEnumerable<SPILItemTransaction> transactions = sPILItemTransactionBLL.ListMekKitDrugLendTransactionByRoom(currentRoom.RoomName.TrimStart('0'));
if (transactions == null || transactions.Count() == 0)
{
Log($"未找到手术间[{currentRoom.RoomName}]的借药记录");
break;
}
//生成返回信息
ResponseLendDrugProtocol response = new ResponseLendDrugProtocol();
response.EleMedKitCode = requestLendProtocol.EleMedKitCode;
response.ListLendResult = new List<SimpleDrugLotProtocol>();
foreach (SPILItemTransaction t in transactions)
{
response.ListLendResult.Add(new SimpleDrugLotProtocol
{
DrugKey = t.ItemTransaction.ItemKey.ToString(),
DrugLotCode = t.ItemLotInfo.LotNo,
Barcode = t.Ext06
});
}
responseData = response;
//更新借药成功的状态
ItemTransactionBLL itemTransactionBLL = new ItemTransactionBLL();
ItemTransaction itemTransaction = transactions.First().ItemTransaction;
itemTransaction.Ext10 = "1";
itemTransactionBLL.Update(itemTransaction);
//ResponseLendDrugProtocol response = new ResponseLendDrugProtocol();
//response.EleMedKitCode = requestLendProtocol.EleMedKitCode;
//response.ListLendResult = new List<SimpleDrugLotProtocol>();
//response.ListLendResult.Add(new SimpleDrugLotProtocol()
//{
// Barcode = "E00000000000000000000011",
// DrugKey = "81992454-f7a9-4385-aae5-78a3ce7af412",
// DrugLotCode = "20230807",
//});
//response.ListLendResult.Add(new SimpleDrugLotProtocol()
//{
// Barcode = "E00000000000000000000002",
// DrugKey = "39383086-f0aa-4ed0-bbe8-e1bf7fba719f",
// DrugLotCode = "20230817",
//});
//responseData = response;
}
}
catch (Exception ex)
{
Log("借药出错:" + ex.Message, -1);
}
break;
} }
if (responseData != null) if (responseData != null)
{ {

Loading…
Cancel
Save