126 changed files with 36820 additions and 1790 deletions
Binary file not shown.
@ -0,0 +1,188 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text.Json; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.AspNetCore.Mvc; |
||||
|
using Volo.Abp; |
||||
|
using Volo.Abp.Application.Dtos; |
||||
|
using Volo.Abp.AspNetCore.Mvc; |
||||
|
using Win_in.Sfs.Auth.Application.Contracts; |
||||
|
using Win_in.Sfs.Shared.Domain; |
||||
|
using Win_in.Sfs.Shared.Domain.Shared; |
||||
|
using Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.Pda.Controllers.Jobs.IssueJobs; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 装配叫料PDA任务
|
||||
|
/// </summary>
|
||||
|
[ApiController] |
||||
|
[Route($"{PdaHostConst.ROOT_ROUTE}job/assemble-issue")] |
||||
|
public class AssembleIssueJobsController : AbpController |
||||
|
{ |
||||
|
private readonly IAssembleIssueJobAppService _assembleIssueJobAppService; |
||||
|
|
||||
|
private readonly IUserWorkGroupAppService _userWorkGroupAppService; |
||||
|
|
||||
|
public AssembleIssueJobsController(IAssembleIssueJobAppService assembleIssueJobAppService, IUserWorkGroupAppService userWorkGroupAppService) |
||||
|
{ |
||||
|
_assembleIssueJobAppService = assembleIssueJobAppService; |
||||
|
_userWorkGroupAppService = userWorkGroupAppService; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取列表
|
||||
|
/// </summary>
|
||||
|
/// <param name="pageSize"></param>
|
||||
|
/// <param name="pageIndex"></param>
|
||||
|
/// <param name="isFinished"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("list")] |
||||
|
public virtual async Task<PagedResultDto<AssembleIssueJobDTO>> GetListAsync(int pageSize, int pageIndex, |
||||
|
bool isFinished) |
||||
|
{ |
||||
|
var status = new List<int>(); |
||||
|
if (isFinished) |
||||
|
{ |
||||
|
status.Add((int)EnumJobStatus.Done); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
status.Add((int)EnumJobStatus.Open); |
||||
|
status.Add((int)EnumJobStatus.Wait); |
||||
|
status.Add((int)EnumJobStatus.Doing); |
||||
|
status.Add((int)EnumJobStatus.Partial); |
||||
|
} |
||||
|
|
||||
|
var jsonStatus = JsonSerializer.Serialize(status); |
||||
|
|
||||
|
var request = new SfsJobRequestInputBase |
||||
|
{ |
||||
|
MaxResultCount = pageSize, |
||||
|
SkipCount = (pageIndex - 1) * pageSize, |
||||
|
Sorting = $"{nameof(ContainerJobDTO.CreationTime)} ASC", |
||||
|
Condition = new Condition |
||||
|
{ |
||||
|
Filters = new List<Filter> { new(nameof(ContainerJobDTO.JobStatus), jsonStatus, "In") } |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
var list = await _assembleIssueJobAppService.GetPagedListByFilterAsync(request, true).ConfigureAwait(false); |
||||
|
|
||||
|
return list; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 承接任务
|
||||
|
/// </summary>
|
||||
|
/// <param name="id"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("take/{id}")] |
||||
|
public virtual async Task TakeAsync(Guid id) |
||||
|
{ |
||||
|
await _assembleIssueJobAppService.AcceptAsync(id).ConfigureAwait(false); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 取消承接任务
|
||||
|
/// </summary>
|
||||
|
/// <param name="id"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("cancel-take/{id}")] |
||||
|
public virtual async Task CancelTakeAsync(Guid id) |
||||
|
{ |
||||
|
await _assembleIssueJobAppService.CancelAcceptAsync(id).ConfigureAwait(false); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 执行任务明细
|
||||
|
/// </summary>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("ExecuteDetail/{masterId}")] |
||||
|
public async Task ExecuteDetailAsync(Guid masterId, Guid detailId, AssembleIssueJobDetailDTO issueJobDetailDto) |
||||
|
{ |
||||
|
await _assembleIssueJobAppService.ExecuteDetailAsync(masterId, detailId, issueJobDetailDto).ConfigureAwait(false); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取任务数量
|
||||
|
/// </summary>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpGet("count")] |
||||
|
public virtual async Task<ActionResult<long>> CountAsync() |
||||
|
{ |
||||
|
var status = new List<int> |
||||
|
{ |
||||
|
(int)EnumJobStatus.Open, (int)EnumJobStatus.Doing, (int)EnumJobStatus.Partial, (int)EnumJobStatus.Wait |
||||
|
}; |
||||
|
var jsonStatus = JsonSerializer.Serialize(status); |
||||
|
|
||||
|
var request = new SfsJobRequestInputBase |
||||
|
{ |
||||
|
Sorting = $"{nameof(InspectJobDTO.Priority)} ASC", |
||||
|
Condition = new Condition |
||||
|
{ |
||||
|
Filters = new List<Filter> |
||||
|
{ |
||||
|
//new(nameof(InspectJobDTO.WorkGroupCode),jsonCodes,"In"),
|
||||
|
new(nameof(InspectJobDTO.JobStatus), jsonStatus, "In") |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
var count = await _assembleIssueJobAppService.GetCountByFilterAsync(request).ConfigureAwait(false); |
||||
|
|
||||
|
return Ok(count); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取任务详情
|
||||
|
/// </summary>
|
||||
|
/// <param name="id"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpGet("{id}")] |
||||
|
public virtual async Task<ActionResult<AssembleIssueJobDTO>> GetAsync(Guid id) |
||||
|
{ |
||||
|
var result = await _assembleIssueJobAppService.GetAsync(id).ConfigureAwait(false); |
||||
|
return Ok(result); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 根据Job Number 获取盘点任务列表
|
||||
|
/// </summary>
|
||||
|
/// <param name="jobNumber"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpGet("by-number/{jobNumber}")] |
||||
|
public virtual async Task<ActionResult<AssembleIssueJobDTO>> GetByNumberAsync(string jobNumber) |
||||
|
{ |
||||
|
var jobDto = await _assembleIssueJobAppService.GetByNumberAsync(jobNumber).ConfigureAwait(false); |
||||
|
if (jobDto == null) |
||||
|
{ |
||||
|
throw new UserFriendlyException($"未找到编号为 {jobNumber} 的任务"); |
||||
|
} |
||||
|
|
||||
|
var wlgCodes = await _userWorkGroupAppService.GetCodsOfCurrentUserAsync().ConfigureAwait(false); |
||||
|
if (!wlgCodes.Contains(jobDto.WorkGroupCode)) |
||||
|
{ |
||||
|
return new NotFoundObjectResult($"任务属于工作组 {jobDto.WorkGroupCode}"); |
||||
|
} |
||||
|
|
||||
|
if (jobDto.JobStatus == EnumJobStatus.Doing && jobDto.AcceptUserId != CurrentUser.Id) |
||||
|
{ |
||||
|
return new NotFoundObjectResult($"任务正在被 {jobDto.AcceptUserName} 处理"); |
||||
|
} |
||||
|
|
||||
|
return jobDto; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
///
|
||||
|
/// </summary>
|
||||
|
/// <param name="requestNumber"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("by-request-number/{requestNumber}")] |
||||
|
public virtual async Task<List<AssembleIssueJobDTO>> GetByRequestNumberAsync(string requestNumber) |
||||
|
{ |
||||
|
return await _assembleIssueJobAppService.GetByRequestNumberAsync(requestNumber).ConfigureAwait(false); |
||||
|
} |
||||
|
} |
@ -0,0 +1,188 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text.Json; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.AspNetCore.Mvc; |
||||
|
using Volo.Abp; |
||||
|
using Volo.Abp.Application.Dtos; |
||||
|
using Volo.Abp.AspNetCore.Mvc; |
||||
|
using Win_in.Sfs.Auth.Application.Contracts; |
||||
|
using Win_in.Sfs.Shared.Domain; |
||||
|
using Win_in.Sfs.Shared.Domain.Shared; |
||||
|
using Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.Pda.Controllers.Jobs.IssueJobs; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 涂装叫料PDA任务
|
||||
|
/// </summary>
|
||||
|
[ApiController] |
||||
|
[Route($"{PdaHostConst.ROOT_ROUTE}job/coating-issue")] |
||||
|
public class CoatingIssueJobsController : AbpController |
||||
|
{ |
||||
|
private readonly ICoatingIssueJobAppService _coatingIssueJobAppService; |
||||
|
|
||||
|
private readonly IUserWorkGroupAppService _userWorkGroupAppService; |
||||
|
|
||||
|
public CoatingIssueJobsController(ICoatingIssueJobAppService coatingIssueJobAppService, IUserWorkGroupAppService userWorkGroupAppService) |
||||
|
{ |
||||
|
_coatingIssueJobAppService = coatingIssueJobAppService; |
||||
|
_userWorkGroupAppService = userWorkGroupAppService; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取列表
|
||||
|
/// </summary>
|
||||
|
/// <param name="pageSize"></param>
|
||||
|
/// <param name="pageIndex"></param>
|
||||
|
/// <param name="isFinished"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("list")] |
||||
|
public virtual async Task<PagedResultDto<CoatingIssueJobDTO>> GetListAsync(int pageSize, int pageIndex, |
||||
|
bool isFinished) |
||||
|
{ |
||||
|
var status = new List<int>(); |
||||
|
if (isFinished) |
||||
|
{ |
||||
|
status.Add((int)EnumJobStatus.Done); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
status.Add((int)EnumJobStatus.Open); |
||||
|
status.Add((int)EnumJobStatus.Wait); |
||||
|
status.Add((int)EnumJobStatus.Doing); |
||||
|
status.Add((int)EnumJobStatus.Partial); |
||||
|
} |
||||
|
|
||||
|
var jsonStatus = JsonSerializer.Serialize(status); |
||||
|
|
||||
|
var request = new SfsJobRequestInputBase |
||||
|
{ |
||||
|
MaxResultCount = pageSize, |
||||
|
SkipCount = (pageIndex - 1) * pageSize, |
||||
|
Sorting = $"{nameof(ContainerJobDTO.CreationTime)} ASC", |
||||
|
Condition = new Condition |
||||
|
{ |
||||
|
Filters = new List<Filter> { new(nameof(ContainerJobDTO.JobStatus), jsonStatus, "In") } |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
var list = await _coatingIssueJobAppService.GetPagedListByFilterAsync(request, true).ConfigureAwait(false); |
||||
|
|
||||
|
return list; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 承接任务
|
||||
|
/// </summary>
|
||||
|
/// <param name="id"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("take/{id}")] |
||||
|
public virtual async Task TakeAsync(Guid id) |
||||
|
{ |
||||
|
await _coatingIssueJobAppService.AcceptAsync(id).ConfigureAwait(false); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 取消承接任务
|
||||
|
/// </summary>
|
||||
|
/// <param name="id"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("cancel-take/{id}")] |
||||
|
public virtual async Task CancelTakeAsync(Guid id) |
||||
|
{ |
||||
|
await _coatingIssueJobAppService.CancelAcceptAsync(id).ConfigureAwait(false); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 执行任务明细
|
||||
|
/// </summary>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("ExecuteDetail/{masterId}")] |
||||
|
public async Task ExecuteDetailAsync(Guid masterId, Guid detailId, CoatingIssueJobDetailDTO issueJobDetailDto) |
||||
|
{ |
||||
|
await _coatingIssueJobAppService.ExecuteDetailAsync(masterId, detailId, issueJobDetailDto).ConfigureAwait(false); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取任务数量
|
||||
|
/// </summary>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpGet("count")] |
||||
|
public virtual async Task<ActionResult<long>> CountAsync() |
||||
|
{ |
||||
|
var status = new List<int> |
||||
|
{ |
||||
|
(int)EnumJobStatus.Open, (int)EnumJobStatus.Doing, (int)EnumJobStatus.Partial, (int)EnumJobStatus.Wait |
||||
|
}; |
||||
|
var jsonStatus = JsonSerializer.Serialize(status); |
||||
|
|
||||
|
var request = new SfsJobRequestInputBase |
||||
|
{ |
||||
|
Sorting = $"{nameof(InspectJobDTO.Priority)} ASC", |
||||
|
Condition = new Condition |
||||
|
{ |
||||
|
Filters = new List<Filter> |
||||
|
{ |
||||
|
//new(nameof(InspectJobDTO.WorkGroupCode),jsonCodes,"In"),
|
||||
|
new(nameof(InspectJobDTO.JobStatus), jsonStatus, "In") |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
var count = await _coatingIssueJobAppService.GetCountByFilterAsync(request).ConfigureAwait(false); |
||||
|
|
||||
|
return Ok(count); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取任务详情
|
||||
|
/// </summary>
|
||||
|
/// <param name="id"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpGet("{id}")] |
||||
|
public virtual async Task<ActionResult<CoatingIssueJobDTO>> GetAsync(Guid id) |
||||
|
{ |
||||
|
var result = await _coatingIssueJobAppService.GetAsync(id).ConfigureAwait(false); |
||||
|
return Ok(result); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 根据Job Number 获取盘点任务列表
|
||||
|
/// </summary>
|
||||
|
/// <param name="jobNumber"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpGet("by-number/{jobNumber}")] |
||||
|
public virtual async Task<ActionResult<CoatingIssueJobDTO>> GetByNumberAsync(string jobNumber) |
||||
|
{ |
||||
|
var jobDto = await _coatingIssueJobAppService.GetByNumberAsync(jobNumber).ConfigureAwait(false); |
||||
|
if (jobDto == null) |
||||
|
{ |
||||
|
throw new UserFriendlyException($"未找到编号为 {jobNumber} 的任务"); |
||||
|
} |
||||
|
|
||||
|
var wlgCodes = await _userWorkGroupAppService.GetCodsOfCurrentUserAsync().ConfigureAwait(false); |
||||
|
if (!wlgCodes.Contains(jobDto.WorkGroupCode)) |
||||
|
{ |
||||
|
return new NotFoundObjectResult($"任务属于工作组 {jobDto.WorkGroupCode}"); |
||||
|
} |
||||
|
|
||||
|
if (jobDto.JobStatus == EnumJobStatus.Doing && jobDto.AcceptUserId != CurrentUser.Id) |
||||
|
{ |
||||
|
return new NotFoundObjectResult($"任务正在被 {jobDto.AcceptUserName} 处理"); |
||||
|
} |
||||
|
|
||||
|
return jobDto; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
///
|
||||
|
/// </summary>
|
||||
|
/// <param name="requestNumber"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("by-request-number/{requestNumber}")] |
||||
|
public virtual async Task<List<CoatingIssueJobDTO>> GetByRequestNumberAsync(string requestNumber) |
||||
|
{ |
||||
|
return await _coatingIssueJobAppService.GetByRequestNumberAsync(requestNumber).ConfigureAwait(false); |
||||
|
} |
||||
|
} |
@ -0,0 +1,135 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text.Json; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.AspNetCore.Mvc; |
||||
|
using Volo.Abp; |
||||
|
using Volo.Abp.Application.Dtos; |
||||
|
using Volo.Abp.AspNetCore.Mvc; |
||||
|
using Win_in.Sfs.Auth.Application.Contracts; |
||||
|
using Win_in.Sfs.Shared.Domain; |
||||
|
using Win_in.Sfs.Shared.Domain.Shared; |
||||
|
using Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.Pda.Controllers.Stores; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 装配叫料请求
|
||||
|
/// </summary>
|
||||
|
[ApiController] |
||||
|
[Route($"{PdaHostConst.ROOT_ROUTE}store/assemble-request")] |
||||
|
public class AssembleRequestController : AbpController |
||||
|
{ |
||||
|
private readonly IAssembleIssueRequestAppService _assembleIssueRequestAppService; |
||||
|
|
||||
|
private readonly IUserWorkGroupAppService _userWorkGroupAppService; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// </summary>
|
||||
|
/// <param name="assembleIssueRequestAppService"></param>
|
||||
|
public AssembleRequestController(IAssembleIssueRequestAppService assembleIssueRequestAppService, |
||||
|
IUserWorkGroupAppService userWorkGroupAppService) |
||||
|
{ |
||||
|
_assembleIssueRequestAppService = assembleIssueRequestAppService; |
||||
|
_userWorkGroupAppService = userWorkGroupAppService; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 装配叫料申请
|
||||
|
/// </summary>
|
||||
|
/// <param name="input"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("")] |
||||
|
public virtual async Task CreateAsync(AssembleIssueRequestEditInput input) |
||||
|
{ |
||||
|
await _assembleIssueRequestAppService.CreateAndHandleAsync(input).ConfigureAwait(false); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// </summary>
|
||||
|
/// <param name="pageSize"></param>
|
||||
|
/// <param name="pageIndex"></param>
|
||||
|
/// <param name="isFinished"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("list")] |
||||
|
public virtual async Task<PagedResultDto<AssembleIssueRequestDTO>> GetListAsync(int pageSize, int pageIndex, |
||||
|
bool isFinished) |
||||
|
{ |
||||
|
var status = new List<int>(); |
||||
|
if (isFinished) |
||||
|
{ |
||||
|
status.Add((int)EnumRequestStatus.Completed); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
status.Add((int)EnumRequestStatus.Partial); |
||||
|
status.Add((int)EnumRequestStatus.Handling); |
||||
|
status.Add((int)EnumRequestStatus.New); |
||||
|
} |
||||
|
|
||||
|
var jsonStatus = JsonSerializer.Serialize(status); |
||||
|
|
||||
|
var request = new SfsStoreRequestInputBase |
||||
|
{ |
||||
|
MaxResultCount = pageSize, |
||||
|
SkipCount = (pageIndex - 1) * pageSize, |
||||
|
Sorting = $"{nameof(AssembleIssueRequestDTO.CreationTime)} ASC", |
||||
|
Condition = new Condition |
||||
|
{ |
||||
|
Filters = new List<Filter> { new(nameof(AssembleIssueRequestDTO.RequestStatus), jsonStatus, "In") } |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
var list = await _assembleIssueRequestAppService.GetPagedListByFilterAsync(request, true).ConfigureAwait(false); |
||||
|
|
||||
|
return list; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// </summary>
|
||||
|
/// <param name="id"></param>
|
||||
|
[HttpPost("handle/{id}")] |
||||
|
public virtual async Task HandleAsync(Guid id) |
||||
|
{ |
||||
|
await _assembleIssueRequestAppService.HandleAsync(id).ConfigureAwait(false); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 根据Job Number 获取盘点任务列表
|
||||
|
/// </summary>
|
||||
|
/// <param name="requestNumber"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpGet("by-number/{requestNumber}")] |
||||
|
public virtual async Task<ActionResult<AssembleIssueRequestDTO>> GetByNumberAsync(string requestNumber) |
||||
|
{ |
||||
|
var jobDto = await _assembleIssueRequestAppService.GetByNumberAsync(requestNumber).ConfigureAwait(false); |
||||
|
if (jobDto == null) |
||||
|
{ |
||||
|
throw new UserFriendlyException($"未找到编号为 {requestNumber} 的请求"); |
||||
|
} |
||||
|
|
||||
|
return jobDto; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取任务详情
|
||||
|
/// </summary>
|
||||
|
/// <param name="id"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpGet("{id}")] |
||||
|
public virtual async Task<ActionResult<AssembleIssueRequestDTO>> GetAsync(Guid id) |
||||
|
{ |
||||
|
var result = await _assembleIssueRequestAppService.GetAsync(id).ConfigureAwait(false); |
||||
|
return Ok(result); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
///
|
||||
|
/// </summary>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("IsHasNewJob")] |
||||
|
public virtual async Task<string> IsHasNewJobAsync(string requestNumber, List<string> jobNumber) |
||||
|
{ |
||||
|
return await _assembleIssueRequestAppService.IsHasNewJobAsync(requestNumber, jobNumber).ConfigureAwait(false); |
||||
|
} |
||||
|
} |
@ -0,0 +1,135 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text.Json; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.AspNetCore.Mvc; |
||||
|
using Volo.Abp; |
||||
|
using Volo.Abp.Application.Dtos; |
||||
|
using Volo.Abp.AspNetCore.Mvc; |
||||
|
using Win_in.Sfs.Auth.Application.Contracts; |
||||
|
using Win_in.Sfs.Shared.Domain; |
||||
|
using Win_in.Sfs.Shared.Domain.Shared; |
||||
|
using Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.Pda.Controllers.Stores; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 涂装叫料请求
|
||||
|
/// </summary>
|
||||
|
[ApiController] |
||||
|
[Route($"{PdaHostConst.ROOT_ROUTE}store/coating-request")] |
||||
|
public class CoatingRequestController : AbpController |
||||
|
{ |
||||
|
private readonly ICoatingIssueRequestAppService _coatingIssueRequestAppService; |
||||
|
|
||||
|
private readonly IUserWorkGroupAppService _userWorkGroupAppService; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// </summary>
|
||||
|
/// <param name="coatingIssueRequestAppService"></param>
|
||||
|
public CoatingRequestController(ICoatingIssueRequestAppService coatingIssueRequestAppService, |
||||
|
IUserWorkGroupAppService userWorkGroupAppService) |
||||
|
{ |
||||
|
_coatingIssueRequestAppService = coatingIssueRequestAppService; |
||||
|
_userWorkGroupAppService = userWorkGroupAppService; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 涂装叫料申请
|
||||
|
/// </summary>
|
||||
|
/// <param name="input"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("")] |
||||
|
public virtual async Task CreateAsync(CoatingIssueRequestEditInput input) |
||||
|
{ |
||||
|
await _coatingIssueRequestAppService.CreateAndHandleAsync(input).ConfigureAwait(false); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// </summary>
|
||||
|
/// <param name="pageSize"></param>
|
||||
|
/// <param name="pageIndex"></param>
|
||||
|
/// <param name="isFinished"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("list")] |
||||
|
public virtual async Task<PagedResultDto<CoatingIssueRequestDTO>> GetListAsync(int pageSize, int pageIndex, |
||||
|
bool isFinished) |
||||
|
{ |
||||
|
var status = new List<int>(); |
||||
|
if (isFinished) |
||||
|
{ |
||||
|
status.Add((int)EnumRequestStatus.Completed); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
status.Add((int)EnumRequestStatus.Partial); |
||||
|
status.Add((int)EnumRequestStatus.Handling); |
||||
|
status.Add((int)EnumRequestStatus.New); |
||||
|
} |
||||
|
|
||||
|
var jsonStatus = JsonSerializer.Serialize(status); |
||||
|
|
||||
|
var request = new SfsStoreRequestInputBase |
||||
|
{ |
||||
|
MaxResultCount = pageSize, |
||||
|
SkipCount = (pageIndex - 1) * pageSize, |
||||
|
Sorting = $"{nameof(CoatingIssueRequestDTO.CreationTime)} ASC", |
||||
|
Condition = new Condition |
||||
|
{ |
||||
|
Filters = new List<Filter> { new(nameof(CoatingIssueRequestDTO.RequestStatus), jsonStatus, "In") } |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
var list = await _coatingIssueRequestAppService.GetPagedListByFilterAsync(request, true).ConfigureAwait(false); |
||||
|
|
||||
|
return list; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// </summary>
|
||||
|
/// <param name="id"></param>
|
||||
|
[HttpPost("handle/{id}")] |
||||
|
public virtual async Task HandleAsync(Guid id) |
||||
|
{ |
||||
|
await _coatingIssueRequestAppService.HandleAsync(id).ConfigureAwait(false); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 根据Job Number 获取盘点任务列表
|
||||
|
/// </summary>
|
||||
|
/// <param name="requestNumber"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpGet("by-number/{requestNumber}")] |
||||
|
public virtual async Task<ActionResult<CoatingIssueRequestDTO>> GetByNumberAsync(string requestNumber) |
||||
|
{ |
||||
|
var jobDto = await _coatingIssueRequestAppService.GetByNumberAsync(requestNumber).ConfigureAwait(false); |
||||
|
if (jobDto == null) |
||||
|
{ |
||||
|
throw new UserFriendlyException($"未找到编号为 {requestNumber} 的请求"); |
||||
|
} |
||||
|
|
||||
|
return jobDto; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取任务详情
|
||||
|
/// </summary>
|
||||
|
/// <param name="id"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpGet("{id}")] |
||||
|
public virtual async Task<ActionResult<CoatingIssueRequestDTO>> GetAsync(Guid id) |
||||
|
{ |
||||
|
var result = await _coatingIssueRequestAppService.GetAsync(id).ConfigureAwait(false); |
||||
|
return Ok(result); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
///
|
||||
|
/// </summary>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("IsHasNewJob")] |
||||
|
public virtual async Task<string> IsHasNewJobAsync(string requestNumber, List<string> jobNumber) |
||||
|
{ |
||||
|
return await _coatingIssueRequestAppService.IsHasNewJobAsync(requestNumber, jobNumber).ConfigureAwait(false); |
||||
|
} |
||||
|
} |
@ -1,15 +1,30 @@ |
|||||
|
using System; |
||||
using System.Collections.Generic; |
using System.Collections.Generic; |
||||
using System.Threading; |
using System.Threading; |
||||
using System.Threading.Tasks; |
using System.Threading.Tasks; |
||||
using Volo.Abp.Application.Dtos; |
using Volo.Abp.Application.Dtos; |
||||
using Win_in.Sfs.Wms.Store.Application.Contracts; |
|
||||
|
|
||||
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs; |
namespace Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
|
|
||||
public interface ICoatingIssueJobAppService |
public interface ICoatingIssueJobAppService |
||||
: ISfsJobAppServiceBase<CoatingIssueJobDTO, SfsJobRequestInputBase, CoatingIssueJobCheckInput, CoatingIssueJobEditInput> |
: ISfsJobAppServiceBase<CoatingIssueJobDTO, SfsJobRequestInputBase, CoatingIssueJobCheckInput, CoatingIssueJobEditInput> |
||||
{ |
{ |
||||
Task CancelByMaterialRequestAsync(string coatingIssueNumber); |
Task CancelByMaterialRequestAsync(string requestNumber); |
||||
|
|
||||
Task<List<CoatingIssueJobDTO>> GetByRequestNumberAsync(string requestNumber); |
Task<List<CoatingIssueJobDTO>> GetByRequestNumberAsync(string requestNumber); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 执行任务明细
|
||||
|
/// </summary>
|
||||
|
/// <returns></returns>
|
||||
|
Task ExecuteDetailAsync(Guid masterId, Guid detailId, CoatingIssueJobDetailDTO issueJobDetailDto); |
||||
|
|
||||
|
Task CompleteAsync(Guid id); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 请求点了完成,任务全部都完成
|
||||
|
/// </summary>
|
||||
|
/// <param name="requestNumber"></param>
|
||||
|
/// <returns></returns>
|
||||
|
Task CompleteByRequestNumberAsync(string requestNumber); |
||||
} |
} |
||||
|
@ -1,23 +1,27 @@ |
|||||
using System; |
using System; |
||||
using System.Collections.Generic; |
using System.Collections.Generic; |
||||
using System.Threading; |
|
||||
using System.Threading.Tasks; |
using System.Threading.Tasks; |
||||
using Volo.Abp.Application.Dtos; |
|
||||
|
|
||||
namespace Win_in.Sfs.Wms.Store.Application.Contracts; |
namespace Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
|
|
||||
public interface IKittingIssueJobAppService |
public interface IKittingIssueJobAppService |
||||
: ISfsJobAppServiceBase<KittingIssueJobDTO, SfsJobRequestInputBase, KittingIssueJobCheckInput, KittingIssueJobEditInput> |
: ISfsJobAppServiceBase<KittingIssueJobDTO, SfsJobRequestInputBase, KittingIssueJobCheckInput, |
||||
|
KittingIssueJobEditInput> |
||||
{ |
{ |
||||
Task CancelByMaterialRequestAsync(string requestNumber); |
|
||||
|
|
||||
Task<List<KittingIssueJobDTO>> GetByRequestNumberAsync(string requestNumber); |
Task<List<KittingIssueJobDTO>> GetByRequestNumberAsync(string requestNumber); |
||||
|
|
||||
/// <summary>
|
/// <summary>
|
||||
/// 执行任务明细
|
/// 执行任务明细
|
||||
/// </summary>
|
/// </summary>
|
||||
/// <returns></returns>
|
/// <returns></returns>
|
||||
Task ExecuteDetailAsync(Guid masterId,Guid detailId, KittingIssueJobDetailDTO issueJobDetailDto); |
Task ExecuteDetailAsync(Guid masterId, Guid detailId, KittingIssueJobDetailDTO issueJobDetailDto); |
||||
|
|
||||
Task CompleteAsync(Guid id); |
Task CompleteAsync(Guid id); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 请求点了完成,任务全部都完成
|
||||
|
/// </summary>
|
||||
|
/// <param name="requestNumber"></param>
|
||||
|
/// <returns></returns>
|
||||
|
Task CompleteByRequestNumberAsync(string requestNumber); |
||||
} |
} |
||||
|
@ -1,7 +1,11 @@ |
|||||
|
using System.Collections.Generic; |
||||
|
using System.Threading.Tasks; |
||||
|
|
||||
namespace Win_in.Sfs.Wms.Store.Application.Contracts; |
namespace Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
|
|
||||
public interface ITransferLibJobAppService |
public interface ITransferLibJobAppService |
||||
: ISfsJobAppServiceBase<TransferLibJobDTO, SfsJobRequestInputBase, TransferLibJobCheckInput, TransferLibJobEditInput> |
: ISfsJobAppServiceBase<TransferLibJobDTO, SfsJobRequestInputBase, TransferLibJobCheckInput, TransferLibJobEditInput> |
||||
{ |
{ |
||||
|
Task<List<TransferLibJobDTO>> GetByRequestNumberAsync(string requestNumber); |
||||
|
Task CompleteByRequestAsync(string requestNumber); |
||||
} |
} |
||||
|
@ -1,31 +1,20 @@ |
|||||
using Volo.Abp.Authorization.Permissions; |
using Volo.Abp.Authorization.Permissions; |
||||
using Win_in.Sfs.Wms.Store.Application.Contracts; |
|
||||
using Win_in.Sfs.Wms.Store.Domain; |
using Win_in.Sfs.Wms.Store.Domain; |
||||
|
|
||||
namespace Win_in.Sfs.Wms.Store.Notes.IssueNotes; |
namespace Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
|
|
||||
public static class CoatingIssueNotePermissions |
public static class CoatingIssueNotePermissions |
||||
{ |
{ |
||||
|
public const string Default = StorePermissions.GroupName + "." + nameof(CoatingIssueNote); |
||||
public const string Default = StorePermissions.GroupName + "." + nameof(IssueNote); |
|
||||
public const string Create = Default + "." + StorePermissions.CreateStr; |
public const string Create = Default + "." + StorePermissions.CreateStr; |
||||
public const string Update = Default + "." + StorePermissions.UpdateStr; |
public const string Update = Default + "." + StorePermissions.UpdateStr; |
||||
public const string Delete = Default + "." + StorePermissions.DeleteStr; |
public const string Delete = Default + "." + StorePermissions.DeleteStr; |
||||
|
|
||||
//自动发料记录
|
|
||||
public const string AutoIssueNote = StorePermissions.GroupName + "." + nameof(AutoIssueNote); |
|
||||
|
|
||||
//直接发料
|
|
||||
public const string DirectIssueNote = StorePermissions.GroupName + "." + nameof(DirectIssueNote); |
|
||||
|
|
||||
public static void AddCoatingIssueNotePermission(this PermissionGroupDefinition permissionGroup) |
public static void AddCoatingIssueNotePermission(this PermissionGroupDefinition permissionGroup) |
||||
{ |
{ |
||||
var issueNotePermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(IssueNote))); |
var coatingIssueNotePermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(CoatingIssueNote))); |
||||
issueNotePermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr)); |
coatingIssueNotePermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr)); |
||||
issueNotePermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr)); |
coatingIssueNotePermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr)); |
||||
issueNotePermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr)); |
coatingIssueNotePermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr)); |
||||
|
|
||||
permissionGroup.AddPermission(AutoIssueNote, StorePermissionDefinitionProvider.L(nameof(AutoIssueNote))); |
|
||||
permissionGroup.AddPermission(DirectIssueNote, StorePermissionDefinitionProvider.L(nameof(DirectIssueNote))); |
|
||||
} |
} |
||||
} |
} |
||||
|
@ -1,58 +0,0 @@ |
|||||
using System; |
|
||||
using System.ComponentModel.DataAnnotations; |
|
||||
using System.ComponentModel.DataAnnotations.Schema; |
|
||||
using Win_in.Sfs.Shared.Domain; |
|
||||
using Win_in.Sfs.Shared.Domain.Shared; |
|
||||
using Win_in.Sfs.Wms.Store.Application.Contracts; |
|
||||
|
|
||||
namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests; |
|
||||
|
|
||||
public class CoatingIssueRequestDetailDTO : SfsStoreDetailWithQtyDTOBase |
|
||||
|
|
||||
{ |
|
||||
/// <summary>
|
|
||||
/// 已发数量
|
|
||||
/// </summary>
|
|
||||
[Display(Name = "已发数量")] |
|
||||
public decimal IssuedQty { get; set; } |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// 已收数量
|
|
||||
/// </summary>
|
|
||||
[Display(Name = "已收数量")] |
|
||||
public decimal ReceivedQty { get; set; } |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// 明细状态
|
|
||||
/// </summary>
|
|
||||
[Display(Name = "明细状态")] |
|
||||
public EnumStatus Status { get; set; } |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// 请求未发
|
|
||||
/// </summary>
|
|
||||
[Display(Name = "请求未发")] |
|
||||
[NotMapped] |
|
||||
public decimal ToBeIssuedQty => Qty - IssuedQty; |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// 已发未收
|
|
||||
/// </summary>
|
|
||||
[Display(Name = "已发未收")] |
|
||||
[NotMapped] |
|
||||
public decimal ToBeReceivedQty => IssuedQty - ReceivedQty; |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// 请求未收
|
|
||||
/// </summary>
|
|
||||
[Display(Name = "请求未收")] |
|
||||
[NotMapped] |
|
||||
public decimal NotFinishQty => Qty - ReceivedQty; |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// 需求箱数量
|
|
||||
/// </summary>
|
|
||||
[Display(Name = "需求箱数量")] |
|
||||
public decimal BoxQty { get; set; } |
|
||||
|
|
||||
} |
|
@ -1,27 +1,20 @@ |
|||||
using Volo.Abp.Authorization.Permissions; |
using Volo.Abp.Authorization.Permissions; |
||||
using Win_in.Sfs.Wms.Store.Application.Contracts; |
using Win_in.Sfs.Wms.Store.Domain; |
||||
|
|
||||
namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests; |
|
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
public static class CoatingIssueRequestPermissions |
public static class CoatingIssueRequestPermissions |
||||
{ |
{ |
||||
|
|
||||
public const string Default = StorePermissions.GroupName + "." + nameof(CoatingIssueRequest); |
public const string Default = StorePermissions.GroupName + "." + nameof(CoatingIssueRequest); |
||||
public const string Create = Default + "." + StorePermissions.CreateStr; |
public const string Create = Default + "." + StorePermissions.CreateStr; |
||||
public const string Update = Default + "." + StorePermissions.UpdateStr; |
public const string Update = Default + "." + StorePermissions.UpdateStr; |
||||
public const string Delete = Default + "." + StorePermissions.DeleteStr; |
public const string Delete = Default + "." + StorePermissions.DeleteStr; |
||||
|
|
||||
//自动叫料申请
|
|
||||
public const string AutoMaterialRequest = StorePermissions.GroupName + "." + nameof(AutoMaterialRequest); |
|
||||
|
|
||||
public static void AddCoatingIssueRequestPermission(this PermissionGroupDefinition permissionGroup) |
public static void AddCoatingIssueRequestPermission(this PermissionGroupDefinition permissionGroup) |
||||
{ |
{ |
||||
var MaterialRequestPermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(CoatingIssueRequest))); |
var coatingIssueRequestPermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(CoatingIssueRequest))); |
||||
MaterialRequestPermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr)); |
coatingIssueRequestPermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr)); |
||||
MaterialRequestPermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr)); |
coatingIssueRequestPermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr)); |
||||
MaterialRequestPermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr)); |
coatingIssueRequestPermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr)); |
||||
|
|
||||
permissionGroup.AddPermission(AutoMaterialRequest, StorePermissionDefinitionProvider.L(nameof(AutoMaterialRequest))); |
|
||||
|
|
||||
} |
} |
||||
} |
} |
||||
|
@ -0,0 +1,99 @@ |
|||||
|
using System; |
||||
|
using System.ComponentModel.DataAnnotations; |
||||
|
using System.ComponentModel.DataAnnotations.Schema; |
||||
|
using Win_in.Sfs.Shared.Domain; |
||||
|
using Win_in.Sfs.Shared.Domain.Shared; |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
|
|
||||
|
public class CoatingIssueRequestDetailDTO : SfsStoreDetailWithQtyDTOBase |
||||
|
{ |
||||
|
#region 目标库位信息
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 目标库位
|
||||
|
/// </summary>
|
||||
|
[Display(Name = "目标库位")] |
||||
|
[StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] |
||||
|
public string ToLocationCode { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 目标库区
|
||||
|
/// </summary>
|
||||
|
[Display(Name = "目标库区")] |
||||
|
public string ToLocationArea { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 目标库位组
|
||||
|
/// </summary>
|
||||
|
[Display(Name = "目标库位组")] |
||||
|
public string ToLocationGroup { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 目标ERP储位
|
||||
|
/// </summary>
|
||||
|
[Display(Name = "目标ERP储位")] |
||||
|
public string ToLocationErpCode { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 目标仓库
|
||||
|
/// </summary>
|
||||
|
[Display(Name = "目标仓库")] |
||||
|
public string ToWarehouseCode { get; set; } |
||||
|
|
||||
|
#endregion
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 生产线
|
||||
|
/// </summary>
|
||||
|
public string ProdLine { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 已发数量
|
||||
|
/// </summary>
|
||||
|
public decimal IssuedQty { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 已收数量
|
||||
|
/// </summary>
|
||||
|
public decimal ReceivedQty { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 明细状态
|
||||
|
/// </summary>
|
||||
|
public EnumStatus Status { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 请求未发 还未发送的数量
|
||||
|
/// </summary>
|
||||
|
[NotMapped] |
||||
|
public decimal ToBeIssuedQty => Qty - IssuedQty; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 已发未收
|
||||
|
/// </summary>
|
||||
|
[NotMapped] |
||||
|
public decimal ToBeReceivedQty => IssuedQty - ReceivedQty; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 请求未收
|
||||
|
/// </summary>
|
||||
|
[NotMapped] |
||||
|
public decimal NotFinishQty => Qty - ReceivedQty; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 位置码
|
||||
|
/// </summary>
|
||||
|
public string PositionCode { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 推荐类型
|
||||
|
/// </summary>
|
||||
|
public EnumRecommendType RecommendType { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 需求箱数量
|
||||
|
/// </summary>
|
||||
|
[Display(Name = "需求箱数量")] |
||||
|
public decimal BoxQty { get; set; } |
||||
|
} |
@ -1,15 +1,16 @@ |
|||||
|
using System; |
||||
using System.Collections.Generic; |
using System.Collections.Generic; |
||||
using System.Threading; |
using System.Threading; |
||||
using System.Threading.Tasks; |
using System.Threading.Tasks; |
||||
using Volo.Abp.Application.Dtos; |
using Volo.Abp.Application.Dtos; |
||||
using Win_in.Sfs.Wms.Store.Application.Contracts; |
|
||||
|
|
||||
namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests; |
namespace Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
|
|
||||
public interface ICoatingIssueRequestAppService |
public interface ICoatingIssueRequestAppService |
||||
: ISfsStoreRequestMasterAppServiceBase<CoatingIssueRequestDTO, SfsStoreRequestInputBase, CoatingIssueRequestEditInput, CoatingIssueRequestDetailDTO, SfsStoreRequestInputBase> |
: ISfsStoreRequestMasterAppServiceBase<CoatingIssueRequestDTO, SfsStoreRequestInputBase, CoatingIssueRequestEditInput, CoatingIssueRequestDetailDTO, SfsStoreRequestInputBase> |
||||
|
|
||||
{ |
{ |
||||
Task<CoatingIssueRequestDTO> CreateAndHandleAsync(CoatingIssueRequestEditInput input); |
Task<CoatingIssueRequestDTO> CreateAndHandleAsync(CoatingIssueRequestEditInput input); |
||||
|
Task UpdateStatusCompletedAsync(string number); |
||||
|
Task<string> IsHasNewJobAsync(string requestNumber, List<string> jobNumber); |
||||
} |
} |
||||
|
@ -1,19 +1,19 @@ |
|||||
using System.Collections.Generic; |
using System.Collections.Generic; |
||||
using System.ComponentModel.DataAnnotations; |
using System.ComponentModel.DataAnnotations; |
||||
using Win_in.Sfs.Shared.Domain; |
using Win_in.Sfs.Shared.Domain; |
||||
using Win_in.Sfs.Wms.Store.Application.Contracts; |
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; |
||||
|
|
||||
namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests; |
namespace Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
|
|
||||
public class CoatingIssueRequestEditInput : SfsStoreRequestCreateOrUpdateInputBase |
public class CoatingIssueRequestEditInput : SfsStoreRequestCreateOrUpdateInputBase |
||||
{ |
{ |
||||
#region Base
|
#region Base
|
||||
|
|
||||
/// <summary>
|
/// <summary>
|
||||
/// 叫料类型
|
/// 叫料类型
|
||||
/// </summary>
|
/// </summary>
|
||||
[Display(Name = "叫料类型")] |
[Display(Name = "叫料类型")] |
||||
public string Type { get; set; } |
public EnumIssueRequestType IssueRequestType { get; set; } |
||||
|
|
||||
/// <summary>
|
/// <summary>
|
||||
/// 使用在途库
|
/// 使用在途库
|
@ -1,23 +1,18 @@ |
|||||
using System.ComponentModel.DataAnnotations; |
using System.ComponentModel.DataAnnotations; |
||||
using Win_in.Sfs.Shared.Application.Contracts; |
using Win_in.Sfs.Shared.Application.Contracts; |
||||
using Win_in.Sfs.Shared.Domain.Shared; |
using Win_in.Sfs.Shared.Domain.Shared; |
||||
using Win_in.Sfs.Wms.Store.Application.Contracts; |
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; |
||||
|
|
||||
namespace Win_in.Sfs.Wms.Store.Requests.MaterialRequests; |
namespace Win_in.Sfs.Wms.Store.Application.Contracts; |
||||
|
|
||||
[Display(Name = "叫料申请")] |
[Display(Name = "喷涂叫料申请导入")] |
||||
public class CoatingIssueRequestImportInput : SfsStoreImportInputBase |
public class CoatingIssueRequestImportInput : SfsStoreImportInputBase |
||||
{ |
{ |
||||
|
|
||||
/// <summary>
|
/// <summary>
|
||||
/// 叫料类型
|
/// 叫料类型
|
||||
/// </summary>
|
/// </summary>
|
||||
[Display(Name = "叫料类型")] |
[Display(Name = "叫料类型")] |
||||
[Required(ErrorMessage = "{0}是必填项")] |
public EnumIssueRequestType IssueRequestType { get; set; } |
||||
[ImporterHeader(Name = "叫料类型")] |
|
||||
[ExporterHeader(DisplayName = "叫料类型")] |
|
||||
[ValueMapping("人工拉动", EnumMaterialRequestType.Issue_Manual)] |
|
||||
public string Type { get; set; } |
|
||||
|
|
||||
/// <summary>
|
/// <summary>
|
||||
/// 物品代码
|
/// 物品代码
|
@ -1,55 +0,0 @@ |
|||||
using Volo.Abp.Timing; |
|
||||
using Win_in.Sfs.Shared.Domain.Shared; |
|
||||
using Win_in.Sfs.Wms.Store.Domain; |
|
||||
|
|
||||
namespace Win_in.Sfs.Wms.Store.Jobs.IssueJobs; |
|
||||
|
|
||||
public static class CoatingIssueExtension |
|
||||
{ |
|
||||
// public static IssueJob SetDetails(this IssueJob job,IGuidGenerator guidGenerator, LocationDTO location)
|
|
||||
// {
|
|
||||
// foreach (var detail in job.Details)
|
|
||||
// {
|
|
||||
// detail.SetIdAndNumber(guidGenerator,job.Id,job.Number);
|
|
||||
// detail.RecommendLocationCode = location.Code;
|
|
||||
// detail.SetBatch(detail.RecommendBatch);
|
|
||||
// }
|
|
||||
// return job;
|
|
||||
// }
|
|
||||
|
|
||||
public static IssueJob Init(this IssueJob job) |
|
||||
{ |
|
||||
job.JobType = EnumJobType.IssueJob; |
|
||||
job.JobStatus = EnumJobStatus.Open; |
|
||||
return job; |
|
||||
} |
|
||||
|
|
||||
public static IssueJob SetWorkGroup(this IssueJob job, string warehouseCode, string workGroupCode, string groupCode) |
|
||||
{ |
|
||||
job.WorkGroupCode = workGroupCode; |
|
||||
job.WarehouseCode = warehouseCode; |
|
||||
job.ProdLine = groupCode; |
|
||||
return job; |
|
||||
} |
|
||||
|
|
||||
public static IssueJob SetWorker(this IssueJob job, string worker) |
|
||||
{ |
|
||||
job.Worker = worker; |
|
||||
return job; |
|
||||
} |
|
||||
|
|
||||
public static IssueJob SetPriority(this IssueJob job, IClock clock) |
|
||||
{ |
|
||||
job.Priority = PriorityHelper.GetPriority(clock); |
|
||||
job.PriorityIncrement = 1; |
|
||||
return job; |
|
||||
} |
|
||||
|
|
||||
// public static IssueJob SetIdAndNumber(this IssueJob job,IGuidGenerator guidGenerator, ISnowflakeIdGenerator numberGenerator)
|
|
||||
// {
|
|
||||
// var number = (numberGenerator.CreateAsync().GetAwaiter().GetResult()).ToString();
|
|
||||
// job.SetIdAndNumber(guidGenerator, number);
|
|
||||
// return job;
|
|
||||
// }
|
|
||||
|
|
||||
} |
|
File diff suppressed because it is too large
@ -0,0 +1,319 @@ |
|||||
|
using Microsoft.EntityFrameworkCore.Migrations; |
||||
|
|
||||
|
#nullable disable |
||||
|
|
||||
|
namespace Win_in.Sfs.Wms.Store.Migrations |
||||
|
{ |
||||
|
public partial class _20240514 : Migration |
||||
|
{ |
||||
|
protected override void Up(MigrationBuilder migrationBuilder) |
||||
|
{ |
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "RequestType", |
||||
|
table: "Store_KittingIssueNote"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "RequestType", |
||||
|
table: "Store_CoatingIssueNote"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "RequestType", |
||||
|
table: "Store_AssembleIssueNote"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "RequestType", |
||||
|
table: "Job_KittingIssueJob"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "RequestType", |
||||
|
table: "Job_CoatingIssueJob"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "RequestType", |
||||
|
table: "Job_AssembleIssueJob"); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "MesBarCode", |
||||
|
table: "Store_ProductReceiptNoteDetail", |
||||
|
type: "nvarchar(64)", |
||||
|
maxLength: 64, |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "MesQuality", |
||||
|
table: "Store_ProductReceiptNoteDetail", |
||||
|
type: "nvarchar(64)", |
||||
|
maxLength: 64, |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<int>( |
||||
|
name: "EnumIssueSendType", |
||||
|
table: "Store_KittingIssueNote", |
||||
|
type: "int", |
||||
|
nullable: false, |
||||
|
defaultValue: 0); |
||||
|
|
||||
|
migrationBuilder.AddColumn<int>( |
||||
|
name: "IssueRequestType", |
||||
|
table: "Store_KittingIssueNote", |
||||
|
type: "int", |
||||
|
nullable: false, |
||||
|
defaultValue: 0); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "IdentityNo", |
||||
|
table: "Store_DeliverRequestDetail", |
||||
|
type: "nvarchar(64)", |
||||
|
maxLength: 64, |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "MesDeliveryNo", |
||||
|
table: "Store_DeliverRequestDetail", |
||||
|
type: "nvarchar(64)", |
||||
|
maxLength: 64, |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "MesDeliveryPlan", |
||||
|
table: "Store_DeliverRequestDetail", |
||||
|
type: "nvarchar(64)", |
||||
|
maxLength: 64, |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "IdentityNo", |
||||
|
table: "Store_DeliverNoteDetail", |
||||
|
type: "nvarchar(64)", |
||||
|
maxLength: 64, |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "MesDeliveryNo", |
||||
|
table: "Store_DeliverNoteDetail", |
||||
|
type: "nvarchar(64)", |
||||
|
maxLength: 64, |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "MesDeliveryPlan", |
||||
|
table: "Store_DeliverNoteDetail", |
||||
|
type: "nvarchar(64)", |
||||
|
maxLength: 64, |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<int>( |
||||
|
name: "IssueRequestType", |
||||
|
table: "Store_CoatingIssueNote", |
||||
|
type: "int", |
||||
|
nullable: false, |
||||
|
defaultValue: 0); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "ItemCode", |
||||
|
table: "Store_Chassis", |
||||
|
type: "nvarchar(max)", |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "ItemDesc1", |
||||
|
table: "Store_Chassis", |
||||
|
type: "nvarchar(max)", |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "ItemDesc2", |
||||
|
table: "Store_Chassis", |
||||
|
type: "nvarchar(max)", |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "ItemName", |
||||
|
table: "Store_Chassis", |
||||
|
type: "nvarchar(max)", |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<int>( |
||||
|
name: "EnumIssueSendType", |
||||
|
table: "Store_AssembleIssueNote", |
||||
|
type: "int", |
||||
|
nullable: false, |
||||
|
defaultValue: 0); |
||||
|
|
||||
|
migrationBuilder.AddColumn<int>( |
||||
|
name: "IssueRequestType", |
||||
|
table: "Store_AssembleIssueNote", |
||||
|
type: "int", |
||||
|
nullable: false, |
||||
|
defaultValue: 0); |
||||
|
|
||||
|
migrationBuilder.AddColumn<int>( |
||||
|
name: "EnumIssueSendType", |
||||
|
table: "Job_KittingIssueJob", |
||||
|
type: "int", |
||||
|
nullable: false, |
||||
|
defaultValue: 0); |
||||
|
|
||||
|
migrationBuilder.AddColumn<int>( |
||||
|
name: "IssueRequestType", |
||||
|
table: "Job_KittingIssueJob", |
||||
|
type: "int", |
||||
|
nullable: false, |
||||
|
defaultValue: 0); |
||||
|
|
||||
|
migrationBuilder.AddColumn<int>( |
||||
|
name: "IssueRequestType", |
||||
|
table: "Job_CoatingIssueJob", |
||||
|
type: "int", |
||||
|
nullable: false, |
||||
|
defaultValue: 0); |
||||
|
|
||||
|
migrationBuilder.AddColumn<int>( |
||||
|
name: "EnumIssueSendType", |
||||
|
table: "Job_AssembleIssueJob", |
||||
|
type: "int", |
||||
|
nullable: false, |
||||
|
defaultValue: 0); |
||||
|
|
||||
|
migrationBuilder.AddColumn<int>( |
||||
|
name: "IssueRequestType", |
||||
|
table: "Job_AssembleIssueJob", |
||||
|
type: "int", |
||||
|
nullable: false, |
||||
|
defaultValue: 0); |
||||
|
} |
||||
|
|
||||
|
protected override void Down(MigrationBuilder migrationBuilder) |
||||
|
{ |
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "MesBarCode", |
||||
|
table: "Store_ProductReceiptNoteDetail"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "MesQuality", |
||||
|
table: "Store_ProductReceiptNoteDetail"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "EnumIssueSendType", |
||||
|
table: "Store_KittingIssueNote"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "IssueRequestType", |
||||
|
table: "Store_KittingIssueNote"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "IdentityNo", |
||||
|
table: "Store_DeliverRequestDetail"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "MesDeliveryNo", |
||||
|
table: "Store_DeliverRequestDetail"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "MesDeliveryPlan", |
||||
|
table: "Store_DeliverRequestDetail"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "IdentityNo", |
||||
|
table: "Store_DeliverNoteDetail"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "MesDeliveryNo", |
||||
|
table: "Store_DeliverNoteDetail"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "MesDeliveryPlan", |
||||
|
table: "Store_DeliverNoteDetail"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "IssueRequestType", |
||||
|
table: "Store_CoatingIssueNote"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "ItemCode", |
||||
|
table: "Store_Chassis"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "ItemDesc1", |
||||
|
table: "Store_Chassis"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "ItemDesc2", |
||||
|
table: "Store_Chassis"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "ItemName", |
||||
|
table: "Store_Chassis"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "EnumIssueSendType", |
||||
|
table: "Store_AssembleIssueNote"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "IssueRequestType", |
||||
|
table: "Store_AssembleIssueNote"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "EnumIssueSendType", |
||||
|
table: "Job_KittingIssueJob"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "IssueRequestType", |
||||
|
table: "Job_KittingIssueJob"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "IssueRequestType", |
||||
|
table: "Job_CoatingIssueJob"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "EnumIssueSendType", |
||||
|
table: "Job_AssembleIssueJob"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "IssueRequestType", |
||||
|
table: "Job_AssembleIssueJob"); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "RequestType", |
||||
|
table: "Store_KittingIssueNote", |
||||
|
type: "nvarchar(64)", |
||||
|
maxLength: 64, |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "RequestType", |
||||
|
table: "Store_CoatingIssueNote", |
||||
|
type: "nvarchar(64)", |
||||
|
maxLength: 64, |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "RequestType", |
||||
|
table: "Store_AssembleIssueNote", |
||||
|
type: "nvarchar(64)", |
||||
|
maxLength: 64, |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "RequestType", |
||||
|
table: "Job_KittingIssueJob", |
||||
|
type: "nvarchar(64)", |
||||
|
maxLength: 64, |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "RequestType", |
||||
|
table: "Job_CoatingIssueJob", |
||||
|
type: "nvarchar(64)", |
||||
|
maxLength: 64, |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "RequestType", |
||||
|
table: "Job_AssembleIssueJob", |
||||
|
type: "nvarchar(64)", |
||||
|
maxLength: 64, |
||||
|
nullable: true); |
||||
|
} |
||||
|
} |
||||
|
} |
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue