增加PC载具物料绑定记录表(载具绑定)、erp调拨订单、报表bug
This commit is contained in:
@@ -0,0 +1,80 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Tnb.WarehouseMgr.Entities.Dto.ErpInputs
|
||||||
|
{
|
||||||
|
public class TransferOrderInput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 单号
|
||||||
|
/// </summary>
|
||||||
|
public string? transfer_order { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 部门编码
|
||||||
|
/// </summary>
|
||||||
|
public string? dept_code { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 业务员编码
|
||||||
|
/// </summary>
|
||||||
|
public string? biller { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 入库组织编号
|
||||||
|
/// </summary>
|
||||||
|
public string? instockorg_code { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 供货日期
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? ship_date { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 主表pk
|
||||||
|
/// </summary>
|
||||||
|
public string? erp_pk { get; set; }
|
||||||
|
|
||||||
|
public List<TransferOrderInputDetail> details { get; set; }
|
||||||
|
}
|
||||||
|
public class TransferOrderInputDetail
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 行号
|
||||||
|
/// </summary>
|
||||||
|
public string? lineno { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物品代码
|
||||||
|
/// </summary>
|
||||||
|
public string? material_code { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单位代码
|
||||||
|
/// </summary>
|
||||||
|
public string? unit_code { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 采购数量
|
||||||
|
/// </summary>
|
||||||
|
public decimal? qty { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 批次
|
||||||
|
/// </summary>
|
||||||
|
public string? code_batch { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 交货日期
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? delivery_date { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 子表主键
|
||||||
|
/// </summary>
|
||||||
|
public string erp_line_pk { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
using JNPF.Common.Contracts;
|
||||||
|
using JNPF.Common.Security;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
namespace Tnb.WarehouseMgr.Entities.Entity;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 调拨订单(子表)
|
||||||
|
/// </summary>
|
||||||
|
[SugarTable("wms_transfer_order_d")]
|
||||||
|
public partial class WmsTransferOrderD : BaseEntity<string>
|
||||||
|
{
|
||||||
|
public WmsTransferOrderD()
|
||||||
|
{
|
||||||
|
id = SnowflakeIdHelper.NextId();
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 主表id
|
||||||
|
/// </summary>
|
||||||
|
public string? bill_id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建用户
|
||||||
|
/// </summary>
|
||||||
|
public string? create_id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? create_time { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改用户
|
||||||
|
/// </summary>
|
||||||
|
public string? modify_id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? modify_time { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 所属组织
|
||||||
|
/// </summary>
|
||||||
|
public string? org_id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public string? remark { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料id
|
||||||
|
/// </summary>
|
||||||
|
public string? material_id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料编码
|
||||||
|
/// </summary>
|
||||||
|
public string? material_code { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 物料名称
|
||||||
|
/// </summary>
|
||||||
|
public string? material_name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 规格型号
|
||||||
|
/// </summary>
|
||||||
|
public string? material_specification { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单位
|
||||||
|
/// </summary>
|
||||||
|
public string? unit { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 批号
|
||||||
|
/// </summary>
|
||||||
|
public string? batchno { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 数量
|
||||||
|
/// </summary>
|
||||||
|
public decimal? qty { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// erp_line_pk
|
||||||
|
/// </summary>
|
||||||
|
public string? erp_line_pk { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 行号
|
||||||
|
/// </summary>
|
||||||
|
public string? lineno { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
using JNPF.Common.Contracts;
|
||||||
|
using JNPF.Common.Security;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
namespace Tnb.WarehouseMgr.Entities.Entity;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 调拨订单
|
||||||
|
/// </summary>
|
||||||
|
[SugarTable("wms_transfer_order_h")]
|
||||||
|
public partial class WmsTransferOrderH : BaseEntity<string>
|
||||||
|
{
|
||||||
|
public WmsTransferOrderH()
|
||||||
|
{
|
||||||
|
id = SnowflakeIdHelper.NextId();
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 创建用户
|
||||||
|
/// </summary>
|
||||||
|
public string? create_id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? create_time { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改用户
|
||||||
|
/// </summary>
|
||||||
|
public string? modify_id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? modify_time { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 流程任务Id
|
||||||
|
/// </summary>
|
||||||
|
public string? f_flowtaskid { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 流程引擎Id
|
||||||
|
/// </summary>
|
||||||
|
public string? f_flowid { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// erp_pk
|
||||||
|
/// </summary>
|
||||||
|
public string? erp_pk { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// erp_bill_code
|
||||||
|
/// </summary>
|
||||||
|
public string? erp_bill_code { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 所属组织
|
||||||
|
/// </summary>
|
||||||
|
public string? org_id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 单号
|
||||||
|
/// </summary>
|
||||||
|
public string? bill_code { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public string? remark { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 部门编码
|
||||||
|
/// </summary>
|
||||||
|
public string? dept_code { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 业务员编码
|
||||||
|
/// </summary>
|
||||||
|
public string? biller { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
@@ -946,6 +946,116 @@ namespace Tnb.WarehouseMgr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 调拨订单
|
||||||
|
/// </summary>
|
||||||
|
[HttpPost, NonUnify, AllowAnonymous]
|
||||||
|
public async Task<Entities.Dto.Outputs.Result> TransferOrder(TransferOrderInput input)
|
||||||
|
{
|
||||||
|
LoggerErp2Mes.LogInformation($"【TransferOrder】ERP传入数据:{JsonConvert.SerializeObject(input)}");
|
||||||
|
var db = _repository.AsSugarClient();
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(input.erp_pk))
|
||||||
|
{
|
||||||
|
_LoggerErp2Mes.LogWarning($"【TransferOrder】主表主键不能为空!");
|
||||||
|
return await ToApiResult(HttpStatusCode.InternalServerError, $"主表主键不能为空!");
|
||||||
|
}
|
||||||
|
|
||||||
|
int count_erp_line_pk = input.details.Where(r => string.IsNullOrEmpty(r.erp_line_pk)).Count();
|
||||||
|
if (count_erp_line_pk > 0)
|
||||||
|
{
|
||||||
|
_LoggerErp2Mes.LogWarning($@"【TransferOrder】子表主键不能为空!");
|
||||||
|
throw new AppFriendlyException($@"子表主键不能为空!", 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
var wmsTransferOrdersDistinct = input.details.Select(r => new
|
||||||
|
{
|
||||||
|
material_id = r.material_code,
|
||||||
|
code_batch = r.code_batch,
|
||||||
|
}).Distinct();
|
||||||
|
if (wmsTransferOrdersDistinct.Count() < input.details.Count)
|
||||||
|
{
|
||||||
|
_LoggerErp2Mes.LogWarning($@"【TransferOrder】表体存在物料和批号重复的明细!");
|
||||||
|
throw new AppFriendlyException($@"表体存在物料和批号重复的明细!", 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await db.Ado.BeginTranAsync();
|
||||||
|
WmsTransferOrderH wmsTransferOrderH = new WmsTransferOrderH();
|
||||||
|
string Code = await _billRuleService.GetBillNumber("WmsTransferOrder");
|
||||||
|
|
||||||
|
wmsTransferOrderH.bill_code = Code;
|
||||||
|
wmsTransferOrderH.erp_bill_code = input.transfer_order;
|
||||||
|
wmsTransferOrderH.biller = input.biller;
|
||||||
|
wmsTransferOrderH.dept_code = input.dept_code;
|
||||||
|
wmsTransferOrderH.erp_pk = input.erp_pk;
|
||||||
|
wmsTransferOrderH.create_id = WmsWareHouseConst.ErpUserId;
|
||||||
|
wmsTransferOrderH.create_time = DateTime.Now;
|
||||||
|
wmsTransferOrderH.org_id = WmsWareHouseConst.AdministratorOrgId;
|
||||||
|
await db.Insertable(wmsTransferOrderH).ExecuteCommandAsync();
|
||||||
|
|
||||||
|
|
||||||
|
List<WmsTransferOrderD> wmsTransferOrderDs = new List<WmsTransferOrderD>();
|
||||||
|
foreach (var detail in input.details)
|
||||||
|
{
|
||||||
|
WmsTransferOrderD wmsTransferOrderD = new WmsTransferOrderD();
|
||||||
|
|
||||||
|
wmsTransferOrderD.bill_id = wmsTransferOrderD.id;
|
||||||
|
wmsTransferOrderD.unit = detail.unit_code;
|
||||||
|
var erpExtendField = await db.Queryable<ErpExtendField>().InnerJoin<DictionaryDataEntity>((a, b) => a.table_id == b.Id).Where((a, b) => a.cunitid == detail.unit_code).Select((a, b) => b).FirstAsync();
|
||||||
|
if (erpExtendField != null)
|
||||||
|
{
|
||||||
|
wmsTransferOrderD.unit = erpExtendField.EnCode;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_LoggerErp2Mes.LogWarning($@"【TransferOrder】表体明细中单位{detail.unit_code}在wms系统中未找到!");
|
||||||
|
throw new AppFriendlyException($@"表体明细中单位{detail.unit_code}在wms系统中未找到!", 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
wmsTransferOrderD.qty = detail.qty;
|
||||||
|
wmsTransferOrderD.batchno = detail.code_batch;
|
||||||
|
wmsTransferOrderD.erp_line_pk = detail.erp_line_pk;
|
||||||
|
wmsTransferOrderD.create_id = WmsWareHouseConst.ErpUserId;
|
||||||
|
wmsTransferOrderD.create_time = DateTime.Now;
|
||||||
|
wmsTransferOrderD.lineno = detail.lineno;
|
||||||
|
|
||||||
|
var material = await db.Queryable<BasMaterial>().Where(p => p.code == detail.material_code).FirstAsync();
|
||||||
|
if (material != null)
|
||||||
|
{
|
||||||
|
wmsTransferOrderD.material_id = material.id;
|
||||||
|
wmsTransferOrderD.material_code = material.code;
|
||||||
|
wmsTransferOrderD.material_name = material.name;
|
||||||
|
wmsTransferOrderD.material_specification = material.material_specification;
|
||||||
|
}
|
||||||
|
|
||||||
|
wmsTransferOrderDs.Add(wmsTransferOrderD);
|
||||||
|
}
|
||||||
|
|
||||||
|
await db.Insertable(wmsTransferOrderDs).ExecuteCommandAsync();
|
||||||
|
|
||||||
|
await db.Ado.CommitTranAsync();
|
||||||
|
|
||||||
|
LoggerErp2Mes.LogInformation($"【TransferOrder】成功生成单据:{Code}");
|
||||||
|
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
LoggerErp2Mes.LogError($"【TransferOrder】{ex.Message}");
|
||||||
|
LoggerErp2Mes.LogError($"【TransferOrder】{ex.StackTrace}");
|
||||||
|
await db.Ado.RollbackTranAsync();
|
||||||
|
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected Task<Entities.Dto.Outputs.Result> ToApiResult(HttpStatusCode statusCode, string msg)
|
protected Task<Entities.Dto.Outputs.Result> ToApiResult(HttpStatusCode statusCode, string msg)
|
||||||
{
|
{
|
||||||
Entities.Dto.Outputs.Result result = new()
|
Entities.Dto.Outputs.Result result = new()
|
||||||
|
|||||||
@@ -2339,7 +2339,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 三四号电梯出货 暂存仓到三楼电梯以及一楼电梯出库任务发type5
|
// 三四号电梯出货 暂存仓到三楼电梯以及一楼电梯出库任务发type5
|
||||||
if ((doubleCarryRunElevators.Contains(dis.device_id) && dis.endlocation_code.Contains("DT")) || doubleCarryRunElevatorsF1Code.Contains(dis.startlocation_code))
|
if ((dis.startlocation_code.Contains("CPOutstockCache") && dis.endlocation_code.Contains("DT")) || doubleCarryRunElevatorsF1Code.Contains(dis.startlocation_code))
|
||||||
{
|
{
|
||||||
reqBody.type = (int)EnumTaskChainType.电梯载两托货;
|
reqBody.type = (int)EnumTaskChainType.电梯载两托货;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -308,7 +308,6 @@ namespace Tnb.WarehouseMgr
|
|||||||
db = dbConn;
|
db = dbConn;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
WmsCarryH? carry = await db.Queryable<WmsCarryH>().SingleAsync(it => it.carry_code == input.carrycode);
|
WmsCarryH? carry = await db.Queryable<WmsCarryH>().SingleAsync(it => it.carry_code == input.carrycode);
|
||||||
if (carry == null)
|
if (carry == null)
|
||||||
{
|
{
|
||||||
@@ -316,6 +315,18 @@ namespace Tnb.WarehouseMgr
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<WmsCarryCode> WmsCarryCodes = new List<WmsCarryCode>();
|
List<WmsCarryCode> WmsCarryCodes = new List<WmsCarryCode>();
|
||||||
|
|
||||||
|
WmsCarrybindH wmsCarrybindH = new WmsCarrybindH();
|
||||||
|
wmsCarrybindH.carry_id = carry.id;
|
||||||
|
wmsCarrybindH.carry_code = carry.carry_code;
|
||||||
|
wmsCarrybindH.create_id = input.create_id;
|
||||||
|
wmsCarrybindH.create_time = DateTime.Now;
|
||||||
|
wmsCarrybindH.org_id = WmsWareHouseConst.AdministratorOrgId;
|
||||||
|
wmsCarrybindH.location_id = carry.location_id;
|
||||||
|
wmsCarrybindH.location_code = carry.location_code;
|
||||||
|
|
||||||
|
List<WmsCarrybindCode> wmsCarrybindCodes = new List<WmsCarrybindCode>();
|
||||||
|
|
||||||
foreach (var detail in input.details)
|
foreach (var detail in input.details)
|
||||||
{
|
{
|
||||||
var WmsCarryCode = detail.Adapt<WmsCarryCode>();
|
var WmsCarryCode = detail.Adapt<WmsCarryCode>();
|
||||||
@@ -325,10 +336,18 @@ namespace Tnb.WarehouseMgr
|
|||||||
WmsCarryCode.create_id = input.create_id;
|
WmsCarryCode.create_id = input.create_id;
|
||||||
WmsCarryCode.create_time = DateTime.Now;
|
WmsCarryCode.create_time = DateTime.Now;
|
||||||
WmsCarryCodes.Add(WmsCarryCode);
|
WmsCarryCodes.Add(WmsCarryCode);
|
||||||
|
|
||||||
|
var wmsCarrybindCode = detail.Adapt<WmsCarrybindCode>();
|
||||||
|
wmsCarrybindCode.carrybind_id = wmsCarrybindH.id;
|
||||||
|
wmsCarrybindCodes.Add(wmsCarrybindCode);
|
||||||
}
|
}
|
||||||
int rows = 0;
|
int rows = 0;
|
||||||
if (WmsCarryCodes.Count > 0)
|
if (WmsCarryCodes.Count > 0)
|
||||||
|
{
|
||||||
rows = await db.Insertable(WmsCarryCodes).ExecuteCommandAsync();
|
rows = await db.Insertable(WmsCarryCodes).ExecuteCommandAsync();
|
||||||
|
await _db.Insertable(wmsCarrybindH).ExecuteCommandAsync();
|
||||||
|
await _db.Insertable(wmsCarrybindCodes).ExecuteCommandAsync();
|
||||||
|
}
|
||||||
if (rows == 0)
|
if (rows == 0)
|
||||||
{
|
{
|
||||||
throw new Exception($"物料列表为空,不能提交绑定,可能的原因;1.需要检查扫码设置(新PDA) 2.未扫到有效的二维码 详细信息:接收到{input.details.Count}个条码 但是成功绑定的条码数量为0个!");
|
throw new Exception($"物料列表为空,不能提交绑定,可能的原因;1.需要检查扫码设置(新PDA) 2.未扫到有效的二维码 详细信息:接收到{input.details.Count}个条码 但是成功绑定的条码数量为0个!");
|
||||||
@@ -378,18 +397,33 @@ namespace Tnb.WarehouseMgr
|
|||||||
if (carry != null && subCarry != null)
|
if (carry != null && subCarry != null)
|
||||||
{
|
{
|
||||||
// 插入子载具绑定记录
|
// 插入子载具绑定记录
|
||||||
//VisualDevModelDataCrInput visualDevModelCrInput = new() { data = new Dictionary<string, object>() };
|
|
||||||
//visualDevModelCrInput.data[nameof(WmsCarrybindH.carry_id)] = input.carry_id;
|
WmsCarrybindH wmsCarrybindH = new WmsCarrybindH();
|
||||||
//visualDevModelCrInput.data[nameof(WmsCarrybindH.carry_code)] = input.carry_code;
|
wmsCarrybindH.carry_id = carry.id;
|
||||||
//visualDevModelCrInput.data[nameof(WmsCarrybindH.membercarry_id)] = input.membercarry_id;
|
wmsCarrybindH.carry_code = carry.carry_code;
|
||||||
//visualDevModelCrInput.data[nameof(WmsCarrybindH.membercarry_code)] = input.membercarry_code;
|
wmsCarrybindH.membercarry_id = input.membercarry_id;
|
||||||
//visualDevModelCrInput.data[nameof(WmsCarrybindH.type)] = 0;
|
wmsCarrybindH.membercarry_code = input.membercarry_code;
|
||||||
//visualDevModelCrInput.data[nameof(WmsCarrybindH.carrystd_id)] = carry.carrystd_id;
|
wmsCarrybindH.create_id = input.create_id;
|
||||||
////visualDevModelCrInput.data[nameof(WmsCarrybindH.create_id)] = input.create_id;
|
wmsCarrybindH.create_time = DateTime.Now;
|
||||||
//visualDevModelCrInput.data[nameof(WmsCarrybindH.create_time)] = DateTime.Now;
|
wmsCarrybindH.org_id = WmsWareHouseConst.AdministratorOrgId;
|
||||||
//visualDevModelCrInput.data[nameof(WmsCarrybindH.loc)] = 1;
|
wmsCarrybindH.location_id = carry.location_id;
|
||||||
//VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSCARRYBIND_ID, true);
|
wmsCarrybindH.location_code = carry.location_code;
|
||||||
//await _runService.Create(templateEntity, visualDevModelCrInput);
|
|
||||||
|
List<WmsCarrybindCode> wmsCarrybindCodes = new List<WmsCarrybindCode>();
|
||||||
|
|
||||||
|
List<WmsCarryCode> WmsCarryCodes = db.Queryable<WmsCarryCode>().Where(r => r.carry_id == input.membercarry_id).ToList();
|
||||||
|
foreach (var detail in WmsCarryCodes)
|
||||||
|
{
|
||||||
|
var wmsCarrybindCode = detail.Adapt<WmsCarrybindCode>();
|
||||||
|
wmsCarrybindCode.membercarry_id = input.membercarry_id;
|
||||||
|
wmsCarrybindCode.membercarry_code = input.membercarry_code;
|
||||||
|
wmsCarrybindCode.carrybind_id = wmsCarrybindH.id;
|
||||||
|
wmsCarrybindCode.org_id = WmsWareHouseConst.AdministratorOrgId;
|
||||||
|
wmsCarrybindCodes.Add(wmsCarrybindCode);
|
||||||
|
}
|
||||||
|
await db.Insertable(wmsCarrybindH).ExecuteCommandAsync();
|
||||||
|
await db.Insertable(wmsCarrybindCodes).ExecuteCommandAsync();
|
||||||
|
|
||||||
|
|
||||||
WmsCarryD wmsCarryD = new()
|
WmsCarryD wmsCarryD = new()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ namespace Tnb.WarehouseMgr
|
|||||||
material_specification = JObject.Parse(input.queryJson).Value<string>(nameof(WmsCarryCode.material_specification));
|
material_specification = JObject.Parse(input.queryJson).Value<string>(nameof(WmsCarryCode.material_specification));
|
||||||
}
|
}
|
||||||
|
|
||||||
IEnumerable<WmsStockReportH?> result;
|
List<WmsStockReportH?> result = new List<WmsStockReportH?>();
|
||||||
if (string.IsNullOrEmpty(supplier_code))
|
if (string.IsNullOrEmpty(supplier_code))
|
||||||
{
|
{
|
||||||
List<WmsStockReportH> items = await _db.Queryable<WmsCarryCode>().InnerJoin<WmsCarryH>((a, b) => a.carry_id == b.id)
|
List<WmsStockReportH> items = await _db.Queryable<WmsCarryCode>().InnerJoin<WmsCarryH>((a, b) => a.carry_id == b.id)
|
||||||
@@ -76,12 +76,14 @@ namespace Tnb.WarehouseMgr
|
|||||||
List<WmsCarryCode> carryCodes = await _db.Queryable<WmsCarryCode>().ToListAsync();
|
List<WmsCarryCode> carryCodes = await _db.Queryable<WmsCarryCode>().ToListAsync();
|
||||||
var storeMap = items.DistinctBy(x => new { x.warehouse_id, x.material_id, x.code_batch }).ToDictionary(x => new { x.warehouse_id, x.material_id, x.code_batch }, x => x);
|
var storeMap = items.DistinctBy(x => new { x.warehouse_id, x.material_id, x.code_batch }).ToDictionary(x => new { x.warehouse_id, x.material_id, x.code_batch }, x => x);
|
||||||
|
|
||||||
result = items.GroupBy(g => new { g.warehouse_id, g.material_id, g.code_batch }).Select(itGroup =>
|
var group = items.GroupBy(g => new { g.warehouse_id, g.material_id, g.code_batch });
|
||||||
|
foreach (var itGroup in group)
|
||||||
{
|
{
|
||||||
_ = storeMap.TryGetValue(itGroup.Key, out WmsStockReportH? stockReport);
|
_ = storeMap.TryGetValue(itGroup.Key, out WmsStockReportH? stockReport);
|
||||||
|
|
||||||
List<WmsCarryCode> curCarryCodes = carryCodes.FindAll(x => x.warehouse_id == itGroup.Key.warehouse_id && x.material_id == itGroup.Key.material_id
|
List<WmsCarryCode> curCarryCodes = carryCodes.FindAll(x => x.warehouse_id == itGroup.Key.warehouse_id && x.material_id == itGroup.Key.material_id
|
||||||
&& x.code_batch == itGroup.Key.code_batch);
|
&& x.code_batch == itGroup.Key.code_batch);
|
||||||
|
stockReport.codeqty = 0;
|
||||||
curCarryCodes.ForEach(x =>
|
curCarryCodes.ForEach(x =>
|
||||||
{
|
{
|
||||||
stockReport.codeqty += x.codeqty;
|
stockReport.codeqty += x.codeqty;
|
||||||
@@ -102,8 +104,9 @@ namespace Tnb.WarehouseMgr
|
|||||||
|
|
||||||
// stockReport.codeqty += x.codeqty;
|
// stockReport.codeqty += x.codeqty;
|
||||||
//});
|
//});
|
||||||
return stockReport;
|
//return stockReport;
|
||||||
});
|
result.Add(stockReport);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -134,19 +137,21 @@ namespace Tnb.WarehouseMgr
|
|||||||
|
|
||||||
List<WmsCarryCode> carryCodes = await _db.Queryable<WmsCarryCode>().ToListAsync();
|
List<WmsCarryCode> carryCodes = await _db.Queryable<WmsCarryCode>().ToListAsync();
|
||||||
var storeMap = items.DistinctBy(x => new { x.warehouse_id, x.material_id, x.code_batch, x.supplier_code }).ToDictionary(x => new { x.warehouse_id, x.material_id, x.code_batch, x.supplier_code }, x => x);
|
var storeMap = items.DistinctBy(x => new { x.warehouse_id, x.material_id, x.code_batch, x.supplier_code }).ToDictionary(x => new { x.warehouse_id, x.material_id, x.code_batch, x.supplier_code }, x => x);
|
||||||
|
|
||||||
result = items.GroupBy(g => new { g.warehouse_id, g.material_id, g.code_batch, g.supplier_code }).Select(itGroup =>
|
var group = items.GroupBy(g => new { g.warehouse_id, g.material_id, g.code_batch, g.supplier_code });
|
||||||
|
foreach (var itGroup in group)
|
||||||
{
|
{
|
||||||
_ = storeMap.TryGetValue(itGroup.Key, out WmsStockReportH? stockReport);
|
_ = storeMap.TryGetValue(itGroup.Key, out WmsStockReportH? stockReport);
|
||||||
|
|
||||||
List<WmsStockReportCode> curCarryCodes = carryCodes.Adapt<List<WmsStockReportCode>>().FindAll(x => x.warehouse_id == itGroup.Key.warehouse_id && x.material_id == itGroup.Key.material_id
|
List<WmsStockReportCode> curCarryCodes = carryCodes.Adapt<List<WmsStockReportCode>>().FindAll(x => x.warehouse_id == itGroup.Key.warehouse_id && x.material_id == itGroup.Key.material_id
|
||||||
&& x.code_batch == itGroup.Key.code_batch && x.supplier_code == itGroup.Key.supplier_code);
|
&& x.code_batch == itGroup.Key.code_batch && x.supplier_code == itGroup.Key.supplier_code);
|
||||||
|
stockReport.codeqty = 0;
|
||||||
curCarryCodes.ForEach(x =>
|
curCarryCodes.ForEach(x =>
|
||||||
{
|
{
|
||||||
stockReport.codeqty += x.codeqty;
|
stockReport.codeqty += x.codeqty;
|
||||||
});
|
});
|
||||||
return stockReport;
|
result.Add(stockReport);
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -500,7 +500,7 @@ namespace JNPF.VisualDev
|
|||||||
foreach (JObject row in respBodyList)
|
foreach (JObject row in respBodyList)
|
||||||
{
|
{
|
||||||
Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
|
Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
|
||||||
foreach (JProperty jProperty in firstRow.Properties())
|
foreach (JProperty jProperty in row.Properties())
|
||||||
{
|
{
|
||||||
keyValuePairs.Add(jProperty.Name, jProperty.Value);
|
keyValuePairs.Add(jProperty.Name, jProperty.Value);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user