using Furion.DatabaseAccessor; using Furion.DatabaseAccessor.Extensions; using Furion.DependencyInjection; using Furion.DynamicApiController; using Furion.FriendlyException; using iWare.Wms.Core; using Mapster; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System.Linq.Dynamic.Core; namespace iWare.Wms.Application { /// /// 数据收集工序配置服务 /// [ApiDescriptionSettings("自己的业务", Name = "DataCaptureConfig", Order = 100)] [Route("api/[Controller]")] public class DataCaptureConfigService : IDataCaptureConfigService, IDynamicApiController, ITransient { private readonly IRepository _dataCaptureConfigRep; public DataCaptureConfigService( IRepository dataCaptureConfigRep ) { _dataCaptureConfigRep = dataCaptureConfigRep; } /// /// 分页查询数据收集工序配置 /// /// /// [HttpGet("page")] public async Task> Page([FromQuery] DataCaptureConfigSearch input) { var dataCaptureConfigs = await _dataCaptureConfigRep.DetachedEntities .Where(!string.IsNullOrEmpty(input.EquipmentID), u => u.EquipmentID == input.EquipmentID) .Where(!string.IsNullOrEmpty(input.WorkingProcedure), u => u.WorkingProcedure == input.WorkingProcedure) .Where(!string.IsNullOrEmpty(input.DataCapturePointCode), u => u.DataCapturePointCode == input.DataCapturePointCode) .Where(!string.IsNullOrEmpty(input.DataCapturePointCname), u => u.DataCapturePointCname == input.DataCapturePointCname) .Where(input.DataCaptureType != null, u => u.DataCaptureType == input.DataCaptureType) .Where(input.DataCapturePLCType != null, u => u.DataCapturePLCType == input.DataCapturePLCType) .Where(!string.IsNullOrEmpty(input.PLCIP), u => u.PLCIP == input.PLCIP) .Where(input.PLCPort != null, u => u.PLCPort == input.PLCPort) .Where(!string.IsNullOrEmpty(input.DbNumber), u => u.DbNumber == input.DbNumber) .Where(!string.IsNullOrEmpty(input.Offset), u => u.Offset == input.Offset) .Where(!string.IsNullOrEmpty(input.DataCaptureColumnType), u => u.DataCaptureColumnType == input.DataCaptureColumnType) .Where(input.DataCaptureColumnLength != null, u => u.DataCaptureColumnLength == input.DataCaptureColumnLength) .Where(!string.IsNullOrEmpty(input.DataCaptureColumnTabelName), u => u.DataCaptureColumnTabelName == input.DataCaptureColumnTabelName) .Where(input.DataCaptureFrequency != null, u => u.DataCaptureFrequency == input.DataCaptureFrequency) .Where(input.IsFeedback != null, u => u.IsFeedback == input.IsFeedback) .OrderBy(PageInputOrder.OrderBuilder(input)) .ProjectToType() .ToADPagedListAsync(input.PageNo, input.PageSize); return dataCaptureConfigs; } /// /// 增加数据收集工序配置 /// /// /// [HttpPost("add")] public async Task Add(AddDataCaptureConfigInput input) { var dataCaptureConfig = input.Adapt(); await _dataCaptureConfigRep.InsertAsync(dataCaptureConfig); } /// /// 删除数据收集工序配置 /// /// /// [HttpPost("delete")] public async Task Delete(DeleteDataCaptureConfigInput input) { var dataCaptureConfig = await _dataCaptureConfigRep.FirstOrDefaultAsync(u => u.Id == input.Id); await _dataCaptureConfigRep.DeleteAsync(dataCaptureConfig); } /// /// 更新数据收集工序配置 /// /// /// [HttpPost("edit")] public async Task Update(UpdateDataCaptureConfigInput input) { var isExist = await _dataCaptureConfigRep.AnyAsync(u => u.Id == input.Id, false); if (!isExist) throw Oops.Oh(ErrorCode.D3000); var dataCaptureConfig = input.Adapt(); await _dataCaptureConfigRep.UpdateAsync(dataCaptureConfig,ignoreNullValues:true); } /// /// 获取数据收集工序配置 /// /// /// [HttpGet("detail")] public async Task Get([FromQuery] QueryeDataCaptureConfigInput input) { return (await _dataCaptureConfigRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt(); } /// /// 获取数据收集工序配置列表 /// /// /// [HttpGet("list")] public async Task> List([FromQuery] DataCaptureConfigInput input) { return await _dataCaptureConfigRep.DetachedEntities.ProjectToType().ToListAsync(); } } }