This commit is contained in:
2023-11-18 15:56:38 +08:00
49 changed files with 1144 additions and 405 deletions

View File

@@ -200,4 +200,9 @@ public class ModuleConsts
/// </summary>
public const string MODULE_BASREGIONMAT_ID = "26187428200229";
/// <summary>
/// 模块标识-盘点签收配置
/// </summary>
public const string MODULE_WMSCHECKSIGNCONFIG_ID = "30059737083669";
}

View File

@@ -5,7 +5,7 @@ namespace Tnb.WarehouseMgr.Entities.Dto
/// <summary>
/// 进出库策略状态修改输入参数s
/// </summary>
public class ModifyPoliciesStatusInput
public class ModifyEnabledInput
{
/// <summary>
/// 1、入库 2我、出库

View File

@@ -4,6 +4,7 @@ using System.DirectoryServices.Protocols;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Tnb.WarehouseMgr.Entities.Enums;
namespace Tnb.WarehouseMgr.Entities.Dto.Queries

View File

@@ -3,6 +3,6 @@
public interface IInOutStockCode
{
string bill_d_id { get; set; }
//string line_status { get; set; }
}
}

View File

@@ -5,6 +5,12 @@ namespace Tnb.WarehouseMgr.Entities
public interface IInOutStockDetail<TStockCode> where TStockCode : BaseEntity<string>, new()
{
string? line_status { get; set; }
/// <summary>
/// 仓库Id
/// </summary>
string? warehouse_id { get; set; }
List<TStockCode> CodeDetails { get; set; }
}
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tnb.WarehouseMgr.Entities.Entity.Constraints
{
public interface IInOutStockHEntity
{
string warehouse_id { get; set; }
}
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tnb.WarehouseMgr.Entities.Entity.Constraints
{
public interface IUpdateEnabledEntity
{
public int enabled { get; set; }
}
}

View File

@@ -29,10 +29,6 @@ public partial class WmsCheckSignConfig : BaseEntity<string>
/// </summary>
public string? location_id { get; set; }
/// <summary>
/// 是否启用
/// </summary>
public int? enabled { get; set; }
/// <summary>
/// 创建用户

View File

@@ -0,0 +1,18 @@
using JNPF.Common.Contracts;
using JNPF.Common.Security;
using SqlSugar;
using Tnb.WarehouseMgr.Entities.Entity.Constraints;
namespace Tnb.WarehouseMgr.Entities;
/// <summary>
/// 盘点签收配置
/// </summary>
public partial class WmsCheckSignConfig : IUpdateEnabledEntity
{
/// <summary>
/// 是否启用
/// </summary>
public int enabled { get; set; }
}

View File

@@ -39,10 +39,6 @@ public partial class WmsCollocationSchemeH : BaseEntity<string>
/// </summary>
public int seq { get; set; }
/// <summary>
/// 状态
/// </summary>
public int status { get; set; }
/// <summary>
/// 产品ID

View File

@@ -0,0 +1,19 @@
using JNPF.Common.Contracts;
using JNPF.Common.Security;
using SqlSugar;
using Tnb.WarehouseMgr.Entities.Entity.Constraints;
namespace Tnb.WarehouseMgr.Entities;
/// <summary>
/// 齐套搭配方案主表
/// </summary>
public partial class WmsCollocationSchemeH : IUpdateEnabledEntity
{
/// <summary>
/// 是否启用
/// </summary>
[SugarColumn(ColumnName = "status")]
public int enabled { get; set; }
}

View File

@@ -1,4 +1,5 @@
using SqlSugar;
using Tnb.WarehouseMgr.Entities.Entity.Constraints;
namespace Tnb.WarehouseMgr.Entities;
@@ -6,7 +7,7 @@ namespace Tnb.WarehouseMgr.Entities;
/// WMS电梯设定主表
/// </summary>
public partial class WmsElevatorH
public partial class WmsElevatorH : IUpdateEnabledEntity
{
[SugarColumn(IsIgnore = true)]
public int end_floor { get; set; }
@@ -64,6 +65,6 @@ public partial class WmsElevatorH
/// 状态
/// </summary>
[SugarColumn(ColumnName = "status")]
public int enable_mark { get; set; }
public int enabled { get; set; }
}

View File

@@ -39,10 +39,6 @@ public partial class WmsInstockCode : BaseEntity<string>, IInOutStockCode
/// </summary>
public int? bill_d_line { get; set; }
/// <summary>
/// 明细状态
/// </summary>
public string line_status { get; set; }
/// <summary>
/// 物品ID

View File

@@ -5,5 +5,9 @@ namespace Tnb.WarehouseMgr.Entities;
/// </summary>
public partial class WmsInstockCode : IInOutStockCode
{
/// <summary>
/// 明细状态
/// </summary>
public string line_status { get; set; }
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tnb.WarehouseMgr.Interfaces
{
public interface IWmsBasicDataBaseService
{
Task<bool> IsEnabledMark(IEnumerable<string> ids, int status);
}
}

View File

@@ -148,7 +148,7 @@ namespace Tnb.WarehouseMgr
{
EnumInOutStockType.In => await FetchInOutStockCodesById<WmsInstockD, InStockDetailOutput, WmsInstockCode>(input.bill_d_id),
EnumInOutStockType.Out => await FetchInOutStockCodesById<WmsOutstockD, OutStockDetailOutput, WmsOutstockCode>(input.bill_d_id),
_ => throw new ArgumentOutOfRangeException(nameof(input.inoutStockType), $"Not expected EnumInOutStockType value: {input.inoutStockType}"),
_ => throw new NotImplementedException(),
};
return result ?? Enumerable.Empty<dynamic>();
}
@@ -706,7 +706,7 @@ namespace Tnb.WarehouseMgr
{
await _db.Ado.BeginTranAsync();
_ = await _db.Updateable<WmsDistaskH>().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_RUNING_ID,act_start_date = DateTime.Now }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync();
_ = await _db.Updateable<WmsDistaskH>().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_RUNING_ID, act_start_date = DateTime.Now }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync();
//清空载具库位数据
var carryAndLocIds = await _db.Queryable<WmsDistaskH>().Where(it => input.disTaskIds.Contains(it.id)).Select(it => new { it.carry_id, it.startlocation_id }).ToListAsync();
if (carryAndLocIds?.Count > 0)
@@ -741,7 +741,7 @@ namespace Tnb.WarehouseMgr
await _db.Ado.BeginTranAsync();
//更新任务执行表,单据状态为 完成
_ = await _db.Updateable<WmsDistaskH>().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID,act_end_date = DateTime.Now }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync();
_ = await _db.Updateable<WmsDistaskH>().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID, act_end_date = DateTime.Now }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync();
List<WmsDistaskH> disTasks = await _db.Queryable<WmsDistaskH>().InnerJoin<WmsCarryH>((a, b) => a.carry_id == b.id).Where(a => input.disTaskIds.Contains(a.id)).Select((a, b) => new WmsDistaskH { carry_status = b.carry_status }, true).ToListAsync();
if (disTasks?.Count > 0)
{
@@ -849,9 +849,9 @@ namespace Tnb.WarehouseMgr
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task ModifyPoliciesStatus(ModifyPoliciesStatusInput input)
public async Task ModifyPoliciesStatus(ModifyEnabledInput input)
{
async Task _updateStatus<T>(ModifyPoliciesStatusInput input) where T : BaseEntity<string>, IUpdatePoliciesStatus, new()
async Task _updateStatus<T>(ModifyEnabledInput input) where T : BaseEntity<string>, IUpdatePoliciesStatus, new()
{
T obj = new() { status = input.status };
_ = await _db.Updateable(obj).UpdateColumns(it => it.status).Where(it => input.ids.Contains(it.id)).ExecuteCommandAsync();
@@ -977,9 +977,9 @@ namespace Tnb.WarehouseMgr
if (curEleDs?.Count > 0)
{
//当前电梯
WmsElevatorH curEle = await _db.Queryable<WmsElevatorH>().SingleAsync(it => it.id == curEleDs.First().bill_id && it.enable_mark == 1);
WmsElevatorH curEle = await _db.Queryable<WmsElevatorH>().SingleAsync(it => it.id == curEleDs.First().bill_id && it.enabled == 1);
//同电梯组电梯
List<WmsElevatorH> sGpEle = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.enable_mark == 1).ToListAsync();
List<WmsElevatorH> sGpEle = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.enabled == 1).ToListAsync();
if (curEle == null && sGpEle?.Count > 0)
{
@@ -1048,9 +1048,9 @@ namespace Tnb.WarehouseMgr
if (curEleDs?.Count > 0)
{
//当前电梯
WmsElevatorH curEle = await _db.Queryable<WmsElevatorH>().SingleAsync(it => it.id == curEleDs.First().bill_id && it.enable_mark == 1);
WmsElevatorH curEle = await _db.Queryable<WmsElevatorH>().SingleAsync(it => it.id == curEleDs.First().bill_id && it.enabled == 1);
//同电梯组电梯
List<WmsElevatorH> sGpEle = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.enable_mark == 1).ToListAsync();
List<WmsElevatorH> sGpEle = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.enabled == 1).ToListAsync();
if (curEle == null && sGpEle?.Count > 0)
{
@@ -1256,8 +1256,13 @@ namespace Tnb.WarehouseMgr
{
CodeDetails = SqlFunc.Subqueryable<TStockCode>().Where(it => it.bill_d_id == a.id).ToList(),
}, true)
.Mapper(it => it.line_status = it.line_status != null && dic.ContainsKey(key: it.line_status) ? dic[it.line_status]?.ToString() : "")
.Mapper(it =>
{
it.line_status = it.line_status != null && dic.ContainsKey(key: it.line_status) ? dic[it.line_status]?.ToString() : "";
it.warehouse_id = _db.Queryable<BasWarehouse>().Single(y => y.id == it.warehouse_id)?.whname ?? "";
})
.ToListAsync();
return data;
}
#endregion

View File

@@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Aop.Api.Domain;
using JNPF.Common.Contracts;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using Tnb.WarehouseMgr.Entities.Dto;
using Tnb.WarehouseMgr.Entities.Entity.Constraints;
using Tnb.WarehouseMgr.Interfaces;
namespace Tnb.WarehouseMgr
{
/// <summary>
/// Wms基础数据基类
/// </summary>
/// <typeparam name="TEntity"></typeparam>
public class WmsBasicConfBase<TEntity> : BaseWareHouseService where TEntity : BaseEntity<string>, IUpdateEnabledEntity, new()
{
protected ISqlSugarClient DbContext { get; set; }
/// <summary>
/// 是否启用
/// </summary>
/// <param name="input">
/// <br/>{
/// <br/> strategyType入库策略 1、入库 2我、出库(出入库策略参数,其它接口可忽略)
/// <br/> ids:选中的主键pkId列表
/// <br/> status:状态 0:禁用 1启用
/// <br/>}
/// </param>
/// <returns></returns>
[HttpPost]
public async Task<bool> IsEnabledMark(ModifyEnabledInput input)
{
return await DbContext.Updateable<TEntity>().SetColumns(it => it.enabled == input.status).Where(it => input.ids.Contains(it.id)).ExecuteCommandHasChangeAsync();
}
}
}

View File

@@ -1,29 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using JNPF.Common.Contracts;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
namespace Tnb.WarehouseMgr
{
/// <summary>
/// Wms基础数据基类
/// </summary>
/// <typeparam name="TEntity"></typeparam>
//public class WmsBasicDataBase<TEntity> : BaseWareHouseService where TEntity : BaseEntity<string>, new()
//{
// private readonly ISqlSugarClient _db;
// public WmsBasicDataBase()
// {
// }
// [HttpPost]
// public async Task<bool> IsEnabledMark(IEnumerable<string> ids,int status)
// {
// }
//}
}

View File

@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using JNPF.VisualDev;
using SqlSugar;
using Tnb.WarehouseMgr.Entities;
namespace Tnb.WarehouseMgr
{
/// <summary>
/// 盘点签收配置
/// </summary>
[OverideVisualDev(ModuleConsts.MODULE_WMSCHECKSIGNCONFIG_ID)]
public class WmsCheckSignConfigService : WmsBasicConfBase<WmsCheckSignConfig>
{
public WmsCheckSignConfigService(ISqlSugarRepository<WmsCheckSignConfig> repo)
{
DbContext = repo.AsSugarClient();
}
}
}

View File

@@ -110,15 +110,18 @@ namespace Tnb.WarehouseMgr
{
areaIds = input.data[nameof(WmsCheckstockH.area_id)].ToObject<string[]>();
}
Expression<Func<BasLocation, WmsCarryCode, WmsCarryH, bool>> filterExp = (a, b, c) => false;
var filerExpable = Expressionable.Create<BasLocation, WmsCarryCode, WmsCarryH>()
.And((a, b, c) => a.wh_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString())
.And((a, b, c) => a.is_type == ((int)EnumLocationType.).ToString())
.And((a, b, c) => c.is_lock == 0);
switch (checkType?.ToEnum<EnumCheckType>())
{
case EnumCheckType.:
{
filterExp = (a, b, c) => a.wh_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString()
&& a.is_type == ((int)EnumLocationType.).ToString()
&& c.is_lock == 0;
filterExp = filerExpable.ToExpression();
}
break;
case EnumCheckType.:
@@ -129,7 +132,7 @@ namespace Tnb.WarehouseMgr
}
}
break;
case EnumCheckType.:
case EnumCheckType.:
{
if (areaIds?.Length > 0)
{
@@ -311,8 +314,8 @@ namespace Tnb.WarehouseMgr
/// <summary>
/// 根据盘点任务ID获取盘点任务明细
/// </summary>
/// <param name="checkStockId"></param>
/// <returns></returns>
/// <param name="checkStockId">盘点任务主表ID</param>
/// <returns>盘点任务明细列表</returns>
[HttpGet("checkStockId")]
public async Task<List<WmsCheckstockD>> GetCheckStockDList(string checkStockId)
{
@@ -332,8 +335,8 @@ namespace Tnb.WarehouseMgr
/// <br/>}
/// </param>
/// <returns></returns>
[HttpGet]
public async Task<dynamic> GetTaskDetailByCheckType([FromQuery] CheckDetailQuery input)
[HttpPost]
public async Task<dynamic> GetTaskDetailByCheckType(CheckDetailQuery input)
{
if (_carryMap.Count == 0)
{
@@ -341,23 +344,24 @@ namespace Tnb.WarehouseMgr
}
Expression<Func<BasLocation, WmsCarryCode, WmsCarryH, bool>> filterExp = (a, b, c) => false;
var filerExpable = Expressionable.Create<BasLocation, WmsCarryCode, WmsCarryH>()
.And((a, b, c) => a.wh_id == input.warehouse_id)
.And((a, b, c) => a.is_type == ((int)EnumLocationType.).ToString())
.And((a, b, c) => c.is_lock == 0);
switch (input.CheckType)
{
case EnumCheckType.:
{
filterExp = (a, b, c) => a.wh_id == input.warehouse_id
&& a.is_type == ((int)EnumLocationType.).ToString()
&& c.is_lock == 0;
filterExp = filerExpable.ToExpression();
}
break;
case EnumCheckType.:
{
if (!input.material_id.IsNullOrWhiteSpace())
{
filterExp = (a, b, c) => a.wh_id == input.warehouse_id
&& b.material_id == input.material_id
&& a.is_type == ((int)EnumLocationType.).ToString()
&& c.is_lock == 0;
filterExp = filerExpable.And((a, b, c) => b.material_id == input.material_id).ToExpression();
}
}
break;
@@ -365,10 +369,7 @@ namespace Tnb.WarehouseMgr
{
if (input.regionIds?.Count > 0)
{
filterExp = (a, b, c) => a.wh_id == input.warehouse_id
&& input.regionIds.Contains(a.region_id)
&& a.is_type == ((int)EnumLocationType.).ToString()
&& c.is_lock == 0;
filterExp = filerExpable.And((a, b, c) => input.regionIds.Contains(a.region_id)).ToExpression();
}
}
break;

View File

@@ -19,7 +19,7 @@ namespace Tnb.WarehouseMgr
/// 齐套配套方案服务
/// </summary>
[OverideVisualDev(ModuleId)]
public class WmsCollocationSchemeSevice : BaseWareHouseService, IWmsCollocationSchemeSevice
public class WmsCollocationSchemeSevice : WmsBasicConfBase<WmsCollocationSchemeH>, IWmsCollocationSchemeSevice
{
private const string ModuleId = "26167204892965";
private readonly ISqlSugarClient _db;
@@ -36,7 +36,7 @@ namespace Tnb.WarehouseMgr
)
{
_repository = repository;
_db = repository.AsSugarClient();
DbContext = _db = repository.AsSugarClient();
_runService = runService;
_visualDevService = visualDevService;
OverideFuncs.CreateAsync = Create;

View File

@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;
using Tnb.WarehouseMgr.Entities;
namespace Tnb.WarehouseMgr
{
/// <summary>
/// 电梯业务类
/// </summary>
public class WmsElevatorService : WmsBasicConfBase<WmsElevatorH>
{
public WmsElevatorService(ISqlSugarRepository<WmsElevatorH> repo)
{
DbContext = repo.AsSugarClient();
}
}
}