using SqlSugar;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using wms.sqlsugar.model.fj;
using WMS.BZSqlSugar;
using WMS.Info;
using WMS.Info.Models;
using WMS.Util;
namespace WMS.BZServices
{
public class DBCells
{
///
/// 表名
///
public string TableName { get; set; }
///
/// 字段名
///
public string CelName { get; set; }
///
/// 字段说明
///
public string CelMemo { get; set; }
///
/// 字段类型
///
public string CelType { get; set; }
///
/// 字段是否允许未空
///
public string CelIsNull { get; set; }
///
/// 字段默认值
///
public string CelDefualVal { get; set; }
///
/// 是否为配置项
///
public bool IsConfig { get; set; }
///
/// Execl名称
///
public string ExeclName { get; set; }
}
public class DBTableCell
{
public string BusType { get; set; } // 业务类型
public string TableType { get; set; } // 表类型
public string TablesName { get; set; } // 表名
public string CellsName { get; set; } // 列名
public string CellsMemo { get; set; } // 备注
public string CellsType { get; set; } // 字段类型
public string CellsNULLABLE { get; set; } // 是否允许未空
}
public class ImportDataOrExcelService
{
private readonly Repository _billMachinfoRepository;
private readonly Repository _baseWarehouseRepository;
private readonly Repository _baseWareareaRepository;
public ImportDataOrExcelService(Repository billMachinfoRepository, Repository baseWarehouseRepository, Repository baseWareareaRepository)
{
_billMachinfoRepository = billMachinfoRepository;
_baseWarehouseRepository = baseWarehouseRepository;
_baseWareareaRepository = baseWareareaRepository;
}
public JsonExecl ImportBillMatInfo(DataTable execlDt, int busType, string loginName)
{
JsonExecl json = new JsonExecl();
json.Type = 0;
string sql = "";
// 保存需要操作的表名
List LstTable = new List();
// 保存数据库表字段信息
List lstHeat = new List();
// 保存导出的数据
DataTable ImportDT = new DataTable();
try
{
if (busType.ToString() != "100")
throw new Exception("单据类型不正确");
if (execlDt == null)
throw new Exception("数据源不能为null");
if (execlDt.Rows.Count <= 0)
throw new Exception("数据源数据行数必须大于0");
// 获取源数据
DataTable dtExeclSouse = execlDt;
var warehouselist = _baseWarehouseRepository.Queryable().ToList();
var warearealist = _baseWareareaRepository.Queryable().ToList();
List bills = dtExeclSouse.ToList(rowMapper: new ColumnAttributeMapper());
var Machinfos = _billMachinfoRepository.Queryable().ToList();
List BillMachinfolists = new List();
foreach (var item in bills)
{
long? warehouseareaid = 0;
var warehouse = warehouselist.FirstOrDefault(o => o.Code == (item.WearhouseNo + item.NS));
if (warehouse != null)
{
warehouseareaid = warearealist.FirstOrDefault(o => o.WarehouseId == warehouse.Id)?.Id;
}
var nos = item.No.Split(' ');
if (nos.Length > 1)
{
var first = Regex.Replace(nos[0], @"[^0-9]+", "");
var sec = Regex.Replace(nos[1], @"[^0-9]+", "");
var Station = Int32.Parse(first) < Int32.Parse(sec)
? item.WearhouseNo + item.NS + nos[0].Substring(1)
: item.WearhouseNo + item.NS + nos[1].Substring(1);
if (!Machinfos.Any(o => o.MachNo.ToLower() == nos[0].ToLower().Trim()))
{
BillMachinfolists.Add(new BillMachinfo()
{
WarehouseId = warehouse == null ? 0 : warehouse.Id,
WarehouseCode = warehouse == null ? "" : warehouse.Code,
WareAreaId = warehouseareaid ?? 0,
Name = "",
GrpCode = "",
Direction = "",
BillCode = "",
WorkOrder = "",
SetGrpCode = "",
ProBillCode = "",
ProWorkOrder = "",
ProSetGrpCode = "",
MacTypeCode = "",
MacTypeName = "",
MachNo = nos[0],
AgvPoint = item.AgvPoint,
Station = Station,
WareDirect = item.NS,
IsStop = 0,
AddWho = loginName,
EditWho = loginName,
AddTime = DateTime.Now,
EditTime = DateTime.Now,
}) ;
}
if (!Machinfos.Any(o => o.MachNo.ToLower() == nos[1].ToLower().Trim()))
{
BillMachinfolists.Add(new BillMachinfo()
{
WarehouseId = warehouse == null ? 0 : warehouse.Id,
WarehouseCode = warehouse == null ? "" : warehouse.Code,
WareAreaId = warehouseareaid ?? 0,
AgvPoint = item.AgvPoint,
Name = "",
GrpCode = "",
Direction = "",
BillCode = "",
WorkOrder = "",
SetGrpCode = "",
ProBillCode = "",
ProWorkOrder = "",
ProSetGrpCode = "",
MacTypeCode = "",
MacTypeName = "",
MachNo = nos[1],
Station = Station,
WareDirect = item.NS,
IsStop = 0,
AddWho = loginName,
EditWho = loginName,
AddTime = DateTime.Now,
EditTime = DateTime.Now,
});
}
}
else
{
if (!Machinfos.Any(o => o.MachNo.ToLower() == item.No.ToLower().Trim()))
{
BillMachinfolists.Add(new BillMachinfo()
{
WarehouseId = warehouse == null ? 0 : warehouse.Id,
WarehouseCode = warehouse == null ? "" : warehouse.Code,
WareAreaId = warehouseareaid ?? 0,
MachNo = item.No,
Name = "",
GrpCode="",
Direction="",
BillCode="",
WorkOrder = "",
SetGrpCode = "",
ProBillCode = "",
ProWorkOrder = "",
ProSetGrpCode = "",
MacTypeCode = "",
MacTypeName = "",
AgvPoint = item.AgvPoint,
Station = item.WearhouseNo + item.NS + item.No.Substring(1),
WareDirect = item.NS,
IsStop = 0,
AddWho = loginName,
EditWho = loginName,
AddTime = DateTime.Now,
EditTime = DateTime.Now,
});
}
}
}
if (BillMachinfolists.Any())
{
_billMachinfoRepository.Insert(BillMachinfolists);
}
json.Type = 2;
json.Message = "导入成功";
}
catch (Exception ex)
{
json.Type = 0;
json.Message = ex.Message;
}
return json;
}
}
public class MachInfoExcelModel
{
[Column("AGV地标码")]
public string AgvPoint { get; set; }
[Column("帘线机台号")]
public string No { get; set; }
[Column("分拣库")]
public string WearhouseNo { get; set; }
[Column("南北侧")]
public string NS { get; set; }
[Column("6位地码")]
public string Six { get; set; }
}
}