You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
389 lines
18 KiB
389 lines
18 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text.Json;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
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;
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
[ApiController]
|
|
[Route($"{PdaHostConst.ROOT_ROUTE}job/count")]
|
|
|
|
public class JobController : AbpController
|
|
{
|
|
private readonly IUserWorkGroupAppService _userWorkGroupAppService;
|
|
private readonly ICountJobAppService _countJobAppService;
|
|
private readonly IDeliverJobAppService _deliverJobAppService;
|
|
private readonly IInspectJobAppService _inspectJobAppService;
|
|
private readonly IIssueJobAppService _issueJobAppService;
|
|
private readonly IProductReceiveJobAppService _productReceiveJobAppService;
|
|
private readonly IPurchaseReceiptJobAppService _purchaseReceiptJobAppService;
|
|
private readonly IPurchaseReturnJobAppService _purchaseReturnJobAppService;
|
|
private readonly IPutawayJobAppService _putawayJobAppService;
|
|
private readonly IProductionReturnJobAppService _productionReturnJobAppService;
|
|
private readonly IThirdLocationJobAppService _thirdLocationJobAppService;
|
|
private readonly IContainerJobAppService _containerJobAppService;
|
|
private readonly IInjectionIssueJobAppService _injectionIssueJobAppService;
|
|
private readonly IInjectionPlanJobAppService _injectionPlanJobAppService;
|
|
private readonly ICoatingIssueJobAppService _coatingIssueJobAppService;
|
|
private readonly IAssembleIssueJobAppService _assembleIssueJobAppService;
|
|
private readonly IKittingIssueJobAppService _kittingIssueJobAppService;
|
|
private readonly ISparePartIssueJobAppService _sparePartIssueJobAppService;
|
|
private readonly IUnplannedIssueJobAppService _unplannedIssueJobAppService;
|
|
private readonly IUnplannedReceiptJobAppService _unplannedReceiptJobAppService;
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="userWorkGroupAppService"></param>
|
|
/// <param name="countJobAppService"></param>
|
|
/// <param name="deliverJobAppService"></param>
|
|
/// <param name="inspectJobAppService"></param>
|
|
/// <param name="issueJobAppService"></param>
|
|
/// <param name="productReceiveJobAppService"></param>
|
|
/// <param name="purchaseReceiptJobAppService"></param>
|
|
/// <param name="purchaseReturnJobAppService"></param>
|
|
/// <param name="putawayJobAppService"></param>
|
|
/// <param name="productionReturnJobAppService"></param>
|
|
public JobController(IUserWorkGroupAppService userWorkGroupAppService,
|
|
ICountJobAppService countJobAppService,
|
|
IDeliverJobAppService deliverJobAppService,
|
|
IInspectJobAppService inspectJobAppService,
|
|
IIssueJobAppService issueJobAppService,
|
|
IProductReceiveJobAppService productReceiveJobAppService,
|
|
IPurchaseReceiptJobAppService purchaseReceiptJobAppService,
|
|
IPurchaseReturnJobAppService purchaseReturnJobAppService,
|
|
IPutawayJobAppService putawayJobAppService,
|
|
IProductionReturnJobAppService productionReturnJobAppService,
|
|
IThirdLocationJobAppService thirdLocationJobAppService,
|
|
IContainerJobAppService containerJobAppService,
|
|
IInjectionIssueJobAppService injectionIssueJobAppService,
|
|
IInjectionPlanJobAppService injectionPlanJobAppService,
|
|
ICoatingIssueJobAppService coatingIssueJobAppService,
|
|
IAssembleIssueJobAppService assembleIssueJobAppService,
|
|
IKittingIssueJobAppService kittingIssueJobAppService,
|
|
ISparePartIssueJobAppService sparePartIssueJobAppService,
|
|
IUnplannedIssueJobAppService unplannedIssueJobAppService,
|
|
IUnplannedReceiptJobAppService unplannedReceiptJobAppService)
|
|
{
|
|
_userWorkGroupAppService = userWorkGroupAppService;
|
|
_countJobAppService = countJobAppService;
|
|
_deliverJobAppService = deliverJobAppService;
|
|
_inspectJobAppService = inspectJobAppService;
|
|
_issueJobAppService = issueJobAppService;
|
|
_productReceiveJobAppService = productReceiveJobAppService;
|
|
_purchaseReceiptJobAppService = purchaseReceiptJobAppService;
|
|
_purchaseReturnJobAppService = purchaseReturnJobAppService;
|
|
_putawayJobAppService = putawayJobAppService;
|
|
_productionReturnJobAppService = productionReturnJobAppService;
|
|
_thirdLocationJobAppService = thirdLocationJobAppService;
|
|
_containerJobAppService = containerJobAppService;
|
|
_injectionIssueJobAppService = injectionIssueJobAppService;
|
|
_injectionPlanJobAppService = injectionPlanJobAppService;
|
|
_coatingIssueJobAppService = coatingIssueJobAppService;
|
|
_assembleIssueJobAppService = assembleIssueJobAppService;
|
|
_kittingIssueJobAppService = kittingIssueJobAppService;
|
|
_sparePartIssueJobAppService = sparePartIssueJobAppService;
|
|
_unplannedIssueJobAppService = unplannedIssueJobAppService;
|
|
_unplannedReceiptJobAppService = unplannedReceiptJobAppService;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取全部任务数量统计
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[HttpGet("get-job-count/{isToday}")]
|
|
public virtual async Task<ListResultDto<JobCountDto>> CountAsync(Guid userId ,bool isToday)
|
|
{
|
|
var wlgCodes = await _userWorkGroupAppService.GetUserWorkGroupAsync(userId).ConfigureAwait(false);
|
|
var jsonCodes = JsonSerializer.Serialize(wlgCodes.Select(p=>p.WorkGroupCode));
|
|
|
|
var status = new List<EnumJobStatus>() { EnumJobStatus.Open,EnumJobStatus.Doing, EnumJobStatus.Partial};
|
|
var jsonStatus = JsonSerializer.Serialize(status);
|
|
|
|
var list = new List<JobCountDto>();
|
|
//盘点有箱码 (原料盘点)
|
|
var countJobs_ByPackingCode = await _countJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
{
|
|
Condition = new Condition
|
|
{
|
|
Filters = new List<Filter>
|
|
{
|
|
new(nameof(CountJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
new(nameof(CountJobDTO.JobStatus),jsonStatus,"In"),
|
|
new(nameof(CountJobDTO.InventoryMode),EnumInventoryMode.ByPackingCode.ToString())
|
|
}
|
|
}
|
|
}).ConfigureAwait(false);
|
|
list.Add(new JobCountDto { JobType = EnumJobType.CountJob_ByPackingCode, Count = countJobs_ByPackingCode });
|
|
//盘点无箱码 (成品盘点)
|
|
var countJobs_ByErpItemCode = await _countJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
{
|
|
Condition = new Condition
|
|
{
|
|
Filters = new List<Filter>
|
|
{
|
|
new(nameof(CountJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
new(nameof(CountJobDTO.JobStatus),jsonStatus,"In"),
|
|
new(nameof(CountJobDTO.InventoryMode),EnumInventoryMode.ByErpItemCode.ToString())
|
|
}
|
|
}
|
|
}).ConfigureAwait(false);
|
|
list.Add(new JobCountDto { JobType = EnumJobType.CountJob_ByErpItemCode, Count = countJobs_ByErpItemCode });
|
|
//成品发运
|
|
var deliverJobs = await _deliverJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
{
|
|
Condition = new Condition
|
|
{
|
|
Filters = new List<Filter>
|
|
{
|
|
new(nameof(DeliverJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
new(nameof(DeliverJobDTO.JobStatus),jsonStatus,"In")
|
|
}
|
|
}
|
|
}).ConfigureAwait(false);
|
|
list.Add(new JobCountDto { JobType = EnumJobType.DeliverJob, Count = deliverJobs });
|
|
//检验
|
|
//var inspectJobs = await _inspectJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
//{
|
|
// Condition = new Condition
|
|
// {
|
|
// Filters = new List<Filter>
|
|
// {
|
|
// new(nameof(InspectJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
// new(nameof(InspectJobDTO.JobStatus),jsonStatus,"In")
|
|
// }
|
|
// }
|
|
//}).ConfigureAwait(false);
|
|
//list.Add(new JobCountDto { JobType = EnumJobType.InspectJob, Count = inspectJobs });
|
|
//发料
|
|
//var issueJobs = await _issueJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
//{
|
|
// Condition = new Condition
|
|
// {
|
|
// Filters = new List<Filter>
|
|
// {
|
|
// new(nameof(IssueJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
// new(nameof(IssueJobDTO.JobStatus),jsonStatus,"In")
|
|
// }
|
|
// }
|
|
//}).ConfigureAwait(false);
|
|
//list.Add(new JobCountDto { JobType = EnumJobType.IssueJob, Count = issueJobs });
|
|
////完工收货
|
|
//var productReceiveJobs = await _productReceiveJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
//{
|
|
// Condition = new Condition
|
|
// {
|
|
// Filters = new List<Filter>
|
|
// {
|
|
// new(nameof(ProductReceiveJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
// new(nameof(ProductReceiveJobDTO.JobStatus),jsonStatus,"In")
|
|
// }
|
|
// }
|
|
//}).ConfigureAwait(false);
|
|
//list.Add(new JobCountDto { JobType = EnumJobType.ProductReceiveJob, Count = productReceiveJobs });
|
|
//采购收货
|
|
var purchaseReceiptJobRequest = new SfsJobRequestInputBase
|
|
{
|
|
Condition = new Condition
|
|
{
|
|
Filters = new List<Filter>
|
|
{
|
|
new(nameof(PurchaseReceiptJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
new(nameof(PurchaseReceiptJobDTO.JobStatus),jsonStatus,"In")
|
|
}
|
|
}
|
|
};
|
|
if (isToday)//只看当日
|
|
{
|
|
purchaseReceiptJobRequest.Condition.Filters.Add(new Filter(nameof(PurchaseReceiptJobDTO.PlanArriveDate), Clock.Now.ToString("yyyy-MM-dd"), ">=", "And"));
|
|
purchaseReceiptJobRequest.Condition.Filters.Add(new Filter(nameof(PurchaseReceiptJobDTO.PlanArriveDate), Clock.Now.AddDays(1).ToString("yyyy-MM-dd"), "<=", "And"));
|
|
}
|
|
var purchaseReceiptJobs = await _purchaseReceiptJobAppService.GetCountByFilterAsync(purchaseReceiptJobRequest).ConfigureAwait(false);
|
|
list.Add(new JobCountDto { JobType = EnumJobType.PurchaseReceiptJob, Count = purchaseReceiptJobs });
|
|
//采购退货
|
|
var purchaseReturnJobs = await _purchaseReturnJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
{
|
|
Condition = new Condition
|
|
{
|
|
Filters = new List<Filter>
|
|
{
|
|
new(nameof(PurchaseReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
new(nameof(PurchaseReturnJobDTO.JobStatus),jsonStatus,"In")
|
|
}
|
|
}
|
|
}).ConfigureAwait(false);
|
|
list.Add(new JobCountDto { JobType = EnumJobType.PurchaseReturnJob, Count = purchaseReturnJobs });
|
|
//上架
|
|
var putawayJobs = await _putawayJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
{
|
|
Condition = new Condition
|
|
{
|
|
Filters = new List<Filter>
|
|
{
|
|
new(nameof(PutawayJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
new(nameof(PutawayJobDTO.JobStatus),jsonStatus,"In")
|
|
}
|
|
}
|
|
}).ConfigureAwait(false);
|
|
list.Add(new JobCountDto { JobType = EnumJobType.PutawayJob, Count = putawayJobs });
|
|
//生产退库
|
|
var productionReturnJobs = await _productionReturnJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
{
|
|
Condition = new Condition
|
|
{
|
|
Filters = new List<Filter>
|
|
{
|
|
new(nameof(ProductionReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
new(nameof(ProductionReturnJobDTO.JobStatus),jsonStatus,"In")
|
|
}
|
|
}
|
|
}).ConfigureAwait(false);
|
|
list.Add(new JobCountDto { JobType = EnumJobType.ProductionReturnJob, Count = productionReturnJobs });
|
|
//三方库
|
|
var thirdLocationJobs = await _thirdLocationJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
{
|
|
Condition = new Condition
|
|
{
|
|
Filters = new List<Filter>
|
|
{
|
|
new(nameof(ProductionReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
new(nameof(ProductionReturnJobDTO.JobStatus),jsonStatus,"In")
|
|
}
|
|
}
|
|
}).ConfigureAwait(false);
|
|
list.Add(new JobCountDto { JobType = EnumJobType.ThirdLocationJob, Count = thirdLocationJobs });
|
|
//空器具库移
|
|
var containerTransferJob = await _containerJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
{
|
|
Condition = new Condition
|
|
{
|
|
Filters = new List<Filter>
|
|
{
|
|
new(nameof(ProductionReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
new(nameof(ProductionReturnJobDTO.JobStatus),jsonStatus,"In")
|
|
}
|
|
}
|
|
}).ConfigureAwait(false);
|
|
list.Add(new JobCountDto { JobType = EnumJobType.ContainerTransferJob, Count = containerTransferJob });
|
|
//注塑发料
|
|
var injectionIssueJob = await _injectionIssueJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
{
|
|
Condition = new Condition
|
|
{
|
|
Filters = new List<Filter>
|
|
{
|
|
new(nameof(ProductionReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
new(nameof(ProductionReturnJobDTO.JobStatus),jsonStatus,"In")
|
|
}
|
|
}
|
|
}).ConfigureAwait(false);
|
|
list.Add(new JobCountDto { JobType = EnumJobType.InjectionIssueJob, Count = injectionIssueJob });
|
|
//注塑计划
|
|
var injectionPlanJob = await _injectionPlanJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
{
|
|
Condition = new Condition
|
|
{
|
|
Filters = new List<Filter>
|
|
{
|
|
new(nameof(ProductionReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
new(nameof(ProductionReturnJobDTO.JobStatus),jsonStatus,"In")
|
|
}
|
|
}
|
|
}).ConfigureAwait(false);
|
|
list.Add(new JobCountDto { JobType = EnumJobType.InjectionPlanJob, Count = injectionPlanJob });
|
|
//喷涂发料
|
|
var coatingIssueJob = await _coatingIssueJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
{
|
|
Condition = new Condition
|
|
{
|
|
Filters = new List<Filter>
|
|
{
|
|
new(nameof(ProductionReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
new(nameof(ProductionReturnJobDTO.JobStatus),jsonStatus,"In")
|
|
}
|
|
}
|
|
}).ConfigureAwait(false);
|
|
list.Add(new JobCountDto { JobType = EnumJobType.CoatingIssueJob, Count = coatingIssueJob });
|
|
//装配发料
|
|
var assembleIssueJob = await _assembleIssueJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
{
|
|
Condition = new Condition
|
|
{
|
|
Filters = new List<Filter>
|
|
{
|
|
new(nameof(ProductionReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
new(nameof(ProductionReturnJobDTO.JobStatus),jsonStatus,"In")
|
|
}
|
|
}
|
|
}).ConfigureAwait(false);
|
|
list.Add(new JobCountDto { JobType = EnumJobType.AssembleIssueJob, Count = assembleIssueJob });
|
|
//kitting发料
|
|
var kittingIssueJob = await _kittingIssueJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
{
|
|
Condition = new Condition
|
|
{
|
|
Filters = new List<Filter>
|
|
{
|
|
new(nameof(ProductionReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
new(nameof(ProductionReturnJobDTO.JobStatus),jsonStatus,"In")
|
|
}
|
|
}
|
|
}).ConfigureAwait(false);
|
|
list.Add(new JobCountDto { JobType = EnumJobType.KittingIssueJob, Count = kittingIssueJob });
|
|
//备品发料
|
|
var sparePartIssueJob = await _sparePartIssueJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
{
|
|
Condition = new Condition
|
|
{
|
|
Filters = new List<Filter>
|
|
{
|
|
new(nameof(ProductionReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
new(nameof(ProductionReturnJobDTO.JobStatus),jsonStatus,"In")
|
|
}
|
|
}
|
|
}).ConfigureAwait(false);
|
|
list.Add(new JobCountDto { JobType = EnumJobType.SparePartIssueJob, Count = sparePartIssueJob });
|
|
|
|
//非生产领料
|
|
var unplannedIssueJobAppService = await _unplannedIssueJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
{
|
|
Condition = new Condition
|
|
{
|
|
Filters = new List<Filter>
|
|
{
|
|
new(nameof(ProductionReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
new(nameof(ProductionReturnJobDTO.JobStatus),jsonStatus,"In")
|
|
}
|
|
}
|
|
}).ConfigureAwait(false);
|
|
list.Add(new JobCountDto { JobType = EnumJobType.SparePartIssueJob, Count = sparePartIssueJob });
|
|
|
|
//非生产退料
|
|
var unplannedreceiptJobAppService = await _unplannedReceiptJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
|
|
{
|
|
Condition = new Condition
|
|
{
|
|
Filters = new List<Filter>
|
|
{
|
|
new(nameof(ProductionReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
|
|
new(nameof(ProductionReturnJobDTO.JobStatus),jsonStatus,"In")
|
|
}
|
|
}
|
|
}).ConfigureAwait(false);
|
|
list.Add(new JobCountDto { JobType = EnumJobType.SparePartIssueJob, Count = sparePartIssueJob });
|
|
|
|
|
|
return new ListResultDto<JobCountDto>(list);
|
|
}
|
|
}
|
|
|