原材料仓逻辑、看板调整
This commit is contained in:
@@ -251,5 +251,15 @@ public class ModuleConsts
|
||||
/// 模块标识-生产入库单
|
||||
/// </summary>
|
||||
public const string MODULE_WMSPRDINSTOCK_ID = "34467501190677";
|
||||
/// <summary>
|
||||
/// 模块标识-委外收货 todo
|
||||
/// </summary>
|
||||
public const string MODULE_WMSOUTSOURCEORDER_ID = "MODULE_WMSOUTSOURCEORDER_ID";//
|
||||
/// <summary>
|
||||
/// 模块标识-原材料调拨入库 todo
|
||||
/// </summary>
|
||||
public const string MODULE_WMSRAWMATTRANSFERINSTOCK_ID = "MODULE_WMSRAWMATTRANSFERINSTOCK_ID";//
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -113,6 +113,14 @@
|
||||
/// 采购收料物料流水号
|
||||
/// </summary>
|
||||
public const string WMS_PURCHASE_MAT_ENCODE = "PurchaseMat";
|
||||
/// <summary>
|
||||
/// 委外收料物料流水号
|
||||
/// </summary>
|
||||
public const string WMS_OUTSOURCE_MAT_ENCODE = "OutsourceMat";
|
||||
/// <summary>
|
||||
/// 原材料调拨入库物料流水号
|
||||
/// </summary>
|
||||
public const string WMS_TRANSFER_RAWMAT_ENCODE = "RawMatTransfer";
|
||||
/// 齐套出库生成Encode
|
||||
/// </summary>
|
||||
public const string WMS_KITTINGOUTSTK_ENCODE = "WmsKittingOutStk";
|
||||
@@ -395,7 +403,22 @@
|
||||
/// 单据类型-生产入库单
|
||||
/// </summary>
|
||||
public const string BILLTYPE_PRDINSTOCK_ID = "27410834411541";
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 单据类型-采购收货
|
||||
/// </summary>
|
||||
public const string BILLTYPE_PURCHASE_ID = "35882440181525";
|
||||
|
||||
/// <summary>
|
||||
/// 单据类型-委外收货
|
||||
/// </summary>
|
||||
public const string BILLTYPE_OUTSOURCE_ID = "35882444276245";
|
||||
|
||||
/// <summary>
|
||||
/// 单据类型-原材料调拨入库
|
||||
/// </summary>
|
||||
public const string BILLTYPE_RAWMATTRANSFERINSTOCK_ID = "35882449537813";
|
||||
/// <summary>
|
||||
/// 管理员Id(天益4厂管理员)
|
||||
/// </summary>
|
||||
|
||||
@@ -13,8 +13,15 @@ namespace Tnb.WarehouseMgr.Entities.Dto
|
||||
public int layers { get; set; }
|
||||
public string carry_code { get; set; }
|
||||
public string material_code { get; set; }
|
||||
public string material_name { get; set; }
|
||||
public string code_batch { get; set; }
|
||||
public decimal num { get; set; }
|
||||
/// <summary>
|
||||
/// 0 空库(包括已锁定)1 空载具码垛 2 合格品 3 待检 4 让步接受 5 不合格
|
||||
/// </summary>
|
||||
public int status { get; set; }
|
||||
/// </summary>
|
||||
public string barcode { get; set; }
|
||||
}
|
||||
public class ZsjOutput
|
||||
{
|
||||
|
||||
@@ -8,9 +8,9 @@ namespace Tnb.WarehouseMgr.Entities.Entity;
|
||||
/// 委外订单表子表
|
||||
/// </summary>
|
||||
[SugarTable("wms_outsource_order_d")]
|
||||
public partial class WmsOutsourceOrderD : BaseEntity<string>
|
||||
public partial class WmsOutsourceD : BaseEntity<string>
|
||||
{
|
||||
public WmsOutsourceOrderD()
|
||||
public WmsOutsourceD()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId();
|
||||
}
|
||||
@@ -8,14 +8,14 @@ namespace Tnb.WarehouseMgr.Entities.Entity;
|
||||
/// 委外订单
|
||||
/// </summary>
|
||||
[SugarTable("wms_outsource_order_h")]
|
||||
public partial class WmsOutsourceOrderH : BaseEntity<string>
|
||||
public partial class WmsOutsourceH : BaseEntity<string>
|
||||
{
|
||||
public WmsOutsourceOrderH()
|
||||
public WmsOutsourceH()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId();
|
||||
}
|
||||
/// <summary>
|
||||
/// 采购订单号
|
||||
/// 委外订单号
|
||||
/// </summary>
|
||||
public string? outsource_order { get; set; }
|
||||
|
||||
@@ -108,4 +108,9 @@ public partial class WmsPurchaseD : BaseEntity<string>
|
||||
/// </summary>
|
||||
[SugarColumn(IsIgnore = true)]
|
||||
public string? container_no { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 质检结果
|
||||
/// </summary>
|
||||
public string? qc_res { get; set; }
|
||||
}
|
||||
|
||||
@@ -0,0 +1,122 @@
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Security;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Tnb.WarehouseMgr.Entities.Entity;
|
||||
|
||||
/// <summary>
|
||||
/// 原材料调拨入库表子表
|
||||
/// </summary>
|
||||
[SugarTable("wms_rawmat_transferinstock_d")]
|
||||
public partial class WmsRawmatTransferinstockD : BaseEntity<string>
|
||||
{
|
||||
public WmsRawmatTransferinstockD()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId();
|
||||
}
|
||||
/// <summary>
|
||||
/// 主表id
|
||||
/// </summary>
|
||||
public string? bill_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料id
|
||||
/// </summary>
|
||||
public string? matcode_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料编号
|
||||
/// </summary>
|
||||
public string? matcode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料描述
|
||||
/// </summary>
|
||||
public string? matspecification { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单位
|
||||
/// </summary>
|
||||
public string? unit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入库数量
|
||||
/// </summary>
|
||||
public decimal? qty { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 实入数量
|
||||
/// </summary>
|
||||
public decimal? actual_qty { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 库存地点ID
|
||||
/// </summary>
|
||||
public string? stock_location_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 库存地点
|
||||
/// </summary>
|
||||
public string? stock_location { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 批次
|
||||
/// </summary>
|
||||
public string? code_batch { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
public string? remark { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 扩展字段
|
||||
/// </summary>
|
||||
public string? extras { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 交货日期
|
||||
/// </summary>
|
||||
public string? delivery_date { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 净价
|
||||
/// </summary>
|
||||
public string? net_price { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 货币
|
||||
/// </summary>
|
||||
public string? currency { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 工厂
|
||||
/// </summary>
|
||||
public string? factory { 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>
|
||||
/// erp_line_pk
|
||||
/// </summary>
|
||||
public string? erp_line_pk { get; set; }
|
||||
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Security;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Tnb.WarehouseMgr.Entities.Entity;
|
||||
|
||||
/// <summary>
|
||||
/// 原材料调拨入库
|
||||
/// </summary>
|
||||
[SugarTable("wms_rawmat_transferinstock_h")]
|
||||
public partial class WmsRawmatTransferinstockH : BaseEntity<string>
|
||||
{
|
||||
public WmsRawmatTransferinstockH()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId();
|
||||
}
|
||||
/// <summary>
|
||||
/// 原材料调拨入库单号
|
||||
/// </summary>
|
||||
public string? bill_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 联系人
|
||||
/// </summary>
|
||||
public string? contact_person { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 电话
|
||||
/// </summary>
|
||||
public string? tel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库组织id
|
||||
/// </summary>
|
||||
public string? outstockorg_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库组织编号
|
||||
/// </summary>
|
||||
public string? outstockorg_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库组织名称
|
||||
/// </summary>
|
||||
public string? outstockorg_name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
public string? remark { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 扩展字段
|
||||
/// </summary>
|
||||
public string? extras { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 时间戳
|
||||
/// </summary>
|
||||
public string? time_stamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单据类型
|
||||
/// </summary>
|
||||
public string? document_type { 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>
|
||||
/// 流程任务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; }
|
||||
|
||||
}
|
||||
@@ -111,5 +111,9 @@ public partial class WmsTempCode : BaseEntity<string>
|
||||
/// 规格型号
|
||||
/// </summary>
|
||||
public string? container_no { get; set; }
|
||||
/// <summary>
|
||||
/// 需求单据类型
|
||||
/// </summary>
|
||||
public string? required_type { get; set; }
|
||||
|
||||
}
|
||||
|
||||
@@ -479,15 +479,18 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
// 排除电梯任务 其他任务取消时自动解锁起点和终点库位
|
||||
|
||||
//int unlockStartRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsDistaskH.startlocation_code).ExecuteCommandAsync();
|
||||
//if (unlockStartRow > 0)
|
||||
//{
|
||||
// Logger.Information($"成功解锁起点库位{wmsDistaskH.startlocation_code}");
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// Logger.Information($"未成功解锁起点库位{wmsDistaskH.startlocation_code}");
|
||||
//}
|
||||
if (wmsDistaskH.act_start_date == null)
|
||||
{
|
||||
int unlockStartRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsDistaskH.startlocation_code).ExecuteCommandAsync();
|
||||
if (unlockStartRow > 0)
|
||||
{
|
||||
Logger.Information($"成功解锁起点库位{wmsDistaskH.startlocation_code}");
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Information($"未成功解锁起点库位{wmsDistaskH.startlocation_code}");
|
||||
}
|
||||
}
|
||||
|
||||
int unlockEndRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsDistaskH.endlocation_code).ExecuteCommandAsync();
|
||||
if (unlockEndRow > 0)
|
||||
@@ -502,8 +505,8 @@ namespace Tnb.WarehouseMgr
|
||||
int unlockCarryRow = await _db.Updateable<WmsCarryH>().SetColumns(r => new WmsCarryH
|
||||
{
|
||||
is_lock = 0,
|
||||
//location_id = wmsDistaskH.startlocation_code.Contains("BGWRKYCL0") ? WmsWareHouseConst.LOCATION_YCLBGWDRK : r.location_id,
|
||||
//location_code = wmsDistaskH.startlocation_code.Contains("BGWRKYCL0") ? "YCLBGWDRK" : r.location_code
|
||||
location_id = wmsDistaskH.startlocation_code.Contains("BGWRKYCL0") ? WmsWareHouseConst.LOCATION_YCLBGWDRK : r.location_id,
|
||||
location_code = wmsDistaskH.startlocation_code.Contains("BGWRKYCL0") ? "YCLBGWDRK" : r.location_code
|
||||
}).Where(r => r.carry_code == wmsDistaskH.carry_code).ExecuteCommandAsync();
|
||||
if (unlockCarryRow > 0)
|
||||
{
|
||||
@@ -557,15 +560,18 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
// 排除电梯任务 其他任务取消时自动解锁起点和终点库位
|
||||
|
||||
//int unlockStartRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsDistaskH.startlocation_code).ExecuteCommandAsync();
|
||||
//if (unlockStartRow > 0)
|
||||
//{
|
||||
// Logger.Information($"成功起点解锁库位{wmsDistaskH.startlocation_code}");
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// Logger.Information($"未成功解锁起点库位{wmsDistaskH.startlocation_code}");
|
||||
//}
|
||||
if (wmsDistaskH.act_start_date == null)
|
||||
{
|
||||
int unlockStartRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsDistaskH.startlocation_code).ExecuteCommandAsync();
|
||||
if (unlockStartRow > 0)
|
||||
{
|
||||
Logger.Information($"成功起点解锁库位{wmsDistaskH.startlocation_code}");
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Information($"未成功解锁起点库位{wmsDistaskH.startlocation_code}");
|
||||
}
|
||||
}
|
||||
|
||||
int unlockEndRow = await _db.Updateable<BasLocation>().SetColumns(r => r.is_lock == 0).Where(r => r.location_code == wmsDistaskH.endlocation_code).ExecuteCommandAsync();
|
||||
if (unlockEndRow > 0)
|
||||
@@ -580,8 +586,8 @@ namespace Tnb.WarehouseMgr
|
||||
int unlockCarryRow = await _db.Updateable<WmsCarryH>().SetColumns(r => new WmsCarryH
|
||||
{
|
||||
is_lock = 0,
|
||||
//location_id = wmsDistaskH.startlocation_code.Contains("BGWRKYCL0") ? WmsWareHouseConst.LOCATION_YCLBGWDRK : wmsDistaskH.startlocation_id,
|
||||
//location_code = wmsDistaskH.startlocation_code.Contains("BGWRKYCL0") ? "YCLBGWDRK" : wmsDistaskH.startlocation_code
|
||||
location_id = wmsDistaskH.startlocation_code.Contains("BGWRKYCL0") ? WmsWareHouseConst.LOCATION_YCLBGWDRK : r.location_id,
|
||||
location_code = wmsDistaskH.startlocation_code.Contains("BGWRKYCL0") ? "YCLBGWDRK" : r.location_code
|
||||
}).Where(r => r.carry_code == wmsDistaskH.carry_code).ExecuteCommandAsync();
|
||||
if (unlockCarryRow > 0)
|
||||
{
|
||||
|
||||
@@ -437,7 +437,7 @@ namespace Tnb.WarehouseMgr
|
||||
try
|
||||
{
|
||||
await db.Ado.BeginTranAsync();
|
||||
WmsOutsourceOrderH wmsOutsourceOrderH = new WmsOutsourceOrderH();
|
||||
WmsOutsourceH wmsOutsourceOrderH = new WmsOutsourceH();
|
||||
string Code = await _billRuleService.GetBillNumber("Purchase");
|
||||
|
||||
wmsOutsourceOrderH.outsource_order = Code;
|
||||
@@ -460,10 +460,10 @@ namespace Tnb.WarehouseMgr
|
||||
await db.Insertable(wmsOutsourceOrderH).ExecuteCommandAsync();
|
||||
|
||||
|
||||
List<WmsOutsourceOrderD> wmsOutsourceOrderDs = new List<WmsOutsourceOrderD>();
|
||||
List<WmsOutsourceD> wmsOutsourceOrderDs = new List<WmsOutsourceD>();
|
||||
foreach (var detail in input.details)
|
||||
{
|
||||
WmsOutsourceOrderD wmsOutsourceOrderD = new WmsOutsourceOrderD();
|
||||
WmsOutsourceD wmsOutsourceOrderD = new WmsOutsourceD();
|
||||
|
||||
wmsOutsourceOrderD.fk_wms_outsource_order_id = wmsOutsourceOrderH.id;
|
||||
wmsOutsourceOrderD.matcode = detail.material_code;
|
||||
@@ -721,6 +721,8 @@ namespace Tnb.WarehouseMgr
|
||||
wmsSaleH.bill_code = Code;
|
||||
wmsSaleH.erp_bill_code = input.bill_code;
|
||||
wmsSaleH.bill_type = "25103439022357";//销售出库单
|
||||
wmsSaleH.audit_status = 0;
|
||||
wmsSaleH.generate_type = "1";
|
||||
wmsSaleH.status = WmsWareHouseConst.BILLSTATUS_ADD_ID;
|
||||
wmsSaleH.warehouse_id = warehouse_outstock.id;
|
||||
wmsSaleH.customer_code = input.customer_code;
|
||||
|
||||
@@ -174,10 +174,21 @@ namespace Tnb.WarehouseMgr
|
||||
public async Task<dynamic> GetYCLlocation()
|
||||
{
|
||||
List<List<LocationOutput>> LocationOutputss=new List<List<LocationOutput>>();
|
||||
var list =await _db.Queryable<BasLocation>().Where(p=> p.wh_id == "1" && p.is_type == "0" && !p.location_code.Contains("-3")).OrderBy(p=>p.location_code).ToListAsync();
|
||||
var carrys=await _db.Queryable<WmsCarryH>().ToListAsync();
|
||||
var carrycodes=await _db.Queryable<WmsCarryCode>().ToListAsync();
|
||||
var lastdata=string.Empty;
|
||||
var list =await _db.Queryable<BasLocation>().Where(p=> p.wh_id == "1" && p.is_type == "0" && !p.location_code.Contains("-3"))
|
||||
.OrderBy(p=>p.location_code).ToListAsync();
|
||||
var carrys = await _db.Queryable<WmsCarryH>().ToListAsync();
|
||||
var carrycodes = await _db.Queryable<WmsCarryCode>().ToListAsync();
|
||||
var mats = await _db.Queryable<BasMaterial>().ToListAsync();
|
||||
var qcresults = await _db.Queryable<WmsCarryCode>()
|
||||
.InnerJoin<WmsTempCode>((a, b) => a.barcode == b.barcode)
|
||||
.InnerJoin<WmsPurchaseD>((a, b, c) => c.id == b.require_id)
|
||||
.Where((a, b, c) => !string.IsNullOrEmpty(c.qc_res)).Select((a,b,c)=>new
|
||||
{
|
||||
barcode = a.barcode,
|
||||
qc_res = c.qc_res
|
||||
}).ToListAsync();
|
||||
|
||||
var lastdata = string.Empty;
|
||||
List<LocationOutput> LocationOutputs = new List<LocationOutput>();
|
||||
foreach (var data in list)
|
||||
{
|
||||
@@ -190,6 +201,7 @@ namespace Tnb.WarehouseMgr
|
||||
locationOutput.location_code = data.location_code.Replace("YCL-", "");
|
||||
locationOutput.layers = data.layers;
|
||||
locationOutput.type = 0;
|
||||
int status = 0;
|
||||
if (carrys.Where(p => p.location_id == data.id).Any())
|
||||
{
|
||||
var carry= carrys.Where(p => p.location_id == data.id).First();
|
||||
@@ -200,11 +212,69 @@ namespace Tnb.WarehouseMgr
|
||||
var carrycode = carrycodes.Where(p => p.carry_id == carry.id).First();
|
||||
locationOutput.type = 2;
|
||||
locationOutput.material_code = carrycode.material_code;
|
||||
locationOutput.barcode = carrycode.barcode;
|
||||
|
||||
if (mats.Where(p => p.id == carrycode.material_id).Any())
|
||||
{
|
||||
var mat = mats.Where(p => p.id == carrycode.material_id).First();
|
||||
locationOutput.material_name = mat.name;
|
||||
}
|
||||
|
||||
locationOutput.code_batch = carrycode.code_batch;
|
||||
locationOutput.num = carrycode.codeqty;
|
||||
|
||||
if (qcresults.Where(p => p.barcode == carrycode.barcode).Any())
|
||||
{
|
||||
var qcresult = qcresults.Where(p => p.barcode == carrycode.barcode).First();
|
||||
string qc_result = qcresult.qc_res;
|
||||
switch (qc_result)
|
||||
{
|
||||
case "await":
|
||||
{
|
||||
status = 3;
|
||||
break;
|
||||
}
|
||||
case "vergeOk":
|
||||
{
|
||||
status = 4;
|
||||
break;
|
||||
}
|
||||
case "no":
|
||||
{
|
||||
status = 5;
|
||||
break;
|
||||
}
|
||||
case "ok":
|
||||
{
|
||||
status = 2;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
status = 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
status = 3;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (data.is_use == "1")
|
||||
{
|
||||
status = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
status = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
lastdata = data.location_code;
|
||||
locationOutput.status = status;
|
||||
LocationOutputs.Add(locationOutput);
|
||||
|
||||
// 。。。。。。
|
||||
@@ -243,6 +313,7 @@ namespace Tnb.WarehouseMgr
|
||||
if (carrycodes.Where(p => p.carry_id == carry.id).Any())
|
||||
{
|
||||
var carrycode = carrycodes.Where(p => p.carry_id == carry.id).First();
|
||||
locationOutput.barcode = carrycode.barcode;
|
||||
locationOutput.type = 2;
|
||||
locationOutput.material_code = carrycode.material_code;
|
||||
locationOutput.num = carrycode.codeqty;
|
||||
|
||||
@@ -3218,6 +3218,7 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
try
|
||||
{
|
||||
await s_floor2CreatePretask.WaitAsync();
|
||||
List<WmsCarryD> wmsCarryCodes = _db.Queryable<WmsCarryD>().Where(r => r.carry_id == rackid).ToList();
|
||||
|
||||
int move_num = 6;
|
||||
@@ -3225,17 +3226,16 @@ namespace Tnb.WarehouseMgr
|
||||
BasLocation startLocation = null;
|
||||
|
||||
int index = 0;
|
||||
await _db.Ado.BeginTranAsync();
|
||||
foreach (WmsCarryD wmsCarryD in wmsCarryCodes)
|
||||
{
|
||||
await s_floor2CreatePretask.WaitAsync();
|
||||
|
||||
//入库取终点 //出库起点
|
||||
InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_ZC_ID, Size = 1 };
|
||||
List<BasLocation> endLocations = await InStockStrategy(inStockStrategyInput);
|
||||
if (endLocations.Count == 0)
|
||||
{
|
||||
Logger.LogWarning("没有可用的入库库位");
|
||||
continue;
|
||||
throw new Exception("没有可用的入库库位");
|
||||
}
|
||||
|
||||
// 每6个重新获取一次起点
|
||||
@@ -3256,8 +3256,7 @@ namespace Tnb.WarehouseMgr
|
||||
bool isMatch = await IsCarryAndLocationMatchByCarryStd(carry, endLocation);
|
||||
if (!isMatch)
|
||||
{
|
||||
Logger.LogWarning("库位与载具规格不匹配");
|
||||
continue;
|
||||
throw new Exception("库位与载具规格不匹配");
|
||||
}
|
||||
|
||||
CommonCreatePretaskInput commonCreatePretaskInput = new CommonCreatePretaskInput();
|
||||
@@ -3293,25 +3292,26 @@ namespace Tnb.WarehouseMgr
|
||||
await _db.Updateable<BasLocation>().SetColumns(it => it.is_lock == 1).Where(r => r.id == endLocations[0].id).ExecuteCommandAsync();
|
||||
await _db.Updateable<BasLocation>().SetColumns(it => it.task_nums == it.task_nums + 1).Where(r => r.id == startLocation.id).ExecuteCommandAsync();
|
||||
|
||||
Entities.Dto.Outputs.Result res = await CommonCreatePretask(commonCreatePretaskInput);
|
||||
Entities.Dto.Outputs.Result res = await CommonCreatePretask(commonCreatePretaskInput, _db);
|
||||
if (res.code == JNPF.Common.Enums.HttpStatusCode.OK)
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.LogInformation($"【二楼kiva把料架送到下升降机后生成中储仓入库任务】 未成功生成预任务 起点{startLocation.location_code} 终点{endLocation.location_code} 料箱 {wmsCarryD.membercarry_code}");
|
||||
throw new Exception($"【二楼kiva把料架送到下升降机后生成中储仓入库任务】 未成功生成预任务 起点{startLocation.location_code} 终点{endLocation.location_code} 料箱 {wmsCarryD.membercarry_code}");
|
||||
}
|
||||
|
||||
index++;
|
||||
|
||||
s_floor2CreatePretask.Release();
|
||||
}
|
||||
await _db.Ado.CommitTranAsync();
|
||||
return true;
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
Logger.LogInformation($"【二楼kiva把料架送到下升降机后生成中储仓入库任务】:{ex}");
|
||||
s_floor2CreatePretask.Release();
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
return false;
|
||||
}
|
||||
finally
|
||||
|
||||
@@ -176,6 +176,12 @@ namespace Tnb.WarehouseMgr
|
||||
throw new Exception($"托盘{input.carrycode}已绑定物料!");
|
||||
}
|
||||
|
||||
var WmsTempCodes = await _db.Queryable<WmsTempCode>().Where(it => input.details.Select(r => r.barcode).Contains(it.barcode)).ToListAsync();
|
||||
if (WmsTempCodes.DistinctBy(r => r.required_type).Count() == 1)
|
||||
{
|
||||
throw new Exception($"不能绑定多个不同类型单据打印的条码!:{string.Join(',', WmsTempCodes.DistinctBy(r => r.required_type))}");
|
||||
}
|
||||
|
||||
List<WmsCarryCode> WmsCarryCodes = new List<WmsCarryCode>();
|
||||
foreach (var detail in input.details)
|
||||
{
|
||||
|
||||
157
WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceService.cs
Normal file
157
WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceService.cs
Normal file
@@ -0,0 +1,157 @@
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Core.Manager;
|
||||
using JNPF.Common.Dtos.VisualDev;
|
||||
using JNPF.Common.Enums;
|
||||
using JNPF.Common.Extension;
|
||||
using JNPF.Common.Security;
|
||||
using JNPF.FriendlyException;
|
||||
using JNPF.Logging;
|
||||
using JNPF.Systems.Interfaces.System;
|
||||
using JNPF.VisualDev;
|
||||
using JNPF.VisualDev.Interfaces;
|
||||
using Mapster;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Npgsql;
|
||||
using SqlSugar;
|
||||
using Tnb.BasicData.Entities;
|
||||
using Tnb.Common.Utils;
|
||||
using Tnb.WarehouseMgr.Entities;
|
||||
using Tnb.WarehouseMgr.Entities.Consts;
|
||||
using Tnb.WarehouseMgr.Entities.Dto;
|
||||
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
|
||||
using Tnb.WarehouseMgr.Entities.Dto.Outputs;
|
||||
using Tnb.WarehouseMgr.Entities.Entity;
|
||||
using Tnb.WarehouseMgr.Entities.Enums;
|
||||
using Tnb.WarehouseMgr.Interfaces;
|
||||
|
||||
namespace Tnb.WarehouseMgr
|
||||
{
|
||||
/// <summary>
|
||||
/// 委外收货订单
|
||||
/// </summary>
|
||||
[OverideVisualDev(ModuleConsts.MODULE_WMSOUTSOURCEORDER_ID)]
|
||||
public class WmsOutsourceService : BaseWareHouseService
|
||||
{
|
||||
private readonly ISqlSugarClient _db;
|
||||
private readonly IUserManager _userManager;
|
||||
private readonly IBillRullService _billRullService;
|
||||
private readonly IRunService _runService;
|
||||
private readonly IVisualDevService _visualDevService;
|
||||
public WmsOutsourceService(
|
||||
ISqlSugarRepository<WmsOutsourceH> repository,
|
||||
IUserManager userManager,
|
||||
IBillRullService billRullService,
|
||||
IRunService runService,
|
||||
IVisualDevService visualDevService)
|
||||
{
|
||||
_db = repository.AsSugarClient();
|
||||
_userManager = userManager;
|
||||
_billRullService = billRullService;
|
||||
_runService = runService;
|
||||
_visualDevService = visualDevService;
|
||||
}
|
||||
|
||||
public override async Task ModifyAsync(WareHouseUpInput input)
|
||||
{
|
||||
if (input == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(input));
|
||||
}
|
||||
|
||||
//if (!isOk)
|
||||
//{
|
||||
// throw Oops.Oh(ErrorCode.COM1001);
|
||||
//}
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public async Task BarCodePrint(BarCodeInput input)
|
||||
{
|
||||
if (input == null)
|
||||
{
|
||||
throw new AppFriendlyException(nameof(input), 500);
|
||||
}
|
||||
List<string> barcodes = new();
|
||||
try
|
||||
{
|
||||
await _db.Ado.BeginTranAsync();
|
||||
if (_db.Queryable<WmsTempCode>().Where(it => input.BillId == it.require_id).Any())
|
||||
{
|
||||
throw new AppFriendlyException("条码已生成", 500);
|
||||
};
|
||||
WmsOutsourceD WmsOutsourceD = await _db.Queryable<WmsOutsourceD>().Where(it => input.BillId == it.id).FirstAsync();
|
||||
WmsOutsourceH WmsOutsourceH = await _db.Queryable<WmsOutsourceH>().Where(it => WmsOutsourceD.fk_wms_outsource_order_id == it.id).FirstAsync();
|
||||
|
||||
if (WmsOutsourceD.actual_quantity == 0)
|
||||
{
|
||||
throw new AppFriendlyException("到货数量为0,没有物料可以打印", 500);
|
||||
};
|
||||
|
||||
List<WmsTempCode> wmsTempCodes = new();
|
||||
decimal? minPacking = (await _db.Queryable<BasMaterial>().FirstAsync(it => it.id == WmsOutsourceD.matcode_id))?.minpacking;
|
||||
if (!minPacking.HasValue || minPacking.Value <= 0)
|
||||
{
|
||||
throw new AppFriendlyException($"物料{WmsOutsourceD.matcode} {WmsOutsourceD.matcode_id} 包装数量为空或者等于0,无法打印!", 500);
|
||||
};
|
||||
int codeNum = 0;
|
||||
|
||||
if (minPacking.HasValue && minPacking.Value > 0)
|
||||
{
|
||||
int mod = (int)(WmsOutsourceD.actual_quantity % minPacking.Value);
|
||||
codeNum = (int)(mod > 0 ? (WmsOutsourceD.actual_quantity / minPacking.Value) + 1 : WmsOutsourceD.actual_quantity / minPacking.Value);
|
||||
|
||||
for (int j = 0; j < codeNum; j++)
|
||||
{
|
||||
int index = j + 1;
|
||||
//string code = $"{WmsPurchaseD.material_code}-{WmsPurchaseD.code_batch}-{index.ToString().PadLeft(4, '0')}";
|
||||
// 变更加流水号
|
||||
string watercode = await _billRullService.GetBillNumber(WmsWareHouseConst.WMS_OUTSOURCE_MAT_ENCODE);
|
||||
|
||||
string code = $"WWSH{watercode}";
|
||||
WmsTempCode barCode = new()
|
||||
{
|
||||
material_id = WmsOutsourceD.matcode_id,
|
||||
material_code = WmsOutsourceD.matcode,
|
||||
barcode = code,
|
||||
code_batch = WmsOutsourceD.code_batch,
|
||||
material_specification = WmsOutsourceD.matspecification,
|
||||
codeqty = minPacking,
|
||||
unit_id = WmsOutsourceD.unit,
|
||||
is_lock = 0,
|
||||
is_end = 0,
|
||||
require_id = WmsOutsourceD.id,
|
||||
require_code = WmsOutsourceH.outsource_order,
|
||||
create_id = _userManager.UserId,
|
||||
create_time = DateTime.Now,
|
||||
required_type = WmsWareHouseConst.BILLTYPE_OUTSOURCE_ID
|
||||
};
|
||||
if (index == codeNum)
|
||||
barCode.codeqty = mod == 0 ? minPacking : mod;
|
||||
wmsTempCodes.Add(barCode);
|
||||
}
|
||||
await _db.Insertable(wmsTempCodes).ExecuteCommandAsync();
|
||||
}
|
||||
await _db.Ado.CommitTranAsync();
|
||||
barcodes.AddRange(wmsTempCodes.Select(p => p.barcode).ToList());
|
||||
if (barcodes?.Count > 0)
|
||||
{
|
||||
var ip = _db.Queryable<BasFactoryConfig>().Where(p => p.key == "printerip").FirstAsync().Result.value;
|
||||
base.BarCodePrint(barcodes, 1, ip);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.LogError($"【BarCodePrint】" + ex.Message);
|
||||
Logger.LogError($"【BarCodePrint】" + ex.StackTrace);
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -63,6 +63,19 @@ namespace Tnb.WarehouseMgr
|
||||
return await Task.FromResult(sss);
|
||||
}
|
||||
|
||||
public override async Task ModifyAsync(WareHouseUpInput input)
|
||||
{
|
||||
if (input == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(input));
|
||||
}
|
||||
|
||||
//if (!isOk)
|
||||
//{
|
||||
// throw Oops.Oh(ErrorCode.COM1001);
|
||||
//}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 采购收货
|
||||
/// </summary>
|
||||
@@ -284,6 +297,7 @@ namespace Tnb.WarehouseMgr
|
||||
throw new AppFriendlyException("条码已生成", 500);
|
||||
};
|
||||
WmsPurchaseD WmsPurchaseD = await _db.Queryable<WmsPurchaseD>().Where(it => input.BillId == it.id).FirstAsync();
|
||||
WmsPurchaseH WmsPurchaseH = await _db.Queryable<WmsPurchaseH>().Where(it => WmsPurchaseD.bill_id == it.id).FirstAsync();
|
||||
|
||||
if (WmsPurchaseD.purchase_arriveqty == 0)
|
||||
{
|
||||
@@ -324,9 +338,10 @@ namespace Tnb.WarehouseMgr
|
||||
is_lock = 0,
|
||||
is_end = 0,
|
||||
require_id = WmsPurchaseD.id,
|
||||
require_code = WmsPurchaseD.id,
|
||||
require_code = WmsPurchaseH.bill_code,
|
||||
create_id = _userManager.UserId,
|
||||
create_time = DateTime.Now
|
||||
create_time = DateTime.Now,
|
||||
required_type = WmsWareHouseConst.BILLTYPE_PURCHASE_ID
|
||||
};
|
||||
if (index == codeNum)
|
||||
barCode.codeqty = mod == 0 ? minPacking : mod;
|
||||
|
||||
158
WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatTransferinstockService.cs
Normal file
158
WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatTransferinstockService.cs
Normal file
@@ -0,0 +1,158 @@
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Core.Manager;
|
||||
using JNPF.Common.Dtos.VisualDev;
|
||||
using JNPF.Common.Enums;
|
||||
using JNPF.Common.Extension;
|
||||
using JNPF.Common.Security;
|
||||
using JNPF.FriendlyException;
|
||||
using JNPF.Logging;
|
||||
using JNPF.Systems.Interfaces.System;
|
||||
using JNPF.VisualDev;
|
||||
using JNPF.VisualDev.Interfaces;
|
||||
using Mapster;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Npgsql;
|
||||
using SqlSugar;
|
||||
using Tnb.BasicData.Entities;
|
||||
using Tnb.Common.Utils;
|
||||
using Tnb.WarehouseMgr.Entities;
|
||||
using Tnb.WarehouseMgr.Entities.Consts;
|
||||
using Tnb.WarehouseMgr.Entities.Dto;
|
||||
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
|
||||
using Tnb.WarehouseMgr.Entities.Dto.Outputs;
|
||||
using Tnb.WarehouseMgr.Entities.Entity;
|
||||
using Tnb.WarehouseMgr.Entities.Enums;
|
||||
using Tnb.WarehouseMgr.Interfaces;
|
||||
|
||||
namespace Tnb.WarehouseMgr
|
||||
{
|
||||
/// <summary>
|
||||
/// 原材料调拨入库单
|
||||
/// </summary>
|
||||
[OverideVisualDev(ModuleConsts.MODULE_WMSRAWMATTRANSFERINSTOCK_ID)]
|
||||
public class WmsRawmatTransferinstockService : BaseWareHouseService
|
||||
{
|
||||
private readonly ISqlSugarClient _db;
|
||||
private readonly IUserManager _userManager;
|
||||
private readonly IBillRullService _billRullService;
|
||||
private readonly IRunService _runService;
|
||||
private readonly IVisualDevService _visualDevService;
|
||||
public WmsRawmatTransferinstockService(
|
||||
ISqlSugarRepository<WmsRawmatTransferinstockH> repository,
|
||||
IUserManager userManager,
|
||||
IBillRullService billRullService,
|
||||
IRunService runService,
|
||||
IVisualDevService visualDevService)
|
||||
{
|
||||
_db = repository.AsSugarClient();
|
||||
_userManager = userManager;
|
||||
_billRullService = billRullService;
|
||||
_runService = runService;
|
||||
_visualDevService = visualDevService;
|
||||
}
|
||||
|
||||
public override async Task ModifyAsync(WareHouseUpInput input)
|
||||
{
|
||||
if (input == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(input));
|
||||
}
|
||||
|
||||
//if (!isOk)
|
||||
//{
|
||||
// throw Oops.Oh(ErrorCode.COM1001);
|
||||
//}
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public async Task BarCodePrint(BarCodeInput input)
|
||||
{
|
||||
if (input == null)
|
||||
{
|
||||
throw new AppFriendlyException(nameof(input), 500);
|
||||
}
|
||||
List<string> barcodes = new();
|
||||
try
|
||||
{
|
||||
await _db.Ado.BeginTranAsync();
|
||||
if (_db.Queryable<WmsTempCode>().Where(it => input.BillId == it.require_id).Any())
|
||||
{
|
||||
throw new AppFriendlyException("条码已生成", 500);
|
||||
};
|
||||
WmsRawmatTransferinstockD WmsRawmatTransferinstockD = await _db.Queryable<WmsRawmatTransferinstockD>().Where(it => input.BillId == it.id).FirstAsync();
|
||||
WmsRawmatTransferinstockH WmsRawmatTransferinstockH = await _db.Queryable<WmsRawmatTransferinstockH>().Where(it => WmsRawmatTransferinstockD.bill_id == it.id).FirstAsync();
|
||||
|
||||
if (WmsRawmatTransferinstockD.actual_qty == 0)
|
||||
{
|
||||
throw new AppFriendlyException("到货数量为0,没有物料可以打印", 500);
|
||||
};
|
||||
|
||||
List<WmsTempCode> wmsTempCodes = new();
|
||||
decimal? minPacking = (await _db.Queryable<BasMaterial>().FirstAsync(it => it.id == WmsRawmatTransferinstockD.matcode_id))?.minpacking;
|
||||
if (!minPacking.HasValue || minPacking.Value <= 0)
|
||||
{
|
||||
throw new AppFriendlyException($"物料{WmsRawmatTransferinstockD.matcode} {WmsRawmatTransferinstockD.matcode_id} 包装数量为空或者等于0,无法打印!", 500);
|
||||
};
|
||||
int codeNum = 0;
|
||||
|
||||
if (minPacking.HasValue && minPacking.Value > 0)
|
||||
{
|
||||
int mod = (int)(WmsRawmatTransferinstockD.actual_qty % minPacking.Value);
|
||||
codeNum = (int)(mod > 0 ? (WmsRawmatTransferinstockD.actual_qty / minPacking.Value) + 1 : WmsRawmatTransferinstockD.actual_qty / minPacking.Value);
|
||||
|
||||
for (int j = 0; j < codeNum; j++)
|
||||
{
|
||||
int index = j + 1;
|
||||
//string code = $"{WmsPurchaseD.material_code}-{WmsPurchaseD.code_batch}-{index.ToString().PadLeft(4, '0')}";
|
||||
// 变更加流水号
|
||||
string watercode = await _billRullService.GetBillNumber(WmsWareHouseConst.WMS_TRANSFER_RAWMAT_ENCODE);
|
||||
|
||||
string code = $"YCLDBRK{watercode}";
|
||||
WmsTempCode barCode = new()
|
||||
{
|
||||
material_id = WmsRawmatTransferinstockD.matcode_id,
|
||||
material_code = WmsRawmatTransferinstockD.matcode,
|
||||
barcode = code,
|
||||
code_batch = WmsRawmatTransferinstockD.code_batch,
|
||||
material_specification = WmsRawmatTransferinstockD.matspecification,
|
||||
codeqty = minPacking,
|
||||
unit_id = WmsRawmatTransferinstockD.unit,
|
||||
is_lock = 0,
|
||||
is_end = 0,
|
||||
require_id = WmsRawmatTransferinstockD.id,
|
||||
require_code = WmsRawmatTransferinstockH.bill_code,
|
||||
create_id = _userManager.UserId,
|
||||
create_time = DateTime.Now,
|
||||
required_type = WmsWareHouseConst.BILLTYPE_RAWMATTRANSFERINSTOCK_ID
|
||||
};
|
||||
if (index == codeNum)
|
||||
barCode.codeqty = mod == 0 ? minPacking : mod;
|
||||
wmsTempCodes.Add(barCode);
|
||||
}
|
||||
await _db.Insertable(wmsTempCodes).ExecuteCommandAsync();
|
||||
}
|
||||
await _db.Ado.CommitTranAsync();
|
||||
barcodes.AddRange(wmsTempCodes.Select(p => p.barcode).ToList());
|
||||
if (barcodes?.Count > 0)
|
||||
{
|
||||
var ip = _db.Queryable<BasFactoryConfig>().Where(p => p.key == "printerip").FirstAsync().Result.value;
|
||||
base.BarCodePrint(barcodes, 1, ip);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.LogError($"【BarCodePrint】" + ex.Message);
|
||||
Logger.LogError($"【BarCodePrint】" + ex.StackTrace);
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user