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.

390 lines
18 KiB

using System;
2 years ago
using System.Collections.Generic;
using System.Linq;
2 years ago
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;
11 months ago
private readonly IThirdLocationJobAppService _thirdLocationJobAppService;
11 months ago
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;
2 years ago
/// <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,
11 months ago
IProductionReturnJobAppService productionReturnJobAppService,
11 months ago
IThirdLocationJobAppService thirdLocationJobAppService,
IContainerJobAppService containerJobAppService,
IInjectionIssueJobAppService injectionIssueJobAppService,
IInjectionPlanJobAppService injectionPlanJobAppService,
ICoatingIssueJobAppService coatingIssueJobAppService,
IAssembleIssueJobAppService assembleIssueJobAppService,
IKittingIssueJobAppService kittingIssueJobAppService,
ISparePartIssueJobAppService sparePartIssueJobAppService,
IUnplannedIssueJobAppService unplannedIssueJobAppService,
IUnplannedReceiptJobAppService unplannedReceiptJobAppService)
2 years ago
{
_userWorkGroupAppService = userWorkGroupAppService;
_countJobAppService = countJobAppService;
_deliverJobAppService = deliverJobAppService;
_inspectJobAppService = inspectJobAppService;
_issueJobAppService = issueJobAppService;
_productReceiveJobAppService = productReceiveJobAppService;
_purchaseReceiptJobAppService = purchaseReceiptJobAppService;
_purchaseReturnJobAppService = purchaseReturnJobAppService;
_putawayJobAppService = putawayJobAppService;
_productionReturnJobAppService = productionReturnJobAppService;
11 months ago
_thirdLocationJobAppService = thirdLocationJobAppService;
11 months ago
_containerJobAppService = containerJobAppService;
_injectionIssueJobAppService = injectionIssueJobAppService;
_injectionPlanJobAppService = injectionPlanJobAppService;
_coatingIssueJobAppService = coatingIssueJobAppService;
_assembleIssueJobAppService = assembleIssueJobAppService;
_kittingIssueJobAppService = kittingIssueJobAppService;
_sparePartIssueJobAppService = sparePartIssueJobAppService;
_unplannedIssueJobAppService = unplannedIssueJobAppService;
_unplannedReceiptJobAppService = unplannedReceiptJobAppService;
2 years ago
}
/// <summary>
/// 获取全部任务数量统计
/// </summary>
/// <returns></returns>
[HttpGet("get-job-count/{isToday}")]
public virtual async Task<ListResultDto<JobCountDto>> CountAsync(Guid userId ,bool isToday)
2 years ago
{
var wlgCodes = await _userWorkGroupAppService.GetUserWorkGroupAsync(userId).ConfigureAwait(false);
var jsonCodes = JsonSerializer.Serialize(wlgCodes.Select(p=>p.WorkGroupCode));
2 years ago
11 months ago
var status = new List<EnumJobStatus>() { EnumJobStatus.Open,EnumJobStatus.Doing, EnumJobStatus.Partial};
2 years ago
var jsonStatus = JsonSerializer.Serialize(status);
var list = new List<JobCountDto>();
11 months ago
//盘点有箱码 (原料盘点)
var countJobs_ByPackingCode = await _countJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
2 years ago
{
Condition = new Condition
{
Filters = new List<Filter>
{
new(nameof(CountJobDTO.WorkGroupCode),jsonCodes,"In"),
11 months ago
new(nameof(CountJobDTO.JobStatus),jsonStatus,"In"),
new(nameof(CountJobDTO.InventoryMode),EnumInventoryMode.ByPackingCode.ToString())
2 years ago
}
}
}).ConfigureAwait(false);
11 months ago
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);
10 months ago
list.Add(new JobCountDto { JobType = EnumJobType.CountJob_ByErpItemCode, Count = countJobs_ByErpItemCode });
//成品发运
2 years ago
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 });
11 months ago
//检验
//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 });
11 months ago
//发料
//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 });
11 months ago
//采购收货
2 years ago
var purchaseReceiptJobRequest = new SfsJobRequestInputBase
2 years ago
{
Condition = new Condition
{
Filters = new List<Filter>
{
new(nameof(PurchaseReceiptJobDTO.WorkGroupCode),jsonCodes,"In"),
new(nameof(PurchaseReceiptJobDTO.JobStatus),jsonStatus,"In")
}
}
2 years ago
};
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 });
11 months ago
//采购退货
2 years ago
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 });
11 months ago
//上架
2 years ago
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 });
//生产退库
2 years ago
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 });
11 months ago
//三方库
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 });
11 months ago
//空器具库移
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 });
2 years ago
return new ListResultDto<JobCountDto>(list);
}
}