using Furion.DatabaseAccessor; using Furion.DatabaseAccessor.Extensions; using Furion.DependencyInjection; using Furion.DynamicApiController; using Furion.Extras.iWare.Wms.Util.LowCode.Front.Code; 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 { /// /// 工件出库下线信息服务 /// //[Route("api")] [ApiDescriptionSettings("自己的业务", Name = "WorkPieceUnLine", Order = 100)] [Route("api/[Controller]")] [DisableOpLog] public class WorkPieceUnLineService : IWorkPieceUnLineService, IDynamicApiController, ITransient { private readonly IRepository _WorkPieceUnLineRep; private readonly IRepository _workPieceInfoRep; public WorkPieceUnLineService( IRepository workPieceInfoRep, IRepository WorkPieceUnLineRep ) { _workPieceInfoRep = workPieceInfoRep; _WorkPieceUnLineRep = WorkPieceUnLineRep; } /// /// 分页查询工件出库下线信息 /// /// /// [HttpGet("page")] public async Task> Page([FromQuery] WorkPieceUnLineSearch input) { var WorkPieceUnLines = await _WorkPieceUnLineRep.DetachedEntities .Where(!string.IsNullOrEmpty(input.WorkPieceID), u => u.WorkPieceID.Contains(input.WorkPieceID)) .Where(!string.IsNullOrEmpty(input.OP80NewCode), u => u.OP80NewCode.Contains(input.OP80NewCode)) .Where(!string.IsNullOrEmpty(input.StartTimeBeginTime.ToString()), u => u.CreatedTime >= input.StartTimeBeginTime) .Where(!string.IsNullOrEmpty(input.StartTimeEndTime.ToString()), u => u.CreatedTime <= input.StartTimeEndTime) .OrderBy(PageInputOrder.OrderBuilder(input)) .ProjectToType() .ToADPagedListAsync(input.PageNo, input.PageSize); return WorkPieceUnLines; } /// /// 获取工件出库下线信息 /// /// /// [HttpGet("detail")] public async Task Get([FromQuery] QueryeWorkPieceUnLineInput input) { return (await _WorkPieceUnLineRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt(); } /// /// 获取工件出库下线信息列表 /// /// /// [HttpGet("list")] public async Task> List([FromQuery] WorkPieceUnLineInput input) { return await _WorkPieceUnLineRep.DetachedEntities.ProjectToType().ToListAsync(); } /// /// 撤销工件出库下线信息 /// /// /// [HttpPost("revoke")] [UnitOfWork] public async Task Revoke(List input) { foreach (var item in input) { var WorkPieceUnLine = await _WorkPieceUnLineRep.FirstOrDefaultAsync(u => u.Id == item.Id); if (WorkPieceUnLine == null) { throw Oops.Oh("工件出库下线信息不存在"); } WorkPieceUnLine.IsDeleted = true; WorkPieceUnLine.Remark = WorkPieceUnLine.Remark ?? "" + "撤销发货"; await _WorkPieceUnLineRep.UpdateAsync(WorkPieceUnLine); var workPiece = await _workPieceInfoRep.FirstOrDefaultAsync(u => u.WorkPieceID == WorkPieceUnLine.WorkPieceID); if (workPiece != null) { workPiece.OutPerson = CurrentUserInfo.Name; workPiece.OutRemark = "撤销工件出库下线"; workPiece.OutTime = DateTime.Now; workPiece.IsOut = false; await _workPieceInfoRep.UpdateAsync(workPiece); } } } } }