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 { private static object Lock = new object(); private InOutListDetailViewService() : base(InOutListDetailViewDao.GetInstance()) { } private static InOutListDetailViewService Instance = null; /// /// 获取单例的方法 /// /// 用户服务的单例实体 public static InOutListDetailViewService GetInstance() { if (Instance == null) { lock (Lock) { if (Instance == null) { Instance = new InOutListDetailViewService(); } } } return Instance; } /// /// 查询出入库单明细 /// /// /// /// public List GetListDetailByListNo(string listno, out string msg) { using (var DbModel = new DbModelCore()) { try { msg = ""; List lists = new List(); 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; } } } /// /// /// /// /// /// 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; } } } /// /// 导入Excel /// /// 文件在服务器上的路径 /// 导入使用的模板 /// 异常错误消息 /// 是否导入成功 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(); 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(); 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; } } } } }