库存报表,日志完善
This commit is contained in:
@@ -1021,7 +1021,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
|||||||
|
|
||||||
// 开始码垛
|
// 开始码垛
|
||||||
bool result_开始码垛 = await Floor2UpDownMachinecode_SetTag(MechanicalArmConsts.上升降机当前码垛位, target.stackingposition.ToString());
|
bool result_开始码垛 = await Floor2UpDownMachinecode_SetTag(MechanicalArmConsts.上升降机当前码垛位, target.stackingposition.ToString());
|
||||||
LoggerFloor2UpDownMachine.LogInformation($@"【上升降机】码垛结果 {result_开始码垛}");
|
LoggerFloor2UpDownMachine.LogInformation($@"【上升降机】码垛位{target.stackingposition}码垛结果 {result_开始码垛}");
|
||||||
if (!result_开始码垛)
|
if (!result_开始码垛)
|
||||||
{
|
{
|
||||||
throw new Exception($@"【上升降机】码垛结果 {result_开始码垛}");
|
throw new Exception($@"【上升降机】码垛结果 {result_开始码垛}");
|
||||||
|
|||||||
@@ -166,6 +166,10 @@ public class ModuleConsts
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const string MODULE_WMSSTOCKREPORT_ID = "27895417124373";
|
public const string MODULE_WMSSTOCKREPORT_ID = "27895417124373";
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// 模块标识-载具库存报表 todo
|
||||||
|
/// </summary>
|
||||||
|
public const string MODULE_WMSCARRYSTOCKREPORT_ID = "MODULE_WMSCARRYSTOCKREPORT_ID";
|
||||||
|
/// <summary>
|
||||||
/// 模块标识-载具台账
|
/// 模块标识-载具台账
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string MODULE_WMSCARRY_ID = "26038721525029";
|
public const string MODULE_WMSCARRY_ID = "26038721525029";
|
||||||
|
|||||||
@@ -41,6 +41,21 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const string WAREHOUSE_ZZXBK_ID = "26257716248101";
|
public const string WAREHOUSE_ZZXBK_ID = "26257716248101";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 四楼包材库
|
||||||
|
/// </summary>
|
||||||
|
public const string WAREHOUSE_BCK_ID = "35410826423061";
|
||||||
|
/// <summary>
|
||||||
|
/// 四楼待灭菌仓
|
||||||
|
/// </summary>
|
||||||
|
public const string WAREHOUSE_DMJC_ID = "35412479754517";
|
||||||
|
/// <summary>
|
||||||
|
/// 四楼灭菌仓
|
||||||
|
/// </summary>
|
||||||
|
public const string WAREHOUSE_MJC_ID = "35412482304021";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 长管出库
|
/// 长管出库
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
using JNPF.Common.Filter;
|
||||||
|
|
||||||
|
namespace Tnb.WarehouseMgr.Entities.Dto
|
||||||
|
{
|
||||||
|
public class CarryStockInput : PageInputBase
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -140,4 +140,8 @@ public partial class WmsCarryH : BaseEntity<string>
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string? work_station { get; set; }
|
public string? work_station { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 入库时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? instock_time { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,257 @@
|
|||||||
|
using JNPF.Common.Contracts;
|
||||||
|
using JNPF.Common.Security;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
namespace Tnb.WarehouseMgr.Entities;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 载具库存集合
|
||||||
|
/// </summary>
|
||||||
|
public partial class WmsCarryStockReport
|
||||||
|
{
|
||||||
|
public int 序号 { get; set; }
|
||||||
|
///// <summary>
|
||||||
|
///// 所属组织
|
||||||
|
///// </summary>
|
||||||
|
//public string? 组织 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 载具ID
|
||||||
|
/// </summary>
|
||||||
|
public string? carry_id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 载具编码
|
||||||
|
/// </summary>
|
||||||
|
public string? 载具编码 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 载具名称
|
||||||
|
/// </summary>
|
||||||
|
public string? 载具名称 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 子载具编码
|
||||||
|
/// </summary>
|
||||||
|
public string? 子载具编码 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 子载具名称
|
||||||
|
/// </summary>
|
||||||
|
public string? 子载具名称 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料ID
|
||||||
|
/// </summary>
|
||||||
|
public string? material_id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料编码
|
||||||
|
/// </summary>
|
||||||
|
public string? 物料编码 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料名称
|
||||||
|
/// </summary>
|
||||||
|
public string? 物料名称 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库名称
|
||||||
|
/// </summary>
|
||||||
|
public string? 仓库名称 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 库位编码
|
||||||
|
/// </summary>
|
||||||
|
public string? 库位编码 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 库位名称
|
||||||
|
/// </summary>
|
||||||
|
public string? 库位名称 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 载具状态
|
||||||
|
/// </summary>
|
||||||
|
public string? 载具状态 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 库位状态
|
||||||
|
/// </summary>
|
||||||
|
public string? 库位状态 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 载具类型
|
||||||
|
/// </summary>
|
||||||
|
public string? 载具类型 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 入库时间
|
||||||
|
/// </summary>
|
||||||
|
public string? 入库时间 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 条码
|
||||||
|
/// </summary>
|
||||||
|
public string? 条码 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 批次
|
||||||
|
/// </summary>
|
||||||
|
public string? 批次 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 数量
|
||||||
|
/// </summary>
|
||||||
|
public decimal? 数量 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单位
|
||||||
|
/// </summary>
|
||||||
|
public string? 单位 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 操作用户
|
||||||
|
/// </summary>
|
||||||
|
public string? 操作用户 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 绑定时间
|
||||||
|
/// </summary>
|
||||||
|
public string? 绑定时间 { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 载具库存报表
|
||||||
|
/// </summary>
|
||||||
|
public partial class WmsCarryStockReportH
|
||||||
|
{
|
||||||
|
public int 序号 { get; set; }
|
||||||
|
///// <summary>
|
||||||
|
///// 所属组织
|
||||||
|
///// </summary>
|
||||||
|
//public string? 组织 { get; set; }
|
||||||
|
|
||||||
|
///// <summary>
|
||||||
|
///// 载具ID
|
||||||
|
///// </summary>
|
||||||
|
//public string? carry_id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 载具编码
|
||||||
|
/// </summary>
|
||||||
|
public string? 载具编码 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 载具名称
|
||||||
|
/// </summary>
|
||||||
|
public string? 载具名称 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 仓库名称
|
||||||
|
/// </summary>
|
||||||
|
public string? 仓库名称 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 库位编码
|
||||||
|
/// </summary>
|
||||||
|
public string? 库位编码 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 库位名称
|
||||||
|
/// </summary>
|
||||||
|
public string? 库位名称 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 载具状态
|
||||||
|
/// </summary>
|
||||||
|
public string? 载具状态 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 库位状态
|
||||||
|
/// </summary>
|
||||||
|
public string? 库位状态 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 载具类型
|
||||||
|
/// </summary>
|
||||||
|
public string? 载具类型 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 入库时间
|
||||||
|
/// </summary>
|
||||||
|
public string? 入库时间 { get; set; }
|
||||||
|
|
||||||
|
public List<WmsCarryStockReportCode> Details { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 载具库存报表条码表
|
||||||
|
/// </summary>
|
||||||
|
public partial class WmsCarryStockReportCode
|
||||||
|
{
|
||||||
|
public int 序号 { get; set; }
|
||||||
|
///// <summary>
|
||||||
|
///// 载具ID
|
||||||
|
///// </summary>
|
||||||
|
//public string? carry_id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 载具编码
|
||||||
|
/// </summary>
|
||||||
|
public string? 载具编码 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 载具名称
|
||||||
|
/// </summary>
|
||||||
|
public string? 载具名称 { get; set; }
|
||||||
|
|
||||||
|
///// <summary>
|
||||||
|
///// 物料ID
|
||||||
|
///// </summary>
|
||||||
|
//public string? material_id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料编号
|
||||||
|
/// </summary>
|
||||||
|
public string? 物料编号 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料名称
|
||||||
|
/// </summary>
|
||||||
|
public string? 物料名称 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 条码编号
|
||||||
|
/// </summary>
|
||||||
|
public string? 条码 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 批次
|
||||||
|
/// </summary>
|
||||||
|
public string? 批次 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 条码数量
|
||||||
|
/// </summary>
|
||||||
|
public decimal? 数量 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单位
|
||||||
|
/// </summary>
|
||||||
|
public string? 单位 { get; set; }
|
||||||
|
|
||||||
|
///// <summary>
|
||||||
|
///// 操作用户
|
||||||
|
///// </summary>
|
||||||
|
//public string? 创建用户 { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 绑定时间
|
||||||
|
/// </summary>
|
||||||
|
public string? 绑定时间 { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -494,6 +494,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
}
|
}
|
||||||
|
|
||||||
#region 只解决少数情况(比如只有60 59 60 60四个料箱,下发180,要取60 60 60) 其它情况不考虑
|
#region 只解决少数情况(比如只有60 59 60 60四个料箱,下发180,要取60 60 60) 其它情况不考虑
|
||||||
|
|
||||||
var itemsASC = await cyDb.Queryable<WmsCarryH>().LeftJoin<WmsCarryCode>((a, b) => a.id == b.carry_id)
|
var itemsASC = await cyDb.Queryable<WmsCarryH>().LeftJoin<WmsCarryCode>((a, b) => a.id == b.carry_id)
|
||||||
.LeftJoin<BasLocation>((a, b, c) => a.location_id == c.id)
|
.LeftJoin<BasLocation>((a, b, c) => a.location_id == c.id)
|
||||||
.Where(whereExpr)
|
.Where(whereExpr)
|
||||||
@@ -527,6 +528,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
WmsCarryCode _wmsCarryCode = itemsASC[j].wmsCarryCode;
|
WmsCarryCode _wmsCarryCode = itemsASC[j].wmsCarryCode;
|
||||||
if (_wmsCarryCode.codeqty == input.needOut)
|
if (_wmsCarryCode.codeqty == input.needOut)
|
||||||
{
|
{
|
||||||
|
input.needOut -= _wmsCarryCode.codeqty;
|
||||||
WmsCarryH _wmsCarryH = itemsASC[j].wmsCarryH;
|
WmsCarryH _wmsCarryH = itemsASC[j].wmsCarryH;
|
||||||
|
|
||||||
BasLocation _endlocation_ssx = await _db.Queryable<BasLocation>().Where(r => new string[2] { "32609229889045", "32609238573589" }.Contains(r.id)).OrderBy("is_lock, task_nums, location_code").FirstAsync();
|
BasLocation _endlocation_ssx = await _db.Queryable<BasLocation>().Where(r => new string[2] { "32609229889045", "32609238573589" }.Contains(r.id)).OrderBy("is_lock, task_nums, location_code").FirstAsync();
|
||||||
@@ -2125,7 +2127,8 @@ namespace Tnb.WarehouseMgr
|
|||||||
id = multiList[i].carry_id,
|
id = multiList[i].carry_id,
|
||||||
is_lock = 0,
|
is_lock = 0,
|
||||||
location_id = multiList[i].endlocation_id,
|
location_id = multiList[i].endlocation_id,
|
||||||
location_code = multiList[i].endlocation_code
|
location_code = multiList[i].endlocation_code,
|
||||||
|
instock_time = DateTime.Now
|
||||||
};
|
};
|
||||||
string endLocId = multiList[i].endlocation_id;
|
string endLocId = multiList[i].endlocation_id;
|
||||||
|
|
||||||
@@ -2172,7 +2175,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
locIts.Add(loc);
|
locIts.Add(loc);
|
||||||
}
|
}
|
||||||
|
|
||||||
_ = await _db.Updateable(carryIts).UpdateColumns(it => new { it.is_lock, it.location_id, it.location_code }).ExecuteCommandAsync();
|
_ = await _db.Updateable(carryIts).UpdateColumns(it => new { it.is_lock, it.location_id, it.location_code, it.instock_time }).ExecuteCommandAsync();
|
||||||
Logger.Information($"【TaskComplate】 更新载具 {JsonConvert.SerializeObject(carryIts)}");
|
Logger.Information($"【TaskComplate】 更新载具 {JsonConvert.SerializeObject(carryIts)}");
|
||||||
//更新条码的库位和仓库信息
|
//更新条码的库位和仓库信息
|
||||||
_ = await _db.Updateable(carryCodeIts).UpdateColumns(it => new { it.warehouse_id, it.location_id, it.location_code }).Where(it => multiList.Select(x => x.carry_id).Contains(it.carry_id)).ExecuteCommandAsync();
|
_ = await _db.Updateable(carryCodeIts).UpdateColumns(it => new { it.warehouse_id, it.location_id, it.location_code }).Where(it => multiList.Select(x => x.carry_id).Contains(it.carry_id)).ExecuteCommandAsync();
|
||||||
|
|||||||
191
WarehouseMgr/Tnb.WarehouseMgr/WmsCarryStockReportService.cs
Normal file
191
WarehouseMgr/Tnb.WarehouseMgr/WmsCarryStockReportService.cs
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
using JNPF.Common.Core.Manager;
|
||||||
|
using JNPF.Common.Extension;
|
||||||
|
using JNPF.Common.Filter;
|
||||||
|
using JNPF.Common.Security;
|
||||||
|
using JNPF.VisualDev;
|
||||||
|
using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
|
||||||
|
using Mapster;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
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.ErpInputs;
|
||||||
|
using Tnb.WarehouseMgr.Entities.Dto.Outputs;
|
||||||
|
using Tnb.WarehouseMgr.Entities.Enums;
|
||||||
|
|
||||||
|
namespace Tnb.WarehouseMgr
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 库存报表服务类
|
||||||
|
/// </summary>
|
||||||
|
[OverideVisualDev(ModuleConsts.MODULE_WMSCARRYSTOCKREPORT_ID)]
|
||||||
|
public class WmsCarryStockReportService : BaseWareHouseService
|
||||||
|
{
|
||||||
|
private readonly ISqlSugarClient _db;
|
||||||
|
private readonly IUserManager _userManager;
|
||||||
|
|
||||||
|
public WmsCarryStockReportService(ISqlSugarRepository<WmsCarryCode> repository, IUserManager userManager)
|
||||||
|
{
|
||||||
|
_db = repository.AsSugarClient();
|
||||||
|
_userManager = userManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 转库单
|
||||||
|
/// </summary>
|
||||||
|
[HttpPost, NonUnify, AllowAnonymous]
|
||||||
|
public async Task<dynamic> CarryStock(CarryStockInput input)
|
||||||
|
{
|
||||||
|
var warehouse_id = "";
|
||||||
|
var carry_id = "";
|
||||||
|
var material_id = "";
|
||||||
|
if (!input.queryJson.IsNullOrWhiteSpace())
|
||||||
|
{
|
||||||
|
warehouse_id = JObject.Parse(input.queryJson).Value<string>(nameof(WmsCarryCode.warehouse_id));
|
||||||
|
carry_id = JObject.Parse(input.queryJson).Value<string>(nameof(WmsCarryCode.carry_id));
|
||||||
|
material_id = JObject.Parse(input.queryJson).Value<string>(nameof(WmsCarryCode.material_id));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
List<WmsCarryStockReport> items = await _db.Queryable<BasLocation>()
|
||||||
|
.LeftJoin<WmsCarryH>((a, b) => b.location_id == a.id)
|
||||||
|
.InnerJoin<BasWarehouse>((a, b, c) => a.wh_id == c.id)
|
||||||
|
.LeftJoin<WmsCarrystd>((a, b, c, d) => d.id == b.carrystd_id)
|
||||||
|
.LeftJoin<WmsCarryCode>((a, b, c, d, e) => e.carry_id == b.id)
|
||||||
|
.LeftJoin<BasMaterial>((a, b, c, d, e, f) => f.id == e.material_id)
|
||||||
|
.Where((a, b, c, d, e) => a.is_type == ((int)EnumLocationType.存储库位).ToString() && a.is_use == "1"
|
||||||
|
&& ((!string.IsNullOrEmpty(b.carry_code) && b.carry_status != "0" && b.carry_status != "6") || string.IsNullOrEmpty(b.carry_code)))
|
||||||
|
.WhereIF(!string.IsNullOrEmpty(warehouse_id), (a, b, c, d) => c.id == warehouse_id)
|
||||||
|
.WhereIF(!string.IsNullOrEmpty(carry_id), (a, b, c, d) => b.id == carry_id)
|
||||||
|
.WhereIF(!string.IsNullOrEmpty(material_id), (a, b, c, d, e, f) => f.id == material_id)
|
||||||
|
.OrderByDescending((a, b, c, d, e, f) => b.carry_code)
|
||||||
|
.Select((a, b, c, d, e, f) => new WmsCarryStockReport
|
||||||
|
{
|
||||||
|
仓库名称 = c.whname,
|
||||||
|
carry_id = b.id,
|
||||||
|
载具编码 = string.IsNullOrEmpty(b.carry_code) ? "空托盘堆垛" : b.carry_code,
|
||||||
|
载具名称 = string.IsNullOrEmpty(b.carry_code) ? "空托盘堆垛" : b.carry_name,
|
||||||
|
载具状态 = b.is_lock == 1 ? "锁定" : "未锁定",
|
||||||
|
载具类型 = d.carrystd_name,
|
||||||
|
库位编码 = a.location_code,
|
||||||
|
库位名称 = a.location_name,
|
||||||
|
库位状态 = b.is_lock == 1 ? "锁定" : "未锁定",
|
||||||
|
入库时间 = b.instock_time != null ? b.instock_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
|
||||||
|
条码 = e.barcode,
|
||||||
|
批次 = e.code_batch,
|
||||||
|
数量 = e.codeqty,
|
||||||
|
material_id = e.material_id,
|
||||||
|
物料编码 = e.material_code,
|
||||||
|
物料名称 = f.name,
|
||||||
|
单位 = e.unit_id,
|
||||||
|
操作用户 = e.create_id,
|
||||||
|
绑定时间 = e.create_time != null ? e.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""
|
||||||
|
})
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
// 料架
|
||||||
|
List<WmsCarryStockReport> items_LJ = await _db.Queryable<BasLocation>()
|
||||||
|
.LeftJoin<WmsCarryH>((a, b) => b.location_id == a.id)
|
||||||
|
.InnerJoin<BasWarehouse>((a, b, c) => a.wh_id == c.id)
|
||||||
|
.InnerJoin<WmsCarrystd>((a, b, c, d) => d.id == b.carrystd_id)
|
||||||
|
.InnerJoin<WmsCarryD>((a, b, c, d, e) => e.carry_id == b.id)
|
||||||
|
.InnerJoin<WmsCarryCode>((a, b, c, d, e, f) => f.carry_id == e.membercarry_id)
|
||||||
|
.InnerJoin<BasMaterial>((a, b, c, d, e, f, g) => g.id == f.material_id)
|
||||||
|
.InnerJoin<WmsCarryH>((a, b, c, d, e, f, g, h) => h.id == e.membercarry_id)
|
||||||
|
.Where((a, b, c, d, e) => a.is_type == ((int)EnumLocationType.存储库位).ToString() && a.is_use == "1" && b.carry_status != "0" && b.carry_status != "6")
|
||||||
|
.WhereIF(!string.IsNullOrEmpty(warehouse_id), (a, b, c, d) => c.id == warehouse_id)
|
||||||
|
.WhereIF(!string.IsNullOrEmpty(carry_id), (a, b, c, d, e) => b.id == carry_id || e.membercarry_id == carry_id)
|
||||||
|
.WhereIF(!string.IsNullOrEmpty(material_id), (a, b, c, d, e, f, g) => g.id == material_id)
|
||||||
|
.Select((a, b, c, d, e, f, g, h) => new WmsCarryStockReport
|
||||||
|
{
|
||||||
|
仓库名称 = c.whname,
|
||||||
|
carry_id = b.id,
|
||||||
|
载具编码 = b.carry_code,
|
||||||
|
载具名称 = b.carry_name,
|
||||||
|
子载具编码 = h.carry_code,
|
||||||
|
子载具名称 = h.carry_name,
|
||||||
|
载具状态 = b.is_lock == 1 ? "锁定" : "未锁定",
|
||||||
|
载具类型 = d.carrystd_name,
|
||||||
|
库位编码 = a.location_code,
|
||||||
|
库位名称 = a.location_name,
|
||||||
|
库位状态 = b.is_lock == 1 ? "锁定" : "未锁定",
|
||||||
|
入库时间 = b.instock_time != null ? b.instock_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
|
||||||
|
条码 = f.barcode,
|
||||||
|
批次 = f.code_batch,
|
||||||
|
数量 = f.codeqty,
|
||||||
|
material_id = f.material_id,
|
||||||
|
物料编码 = f.material_code,
|
||||||
|
物料名称 = g.name,
|
||||||
|
单位 = f.unit_id,
|
||||||
|
操作用户 = f.create_id,
|
||||||
|
绑定时间 = f.create_time != null ? f.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""
|
||||||
|
})
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
items.AddRange(items_LJ);
|
||||||
|
|
||||||
|
// d.carrystd_name != "料架"
|
||||||
|
var storeMap = items.DistinctBy(x => new { x.carry_id }).ToDictionary(x => new { x.carry_id }, x => x);
|
||||||
|
|
||||||
|
IEnumerable<WmsCarryStockReportH> result = items.GroupBy(g => new { g.carry_id }).Select(itGroup =>
|
||||||
|
{
|
||||||
|
_ = storeMap.TryGetValue(itGroup.Key, out WmsCarryStockReport? report);
|
||||||
|
WmsCarryStockReportH stockReport = report.Adapt<WmsCarryStockReportH>();
|
||||||
|
|
||||||
|
if (report.载具编码 != "空托盘堆垛")
|
||||||
|
{
|
||||||
|
List<WmsCarryStockReport> curCarryCodes = items.FindAll(x => x.carry_id == itGroup.Key.carry_id);
|
||||||
|
|
||||||
|
List<WmsCarryStockReportCode> wmsCarryStockReportCodes = new List<WmsCarryStockReportCode>();
|
||||||
|
int index = 0;
|
||||||
|
curCarryCodes.ForEach(x =>
|
||||||
|
{
|
||||||
|
index++;
|
||||||
|
WmsCarryStockReportCode wmsCarryStockReportCode = new();
|
||||||
|
wmsCarryStockReportCode.序号 = index;
|
||||||
|
//wmsCarryStockReportCode.carry_id = x.carry_id;
|
||||||
|
wmsCarryStockReportCode.载具编码 = !string.IsNullOrEmpty(x.子载具编码) ? x.子载具编码 : x.载具编码;
|
||||||
|
wmsCarryStockReportCode.载具名称 = !string.IsNullOrEmpty(x.子载具名称) ? x.子载具名称 : x.载具名称;
|
||||||
|
//wmsCarryStockReportCode.material_id = x.material_id;
|
||||||
|
wmsCarryStockReportCode.物料编号 = x.物料编码;
|
||||||
|
wmsCarryStockReportCode.物料名称 = x.物料编码;
|
||||||
|
wmsCarryStockReportCode.条码 = x.条码;
|
||||||
|
wmsCarryStockReportCode.批次 = x.批次;
|
||||||
|
wmsCarryStockReportCode.数量 = x.数量;
|
||||||
|
wmsCarryStockReportCode.单位 = x.单位;
|
||||||
|
//wmsCarryStockReportCode.创建用户 = x.操作用户;
|
||||||
|
wmsCarryStockReportCode.绑定时间 = x.绑定时间;
|
||||||
|
|
||||||
|
wmsCarryStockReportCodes.Add(wmsCarryStockReportCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
stockReport.Details = wmsCarryStockReportCodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
return stockReport;
|
||||||
|
});
|
||||||
|
|
||||||
|
int rowIndex = 0;
|
||||||
|
List<WmsCarryStockReportH> pages = result.Skip((input.currentPage - 1) * input.pageSize).Take(input.pageSize).ToList();
|
||||||
|
pages.ForEach(page => { rowIndex++; page.序号 = rowIndex; });
|
||||||
|
|
||||||
|
SqlSugarPagedList<WmsCarryStockReportH> pagedList = new()
|
||||||
|
{
|
||||||
|
list = pages,
|
||||||
|
pagination = new()
|
||||||
|
{
|
||||||
|
CurrentPage = input.currentPage,
|
||||||
|
PageSize = input.pageSize,
|
||||||
|
Total = result.Count()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return PageResult<WmsCarryStockReportH>.SqlSugarPageResult(pagedList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -97,6 +97,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
JObject queryJson = null;
|
JObject queryJson = null;
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(input.queryJson))
|
if (!string.IsNullOrEmpty(input.queryJson))
|
||||||
{
|
{
|
||||||
queryJson = JObject.Parse(input.queryJson);
|
queryJson = JObject.Parse(input.queryJson);
|
||||||
@@ -111,7 +112,8 @@ namespace Tnb.WarehouseMgr
|
|||||||
.LeftJoin<DictionaryDataEntity>((a, b, c, d, e, f) => a.type == f.EnCode)
|
.LeftJoin<DictionaryDataEntity>((a, b, c, d, e, f) => a.type == f.EnCode)
|
||||||
// 只显示未完成的单据
|
// 只显示未完成的单据
|
||||||
.Where(a => a.status != "25065149810453")
|
.Where(a => a.status != "25065149810453")
|
||||||
.WhereIF(queryJson != null, a => a.type == queryJson["type"].ToString())
|
.WhereIF(queryJson != null && queryJson["type"] != null, a => a.type == queryJson["type"].ToString())
|
||||||
|
.WhereIF(queryJson != null && queryJson["bill_code"] != null, a => a.bill_code.Contains(queryJson["bill_code"].ToString()))
|
||||||
.Select((a, b, c, d, e, f) => new WmsMaterialTransfer
|
.Select((a, b, c, d, e, f) => new WmsMaterialTransfer
|
||||||
{
|
{
|
||||||
id = a.id,
|
id = a.id,
|
||||||
@@ -136,6 +138,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
arrival_date = a.arrival_date,
|
arrival_date = a.arrival_date,
|
||||||
order_code = a.order_code,
|
order_code = a.order_code,
|
||||||
})
|
})
|
||||||
|
.OrderBy("a.bill_code desc")
|
||||||
.ToPagedListAsync(input.currentPage, input.pageSize);
|
.ToPagedListAsync(input.currentPage, input.pageSize);
|
||||||
|
|
||||||
var _data = PageResult<WmsMaterialTransfer>.SqlSugarPageResult(result);
|
var _data = PageResult<WmsMaterialTransfer>.SqlSugarPageResult(result);
|
||||||
@@ -176,7 +179,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
|
|
||||||
foreach (JObject wmsTransferInstockH in mainTable)
|
foreach (JObject wmsTransferInstockH in mainTable)
|
||||||
{
|
{
|
||||||
wmsTransferInstockH["tablefield121"] = JArray.Parse(JsonConvert.SerializeObject(wmsTransferInstockDs.Where(r => r.bill_id == wmsTransferInstockH["id"].ToString())));
|
wmsTransferInstockH["tablefield120"] = JArray.Parse(JsonConvert.SerializeObject(wmsTransferInstockDs.Where(r => r.bill_id == wmsTransferInstockH["id"].ToString())));
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ using Microsoft.Extensions.Logging;
|
|||||||
using NPOI.POIFS.Storage;
|
using NPOI.POIFS.Storage;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
using Tnb.BasicData.Entities;
|
using Tnb.BasicData.Entities;
|
||||||
|
using Tnb.ProductionMgr.Entities;
|
||||||
using Tnb.WarehouseMgr.Entities;
|
using Tnb.WarehouseMgr.Entities;
|
||||||
using Tnb.WarehouseMgr.Entities.Attributes;
|
using Tnb.WarehouseMgr.Entities.Attributes;
|
||||||
using Tnb.WarehouseMgr.Entities.Consts;
|
using Tnb.WarehouseMgr.Entities.Consts;
|
||||||
@@ -53,7 +54,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 从产线呼叫装料架到暂存仓/缓存仓
|
/// 从产线呼叫装料架到暂存仓/缓存仓(退料)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="input"></param>
|
/// <param name="input"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
@@ -350,6 +351,9 @@ namespace Tnb.WarehouseMgr
|
|||||||
{
|
{
|
||||||
WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.id == input.carryIds[0]).FirstAsync();
|
WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.id == input.carryIds[0]).FirstAsync();
|
||||||
|
|
||||||
|
// 用于回写prd_material_receipt_d is_all_feeding
|
||||||
|
List<WmsCarryH> carryHs = new List<WmsCarryH>();
|
||||||
|
|
||||||
List<WmsCarryCode> wmsCarryCodes = null;
|
List<WmsCarryCode> wmsCarryCodes = null;
|
||||||
// 料架到暂存仓
|
// 料架到暂存仓
|
||||||
if (wmsCarryH.carrystd_id == "26037267399717")
|
if (wmsCarryH.carrystd_id == "26037267399717")
|
||||||
@@ -358,28 +362,37 @@ namespace Tnb.WarehouseMgr
|
|||||||
.InnerJoin<WmsCarryH>((a, b) => a.membercarry_id == b.id)
|
.InnerJoin<WmsCarryH>((a, b) => a.membercarry_id == b.id)
|
||||||
.InnerJoin<WmsCarryCode>((a, b, c) => b.id == c.carry_id)
|
.InnerJoin<WmsCarryCode>((a, b, c) => b.id == c.carry_id)
|
||||||
.Where((a, b, c) => a.carry_id == wmsCarryH.id).Select((a, b, c) => c).ToList();
|
.Where((a, b, c) => a.carry_id == wmsCarryH.id).Select((a, b, c) => c).ToList();
|
||||||
|
|
||||||
|
carryHs = _db.Queryable<WmsCarryD>()
|
||||||
|
.InnerJoin<WmsCarryH>((a, b) => a.membercarry_id == b.id)
|
||||||
|
.Where((a, b) => a.carry_id == wmsCarryH.id).Select((a, b) => b).ToList();
|
||||||
}
|
}
|
||||||
// 载运小车和载运料架到缓存仓
|
// 载运小车和载运料架到缓存仓
|
||||||
else if (wmsCarryH.carrystd_id == "26103233723941" || wmsCarryH.carrystd_id == "34995839046677")
|
else if (wmsCarryH.carrystd_id == "26103233723941" || wmsCarryH.carrystd_id == "34995839046677")
|
||||||
{
|
{
|
||||||
|
carryHs.Add(wmsCarryH);
|
||||||
wmsCarryCodes = _db.Queryable<WmsCarryH>()
|
wmsCarryCodes = _db.Queryable<WmsCarryH>()
|
||||||
.InnerJoin<WmsCarryCode>((a, b) => a.id == b.carry_id)
|
.InnerJoin<WmsCarryCode>((a, b) => a.id == b.carry_id)
|
||||||
.Where((a, b) => a.id == wmsCarryH.id).Select((a, b) => b).ToList();
|
.Where((a, b) => a.id == wmsCarryH.id).Select((a, b) => b).ToList();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Logger.LogError($"【WmsPrdReturnService ModifyAsync】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!");
|
throw new Exception($"【WmsPrdReturnService ModifyAsync】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wmsCarryCodes.Count == 0)
|
if (wmsCarryCodes.Count == 0)
|
||||||
{
|
{
|
||||||
Logger.LogWarning($"【WmsPrdReturnService ModifyAsync】载具{input.carryIds[0]}没有绑定物料条码");
|
throw new Exception($"【WmsPrdReturnService ModifyAsync】载具{input.carryIds[0]}没有绑定物料条码");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await _db.Ado.BeginTranAsync();
|
await _db.Ado.BeginTranAsync();
|
||||||
|
|
||||||
|
int row_is_all_feeding = await _db.Updateable<PrdMaterialReceiptD>().SetColumns(r => r.is_all_feeding == 1)
|
||||||
|
.Where(r => r.is_all_feeding == 0 && carryHs.Select(x => x.id).Contains(r.member_carry_id)).ExecuteCommandAsync();
|
||||||
|
|
||||||
|
Logger.LogInformation($"【WmsPrdReturnService ModifyAsync】更新签收表is_all_feeding 影响记录条数 {row_is_all_feeding}条 影响载具为{string.Join(',', carryHs.Select(x => x.carry_code).ToList())}");
|
||||||
|
|
||||||
|
|
||||||
// 更新已转数量
|
// 更新已转数量
|
||||||
List<WmsPrdReturnD> wmsPrdReturnDs = _db.Queryable<WmsPrdReturnD>().Where(r => r.bill_id == input.source_id).ToList();
|
List<WmsPrdReturnD> wmsPrdReturnDs = _db.Queryable<WmsPrdReturnD>().Where(r => r.bill_id == input.source_id).ToList();
|
||||||
foreach (WmsPrdReturnD wmsPrdReturnD in wmsPrdReturnDs)
|
foreach (WmsPrdReturnD wmsPrdReturnD in wmsPrdReturnDs)
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ using JNPF.VisualDev.Interfaces;
|
|||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.CodeAnalysis;
|
using Microsoft.CodeAnalysis;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
using NPOI.HSSF.Record;
|
using NPOI.HSSF.Record;
|
||||||
using NPOI.SS.Formula;
|
using NPOI.SS.Formula;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
@@ -133,6 +134,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
[HttpPost, NonUnify, AllowAnonymous]
|
[HttpPost, NonUnify, AllowAnonymous]
|
||||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> Distribute(SaleReleaseDistributeInput input)
|
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> Distribute(SaleReleaseDistributeInput input)
|
||||||
{
|
{
|
||||||
|
Logger.LogInformation($"【Distribute】 销售出库下发");
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (input.qty <= 0)
|
if (input.qty <= 0)
|
||||||
@@ -160,6 +162,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
List<Tuple<string, WmsCarryH, WmsCarryCode, BasLocation>> items_sorttask = items.Where(r => r.Item1 == "分拣任务").ToList();
|
List<Tuple<string, WmsCarryH, WmsCarryCode, BasLocation>> items_sorttask = items.Where(r => r.Item1 == "分拣任务").ToList();
|
||||||
List<Tuple<string, WmsCarryH, WmsCarryCode, BasLocation>> items_pretask = items.Where(r => r.Item1 == "预任务").ToList();
|
List<Tuple<string, WmsCarryH, WmsCarryCode, BasLocation>> items_pretask = items.Where(r => r.Item1 == "预任务").ToList();
|
||||||
|
|
||||||
|
Logger.LogInformation($"【Distribute】 预计生成{items_pretask.Count}条预任务");
|
||||||
// 预任务逻辑
|
// 预任务逻辑
|
||||||
foreach (Tuple<string, WmsCarryH, WmsCarryCode, BasLocation> item in items_pretask)
|
foreach (Tuple<string, WmsCarryH, WmsCarryCode, BasLocation> item in items_pretask)
|
||||||
{
|
{
|
||||||
@@ -167,8 +170,12 @@ namespace Tnb.WarehouseMgr
|
|||||||
WmsCarryCode carryCode = item.Item3;
|
WmsCarryCode carryCode = item.Item3;
|
||||||
BasLocation startLocation = item.Item4;
|
BasLocation startLocation = item.Item4;
|
||||||
// 根据一楼工位任务数平均分配任务 确定一楼工位
|
// 根据一楼工位任务数平均分配任务 确定一楼工位
|
||||||
BasLocation endLocation = await _db.Queryable<BasLocation>().Where(r => _wareHouseService.GetFloor1OutstockLocation().Contains(r.id)).OrderBy("is_lock, task_nums, location_code").FirstAsync();
|
BasLocation endLocation = await _db.Queryable<BasLocation>().Where(r => _wareHouseService.GetFloor1OutstockLocation().Contains(r.id) && r.is_lock == 0 && r.is_use == "0").OrderBy("is_lock, task_nums, location_code").FirstAsync();
|
||||||
|
|
||||||
|
if (endLocation == null)
|
||||||
|
{
|
||||||
|
throw new AppFriendlyException("一楼没有足够的未锁定且空闲的出库工位", 500);
|
||||||
|
}
|
||||||
WmsPointH sPoint = null!;
|
WmsPointH sPoint = null!;
|
||||||
WmsPointH ePoint = null!;
|
WmsPointH ePoint = null!;
|
||||||
|
|
||||||
@@ -281,6 +288,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Logger.LogInformation($"【Distribute】 预计生成{items_sorttask.Count}条分拣任务");
|
||||||
// 分拣任务逻辑
|
// 分拣任务逻辑
|
||||||
foreach (Tuple<string, WmsCarryH, WmsCarryCode, BasLocation> item in items_sorttask)
|
foreach (Tuple<string, WmsCarryH, WmsCarryCode, BasLocation> item in items_sorttask)
|
||||||
{
|
{
|
||||||
@@ -321,10 +329,13 @@ namespace Tnb.WarehouseMgr
|
|||||||
await _db.Updateable<WmsSaleD>().SetColumns(r => r.purchase_arriveqty == r.purchase_arriveqty + input.qty).Where(r => r.id == input.source_id).ExecuteCommandAsync();
|
await _db.Updateable<WmsSaleD>().SetColumns(r => r.purchase_arriveqty == r.purchase_arriveqty + input.qty).Where(r => r.id == input.source_id).ExecuteCommandAsync();
|
||||||
|
|
||||||
await _db.Ado.CommitTranAsync();
|
await _db.Ado.CommitTranAsync();
|
||||||
|
Logger.LogInformation($"【Distribute】 销售出库下发完成");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
await _db.Ado.RollbackTranAsync();
|
await _db.Ado.RollbackTranAsync();
|
||||||
|
Logger.LogError($"【Distribute】 {ex.Message}");
|
||||||
|
Logger.LogError($"【Distribute】 {ex.StackTrace}");
|
||||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
|
|||||||
@@ -17,6 +17,11 @@ using Tnb.WarehouseMgr.Entities.Dto.Inputs;
|
|||||||
using Tnb.WarehouseMgr.Interfaces;
|
using Tnb.WarehouseMgr.Interfaces;
|
||||||
using Tnb.QcMgr.Interfaces;
|
using Tnb.QcMgr.Interfaces;
|
||||||
using Tnb.WarehouseMgr.Entities.Consts;
|
using Tnb.WarehouseMgr.Entities.Consts;
|
||||||
|
using JNPF.Common.Enums;
|
||||||
|
using JNPF.FriendlyException;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Tnb.ProductionMgr.Entities;
|
||||||
|
using Tnb.WarehouseMgr.Entities.Entity;
|
||||||
|
|
||||||
namespace Tnb.WarehouseMgr
|
namespace Tnb.WarehouseMgr
|
||||||
{
|
{
|
||||||
@@ -99,5 +104,27 @@ namespace Tnb.WarehouseMgr
|
|||||||
return await UpdateChackStatus<WmsOutstockH>(input);
|
return await UpdateChackStatus<WmsOutstockH>(input);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override async Task ModifyAsync(WareHouseUpInput input)
|
||||||
|
{
|
||||||
|
//if (input == null)
|
||||||
|
//{
|
||||||
|
// throw new ArgumentNullException(nameof(input));
|
||||||
|
//}
|
||||||
|
|
||||||
|
//try
|
||||||
|
//{
|
||||||
|
// WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.id == input.carryIds[0]).FirstAsync();
|
||||||
|
|
||||||
|
|
||||||
|
// await _db.Ado.CommitTranAsync();
|
||||||
|
//}
|
||||||
|
//catch (Exception ex)
|
||||||
|
//{
|
||||||
|
// Logger.LogError("【WmsSaleService ModifyAsync】" + ex.Message);
|
||||||
|
// Logger.LogError("【WmsSaleService ModifyAsync】" + ex.StackTrace);
|
||||||
|
// await _db.Ado.RollbackTranAsync();
|
||||||
|
//}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user