using iWareCommon.Common.Service;
|
using iWareCommon.Utils;
|
using iWareDataCore.BASE.Dao;
|
using iWareDataCore.BASE.Entity;
|
using iWareDataCore.ORM;
|
using iWareDataCore.Properties;
|
using iWareExcel.EXCEL.Entity;
|
using iWareExcel.Utils;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace iWareDataCore.BASE.Service
|
{
|
public class InOutListDetailViewService : CommonService<InOutListDetailViewEntity, BASEInOutListDetailView, DbModelCore>
|
{
|
private static object Lock = new object();
|
|
private InOutListDetailViewService() : base(InOutListDetailViewDao.GetInstance()) { }
|
|
private static InOutListDetailViewService Instance = null;
|
|
/// <summary>
|
/// 获取单例的方法
|
/// </summary>
|
/// <returns>用户服务的单例实体</returns>
|
public static InOutListDetailViewService GetInstance()
|
{
|
|
if (Instance == null)
|
{
|
lock (Lock)
|
{
|
if (Instance == null)
|
{
|
Instance = new InOutListDetailViewService();
|
}
|
}
|
}
|
return Instance;
|
}
|
|
/// <summary>
|
/// 查询出入库单明细
|
/// </summary>
|
/// <param name="id"></param>
|
/// <param name="msg"></param>
|
/// <returns></returns>
|
public List<InOutListDetailViewEntity> GetListDetailByListNo(string listno, out string msg)
|
{
|
using (var DbModel = new DbModelCore())
|
{
|
try
|
{
|
msg = "";
|
List<InOutListDetailViewEntity> lists = new List<InOutListDetailViewEntity>();
|
var listdetail = DbModel.BASEInOutListDetailViews.Where(x => x.listno == listno).ToList();
|
listdetail.ForEach(x => lists.Add(new InOutListDetailViewEntity(x)));
|
|
return lists;
|
}
|
catch (Exception ex)
|
{
|
msg = ex.Message;
|
LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "GetListDetailByListNo", ex.Message);
|
return null;
|
}
|
}
|
|
}
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="id"></param>
|
/// <param name="msg"></param>
|
/// <returns></returns>
|
public int UpdateByListNo(string listno, int islots)
|
{
|
using (var DbModel = new DbModelCore())
|
{
|
try
|
{
|
var inoutlist = DbModel.BASEInOutLists.FirstOrDefault(x => x.listno == listno);
|
|
if (inoutlist!=null)
|
{
|
int id=inoutlist.id;
|
var inoutdetillst = DbModel.BASEInOutListDetails.Where(x => x.inoutlistid == id).ToList();
|
if (inoutdetillst != null && inoutdetillst.Count>0)
|
{
|
inoutdetillst.ForEach(x => x.isfinish = 1);
|
}
|
inoutlist.status = 1;
|
inoutlist.islots = islots;
|
return DbModel.SaveChanges();
|
}
|
return -1;
|
}
|
catch (Exception ex)
|
{
|
LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "UpdateByListNo", ex.Message);
|
return -1;
|
}
|
}
|
|
}
|
|
/// <summary>
|
/// 导入Excel
|
/// </summary>
|
/// <param name="path">文件在服务器上的路径</param>
|
/// <param name="workBook">导入使用的模板</param>
|
/// <param name="msg">异常错误消息</param>
|
/// <returns>是否导入成功</returns>
|
public bool ImportExcel(string path, WorkBookEntity workBook, out string msg)
|
{
|
using (var dbModel = new DbModelCore())
|
{
|
try
|
{
|
msg = "";
|
var ds = ExcelHelper.FromExcelByEPPlus(path, workBook, out msg);
|
if (!string.IsNullOrEmpty(msg))
|
{
|
throw new Exception(msg);
|
}
|
var materials = ds[0];
|
if (materials.Count < 1)
|
{
|
msg = "物料记录数为0,请修改后重新导入";
|
return false;
|
}
|
var types = dbModel.BASEMaterialTypes.ToList();
|
var material = dbModel.BASEMaterials.ToList();
|
var i = 0;
|
var codes = new List<string>();
|
foreach (InputMaterialEntity m in materials)
|
{
|
i += 1;
|
if (string.IsNullOrEmpty(m.Code))
|
{
|
msg = string.Format("在第{0}行,物料号不能为空,请修改后重新导入", i + 1);
|
return false;
|
}
|
|
if (string.IsNullOrEmpty(m.TypeName))
|
{
|
msg = string.Format("在第{0}行,类型名称不能为空,请修改后重新导入", i + 1);
|
return false;
|
}
|
var type = types.FirstOrDefault(x => x.name == m.TypeName);
|
if (type == null)
|
{
|
msg = string.Format("在第{0}行,没有找到物料类型{1},请修改后重新导入", i + 1, m.TypeName);
|
return false;
|
}
|
var exitmaterial = material.FirstOrDefault(x => x.code == m.Code);
|
if (exitmaterial == null)
|
{
|
msg = string.Format("在第{0}行,没有找到物料号{1},请修改后重新导入", i + 1, m.Code);
|
return false;
|
}
|
if (codes.Contains(m.Code))
|
{
|
msg = string.Format("在第{0}行,物料编号为{1}的物料已重复出现,请修改后重新导入", i + 1, m.Code);
|
return false;
|
}
|
codes.Add(m.Code);
|
|
}
|
var materialSaves = new List<InputMaterialEntity>();
|
var existMaterials = dbModel.BASEInputMaterials.Select(x => new { x.id, x.code }).Where(x => codes.Contains(x.code)).ToList();
|
foreach (InputMaterialEntity m in materials)
|
{
|
var one = existMaterials.FirstOrDefault(x => x.code == m.Code);
|
if (one == null) { materialSaves.Add(m); }
|
}
|
|
for (var j = 0; j < (int)Math.Ceiling(materialSaves.Count / 1000.0); j++)
|
{
|
var sql = string.Format("INSERT INTO BASEInputMaterial(status,code,name,typename,cuttingtype,listno,classificationsociety,serialno,thick,wide,length) VALUES");
|
for (var r = j * 1000; r < j * 1000 + 1000; r++)
|
{
|
if (r == materialSaves.Count)
|
{
|
break;
|
}
|
sql += string.Format("('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', '{10}'),",
|
StringHelper.RelpaceQuot("未生成"),
|
StringHelper.RelpaceQuot(materialSaves[r].Code),
|
StringHelper.RelpaceQuot(materialSaves[r].Name),
|
StringHelper.RelpaceQuot(materialSaves[r].TypeName),
|
StringHelper.RelpaceQuot(materialSaves[r].CuttingType),
|
StringHelper.RelpaceQuot(materialSaves[r].ListNo),
|
StringHelper.RelpaceQuot(materialSaves[r].ClassificationSociety),
|
StringHelper.RelpaceQuot(materialSaves[r].SerialNo),
|
StringHelper.RelpaceQuot(materialSaves[r].Thick),
|
StringHelper.RelpaceQuot(materialSaves[r].Wide),
|
StringHelper.RelpaceQuot(materialSaves[r].Length)
|
);
|
}
|
if (sql.EndsWith(","))
|
{
|
sql = sql.Substring(0, sql.Length - 1);
|
}
|
var num = dbModel.Database.ExecuteSqlCommand(sql);
|
}
|
|
//InputMaterialDao.GetInstance().Update(materialUpdates, dbModel);
|
|
return string.IsNullOrEmpty(msg);
|
|
}
|
catch (Exception ex)
|
{
|
msg = ex.Message;
|
LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "ImportExcel", ex.Message);
|
return false;
|
}
|
}
|
}
|
|
|
}
|
}
|