diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/InjectionJobController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/InjectionJobController.cs
new file mode 100644
index 000000000..150bfd5f9
--- /dev/null
+++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/InjectionJobController.cs
@@ -0,0 +1,195 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text.Json;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Polly.Caching;
+using Volo.Abp;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.AspNetCore.Mvc;
+using Win_in.Sfs.Auth.Application.Contracts;
+using Win_in.Sfs.Basedata.Application.Contracts;
+using Win_in.Sfs.Shared.Domain;
+using Win_in.Sfs.Shared.Domain.Shared;
+using Win_in.Sfs.Wms.Inventory.Application.Contracts;
+using Win_in.Sfs.Wms.Store.Application.Contracts;
+
+namespace Win_in.Sfs.Wms.Pda.Controllers.Jobs;
+
+///
+/// 注塑叫料任务
+///
+[ApiController]
+[Route($"{PdaHostConst.ROOT_ROUTE}job/injection")]
+public class InjectionJobController : AbpController
+{
+ private readonly IInjectionJobAppService _injectionJobAppService;
+
+ private readonly IUserWorkGroupAppService _userWorkGroupAppService;
+
+ private readonly IDictAppService _dictApp;
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public InjectionJobController(
+ IInjectionJobAppService injectionJobAppService,
+ IDictAppService dictApp
+ , IUserWorkGroupAppService userWorkGroupAppService)
+ {
+ _userWorkGroupAppService = userWorkGroupAppService;
+ _injectionJobAppService = injectionJobAppService;
+ _dictApp = dictApp;
+ }
+
+ ///
+ /// 获取任务详情
+ ///
+ ///
+ ///
+ [HttpGet("{id}")]
+
+ public virtual async Task> GetAsync(Guid id)
+ {
+ var result = await _injectionJobAppService.GetAsync(id).ConfigureAwait(false);
+ return Ok(result);
+ }
+
+ ///
+ /// 获取列表 筛选
+ ///
+ ///
+ ///
+ [HttpPost("list")]
+ public virtual async Task> GetListAsync(SfsJobRequestInputBase sfsRequestDTO)
+ {
+ var list = await _injectionJobAppService.GetPagedListByFilterAsync(sfsRequestDTO, true).ConfigureAwait(false);
+ return list;
+ }
+
+ ///
+ /// 获取列表
+ ///
+ ///
+ ///
+ ///
+ [HttpGet("list")]
+ public virtual async Task> GetListAsync(int pageSize, int pageIndex)
+ {
+ var status = new List() { (int)EnumJobStatus.Open, (int)EnumJobStatus.Doing };
+ var jsonStatus = JsonSerializer.Serialize(status);
+
+ var request = new SfsJobRequestInputBase
+ {
+ MaxResultCount = pageSize,
+ SkipCount = (pageIndex - 1) * pageSize,
+ Sorting = $"{nameof(InjectionJobDTO.CreationTime)} ASC",
+ Condition = new Condition
+ {
+ Filters = new List
+ {
+ new(nameof(IssueJobDTO.JobStatus),jsonStatus,"In")
+ }
+ }
+
+ };
+
+ var list = await _injectionJobAppService.GetPagedListByFilterAsync(request, true).ConfigureAwait(false);
+
+
+ return list;
+ }
+
+ ///
+ /// 根据Job Number 获取任务列表
+ ///
+ ///
+ ///
+ [HttpGet("by-number/{jobNumber}")]
+ public virtual async Task> GetByNumberAsync(string jobNumber)
+ {
+ var jobDto = await _injectionJobAppService.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;
+ }
+
+ ///
+ /// 获取任务数量
+ ///
+ ///
+ [HttpGet("count")]
+ public virtual async Task> CountAsync()
+ {
+ var wlgCodes = await _userWorkGroupAppService.GetCodsOfCurrentUserAsync().ConfigureAwait(false);
+ var jsonCodes = JsonSerializer.Serialize(wlgCodes);
+
+ var status = new List() { (int)EnumJobStatus.Open, (int)EnumJobStatus.Doing };
+ var jsonStatus = JsonSerializer.Serialize(status);
+
+ var request = new SfsJobRequestInputBase
+ {
+ Sorting = $"{nameof(InjectionJobDTO.Priority)} ASC",
+ Condition = new Condition
+ {
+ Filters = new List
+ {
+ new(nameof(InjectionJobDTO.WorkGroupCode),jsonCodes,"In"),
+ new(nameof(InjectionJobDTO.JobStatus),jsonStatus,"In")
+ }
+ }
+ };
+
+ var count = await _injectionJobAppService.GetCountByFilterAsync(request).ConfigureAwait(false);
+
+ return Ok(count);
+ }
+
+ ///
+ /// 承接任务
+ ///
+ ///
+ ///
+ [HttpPost("take/{id}")]
+ public virtual async Task TakeAsync(Guid id)
+ {
+ await _injectionJobAppService.AcceptAsync(id).ConfigureAwait(false);
+ }
+
+ ///
+ /// 取消承接任务
+ ///
+ ///
+ ///
+ [HttpPost("cancel-take/{id}")]
+ public virtual async Task CancelTakeAsync(Guid id)
+ {
+ await _injectionJobAppService.CancelAcceptAsync(id).ConfigureAwait(false);
+ }
+
+ ///
+ /// 执行任务
+ ///
+ ///
+ ///
+ ///
+ [HttpPost("finish/{id}")]
+ public virtual async Task FinishAsync(Guid id, [FromBody] InjectionJobDTO dto)
+ {
+ await _injectionJobAppService.CompleteAsync(id, dto).ConfigureAwait(false);
+ }
+}
diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionNoteController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionNoteController.cs
new file mode 100644
index 000000000..9039a343f
--- /dev/null
+++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionNoteController.cs
@@ -0,0 +1,38 @@
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Volo.Abp.AspNetCore.Mvc;
+using Win_in.Sfs.Wms.Store.Application.Contracts;
+
+namespace Win_in.Sfs.Wms.Pda.Controllers.Stores;
+
+///
+/// 注塑叫料记录
+///
+[ApiController]
+[Route($"{PdaHostConst.ROOT_ROUTE}store/injection-note")]
+
+public class InjectionNoteController : AbpController
+{
+ private readonly IInjectionNoteAppService _injectionNoteAppService;
+
+ ///
+ ///
+ ///
+ ///
+ public InjectionNoteController(IInjectionNoteAppService injectionNoteAppService)
+ {
+ _injectionNoteAppService = injectionNoteAppService;
+ }
+
+ ///
+ /// 创建注塑叫料记录
+ ///
+ /// CreateInput
+ ///
+ [HttpPost("")]
+ public virtual async Task CreateAsync(InjectionNoteEditInput input)
+ {
+ await _injectionNoteAppService.CreateAsync(input).ConfigureAwait(false);
+ }
+
+}
diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs
new file mode 100644
index 000000000..e3ddeda50
--- /dev/null
+++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs
@@ -0,0 +1,51 @@
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Volo.Abp.AspNetCore.Mvc;
+using Win_in.Sfs.Wms.Store.Application.Contracts;
+
+namespace Win_in.Sfs.Wms.Pda.Controllers.Stores;
+
+///
+/// 注塑叫料请求
+///
+[ApiController]
+[Route($"{PdaHostConst.ROOT_ROUTE}store/injection-request")]
+
+public class InjectionRequestController : AbpController
+{
+ private readonly IInjectionRequestAppService _injectionRequestAppService;
+
+ ///
+ ///
+ ///
+ ///
+ public InjectionRequestController(IInjectionRequestAppService InjectionRequestAppService)
+ {
+ _injectionRequestAppService = InjectionRequestAppService;
+ }
+
+ ///
+ /// 注塑叫料申请
+ ///
+ ///
+ ///
+ [HttpPost("")]
+ public virtual async Task CreateAsync(InjectionRequestEditInput input)
+ {
+ _ = await _injectionRequestAppService.CreateAsync(input).ConfigureAwait(false);
+ }
+
+ ///
+ /// 根据number获取注塑叫料申请详情
+ ///
+ ///
+ ///
+ [HttpGet("{number}")]
+
+ public virtual async Task> GetAsync(string number)
+ {
+ var result = await _injectionRequestAppService.GetByNumberAsync(number).ConfigureAwait(false);
+ return Ok(result);
+ }
+
+}
diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ThirdLocationNoteController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ThirdLocationNoteController.cs
index 9006c134d..0e6e03ead 100644
--- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ThirdLocationNoteController.cs
+++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ThirdLocationNoteController.cs
@@ -25,7 +25,7 @@ public class ThirdLocationNoteController : AbpController
}
///
- /// 创建器具转移记录
+ /// 创建三方库转移记录
///
/// CreateInput
///
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/InjectionRequests/InjectionRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/InjectionRequests/InjectionRequestAppService.cs
index b65620308..4286f8906 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/InjectionRequests/InjectionRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/InjectionRequests/InjectionRequestAppService.cs
@@ -15,6 +15,7 @@ using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.ObjectMapping;
+using Win_in.Sfs.Basedata.Application;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
@@ -39,7 +40,8 @@ public class InjectionRequestAppService : SfsStoreRequestAppServiceBase(input);
var result = await _injectionRequestManager.CreateByNumberAsync(entity).ConfigureAwait(false);
@@ -116,6 +115,22 @@ public class InjectionRequestAppService : SfsStoreRequestAppServiceBase
+ /// 赋值Request业务属性
+ ///
+ ///
+ ///
+ private async Task SetRequestAutoPropertiesAsync(InjectionRequestEditInput entity)
+ {
+ var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.Issue, EnumTransSubType.None).ConfigureAwait(false);
+ Check.NotNull(tranType, "事务类型", "事务类型不存在");
+ entity.AutoSubmit = tranType.AutoSubmitRequest;
+ entity.AutoAgree = tranType.AutoAgreeRequest;
+ entity.AutoHandle = tranType.AutoHandleRequest;
+ entity.AutoCompleteJob = tranType.AutoCompleteJob;
+ entity.DirectCreateNote = tranType.DirectCreateNote;
+ }
+
[HttpPost("create-and-handle")]
public async Task CreateAndHandleAsync(InjectionRequestEditInput input)
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/InjectionRequestDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/InjectionRequestDetail.cs
index 2f4759c3a..220f3254c 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/InjectionRequestDetail.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/InjectionRequests/InjectionRequestDetail.cs
@@ -45,11 +45,7 @@ public class InjectionRequestDetail : SfsStoreDetailWithQtyEntityBase, IHasToLoc
public string ToWarehouseCode { get; set; }
#endregion
-
- // ///
- // /// 在途库库位
- // ///
- // public string OnTheWayLocationCode { get; set; }
+
///
/// 生产线