Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
2024-09-24 17:13:56 +08:00
13 changed files with 759 additions and 11 deletions

View File

@@ -348,6 +348,10 @@
/// </summary>
public const string BIZTYPE_WMSMATERIALTRANSFER_ID = "34354738929685";
/// <summary>
/// 预任务生成业务类型-物料齐套配送记录 todo
/// </summary>
public const string BIZTYPE_WmsMaterialkitRecordHService_ID = "WmsMaterialkitRecordHService";
/// <summary>
/// 预任务生成业务类型-调拨出库单(原材料)
/// </summary>
public const string BIZTYPE_WmsRawmatTransferoutstock_ID = "36318854044437";

View File

@@ -0,0 +1,112 @@
using JNPF.Common.Contracts;
using JNPF.Common.Security;
using SqlSugar;
namespace Tnb.WarehouseMgr.Entities.Entity;
/// <summary>
/// 物料齐套配送记录明细
/// </summary>
[SugarTable("wms_materialkit_record_d")]
public partial class WmsMaterialkitRecordD : BaseEntity<string>
{
public WmsMaterialkitRecordD()
{
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? bill_id { 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_code { get; set; }
/// <summary>
/// 计划数量
/// </summary>
public decimal? plan_qty { get; set; }
/// <summary>
/// 已下发数量
/// </summary>
public decimal? yxf_qty { get; set; }
/// <summary>
/// 分子
/// </summary>
public decimal? molecule { get; set; }
/// <summary>
/// 分母
/// </summary>
public decimal? denominator { get; set; }
/// <summary>
/// 状态
/// </summary>
public string? status { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public DateTime? start_time { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public DateTime? end_time { get; set; }
/// <summary>
/// 运行次数
/// </summary>
public int? times { get; set; }
/// <summary>
/// 运行总时长(毫秒)
/// </summary>
public int? total_time { get; set; }
}

View File

@@ -0,0 +1,127 @@
using JNPF.Common.Contracts;
using JNPF.Common.Security;
using SqlSugar;
namespace Tnb.WarehouseMgr.Entities.Entity;
/// <summary>
/// 物料齐套配送记录表
/// </summary>
[SugarTable("wms_materialkit_record_h")]
public partial class WmsMaterialkitRecordH : BaseEntity<string>
{
public WmsMaterialkitRecordH()
{
id = SnowflakeIdHelper.NextId();
}
/// <summary>
/// 所属组织
/// </summary>
public string? org_id { get; set; }
/// <summary>
/// 修改用户
/// </summary>
public string? modify_id { get; set; }
/// <summary>
/// 修改时间
/// </summary>
public DateTime? modify_time { get; set; }
/// <summary>
/// 创建用户
/// </summary>
public string? create_id { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime? create_time { get; set; }
/// <summary>
/// 备注
/// </summary>
public string? remark { get; set; }
/// <summary>
/// 记录单号
/// </summary>
public string? bill_code { get; set; }
/// <summary>
/// 任务单id
/// </summary>
public string? mo_task_id { get; set; }
/// <summary>
/// 任务单号
/// </summary>
public string? mo_task_code { get; set; }
/// <summary>
/// 生产bom id
/// </summary>
public string? bom_id { 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_code { get; set; }
/// <summary>
/// 数量
/// </summary>
public decimal? qty { get; set; }
/// <summary>
/// 产线id
/// </summary>
public string? workline_id { get; set; }
/// <summary>
/// 状态(开始 执行中 完成)
/// </summary>
public string? status { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public DateTime? start_time { get; set; }
/// <summary>
/// 完成时间
/// </summary>
public DateTime? complete_time { get; set; }
/// <summary>
/// 运行次数
/// </summary>
public int? times { get; set; }
/// <summary>
/// 运行总时长(毫秒)
/// </summary>
public int? total_time { get; set; }
}

View File

@@ -0,0 +1,122 @@
using JNPF.Common.Contracts;
using JNPF.Common.Security;
using SqlSugar;
namespace Tnb.WarehouseMgr.Entities.Entity;
/// <summary>
/// 物料齐套配送详情
/// </summary>
[SugarTable("wms_materialkit_record_t")]
public partial class WmsMaterialkitRecordT : BaseEntity<string>
{
public WmsMaterialkitRecordT()
{
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? bill_id { get; set; }
/// <summary>
/// 记录明细id
/// </summary>
public string? bill_d_id { get; set; }
/// <summary>
/// 转库单id
/// </summary>
public string? materialtransfer_id { get; set; }
/// <summary>
/// 转库单单号
/// </summary>
public string? materialtransfer_billcode { get; set; }
/// <summary>
/// 转库单明细id
/// </summary>
public string? materialtransfer_d_id { get; set; }
/// <summary>
/// 下发前数量
/// </summary>
public decimal? oldqty { get; set; }
/// <summary>
/// 下发后数量
/// </summary>
public decimal? newqty { 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? code_batch { get; set; }
/// <summary>
/// 单位
/// </summary>
public string? unit_code { get; set; }
/// <summary>
/// 下发数量
/// </summary>
public decimal? xf_qty { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public DateTime? start_time { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public DateTime? end_time { get; set; }
/// <summary>
/// 运行时长(毫秒)
/// </summary>
public int? total_time { get; set; }
}

View File

@@ -160,4 +160,8 @@ public partial class WmsPurchaseH : BaseEntity<string>, IPurchaseAndSaleAuitEnti
/// </summary>
public string erp_arriveorder_pk { get;set; }
/// <summary>
/// 制单方式(自制 同步)
/// </summary>
public string make_method { get; set; }
}

View File

@@ -573,7 +573,8 @@ namespace Tnb.WarehouseMgr
#region
WmsPretaskH curWmsPretaskH = await _db.Queryable<WmsPretaskH>().Where(r => r.bill_code == wmsDistaskH.pretask_code).FirstAsync();
List<WmsPretaskH> nextWmsPretaskHs = _db.Queryable<WmsPretaskH>().Where(r => r.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID
&& r.status != WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID && r.carry_code == wmsDistaskH.carry_code && long.Parse(r.id) > long.Parse(curWmsPretaskH.id)).ToList();
&& r.status != WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID && r.carry_code == wmsDistaskH.carry_code && long.Parse(r.id) > long.Parse(curWmsPretaskH.id)
&& new string[3] { "A", "F", "FC" }.Contains(r.area_code)).ToList();
Logger.Information($"即将取消{wmsDistaskH.bill_code}的后续预任务{nextWmsPretaskHs.Count}条");
foreach (WmsPretaskH wmsPretaskH in nextWmsPretaskHs)
{
@@ -704,7 +705,8 @@ namespace Tnb.WarehouseMgr
#region
WmsPretaskH curWmsPretaskH = await _db.Queryable<WmsPretaskH>().Where(r => r.bill_code == wmsDistaskH.pretask_code).FirstAsync();
List<WmsPretaskH> nextWmsPretaskHs = _db.Queryable<WmsPretaskH>().Where(r => r.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID
&& r.status != WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID && r.carry_code == wmsDistaskH.carry_code && long.Parse(r.id) > long.Parse(curWmsPretaskH.id)).ToList();
&& r.status != WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID && r.carry_code == wmsDistaskH.carry_code && long.Parse(r.id) > long.Parse(curWmsPretaskH.id)
&& new string[3] { "A", "F", "FC" }.Contains(r.area_code)).ToList();
Logger.Information($"即将取消{wmsDistaskH.bill_code}的后续预任务{nextWmsPretaskHs.Count}条");
foreach (WmsPretaskH wmsPretaskH in nextWmsPretaskHs)
{
@@ -836,7 +838,7 @@ namespace Tnb.WarehouseMgr
//根据Agv传递的参数获取对应的电梯
if (!input.sourceName.IsNullOrWhiteSpace() && (input.sourceName.Contains("DT-R", StringComparison.OrdinalIgnoreCase)))
if (!input.sourceName.IsNullOrWhiteSpace() && (input.sourceName.Contains("DT-", StringComparison.OrdinalIgnoreCase)))
{
Logger.Information($"【TaskCallback】 开始根据任务单查找电梯 {input.sourceName}");
ElevagorInfoQuery q = new() { taskCode = input.taskCode };
@@ -1023,7 +1025,7 @@ namespace Tnb.WarehouseMgr
}
List<WmsDistaskH> elevatorTasks = _db.Queryable<WmsDistaskH>()
.Where(r => r.startlocation_code.Contains($"DT") && r.endlocation_code.Contains($"DT") && r.act_start_date == null && r.act_end_date == null
.Where(r => r.startlocation_code.Contains($"DT") && r.endlocation_code.Contains($"DT") && r.area_code == wmsElevatorH.area_code && r.act_start_date == null && r.act_end_date == null
&& r.status != WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID && r.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID).ToList();
int eleUpdateRow = 0;

View File

@@ -304,7 +304,10 @@ namespace Tnb.WarehouseMgr
int index = 0;
items.ForEach(x =>
{
if (x.carry_code == "TP0599")
{
}
index++;
WmsCarryStockReportExcel wmsCarryStockReportCode = x.Adapt<WmsCarryStockReportExcel>();
wmsCarryStockReportCode.index = index;

View File

@@ -345,7 +345,6 @@ namespace Tnb.WarehouseMgr
material_id = wmsMaterialTransferD.material_id,
code_batch = input.code_batch,
Size = input.palletCount,
Region_id = WmsWareHouseConst.REGION_Purchase_ID,
PolicyCode = WmsWareHouseConst.POLICY_YCLOUTSTOCK
};
List<WmsCarryH> items = await _wareHouseService.OutStockStrategy(outStockStrategyInput);
@@ -1028,7 +1027,7 @@ namespace Tnb.WarehouseMgr
if (input.wmsDistaskH.task_type == WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID)
{
List<WmsMaterialTransferD> wmsMaterialTransferDs = _db.Queryable<WmsMaterialTransferD>()
.Where(a => a.bill_id == wmsMaterialTransferd.bill_id && a.yxfqty_rk < a.yzqty_rk).ToList();
.Where(a => a.bill_id == wmsMaterialTransferd.bill_id && a.yxfqty_rk <= a.yzqty_rk).ToList();
if (wmsMaterialTransferDs.Count == 0)
{
isOk2 = await _db.Updateable<WmsMaterialTransfer>().SetColumns(it => new WmsMaterialTransfer { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID })
@@ -1039,7 +1038,7 @@ namespace Tnb.WarehouseMgr
else
{
List<WmsMaterialTransferD> wmsMaterialTransferDs = _db.Queryable<WmsMaterialTransferD>()
.Where(a => a.bill_id == wmsMaterialTransferd.bill_id && a.yzqty < a.qty).ToList();
.Where(a => a.bill_id == wmsMaterialTransferd.bill_id && a.yzqty <= a.qty).ToList();
if (wmsMaterialTransferDs.Count == 0)
{
isOk2 = await _db.Updateable<WmsMaterialTransfer>().SetColumns(it => new WmsMaterialTransfer { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID })

View File

@@ -0,0 +1,63 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using JNPF.Common.Core.Manager;
using JNPF.EventBus;
using JNPF.Systems.Interfaces.Permission;
using JNPF.Systems.Interfaces.System;
using JNPF.VisualDev;
using JNPF.VisualDev.Interfaces;
using NPOI.Util;
using SqlSugar;
using Tnb.WarehouseMgr.Entities;
using Tnb.WarehouseMgr.Entities.Attributes;
using Tnb.WarehouseMgr.Entities.Consts;
using Tnb.WarehouseMgr.Interfaces;
namespace Tnb.WarehouseMgr
{
[OverideVisualDev(ModuleConsts.MODULE_WMSMATERIALTRANSFER_ID)]
[ServiceModule(BizTypeId)]
public class WmsMaterialkitRecordHService
{
private const string BizTypeId = WmsWareHouseConst.BIZTYPE_WmsMaterialkitRecordHService_ID;
private readonly ISqlSugarClient _db;
private readonly IRunService _runService;
private readonly IVisualDevService _visualDevService;
private readonly IWareHouseService _wareHouseService;
private readonly IBillRullService _billRullService;
private readonly IUserManager _userManager;
private readonly IWmsCarryBindService _wmsCarryBindService;
private readonly IWmsCarryUnbindService _wmsCarryUnbindService;
private readonly IOrganizeService _organizeService;
private readonly IWmsCarryQueryService _wmsCarryQueryService;
public WmsMaterialkitRecordHService(
ISqlSugarRepository<WmsCarryH> repository,
IRunService runService,
IVisualDevService visualDevService,
IWareHouseService wareHouseService,
IUserManager userManager,
IBillRullService billRullService,
IEventPublisher eventPublisher,
IWmsCarryUnbindService wmsCarryUnbindService,
IOrganizeService organizeService,
IWmsCarryQueryService wmsCarryQueryService,
IWmsCarryBindService wmsCarryBindService)
{
_db = repository.AsSugarClient();
_runService = runService;
_visualDevService = visualDevService;
_wareHouseService = wareHouseService;
_userManager = userManager;
_billRullService = billRullService;
_wmsCarryBindService = wmsCarryBindService;
_wmsCarryUnbindService = wmsCarryUnbindService;
_organizeService = organizeService;
_wmsCarryQueryService = wmsCarryQueryService;
}
}
}

View File

@@ -71,7 +71,10 @@ namespace Tnb.WarehouseMgr
WmsPurchaseD wmsPurchaseD = await _db.Queryable<WmsPurchaseD>().SingleAsync(x => x.id == id);
string purchaseHId = wmsPurchaseD?.bill_id ?? "";
WmsPurchaseH wmsPurchaseH = await _db.Queryable<WmsPurchaseH>().SingleAsync(x => x.id == purchaseHId);
if (wmsPurchaseH.make_method == "自制")
{
throw Oops.Bah("自制采购收货单不需要操作此按钮");
}
#region
string? create_id = _userManager.User.Id;
@@ -282,6 +285,7 @@ namespace Tnb.WarehouseMgr
{
await _db.Ado.RollbackTranAsync();
Log.Error(e.Message,e);
throw Oops.Bah(e.Message);
}
return "保存成功";

View File

@@ -38,6 +38,8 @@ using Microsoft.AspNetCore.Authorization;
using JNPF.VisualDev.Interfaces;
using JNPF.VisualDev.Entitys;
using Tnb.BasicData.Interfaces;
using JNPF.Common.Enums;
using System.Reflection;
namespace Tnb.WarehouseMgr
{
@@ -47,6 +49,7 @@ namespace Tnb.WarehouseMgr
[OverideVisualDev(ModuleConsts.MODULE_WMSPURCHASE_ID)]
public class WmsPurchaseService : WmsPurchaseAndSaleCommonService<WmsPurchaseD>, IWmsPurchaseService
{
private const string ModuleId = "29975280336405";
private readonly IBillRullService _billRullService;
private readonly ISqlSugarClient _db;
private readonly IUserManager _userManager;
@@ -67,10 +70,32 @@ namespace Tnb.WarehouseMgr
_runService = runService;
_thirdApiRecordService = thirdApiRecordService;
_visualDevService = visualDevService;
OverideFuncs.CreateAsync += Create;
}
/// <summary>
/// 保存工序工位关联表
/// </summary>
[HttpPost]
public async Task<dynamic> Create(VisualDevModelDataCrInput visualDevModelDataCrInput)
{
string purchase_order = visualDevModelDataCrInput.data["erp_bill_code"].ToString();
VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true);
await _runService.Create(templateEntity, visualDevModelDataCrInput);
string id = visualDevModelDataCrInput.data["ReturnIdentity"].ToString();
string type = "";
if (string.IsNullOrEmpty(purchase_order))
{
await _db.Updateable<WmsPurchaseH>().SetColumns(r => r.make_method == "自制").Where(r => r.id == id).ExecuteCommandAsync();
}
else
{
await _db.Updateable<WmsPurchaseH>().SetColumns(r => r.make_method == "同步").Where(r => r.id == id).ExecuteCommandAsync();
}
return "保存成功";
}
private async Task<dynamic> xxx(VisualDevModelDataCrInput input)
@@ -106,6 +131,11 @@ namespace Tnb.WarehouseMgr
var blFlag = true;
try
{
WmsPurchaseH wmsPurchaseH = await _db.Queryable<WmsPurchaseH>().Where(r => r.bill_code == input.bill_code).FirstAsync();
if (wmsPurchaseH.make_method == "自制")
{
throw Oops.Bah("自制采购收货单不能操作此按钮");
}
await _db.Ado.BeginTranAsync();
WmsInstockH? instock = null;
var purchaseDs = await PurchaseAndSaleUpdate(input);