85 lines
3.6 KiB
C#
85 lines
3.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using JNPF.Common.Core.Manager;
|
|
using JNPF.Common.Extension;
|
|
using JNPF.Common.Security;
|
|
using JNPF.FriendlyException;
|
|
using JNPF.VisualDev;
|
|
using JNPF.VisualDev.Entitys.Dto.VisualDev;
|
|
using Mapster;
|
|
using SqlSugar;
|
|
using Tnb.BasicData.Entities;
|
|
using Tnb.WarehouseMgr.Entities;
|
|
|
|
namespace Tnb.WarehouseMgr
|
|
{
|
|
/// <summary>
|
|
/// 点位管理业务类
|
|
/// </summary>
|
|
[OverideVisualDev(ModuleConsts.MODULE_WMSPOINT_ID)]
|
|
public class WmsPointService : BaseWareHouseService
|
|
{
|
|
private readonly ISqlSugarClient _db;
|
|
private readonly IUserManager _userManager;
|
|
public WmsPointService(ISqlSugarRepository<WmsPointH> repository, IUserManager userManager)
|
|
{
|
|
_db = repository.AsSugarClient();
|
|
_userManager = userManager;
|
|
OverideFuncs.ImportDataAsync = DataImport;
|
|
}
|
|
|
|
private async Task<dynamic> DataImport(VisualDevImportDataInput input)
|
|
{
|
|
int row = 0;
|
|
try
|
|
{
|
|
List<Dictionary<string, object>> dics = input.list;
|
|
List<WmsPointH> points = new List<WmsPointH>();
|
|
WmsPointH pt = new WmsPointH();
|
|
List<string> aCodes = new List<string>();
|
|
//遍历字典,找出需要查询数据库拿的相关字段
|
|
foreach (var d in dics)
|
|
{
|
|
var pCode = d["point_code"].ToString() ?? string.Empty;
|
|
var pName = d["point_name"].ToString() ?? string.Empty;
|
|
var aCode = d["area_code"].ToString() ?? string.Empty;
|
|
var floor = d["floor"].ToString() ?? string.Empty;
|
|
if (pCode == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据点位编号不可为空", 500);
|
|
if (pName == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据点位名称不可为空", 500);
|
|
if (floor == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据楼层不可为空", 500);
|
|
aCodes.Add(aCode);
|
|
d["create_time"] = DateTime.Now;
|
|
d.Remove("modify_time");
|
|
pt = d.Adapt<WmsPointH>();
|
|
points.Add(pt);
|
|
}
|
|
var areas = await _db.Queryable<WmsAreaH>().Where(it => aCodes.Contains(it.code)).ToDictionaryAsync(x => x.code, x => x.id);
|
|
points.ForEach(x =>
|
|
{
|
|
if (!areas.Keys.Contains(x.area_code)) throw new AppFriendlyException($"第{points.IndexOf(x) + 1}个数据的管理区编号有误", 500);
|
|
x.id = SnowflakeIdHelper.NextId();
|
|
x.org_id = _userManager.User.OrganizeId;
|
|
x.is_lock = 0;
|
|
x.status = 1;
|
|
x.point_x = 0;
|
|
x.point_y = 0;
|
|
x.point_z = 0;
|
|
x.area_id = areas[x.area_code].ToString() ?? throw new AppFriendlyException($"第{points.IndexOf(x) + 1}个数据的管理区编号编号有误", 500);
|
|
x.create_id = _userManager.UserId;
|
|
x.modify_id = null;
|
|
x.modify_time = null;
|
|
});
|
|
row = await _db.Insertable(points).ExecuteCommandAsync();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw Oops.Bah(ex.Message);
|
|
}
|
|
return row > 0;
|
|
}
|
|
}
|
|
}
|