库存报表,日志完善
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());
|
||||
LoggerFloor2UpDownMachine.LogInformation($@"【上升降机】码垛结果 {result_开始码垛}");
|
||||
LoggerFloor2UpDownMachine.LogInformation($@"【上升降机】码垛位{target.stackingposition}码垛结果 {result_开始码垛}");
|
||||
if (!result_开始码垛)
|
||||
{
|
||||
throw new Exception($@"【上升降机】码垛结果 {result_开始码垛}");
|
||||
|
||||
@@ -166,6 +166,10 @@ public class ModuleConsts
|
||||
/// </summary>
|
||||
public const string MODULE_WMSSTOCKREPORT_ID = "27895417124373";
|
||||
/// <summary>
|
||||
/// 模块标识-载具库存报表 todo
|
||||
/// </summary>
|
||||
public const string MODULE_WMSCARRYSTOCKREPORT_ID = "MODULE_WMSCARRYSTOCKREPORT_ID";
|
||||
/// <summary>
|
||||
/// 模块标识-载具台账
|
||||
/// </summary>
|
||||
public const string MODULE_WMSCARRY_ID = "26038721525029";
|
||||
|
||||
@@ -41,6 +41,21 @@
|
||||
/// </summary>
|
||||
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>
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
using JNPF.Common.Filter;
|
||||
|
||||
namespace Tnb.WarehouseMgr.Entities.Dto
|
||||
{
|
||||
public class CarryStockInput : PageInputBase
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -139,5 +139,9 @@ public partial class WmsCarryH : BaseEntity<string>
|
||||
/// 配送工位
|
||||
/// </summary>
|
||||
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) 其它情况不考虑
|
||||
|
||||
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)
|
||||
.Where(whereExpr)
|
||||
@@ -527,6 +528,7 @@ namespace Tnb.WarehouseMgr
|
||||
WmsCarryCode _wmsCarryCode = itemsASC[j].wmsCarryCode;
|
||||
if (_wmsCarryCode.codeqty == input.needOut)
|
||||
{
|
||||
input.needOut -= _wmsCarryCode.codeqty;
|
||||
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();
|
||||
@@ -2125,7 +2127,8 @@ namespace Tnb.WarehouseMgr
|
||||
id = multiList[i].carry_id,
|
||||
is_lock = 0,
|
||||
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;
|
||||
|
||||
@@ -2172,7 +2175,7 @@ namespace Tnb.WarehouseMgr
|
||||
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)}");
|
||||
//更新条码的库位和仓库信息
|
||||
_ = 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
|
||||
{
|
||||
JObject queryJson = null;
|
||||
|
||||
if (!string.IsNullOrEmpty(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)
|
||||
// 只显示未完成的单据
|
||||
.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
|
||||
{
|
||||
id = a.id,
|
||||
@@ -136,6 +138,7 @@ namespace Tnb.WarehouseMgr
|
||||
arrival_date = a.arrival_date,
|
||||
order_code = a.order_code,
|
||||
})
|
||||
.OrderBy("a.bill_code desc")
|
||||
.ToPagedListAsync(input.currentPage, input.pageSize);
|
||||
|
||||
var _data = PageResult<WmsMaterialTransfer>.SqlSugarPageResult(result);
|
||||
@@ -176,7 +179,7 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ using Microsoft.Extensions.Logging;
|
||||
using NPOI.POIFS.Storage;
|
||||
using SqlSugar;
|
||||
using Tnb.BasicData.Entities;
|
||||
using Tnb.ProductionMgr.Entities;
|
||||
using Tnb.WarehouseMgr.Entities;
|
||||
using Tnb.WarehouseMgr.Entities.Attributes;
|
||||
using Tnb.WarehouseMgr.Entities.Consts;
|
||||
@@ -53,7 +54,7 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 从产线呼叫装料架到暂存仓/缓存仓
|
||||
/// 从产线呼叫装料架到暂存仓/缓存仓(退料)
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
@@ -350,6 +351,9 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
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;
|
||||
// 料架到暂存仓
|
||||
if (wmsCarryH.carrystd_id == "26037267399717")
|
||||
@@ -358,28 +362,37 @@ namespace Tnb.WarehouseMgr
|
||||
.InnerJoin<WmsCarryH>((a, b) => a.membercarry_id == b.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();
|
||||
|
||||
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")
|
||||
{
|
||||
|
||||
carryHs.Add(wmsCarryH);
|
||||
wmsCarryCodes = _db.Queryable<WmsCarryH>()
|
||||
.InnerJoin<WmsCarryCode>((a, b) => a.id == b.carry_id)
|
||||
.Where((a, b) => a.id == wmsCarryH.id).Select((a, b) => b).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.LogError($"【WmsPrdReturnService ModifyAsync】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!");
|
||||
return;
|
||||
throw new Exception($"【WmsPrdReturnService ModifyAsync】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!");
|
||||
}
|
||||
|
||||
if (wmsCarryCodes.Count == 0)
|
||||
{
|
||||
Logger.LogWarning($"【WmsPrdReturnService ModifyAsync】载具{input.carryIds[0]}没有绑定物料条码");
|
||||
return;
|
||||
throw new Exception($"【WmsPrdReturnService ModifyAsync】载具{input.carryIds[0]}没有绑定物料条码");
|
||||
}
|
||||
|
||||
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();
|
||||
foreach (WmsPrdReturnD wmsPrdReturnD in wmsPrdReturnDs)
|
||||
|
||||
@@ -13,6 +13,7 @@ using JNPF.VisualDev.Interfaces;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.CodeAnalysis;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NPOI.HSSF.Record;
|
||||
using NPOI.SS.Formula;
|
||||
using SqlSugar;
|
||||
@@ -133,6 +134,7 @@ namespace Tnb.WarehouseMgr
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> Distribute(SaleReleaseDistributeInput input)
|
||||
{
|
||||
Logger.LogInformation($"【Distribute】 销售出库下发");
|
||||
try
|
||||
{
|
||||
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_pretask = items.Where(r => r.Item1 == "预任务").ToList();
|
||||
|
||||
Logger.LogInformation($"【Distribute】 预计生成{items_pretask.Count}条预任务");
|
||||
// 预任务逻辑
|
||||
foreach (Tuple<string, WmsCarryH, WmsCarryCode, BasLocation> item in items_pretask)
|
||||
{
|
||||
@@ -167,8 +170,12 @@ namespace Tnb.WarehouseMgr
|
||||
WmsCarryCode carryCode = item.Item3;
|
||||
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 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)
|
||||
{
|
||||
@@ -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.Ado.CommitTranAsync();
|
||||
Logger.LogInformation($"【Distribute】 销售出库下发完成");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
Logger.LogError($"【Distribute】 {ex.Message}");
|
||||
Logger.LogError($"【Distribute】 {ex.StackTrace}");
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
}
|
||||
finally
|
||||
|
||||
@@ -17,6 +17,11 @@ using Tnb.WarehouseMgr.Entities.Dto.Inputs;
|
||||
using Tnb.WarehouseMgr.Interfaces;
|
||||
using Tnb.QcMgr.Interfaces;
|
||||
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
|
||||
{
|
||||
@@ -99,5 +104,27 @@ namespace Tnb.WarehouseMgr
|
||||
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