Files
tnb.server/WarehouseMgr/Tnb.WarehouseMgr/WmsSignForDeliveryService.cs
2023-06-27 16:45:24 +08:00

104 lines
4.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using JNPF.Common.Contracts;
using JNPF.Common.Enums;
using JNPF.Common.Extension;
using JNPF.FriendlyException;
using JNPF.Systems.Interfaces.System;
using Microsoft.AspNetCore.Mvc;
using Microsoft.CodeAnalysis.Operations;
using SqlSugar;
using Tnb.BasicData.Entities;
using Tnb.WarehouseMgr.Entities;
using Tnb.WarehouseMgr.Entities.Consts;
using Tnb.WarehouseMgr.Entities.Dto;
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
using Tnb.WarehouseMgr.Entities.Enums;
using Tnb.WarehouseMgr.Interfaces;
namespace Tnb.WarehouseMgr
{
/// <summary>
/// 出库签收
/// </summary>
public class WmsSignForDeliveryService : BaseWareHouseService
{
private readonly ISqlSugarClient _db;
private readonly IWmsCarryService _wareCarryService;
private readonly IDictionaryDataService _dictionaryDataService;
private static Dictionary<string, object> _dicBizType = new();
public WmsSignForDeliveryService(ISqlSugarRepository<WmsDistaskH> repository, IWmsCarryService wareCarryService, IDictionaryDataService dictionaryDataService)
{
_db = repository.AsSugarClient();
_wareCarryService = wareCarryService;
_dictionaryDataService = dictionaryDataService;
}
/// <summary>
/// 根据载具ID获取对应的执行任务记录
/// </summary>
/// <param name="carryId"></param>
/// <returns></returns>
[HttpGet]
public async Task<dynamic> GetDisTasksByCarryId([FromRoute] string carryId)
{
var item = await _db.Queryable<WmsDistaskH>().FirstAsync(it => it.carry_id == carryId && it.status == WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID && it.is_sign == 0);
return item;
}
/// <summary>
/// 出库签收
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task SignForDelivery(SignForDeliveryInput input)
{
if (_dicBizType.Count < 1)
{
_dicBizType = await _dictionaryDataService.GetDictionaryByTypeId(WmsWareHouseConst.WMS_BIZTYPE_ID);
}
try
{
await _db.Ado.BeginTranAsync();
var carry = await _db.Queryable<WmsCarryH>().SingleAsync(it => it.id == input.carryId);
if (carry != null)
{
var disTask = await _db.Queryable<WmsDistaskH>().SingleAsync(it => it.id == input.disTaskId);
if (disTask != null)
{
if (_dicBizType.ContainsKey(disTask.biz_type))
{
switch (_dicBizType[disTask.biz_type])
{
case "空载具出库":
case "寄存出库":
case "齐套出库":
case "一般出库":
await _wareCarryService.UpdateNullCarry(carry);
break;
}
}
var loc = await _db.Queryable<BasLocation>().SingleAsync(it => it.id == carry.location_id);
loc.is_use = (int)EnumCarryStatus.;
await _db.Updateable(loc).UpdateColumns(it => it.is_use).ExecuteCommandAsync();
WareHouseUpInput upInput = new() { loginType = "web", bizTypeId = disTask.biz_type, requireId = disTask.require_id, carryIds = new List<string> { input.carryId } };
await DoUpdate(upInput); //回更业务
}
}
await _db.Ado.CommitTranAsync();
}
catch (Exception)
{
await _db.Ado.RollbackTranAsync();
throw;
}
}
}
}