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.
 
 
 
 
 
 

421 lines
20 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"),
new(nameof(UnplannedIssueJobDTO.IsHasPackingCode),"0","=="),
}
}
}).ConfigureAwait(false);
list.Add(new JobCountDto { JobType = EnumJobType.UnplannedIssueJobNoPacking, Count = unplannedIssueJobAppService });
//非生产领料 原料
var unplannedIssueJobAppService2 = await _unplannedIssueJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
{
Condition = new Condition
{
Filters = new List<Filter>
{
//new(nameof(ProductionReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
new(nameof(ProductionReturnJobDTO.JobStatus),jsonStatus,"In"),
new(nameof(UnplannedIssueJobDTO.IsHasPackingCode),"1","=="),
}
}
}).ConfigureAwait(false);
list.Add(new JobCountDto { JobType = EnumJobType.UnplannedIssueJobHasPacking, Count = unplannedIssueJobAppService2 });
//非生产退料 线边
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"),
new(nameof(UnplannedIssueJobDTO.IsHasPackingCode),"0","=="),
}
}
}).ConfigureAwait(false);
list.Add(new JobCountDto { JobType = EnumJobType.UnplannedReceiptJobHasPacking, Count = unplannedreceiptJobAppService });
//非生产退料 原料
var unplannedreceiptJobAppService2 = await _unplannedReceiptJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
{
Condition = new Condition
{
Filters = new List<Filter>
{
//new(nameof(ProductionReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
new(nameof(ProductionReturnJobDTO.JobStatus),jsonStatus,"In"),
new(nameof(UnplannedIssueJobDTO.IsHasPackingCode),"1","=="),
}
}
}).ConfigureAwait(false);
list.Add(new JobCountDto { JobType = EnumJobType.UnplannedReceiptJobNoPacking, Count = unplannedreceiptJobAppService2 });
return new ListResultDto<JobCountDto>(list);
}
}