|
@@ -10,6 +10,11 @@ using ZR.Common;
|
|
|
using ZR.Service.Business.IBusinessService.OutStore;
|
|
|
using ZR.Model.Dto.OutStore;
|
|
|
using ZR.Model.Models.OutStore;
|
|
|
+using UAParser;
|
|
|
+using ZR.Model.Dto.Balance;
|
|
|
+using ZR.Model.Models.Balance;
|
|
|
+using ZR.Service.Business.OutStore;
|
|
|
+using ZR.Service.Business.IBusinessService.Balance;
|
|
|
|
|
|
namespace ZR.Admin.WebApi.Controllers.OutStore
|
|
|
{
|
|
@@ -25,13 +30,19 @@ namespace ZR.Admin.WebApi.Controllers.OutStore
|
|
|
public class OutAssembleRecordController : BaseController
|
|
|
{
|
|
|
/// <summary>
|
|
|
- /// 出库管理/装配记录表接口
|
|
|
+ /// 接口
|
|
|
/// </summary>
|
|
|
private readonly IOutAssembleRecordService _OutAssembleRecordService;
|
|
|
+ private readonly IStkBalanceDtlService _StkBalanceDtlService;
|
|
|
+ private readonly ISapBomRecordService _SapBomRecordService;
|
|
|
|
|
|
- public OutAssembleRecordController(IOutAssembleRecordService OutAssembleRecordService)
|
|
|
+ public OutAssembleRecordController(IOutAssembleRecordService OutAssembleRecordService,
|
|
|
+ IStkBalanceDtlService StkBalanceDtlService,
|
|
|
+ ISapBomRecordService SapBomRecordService)
|
|
|
{
|
|
|
_OutAssembleRecordService = OutAssembleRecordService;
|
|
|
+ _StkBalanceDtlService = StkBalanceDtlService;
|
|
|
+ _SapBomRecordService = SapBomRecordService;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -120,6 +131,107 @@ namespace ZR.Admin.WebApi.Controllers.OutStore
|
|
|
}
|
|
|
|
|
|
|
|
|
+ #region 2023 0524 孙亚龙 新增
|
|
|
+ [HttpPost("AddOutAssembleRecordForFile")]
|
|
|
+ [ActionPermissionFilter(Permission = "AddOutAssembleRecordForFile")]
|
|
|
+ public IActionResult AddOutAssembleRecordForFile([FromForm] SapBomRecordAssembleExtDto assembleDataDto)
|
|
|
+ {
|
|
|
+ IFormFile? formFile;
|
|
|
+ ClientInfo clientInfo = HttpContext.GetClientInfo();
|
|
|
+ if (clientInfo.OS.ToString().Contains("Android 10"))
|
|
|
+ {
|
|
|
+ var file11 = HttpContext.Request.Form.Files[0];
|
|
|
+ formFile = file11;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ formFile = assembleDataDto.File;
|
|
|
+ }
|
|
|
+ if (formFile == null)
|
|
|
+ {
|
|
|
+ throw new CustomException(ResultCode.PARAM_ERROR, "上传的实物图片不能为空!!");
|
|
|
+ }
|
|
|
+ SapBomRecord sapBomRecordMd = assembleDataDto.Adapt<SapBomRecord>().ToUpdate();
|
|
|
+ sapBomRecordMd.AssembleQty += assembleDataDto.AssembleNum;
|
|
|
+ if (sapBomRecordMd.AssembleQty >= sapBomRecordMd.Qty)
|
|
|
+ {
|
|
|
+ sapBomRecordMd.Result = 99;
|
|
|
+ }
|
|
|
+ OutAssembleRecord assembleRecordMd = assembleDataDto.Adapt<OutAssembleRecord>();
|
|
|
+ using var stream = formFile.OpenReadStream();
|
|
|
+ BinaryReader br = new(stream);
|
|
|
+ byte[] byData = br.ReadBytes((int)stream.Length);
|
|
|
+ assembleRecordMd.Picture = byData;
|
|
|
+ assembleRecordMd.BnSnCode = assembleDataDto.BnSnCode;
|
|
|
+ assembleRecordMd.AssembleQty = assembleDataDto.AssembleNum;
|
|
|
+ assembleRecordMd.CreateBy = HttpContext.GetName();
|
|
|
+ assembleRecordMd.CreateTime = DateTime.Now;
|
|
|
+ assembleRecordMd.CreateBy = HttpContext.GetName();
|
|
|
+ assembleRecordMd.CreateTime = DateTime.Now;
|
|
|
+ assembleRecordMd.UpdateBy = HttpContext.GetName();
|
|
|
+ assembleRecordMd.UpdateTime = DateTime.Now;
|
|
|
+ assembleRecordMd.Result = 99;
|
|
|
+
|
|
|
+ List<StkBalanceDtl> list = _StkBalanceDtlService.GetBalanceDtlList(new GetOutOperateBalanceQueryDto
|
|
|
+ {
|
|
|
+ BomNo = assembleDataDto.BomNo,
|
|
|
+ MaterialCode = assembleDataDto.MaterialCode,
|
|
|
+ BnSnCode = assembleDataDto.BnSnCode,
|
|
|
+ IsForAssemble = true,
|
|
|
+ }).Adapt<List<StkBalanceDtl>>();
|
|
|
+
|
|
|
+ int allotNum = 0;
|
|
|
+ Dictionary<int, int> allocDic = new();
|
|
|
+ foreach (var item in list)
|
|
|
+ {
|
|
|
+ if ((item.BalanceQty + allotNum) <= assembleDataDto.Qty)
|
|
|
+ {
|
|
|
+ allotNum += item.BalanceQty;
|
|
|
+ allocDic.Add(item.BalanceId, item.BalanceQty);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ allotNum += item.BalanceQty;
|
|
|
+ allocDic.Add(item.BalanceId, allotNum - assembleDataDto.Qty);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ int response3 = 0;
|
|
|
+ foreach (var item in allocDic)
|
|
|
+ {
|
|
|
+ StkBalanceDtl md = list.FirstOrDefault(x => x.BalanceId == item.Key);
|
|
|
+ if (md.BalanceQty == item.Value)
|
|
|
+ {
|
|
|
+ md.Status = 99;
|
|
|
+ md.UpdateBy = HttpContext.GetName();
|
|
|
+ md.UpdateTime = DateTime.Now;
|
|
|
+ response3 += _StkBalanceDtlService.Update(md);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ md.Status = 88;
|
|
|
+ md.BalanceQty = item.Value;
|
|
|
+ md.UpdateBy = HttpContext.GetName();
|
|
|
+ md.UpdateTime = DateTime.Now;
|
|
|
+ response3 += _StkBalanceDtlService.Update(md);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ int response1 = _SapBomRecordService.Update(sapBomRecordMd);
|
|
|
+ int response2 = _OutAssembleRecordService.Insert(assembleRecordMd);
|
|
|
+ return ToResponse(response1 + response2 + response3);
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ }
|
|
|
+ public class SapBomRecordAssembleExtDto : SapBomRecordDto
|
|
|
+ {
|
|
|
+ /// <summary>
|
|
|
+ /// 本次装配数量
|
|
|
+ /// </summary>
|
|
|
+ public int AssembleNum { get; set; }
|
|
|
+ public string BnSnCode { get; set; }
|
|
|
+ public IFormFile? File { get; set; }
|
|
|
|
|
|
}
|
|
|
}
|