using System; using System.Collections.Generic; using System.Linq; using System.Text; using SlnMesnac.Model.domain; using SlnMesnac.Repository.service; using SlnMesnac.Repository.service.ScanLog; using TouchSocket.Core; using TouchSocket.Rpc; using TouchSocket.WebApi; namespace SlnMesnac.TouchSocket { public class ApiServer : RpcServer { private readonly IScanLogService _scanService; private readonly IBaseCodeService _baseCodeService; public Action? ScanLogSocketAction; //Update By WenJY 2024-09-19将返回值改为ScanLogModel public Action? ScanStatusSocketAction; public ApiServer(IScanLogService scanService, IBaseCodeService baseCodeService) { _scanService = scanService; _baseCodeService = baseCodeService; } /// /// 扫描的状态回传 /// /// /// /// [EnableCors("cors")] [WebApi(HttpMethodType.POST)] public Back ScanStatus(ScanStatusSocket scanStatus) { if (scanStatus.is_alarm == 1 && scanStatus.device_status != null && scanStatus.device_status.Count > 0) { List ls = new List(); var baseCodes = _baseCodeService.QuListCache(); foreach (var baseCode in scanStatus.device_status) { var enBaseCode = baseCodes.FirstOrDefault(x=>x.Code==baseCode); if (enBaseCode != null) { ls.Add(enBaseCode.State); } } scanStatus.status_txt = ls; } ScanStatusSocketAction?.Invoke(scanStatus); return new Back(); } /// /// 入库开始 /// /// /// /// [EnableCors("cors")] [WebApi(HttpMethodType.POST)] public Back ScanBack(ScanLogSocket scanStatus) { var scan = new ScanLogModel() { CreateTime = scanStatus.CreateTime, DataType = scanStatus.data_type, Code = scanStatus.code, Rfid = scanStatus.rfid, Ocr = scanStatus.ocr, Url = scanStatus.url }; ScanLogSocketAction?.Invoke(scan); //Update By WenJY 2024-09-19将返回值改为ScanLogModel _scanService.Insert(scan); return new Back(); } } }