Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@@ -216,7 +216,7 @@ namespace Tnb.ProductionMgr
|
||||
|
||||
if (DistaskH != null)
|
||||
{
|
||||
Logger.LogInformation($@"【定时任务CheckGet】 {JsonConvert.SerializeObject(DistaskH)}");
|
||||
Logger.LogInformation($@"【定时任务CheckGet】 DistaskH != null");
|
||||
dynamic reqBody = new ExpandoObject();
|
||||
reqBody.taskCode = DistaskH.bill_code;
|
||||
reqBody.slotCode = key;
|
||||
@@ -245,7 +245,9 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
|
||||
}
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
Logger.LogInformation($@"【定时任务CheckGet】 DistaskH == null");
|
||||
var DistaskH = _repository.AsSugarClient().Queryable<WmsDistaskH>().Where(p => p.startlocation_code == key && p.status == WmsWareHouseConst.TASK_BILL_STATUS_YXD_ID && string.IsNullOrEmpty(p.extras)).First();
|
||||
if (DistaskH != null)
|
||||
{
|
||||
@@ -1697,7 +1699,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
|
||||
// 供料叠盘机空托盘自动入库
|
||||
YCLGLDPJInstocktimer = new Timer(YCLGLDPJInstock, null, TimeSpan.Zero, TimeSpan.FromSeconds(30));
|
||||
|
||||
//// 外协叠盘机空托盘自动入库
|
||||
// 外协叠盘机空托盘自动入库
|
||||
//YCLWXDPJInstocktimer = new Timer(YCLWXDPJInstock, null, TimeSpan.Zero, TimeSpan.FromSeconds(100000));
|
||||
|
||||
// 二楼上升降机
|
||||
|
||||
@@ -221,5 +221,9 @@ public class ModuleConsts
|
||||
/// 模块标识-成品调拨入库单
|
||||
/// </summary>
|
||||
public const string MODULE_WMSTRANSFERINSTOCKH_ID = "34154749548053";
|
||||
/// <summary>
|
||||
/// 模块标识-原材料转库单 TODO
|
||||
/// </summary>
|
||||
public const string MODULE_WMSMATERIALTRANSFER_ID = "123";
|
||||
|
||||
}
|
||||
@@ -203,9 +203,13 @@
|
||||
/// </summary>
|
||||
public const string BIZTYPE_WMSDELIVERY_ID = "26585291847957";
|
||||
/// <summary>
|
||||
/// 预任务生成业务类型-销售出库下发(未定) TODO
|
||||
/// 预任务生成业务类型-销售出库下发
|
||||
/// </summary>
|
||||
public const string BIZTYPE_WMSSALERELEASE_ID = "BIZTYPE_WMSSALERELEASE_ID";
|
||||
public const string BIZTYPE_WMSSALERELEASE_ID = "25104446664213";
|
||||
/// <summary>
|
||||
/// 预任务生成业务类型-原材料转库单下发 todo
|
||||
/// </summary>
|
||||
public const string BIZTYPE_WMSMATERIALTRANSFER_ID = "BIZTYPE_WMSMATERIALTRANSFER_ID";
|
||||
/// <summary>
|
||||
/// 预任务生成业务类型-载具绑定
|
||||
/// </summary>
|
||||
@@ -311,6 +315,18 @@
|
||||
/// </summary>
|
||||
public const string FinishproductOutstockStation3 = "30018217822229";
|
||||
/// <summary>
|
||||
/// 一楼三工位库位
|
||||
/// </summary>
|
||||
public const string Floor1SGWOutstockStation1 = "30773146852476";
|
||||
/// <summary>
|
||||
/// 一楼三工位库位
|
||||
/// </summary>
|
||||
public const string Floor1SGWOutstockStation2 = "30773146852477";
|
||||
/// <summary>
|
||||
/// 一楼三工位库位
|
||||
/// </summary>
|
||||
public const string Floor1SGWOutstockStation3 = "30773146852478";
|
||||
/// <summary>
|
||||
/// 分拣任务生成Encode
|
||||
/// </summary>
|
||||
public const string WMS_SORTINGTASK_ENCODE = "Sortingtask";
|
||||
|
||||
@@ -20,6 +20,9 @@ namespace Tnb.WarehouseMgr.Entities.Dto.Inputs
|
||||
public string biz_type { get; set; }
|
||||
|
||||
public string task_type { get; set; }
|
||||
|
||||
public string require_id { get; set; }
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
namespace Tnb.WarehouseMgr.Entities.Dto
|
||||
{
|
||||
/// <summary>
|
||||
/// 库房业务更新输入参数
|
||||
/// </summary>
|
||||
public class MaterialTransferDistributeInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 组织ID
|
||||
/// </summary>
|
||||
public string org_id { get; set; }
|
||||
/// <summary>
|
||||
/// 创建用户
|
||||
/// </summary>
|
||||
public string create_id { get; set; }
|
||||
///// <summary>
|
||||
///// 物料数量
|
||||
///// </summary>
|
||||
//public decimal qty { get; set; }
|
||||
/// <summary>
|
||||
/// 来源单据id
|
||||
/// </summary>
|
||||
public string? source_id { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Security;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Tnb.WarehouseMgr.Entities.Entity;
|
||||
|
||||
/// <summary>
|
||||
/// 原材料转库单
|
||||
/// </summary>
|
||||
[SugarTable("wms_material_transfer")]
|
||||
public partial class WmsMaterialTransfer : BaseEntity<string>
|
||||
{
|
||||
public WmsMaterialTransfer()
|
||||
{
|
||||
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>
|
||||
/// 所属组织
|
||||
/// </summary>
|
||||
public string? org_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 租户ID
|
||||
/// </summary>
|
||||
public string? tenant_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 时间戳(用于并发控制)
|
||||
/// </summary>
|
||||
public DateTime? timestamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单号
|
||||
/// </summary>
|
||||
public string? bill_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单据状态
|
||||
/// </summary>
|
||||
public string? status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入库单创建日期
|
||||
/// </summary>
|
||||
public DateTime? bill_date { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库仓库
|
||||
/// </summary>
|
||||
public string? warehouse_outstock { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入库仓库
|
||||
/// </summary>
|
||||
public string? warehouse_instock { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 转库类型
|
||||
/// </summary>
|
||||
public string? type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库业务员
|
||||
/// </summary>
|
||||
public string? biller_out { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出库部门
|
||||
/// </summary>
|
||||
public string? depart_out { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入库业务员
|
||||
/// </summary>
|
||||
public string? biller_in { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入库部门
|
||||
/// </summary>
|
||||
public string? depart_in { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 应发货日期
|
||||
/// </summary>
|
||||
public DateTime? deliver_date { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 应到货日期
|
||||
/// </summary>
|
||||
public DateTime? arrival_date { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 生产订单号
|
||||
/// </summary>
|
||||
public string? order_code { get; set; }
|
||||
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Security;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Tnb.WarehouseMgr.Entities.Entity;
|
||||
|
||||
/// <summary>
|
||||
/// 原材料转库单子表
|
||||
/// </summary>
|
||||
[SugarTable("wms_material_transfer_d")]
|
||||
public partial class WmsMaterialTransferD : BaseEntity<string>
|
||||
{
|
||||
public WmsMaterialTransferD()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId();
|
||||
}
|
||||
/// <summary>
|
||||
/// 流程任务Id
|
||||
/// </summary>
|
||||
public string? f_flowtaskid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 流程引擎Id
|
||||
/// </summary>
|
||||
public string? f_flowid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 行号
|
||||
/// </summary>
|
||||
public string? lineno { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物品ID
|
||||
/// </summary>
|
||||
public string? material_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物品代码
|
||||
/// </summary>
|
||||
public string? material_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 规格型号
|
||||
/// </summary>
|
||||
public string? material_specification { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单位ID
|
||||
/// </summary>
|
||||
public string? unit_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单位代码
|
||||
/// </summary>
|
||||
public string? unit_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 批号
|
||||
/// </summary>
|
||||
public string? code_batch { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 工位编码
|
||||
/// </summary>
|
||||
public string? station_code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 应转主数量
|
||||
/// </summary>
|
||||
public decimal? qty { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 已下发数量
|
||||
/// </summary>
|
||||
public decimal? yxfqty { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 已转数量
|
||||
/// </summary>
|
||||
public decimal? yzqty { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 主表ID
|
||||
/// </summary>
|
||||
public string? bill_id { get; set; }
|
||||
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Linq.Expressions;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Tnb.BasicData.Entities;
|
||||
using Tnb.WarehouseMgr.Entities;
|
||||
@@ -46,6 +47,13 @@ namespace Tnb.WarehouseMgr.Interfaces
|
||||
/// <returns></returns>
|
||||
string[] GetFloor1OutstockLocation();
|
||||
|
||||
/// <summary>
|
||||
/// 是否为三工位库位
|
||||
/// </summary>
|
||||
/// <param name="location_id"></param>
|
||||
/// <returns></returns>
|
||||
string[] GetFloor1SGWOutstockLocation();
|
||||
|
||||
/// <summary>
|
||||
/// 生成预任务
|
||||
/// </summary>
|
||||
@@ -104,5 +112,13 @@ namespace Tnb.WarehouseMgr.Interfaces
|
||||
/// <param name="rackid">料架id</param>
|
||||
/// <returns></returns>
|
||||
Task<bool> Floor2EmptyCarryCreateZZCPretask(string rackid);
|
||||
|
||||
/// <summary>
|
||||
/// 生成预任务接口 CTU需要传task_type
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> CommonCreatePretask(CommonCreatePretaskInput input);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,6 +227,18 @@ namespace Tnb.WarehouseMgr
|
||||
, WmsWareHouseConst.FinishproductOutstockStation3 };
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否为三工位库位
|
||||
/// </summary>
|
||||
/// <param name="location_id"></param>
|
||||
/// <returns></returns>
|
||||
public string[] GetFloor1SGWOutstockLocation()
|
||||
{
|
||||
return new string[3] { WmsWareHouseConst.Floor1SGWOutstockStation1 , WmsWareHouseConst.Floor1SGWOutstockStation2
|
||||
, WmsWareHouseConst.Floor1SGWOutstockStation3 };
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 出库策略-销售出库下发
|
||||
/// </summary>
|
||||
@@ -1633,8 +1645,8 @@ namespace Tnb.WarehouseMgr
|
||||
//更新电梯任务数量
|
||||
_ = await _db.Updateable<WmsElevatorH>().SetColumns(it => new WmsElevatorH { task_nums = it.task_nums - 1}).Where(it => disTasks.Select(x => x.area_code).Contains(it.area_code)).ExecuteCommandAsync();
|
||||
|
||||
// 更新中储仓任务数量
|
||||
_ = await _db.Updateable<BasLocation>().SetColumns(it => new BasLocation { task_nums = it.task_nums - 1 }).Where(it => disTasks.Where(r => r.startlocation_code.Contains("SSX-111-011") || r.startlocation_code.Contains("SSX-111-012")).Select(x => x.startlocation_code).Contains(it.location_code)).ExecuteCommandAsync();
|
||||
// 更新任务数量
|
||||
_ = await _db.Updateable<BasLocation>().SetColumns(it => new BasLocation { task_nums = it.task_nums - 1 }).Where(it => disTasks.Select(x => x.endlocation_code).Contains(it.location_code)).ExecuteCommandAsync();
|
||||
|
||||
|
||||
//更新载具,锁定状态为未锁定,更新载具的库位当前任务的目标库位
|
||||
@@ -1712,6 +1724,12 @@ namespace Tnb.WarehouseMgr
|
||||
await _db.Updateable<WmsTransferInstockD>().SetColumns(r => r.qty == r.qty + wmsCarryCode.codeqty).Where(r => r.id == dt.require_id).ExecuteCommandAsync();
|
||||
}
|
||||
}
|
||||
// 原材料转库单
|
||||
else if (dt.biz_type == WmsWareHouseConst.BIZTYPE_WMSMATERIALTRANSFER_ID)
|
||||
{
|
||||
WmsCarryCode wmsCarryCode = await _db.Queryable<WmsCarryCode>().Where(r => r.carry_id == dt.carry_id).FirstAsync();
|
||||
await _db.Updateable<WmsMaterialTransferD>().SetColumns(r => r.yzqty == r.yzqty + wmsCarryCode.codeqty).Where(r => r.id == dt.require_id).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
|
||||
List<WmsDistaskCode> disTaskCodes = await _db.Queryable<WmsDistaskCode>().Where(it => it.bill_id == dt.id).ToListAsync();
|
||||
@@ -2312,7 +2330,7 @@ namespace Tnb.WarehouseMgr
|
||||
bill_code = bill_code,
|
||||
status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID,
|
||||
biz_type = WmsWareHouseConst.BIZTYPE_WMSEMPTYINSTOCK_ID,
|
||||
task_type = "",
|
||||
task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID,
|
||||
carry_id = wmsCarryD.membercarry_id,
|
||||
carry_code = wmsCarryD.membercarry_code,
|
||||
area_id = sPoint?.area_id!,
|
||||
@@ -2402,46 +2420,51 @@ namespace Tnb.WarehouseMgr
|
||||
//根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序)
|
||||
WmsPretaskH preTask = null;
|
||||
string bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult();
|
||||
|
||||
string carry_id = "";
|
||||
string carry_code = "";
|
||||
WmsCarryH wmsCarryH = null;
|
||||
|
||||
|
||||
if (!string.IsNullOrEmpty(input.carry_id) && !string.IsNullOrEmpty(input.carry_code))
|
||||
{
|
||||
carry_id = input.carry_id;
|
||||
carry_code = input.carry_code;
|
||||
}
|
||||
// 如果指定了carry_id
|
||||
else if (!string.IsNullOrEmpty(input.carry_id))
|
||||
{
|
||||
wmsCarryH = _db.Queryable<WmsCarryH>().Where(r => r.id == input.carry_id).First();
|
||||
}
|
||||
// carry_code
|
||||
else if (!string.IsNullOrEmpty(input.carry_code))
|
||||
{
|
||||
wmsCarryH = _db.Queryable<WmsCarryH>().Where(r => r.carry_code == input.carry_code).First();
|
||||
}
|
||||
// 如果carry_id和carry_code都没有指定,随机取库位上载具记录的一条
|
||||
else
|
||||
{
|
||||
wmsCarryH = _db.Queryable<BasLocation>().InnerJoin<WmsCarryH>((a, b) => a.id == b.location_id)
|
||||
.Where((a, b) => a.id == sPoint.location_id).Select((a, b) => b).First();
|
||||
}
|
||||
|
||||
if (wmsCarryH != null)
|
||||
{
|
||||
carry_id = wmsCarryH.id;
|
||||
carry_code = wmsCarryH.carry_code;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(carry_id))
|
||||
{
|
||||
throw new AppFriendlyException("起点库位上没有载具", 500);
|
||||
}
|
||||
|
||||
|
||||
List<WmsPretaskH> preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it =>
|
||||
{
|
||||
WmsPointH? sPoint = it.FirstOrDefault();
|
||||
WmsPointH? ePoint = it.LastOrDefault();
|
||||
|
||||
string carry_id = "";
|
||||
string carry_code = "";
|
||||
WmsCarryH wmsCarryH = null;
|
||||
if (!string.IsNullOrEmpty(input.carry_id) && !string.IsNullOrEmpty(input.carry_code))
|
||||
{
|
||||
carry_id = input.carry_id;
|
||||
carry_code = input.carry_code;
|
||||
}
|
||||
// 如果指定了carry_id
|
||||
else if (!string.IsNullOrEmpty(input.carry_id))
|
||||
{
|
||||
wmsCarryH = _db.Queryable<WmsCarryH>().Where(r => r.id == input.carry_id).First();
|
||||
}
|
||||
// carry_code
|
||||
else if (!string.IsNullOrEmpty(input.carry_code))
|
||||
{
|
||||
wmsCarryH = _db.Queryable<WmsCarryH>().Where(r => r.carry_code == input.carry_code).First();
|
||||
}
|
||||
// 如果carry_id和carry_code都没有指定,随机取库位上载具记录的一条
|
||||
else
|
||||
{
|
||||
wmsCarryH = _db.Queryable<BasLocation>().InnerJoin<WmsCarryH>((a, b) => a.id == b.location_id)
|
||||
.Where((a, b) => a.id == sPoint.location_id).Select((a, b) => b).First();
|
||||
}
|
||||
|
||||
if (wmsCarryH != null)
|
||||
{
|
||||
carry_id = wmsCarryH.id;
|
||||
carry_code = wmsCarryH.carry_code;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(carry_id))
|
||||
{
|
||||
throw new AppFriendlyException("起点库位上没有载具", 500);
|
||||
}
|
||||
|
||||
preTask = new()
|
||||
{
|
||||
@@ -2464,7 +2487,7 @@ namespace Tnb.WarehouseMgr
|
||||
carry_code = carry_code,
|
||||
area_id = sPoint?.area_id!,
|
||||
area_code = it.Key,
|
||||
require_id = "",
|
||||
require_id = input.require_id,
|
||||
require_code = "",
|
||||
create_id = _userManager.UserId,
|
||||
create_time = DateTime.Now
|
||||
@@ -2491,7 +2514,7 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
finally
|
||||
{
|
||||
await GenTaskExecute();
|
||||
GenTaskExecute();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -268,7 +268,7 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 二楼机械手解绑定
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
170
WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs
Normal file
170
WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs
Normal file
@@ -0,0 +1,170 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using JNPF.Common.Core.Manager;
|
||||
using JNPF.Common.Filter;
|
||||
using JNPF.EventBus;
|
||||
using JNPF.Systems.Interfaces.System;
|
||||
using JNPF.VisualDev;
|
||||
using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
|
||||
using JNPF.VisualDev.Interfaces;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Newtonsoft.Json;
|
||||
using SqlSugar;
|
||||
using Tnb.WarehouseMgr.Entities;
|
||||
using Tnb.WarehouseMgr.Entities.Attributes;
|
||||
using Tnb.WarehouseMgr.Entities.Entity;
|
||||
using Tnb.WarehouseMgr.Interfaces;
|
||||
using JNPF.Common.Dtos.VisualDev;
|
||||
using JNPF.Common.Extension;
|
||||
using JNPF.Common.Security;
|
||||
using JNPF.FriendlyException;
|
||||
using JNPF.VisualDev.Entitys;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Tnb.BasicData.Entities;
|
||||
using Tnb.WarehouseMgr.Entities.Consts;
|
||||
using Tnb.WarehouseMgr.Entities.Dto;
|
||||
using Tnb.WarehouseMgr.Entities.Enums;
|
||||
using JNPF.Common.Enums;
|
||||
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
|
||||
|
||||
namespace Tnb.WarehouseMgr
|
||||
{
|
||||
/// <summary>
|
||||
/// 原材料转库单
|
||||
/// </summary>
|
||||
[OverideVisualDev(ModuleConsts.MODULE_WMSMATERIALTRANSFER_ID)]
|
||||
[ServiceModule(BizTypeId)]
|
||||
public class WmsMaterialTransferService : BaseWareHouseService
|
||||
{
|
||||
private const string BizTypeId = "";
|
||||
private readonly ISqlSugarClient _db;
|
||||
private readonly IRunService _runService;
|
||||
private readonly IVisualDevService _visualDevService;
|
||||
private readonly IWareHouseService _wareHouseService;
|
||||
private readonly IBillRullService _billRullService;
|
||||
private readonly IUserManager _userManager;
|
||||
|
||||
public WmsMaterialTransferService(
|
||||
ISqlSugarRepository<WmsCarryH> repository,
|
||||
IRunService runService,
|
||||
IVisualDevService visualDevService,
|
||||
IWareHouseService wareHouseService,
|
||||
IUserManager userManager,
|
||||
IBillRullService billRullService,
|
||||
IEventPublisher eventPublisher)
|
||||
{
|
||||
_db = repository.AsSugarClient();
|
||||
_runService = runService;
|
||||
_visualDevService = visualDevService;
|
||||
_wareHouseService = wareHouseService;
|
||||
_userManager = userManager;
|
||||
_billRullService = billRullService;
|
||||
|
||||
//OverideFuncs.GetListAsync = GetList;
|
||||
}
|
||||
|
||||
[NonAction]
|
||||
private async Task<dynamic> GetList(VisualDevModelListQueryInput input)
|
||||
{
|
||||
try
|
||||
{
|
||||
SqlSugarPagedList<WmsMaterialTransfer> result = await _db.Queryable<WmsMaterialTransfer>()
|
||||
.ToPagedListAsync(input.currentPage, input.pageSize);
|
||||
|
||||
var _data = PageResult<WmsMaterialTransfer>.SqlSugarPageResult(result);
|
||||
var json = JsonConvert.SerializeObject(_data);
|
||||
var data = JsonConvert.DeserializeObject<dynamic>(json);
|
||||
JArray mainTable = data.list;
|
||||
|
||||
ISugarQueryable<WmsMaterialTransferD> wmsTransferInstockDs = _db.Queryable<WmsMaterialTransferD>().Where(r => mainTable.Select(r => r["id"].ToString()).ToList().Contains(r.bill_id));
|
||||
|
||||
foreach (JObject wmsTransferInstockH in mainTable)
|
||||
{
|
||||
// todo 改tablefield105
|
||||
wmsTransferInstockH["tablefield105"] = JArray.Parse(JsonConvert.SerializeObject(wmsTransferInstockDs.Where(r => r.bill_id == wmsTransferInstockH["id"].ToString()).ToList()));
|
||||
}
|
||||
return data;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return Task.FromResult(ex);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 下发
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="AppFriendlyException"></exception>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> Distribute(MaterialTransferDistributeInput input)
|
||||
{
|
||||
try
|
||||
{
|
||||
//if (input.qty <= 0)
|
||||
//{
|
||||
// throw new AppFriendlyException("数量必须大于0", 500);
|
||||
//}
|
||||
if (string.IsNullOrEmpty(input.source_id))
|
||||
{
|
||||
throw new AppFriendlyException("来源单据id不可为空", 500);
|
||||
}
|
||||
|
||||
WmsMaterialTransferD wmsMaterialTransferD = await _db.Queryable<WmsMaterialTransferD>().FirstAsync(it => it.id == input.source_id);
|
||||
await s_taskExecuteSemaphore.WaitAsync();
|
||||
await _db.Ado.BeginTranAsync();
|
||||
//入库取终点 //出库起点
|
||||
OutStockStrategyQuery inStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_YCL_ID, material_id = wmsMaterialTransferD.material_id, code_batch = wmsMaterialTransferD.code_batch, Size = 1 };
|
||||
List<WmsCarryH> items = await _wareHouseService.OutStockStrategy(inStockStrategyInput);
|
||||
|
||||
if (items.Count == 0)
|
||||
{
|
||||
throw new AppFriendlyException($@"没有可以出库的载具", 500);
|
||||
}
|
||||
|
||||
WmsCarryCode wmsCarryCode = await _db.Queryable<WmsCarryCode>().Where(r => r.carry_id == items[0].id).FirstAsync();
|
||||
BasLocation startLocation = await _db.Queryable<BasLocation>().Where(r => r.location_code == items[0].location_code).FirstAsync();
|
||||
// 根据三工位任务数平均分配任务
|
||||
BasLocation endLocation = await _db.Queryable<BasLocation>().Where(r => _wareHouseService.GetFloor1SGWOutstockLocation().Contains(r.id)).OrderBy("is_lock, task_nums, location_code").FirstAsync();
|
||||
|
||||
CommonCreatePretaskInput commonCreatePretaskInput = new CommonCreatePretaskInput();
|
||||
commonCreatePretaskInput.startlocation_id = startLocation.id;
|
||||
commonCreatePretaskInput.endlocation_id = endLocation.id;
|
||||
commonCreatePretaskInput.task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID;
|
||||
commonCreatePretaskInput.biz_type = WmsWareHouseConst.BIZTYPE_WMSMATERIALTRANSFER_ID;
|
||||
commonCreatePretaskInput.require_id = input.source_id;
|
||||
|
||||
Tnb.WarehouseMgr.Entities.Dto.Outputs.Result res = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput);
|
||||
if (res.code == HttpStatusCode.OK)
|
||||
{
|
||||
// 更新子表已下发数量
|
||||
await _db.Updateable<WmsMaterialTransferD>().SetColumns(r => r.yxfqty == r.yxfqty + wmsCarryCode.codeqty).Where(r => r.id == input.source_id).ExecuteCommandAsync();
|
||||
|
||||
await _db.Ado.CommitTranAsync();
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new AppFriendlyException($@"生成预任务失败", 500);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
_ = s_taskExecuteSemaphore.Release();
|
||||
await InvokeGenPretaskExcute();
|
||||
}
|
||||
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,7 @@ using Tnb.BasicData.Entities;
|
||||
using Tnb.WarehouseMgr.Entities;
|
||||
using Tnb.WarehouseMgr.Entities.Consts;
|
||||
using Tnb.WarehouseMgr.Entities.Dto;
|
||||
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
|
||||
using Tnb.WarehouseMgr.Entities.Entity;
|
||||
using Tnb.WarehouseMgr.Entities.Enums;
|
||||
using Tnb.WarehouseMgr.Interfaces;
|
||||
@@ -33,13 +34,16 @@ namespace Tnb.WarehouseMgr
|
||||
private readonly IUserManager _userManager;
|
||||
private readonly IBillRullService _billRullService;
|
||||
private readonly IWareHouseService _wareHouseService;
|
||||
private readonly IWmsCarryBindService _wmsCarryBindService;
|
||||
|
||||
public WmsPDACarryBindService(
|
||||
ISqlSugarRepository<WmsCarryH> repository,
|
||||
IRunService runService,
|
||||
IVisualDevService visualDevService,
|
||||
IUserManager userManager,
|
||||
IWareHouseService wareHouseService,
|
||||
IBillRullService billRullService)
|
||||
IBillRullService billRullService,
|
||||
IWmsCarryBindService wmsCarryBindService)
|
||||
{
|
||||
_db = repository.AsSugarClient();
|
||||
_runService = runService;
|
||||
@@ -47,6 +51,7 @@ namespace Tnb.WarehouseMgr
|
||||
_userManager = userManager;
|
||||
_billRullService = billRullService;
|
||||
_wareHouseService = wareHouseService;
|
||||
_wmsCarryBindService = wmsCarryBindService;
|
||||
OverideFuncs.CreateAsync = PDACarryBind;
|
||||
}
|
||||
|
||||
@@ -365,10 +370,10 @@ namespace Tnb.WarehouseMgr
|
||||
throw new AppFriendlyException("起点id不可为空", 500);
|
||||
}
|
||||
|
||||
if (!_wareHouseService.GetFloor1OutstockLocation().Contains(input.location_id))
|
||||
{
|
||||
throw new AppFriendlyException("非一楼出库库位不允许通过此功能解锁", 500);
|
||||
}
|
||||
//if (!_wareHouseService.GetFloor1OutstockLocation().Contains(input.location_id))
|
||||
//{
|
||||
// throw new AppFriendlyException("非一楼出库库位不允许通过此功能解锁", 500);
|
||||
//}
|
||||
|
||||
await _db.Ado.BeginTranAsync();
|
||||
try
|
||||
@@ -384,6 +389,11 @@ namespace Tnb.WarehouseMgr
|
||||
is_lock = 0
|
||||
}).Where(r => r.location_id == input.location_id).ExecuteCommandAsync();
|
||||
|
||||
WmsCarryH wmsCarryH = _db.Queryable<WmsCarryH>().Where(r => r.location_id == input.location_id).First();
|
||||
CarryCodeUnbindInput carryCodeUnbindInput = new CarryCodeUnbindInput();
|
||||
carryCodeUnbindInput.carry_id = wmsCarryH.id;
|
||||
await _wmsCarryBindService.CarryCodeUnbind(carryCodeUnbindInput);
|
||||
|
||||
await _db.Ado.CommitTranAsync();
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
"ConnectionStrings": {
|
||||
"ConfigId": "default",
|
||||
"DBType": "PostgreSQL", //MySql;SqlServer;Oracle;PostgreSQL;Dm;Kdbndp;Sqlite;
|
||||
//"Host": "192.168.11.109",
|
||||
"Host": "127.0.0.1",
|
||||
"Host": "192.168.11.109",
|
||||
//"Host": "127.0.0.1",
|
||||
"Port": "5432",
|
||||
//"DBName": "tianyi_db",
|
||||
//"UserName": "postgres",
|
||||
|
||||
Reference in New Issue
Block a user