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.

422 lines
20 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;
1 year ago
private readonly IThirdLocationJobAppService _thirdLocationJobAppService;
1 year 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,
1 year ago
IProductionReturnJobAppService productionReturnJobAppService,
1 year 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;
1 year ago
_thirdLocationJobAppService = thirdLocationJobAppService;
1 year 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
1 year 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>();
1 year 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"),
1 year ago
new(nameof(CountJobDTO.JobStatus),jsonStatus,"In"),
7 months ago
new(nameof(CountJobDTO.InventoryMode),EnumInventoryMode.ByPackingCode.ToString())
2 years ago
}
}
}).ConfigureAwait(false);
1 year 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"),
7 months ago
new(nameof(CountJobDTO.InventoryMode),EnumInventoryMode.ByErpItemCode.ToString())
1 year ago
}
}
}).ConfigureAwait(false);
11 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 });
1 year 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 });
1 year 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 });
1 year 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 });
1 year 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 });
1 year 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 });
1 year 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 });
1 year 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 });
7 months ago
//非生产领料 线边
var unplannedIssueJobAppService = await _unplannedIssueJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
{
Condition = new Condition
{
Filters = new List<Filter>
{
7 months ago
//new(nameof(ProductionReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
7 months ago
new(nameof(ProductionReturnJobDTO.JobStatus),jsonStatus,"In"),
7 months ago
new(nameof(UnplannedIssueJobDTO.IsHasPackingCode),"0","=="),
}
}
}).ConfigureAwait(false);
7 months ago
list.Add(new JobCountDto { JobType = EnumJobType.UnplannedIssueJobNoPacking, Count = unplannedIssueJobAppService });
//非生产领料 原料
var unplannedIssueJobAppService2 = await _unplannedIssueJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
{
Condition = new Condition
{
Filters = new List<Filter>
{
7 months ago
//new(nameof(ProductionReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
7 months ago
new(nameof(ProductionReturnJobDTO.JobStatus),jsonStatus,"In"),
7 months ago
new(nameof(UnplannedIssueJobDTO.IsHasPackingCode),"1","=="),
7 months ago
}
}
}).ConfigureAwait(false);
list.Add(new JobCountDto { JobType = EnumJobType.UnplannedIssueJobHasPacking, Count = unplannedIssueJobAppService2 });
7 months ago
//非生产退料 线边
var unplannedreceiptJobAppService = await _unplannedReceiptJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
{
Condition = new Condition
{
Filters = new List<Filter>
{
7 months ago
//new(nameof(ProductionReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
7 months ago
new(nameof(ProductionReturnJobDTO.JobStatus),jsonStatus,"In"),
7 months ago
new(nameof(UnplannedIssueJobDTO.IsHasPackingCode),"0","=="),
}
}
}).ConfigureAwait(false);
7 months ago
list.Add(new JobCountDto { JobType = EnumJobType.UnplannedReceiptJobHasPacking, Count = unplannedreceiptJobAppService });
//非生产退料 原料
var unplannedreceiptJobAppService2 = await _unplannedReceiptJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
{
Condition = new Condition
{
Filters = new List<Filter>
{
7 months ago
//new(nameof(ProductionReturnJobDTO.WorkGroupCode),jsonCodes,"In"),
7 months ago
new(nameof(ProductionReturnJobDTO.JobStatus),jsonStatus,"In"),
7 months ago
new(nameof(UnplannedIssueJobDTO.IsHasPackingCode),"1","=="),
7 months ago
}
}
}).ConfigureAwait(false);
list.Add(new JobCountDto { JobType = EnumJobType.UnplannedReceiptJobNoPacking, Count = unplannedreceiptJobAppService2 });
2 years ago
return new ListResultDto<JobCountDto>(list);
}
}