using Admin.NET.Plugin.AiDOP.Dto.S0.Manufacturing;
using Admin.NET.Plugin.AiDOP.Entity.S0.Manufacturing;
using Admin.NET.Plugin.AiDOP.Infrastructure;
namespace Admin.NET.Plugin.AiDOP.Controllers.S0.Manufacturing;
///
/// 前处理要素参数独立资源。
///
[ApiController]
[Route("api/s0/manufacturing/preprocess-element-params")]
[AllowAnonymous]
[NonUnify]
public class AdoS0MfgPreprocessElementParamsController : ControllerBase
{
private readonly SqlSugarRepository _rep;
public AdoS0MfgPreprocessElementParamsController(SqlSugarRepository rep)
{
_rep = rep;
}
[HttpGet]
public async Task GetPagedAsync([FromQuery] AdoS0MfgPreprocessElementParamQueryDto q)
{
var page = q.Page;
var pageSize = q.PageSize;
(page, pageSize) = PagingGuard.Normalize(page, pageSize);
var domain = q.Domain.Trim();
var query = _rep.AsQueryable()
.Where(x => x.Domain == domain)
.WhereIF(!string.IsNullOrWhiteSpace(q.Keyword),
x => x.DeviceNumber.Contains(q.Keyword!)
|| (x.DeviceDescr != null && x.DeviceDescr.Contains(q.Keyword!))
|| x.MessageCode.Contains(q.Keyword!)
|| (x.CodeDescr != null && x.CodeDescr.Contains(q.Keyword!)));
var total = await query.CountAsync();
var list = await query
.OrderByDescending(x => x.UpdateTime ?? x.CreateTime)
.Skip((page - 1) * pageSize)
.Take(pageSize)
.ToListAsync();
return Ok(new { total, page, pageSize, list });
}
[HttpGet("{id:long}")]
public async Task GetAsync(long id)
{
var item = await _rep.GetByIdAsync(id);
return item == null ? NotFound() : Ok(item);
}
[HttpPost]
public async Task CreateAsync([FromBody] AdoS0MfgPreprocessElementParamUpsertDto dto)
{
var now = DateTime.Now;
var entity = new AdoS0MfgPreprocessElementParam
{
Domain = dto.Domain.Trim(),
DeviceNumber = dto.DeviceNumber.Trim(),
DeviceDescr = dto.DeviceDescr,
MessageCode = dto.MessageCode.Trim(),
CodeDescr = dto.CodeDescr,
ValueType = dto.ValueType,
UM = dto.UM,
StdValue = dto.StdValue,
TopLimit = dto.TopLimit,
LowLimit = dto.LowLimit,
Ufld1 = dto.Ufld1,
CreateUser = dto.CreateUser ?? dto.UpdateUser,
CreateTime = dto.CreateTime ?? dto.UpdateTime ?? now,
UpdateUser = dto.UpdateUser,
UpdateTime = dto.UpdateTime
};
await _rep.AsInsertable(entity).ExecuteReturnEntityAsync();
return Ok(entity);
}
[HttpPut("{id:long}")]
public async Task UpdateAsync(long id, [FromBody] AdoS0MfgPreprocessElementParamUpsertDto dto)
{
var entity = await _rep.GetByIdAsync(id);
if (entity == null) return NotFound();
entity.Domain = dto.Domain.Trim();
entity.DeviceNumber = dto.DeviceNumber.Trim();
entity.DeviceDescr = dto.DeviceDescr;
entity.MessageCode = dto.MessageCode.Trim();
entity.CodeDescr = dto.CodeDescr;
entity.ValueType = dto.ValueType;
entity.UM = dto.UM;
entity.StdValue = dto.StdValue;
entity.TopLimit = dto.TopLimit;
entity.LowLimit = dto.LowLimit;
entity.Ufld1 = dto.Ufld1;
entity.UpdateUser = dto.UpdateUser;
entity.UpdateTime = dto.UpdateTime ?? DateTime.Now;
await _rep.AsUpdateable(entity).ExecuteCommandAsync();
return Ok(entity);
}
[HttpDelete("{id:long}")]
public async Task DeleteAsync(long id)
{
var item = await _rep.GetByIdAsync(id);
if (item == null) return NotFound();
await _rep.DeleteAsync(item);
return Ok(new { message = "删除成功" });
}
}