using BarTender; using EnumType; using iWareCommon.Utils; using IWareDataAccess.EF; using IWareDataAccess.Entity.Base; using IWareDataAccess.Helper; using Models.Input; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; namespace IWareDataAccess.Base.CONTAINERVSITEM { public static class ContainerVsItemSqlFunc { /// /// 搜索表 /// /// /// /// public static List Search(ContainerVsItemWebEntity webEntity, int page, int onePageNum, out string msg) { msg = ""; using (Model edm = new Model()) { var f = PredicateBuilder.True(); //便利所有属性 Type type = webEntity.GetType(); foreach (var i in type.GetProperties()) { object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name); if (i.PropertyType == typeof(String)) { string value; if (v != null) { value = v.ToString(); f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false); } } else if (i.PropertyType == typeof(DateTime?)) { if (v != null) { DateTime value = DateTime.Parse(v.ToString()); if (i.Name == "updateTimeStart") { f = f.And(x => x.UPDATETIME > value); } if (i.Name == "updateTimeEnd") { f = f.And(x => x.UPDATETIME < value); } } } else { if (v != null) { f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v)); } } } List list = edm.BASE_CONTAINER_VS_ITEM.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList(); return list; } } /// /// 搜索视图 /// /// /// /// public static List SearchView(Expression> f, ContainerVsItemWebEntity webEntity, int page, int onePageNum, out string msg) { msg = ""; using (Model edm = new Model()) { //var f = PredicateBuilder.True(); ////便利所有属性 //Type type = webEntity.GetType(); //foreach (var i in type.GetProperties()) //{ // object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name); // if (i.PropertyType == typeof(String)) // { // string value; // if (v != null) // { // value = v.ToString(); // f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false); // } // } // else if (i.PropertyType == typeof(DateTime?)) // { // if (v != null) // { // DateTime value = DateTime.Parse(v.ToString()); // if (i.Name == "updateTimeStart") // { // f = f.And(x => x.updateTime > value); // } // if (i.Name == "updateTimeEnd") // { // f = f.And(x => x.updateTime < value); // } // } // } // else // { // if (v != null) // { // f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v)); // } // } //} List list = edm.View_BASE_CONTAINER_VS_ITEM.OrderByDescending(x => x.id).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList(); return list; } } /// /// 搜索视图数量 /// /// /// /// public static int SearchViewNum(Expression> f, ContainerVsItemWebEntity webEntity, out string msg) { msg = ""; using (Model edm = new Model()) { //var f = PredicateBuilder.True(); ////便利所有属性 //Type type = webEntity.GetType(); //foreach (var i in type.GetProperties()) //{ // object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name); // if (i.PropertyType == typeof(String)) // { // string value; // if (v != null) // { // value = v.ToString(); // f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false); // } // } // else if (i.PropertyType == typeof(DateTime?)) // { // if (v != null) // { // DateTime value = DateTime.Parse(v.ToString()); // if (i.Name == "updateTimeStart") // { // f = f.And(x => x.updateTime > value); // } // if (i.Name == "updateTimeEnd") // { // f = f.And(x => x.updateTime < value); // } // } // } // else // { // if (v != null) // { // f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v)); // } // } //} int num = edm.View_BASE_CONTAINER_VS_ITEM.Where(f.Compile()).Count(); return num; } } /// /// 添加组盘(单独) /// /// /// public static bool AddOrUpdate(ContainerVsItemWebEntity webEntity, out string msg) { WZ.Useful.Commons.LogTextHelper.WriteLine("", webEntity.itemName, "调用更新单个"); //暂时记录请求 WZ.Useful.Commons.LogTextHelper.WriteLine("", JsonConvert.SerializeObject(webEntity), "添加组盘(单独)"); msg = ""; using (Model edm = new Model()) { BASE_CONTAINER_VS_ITEM cvi = new BASE_CONTAINER_VS_ITEM(); //去重 cvi = edm.BASE_CONTAINER_VS_ITEM.FirstOrDefault(x => x.BASE_ITEM.ITEMNAME == webEntity.itemName && x.BASE_CONTAINER.CONTAINERNAME == webEntity.containerName); if (cvi != null) { msg = "此组盘信息已存在"; return false; } cvi = edm.BASE_CONTAINER_VS_ITEM.FirstOrDefault(x => x.ID == (webEntity.id ?? 0)); if (cvi != null) { //msg = "此组盘编号已存在"; //return false; } else { cvi = new BASE_CONTAINER_VS_ITEM(); } BASE_CONTAINER container = edm.BASE_CONTAINER.FirstOrDefault(x => x.CONTAINERNAME == webEntity.containerName); if (container == null) { msg = "无此托盘"; return false; } #region 增加对此托盘的库存关系验证,如果这个托盘此时在立体库中,或者是有任务被占用,就禁止修改组盘 【Editby shaocx,2023-01-10】 int num = edm.TASK_TASK.Where(x => x.CONTAINERID == container.ID && x.HASFINISHED == 0 && x.TASKSTATUS != "任务删除").Count(); if (num > 0) { msg = "此托盘" + container.CONTAINERNAME + "有任务被占用,不允许修改组盘信息!"; return false; } var pvc = edm.BASE_PLACE_VS_CONTAINER.Where(x => x.CONTAINERID == container.ID).FirstOrDefault(); if (pvc != null) { var place = edm.BASE_PLACE.Where(x => x.ID == pvc.PLACEID).FirstOrDefault(); msg = "此托盘" + container.CONTAINERNAME + "已经被库位" + place.PLACE + "占用,不允许修改组盘信息!"; return false; } #endregion cvi.BASE_CONTAINER = container; BASE_ITEM item = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME == webEntity.itemName); if (item == null) { msg = "无此零件"; return false; } if (!item.USECONTAINERTYPE.Split(',').Contains(container.CONTAINERTYPE))//增加零件与器具是否可以绑定校验,[Editby kejj,20230624] { msg = "零件与器具不匹配"; return false; } //增加最大库容拦截 var count = edm.BASE_CONTAINER_VS_ITEM.Where(x => x.ITEMID == item.ID).Sum(u => u.ITEMNUM); if (item.MAXSTORAGE < (count ?? 0) + webEntity.itemNum) { msg = "组盘数量超过最大库容"; return false; } int usreid = 1; var user = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webEntity.createUser); if (user != null) { usreid = user.ID; } if (!string.IsNullOrEmpty(webEntity.image)) { item.IMAGE = webEntity.image; } cvi.BASE_ITEM = item; cvi.CreateTime = cvi.UPDATETIME = DateTime.Now; cvi.OperationRemark = "ContainerVsItemSqlFunc AddOrUpdate[添加组盘]时"; cvi.ITEMNUM = webEntity.itemNum ?? cvi.ITEMNUM; cvi.ISBAD = webEntity.isBad ?? cvi.ISBAD; if (!string.IsNullOrEmpty(webEntity.inOrderCode)) { ORDER_INORDER inOrder = edm.ORDER_INORDER.FirstOrDefault(x => x.INORDERCODE == webEntity.inOrderCode); if (inOrder == null) { msg = "无此入库计划"; return false; } cvi.ORDER_INORDER = inOrder; //更新数量 inOrder.DONENUM = inOrder.DONENUM + cvi.ITEMNUM; } if (!string.IsNullOrEmpty(webEntity.outOrderCode)) { ORDER_OUTORDER outOrder = edm.ORDER_OUTORDER.FirstOrDefault(x => x.OUTORDERCODE == webEntity.outOrderCode); if (outOrder == null) { msg = "无此入库计划"; return false; } cvi.ORDER_OUTORDER = outOrder; } cvi.ENABLE = webEntity.enable ?? cvi.ENABLE; cvi.BADBYFACTORY = webEntity.badByFactory ?? cvi.BADBYFACTORY; if (!string.IsNullOrEmpty(webEntity.inType)) { if (!string.IsNullOrEmpty(webEntity.inType)) { BASE_INTYPE inType = edm.BASE_INTYPE.FirstOrDefault(x => x.INTYPE == webEntity.inType); if (inType == null) { msg = "无此入库类型"; return false; } cvi.BASE_INTYPE = inType; } } cvi.GETWEIGHT = webEntity.getWeight ?? cvi.GETWEIGHT; //总重量 cvi.TOTALWEIGHT = (cvi.ITEMNUM ?? 0) * (item.WEIGHT ?? 0); var oldCviCode = cvi.CVICODE; cvi.CVICODE = webEntity.cviCode ?? cvi.CVICODE; cvi.CREATEUSERID = cvi.UpdateUserId = usreid; //计算 【EditBy shaocx,2022-11-08】 Helper.Helper.CalcInOrderNumPub(oldCviCode, edm, cvi); edm.BASE_CONTAINER_VS_ITEM.AddOrUpdateExtension(cvi); if (edm.SaveChanges() > 0) { WZ.Useful.Commons.LogTextHelper.WriteLine("组盘", "添加", "器具:" + cvi.BASE_CONTAINER.CONTAINERNAME + "零件:" + cvi.BASE_ITEM.ITEMNAME + "用户:" + webEntity.createUser); return true; } else { msg = "保存失败"; return false; } } } /// /// 添加组盘(群体) /// /// /// public static bool AddOrUpdateAll(ContainerVsItemListWebEntity webEntity, out string msg) { WZ.Useful.Commons.LogTextHelper.WriteLine("", webEntity.containerName, "调用更新全部"); msg = ""; //删除原数据 ContainerVsItemWebEntity cviDelete = new ContainerVsItemWebEntity(); if (string.IsNullOrEmpty(webEntity.containerName)) { msg = "输入器具号"; WZ.Useful.Commons.LogTextHelper.WriteLine("", webEntity.containerName, "失败" + msg); return false; } cviDelete.containerName = webEntity.containerName; if (DeleteAll(cviDelete, out msg)) { WZ.Useful.Commons.LogTextHelper.WriteLine("", webEntity.containerName, "删除成功"); } else { if (!string.IsNullOrEmpty(msg)) { WZ.Useful.Commons.LogTextHelper.WriteLine("", webEntity.containerName, "失败" + msg); return false; } } //去重 List itemEntity = JsonConvert.DeserializeObject>(webEntity.itemList); var group = itemEntity.GroupBy(x => x.itemName); foreach (var i in group) { if (i.Count() > 1) { msg = "存在重复零件"; return false; } } if (itemEntity.Count != 0) { foreach (var i in itemEntity) { ContainerVsItemWebEntity cvi = new ContainerVsItemWebEntity(); cvi.itemName = i.itemName; cvi.itemNum = i.itemNum; cvi.inOrderCode = i.inOrderCode; cvi.containerName = webEntity.containerName; cvi.isBad = webEntity.isBad; cvi.badByFactory = webEntity.badByFactory; cvi.inType = webEntity.inType; cvi.cviCode = webEntity.cviCode; cvi.image = i.image; cvi.createUser = webEntity.createUser; if (AddOrUpdate(cvi, out msg) == false) { return false; } } return true; } else { msg = "空器具"; return true; } } /// /// 修改组盘 /// /// /// public static bool Update(ContainerVsItemWebEntity webEntity, out string msg) { msg = ""; using (Model edm = new Model()) { BASE_CONTAINER_VS_ITEM cvi = edm.BASE_CONTAINER_VS_ITEM.FirstOrDefault(x => x.ID == webEntity.id); if (cvi == null) { msg = "此组盘关系不存在"; return false; } //cvi = edm.BASE_CONTAINER_VS_ITEM.FirstOrDefault(x => x.CVICODE == webEntity.cviCode); //if (cvi == null) //{ // msg = "此组盘关系不存在"; // return false; //} BASE_CONTAINER container = edm.BASE_CONTAINER.FirstOrDefault(x => x.CONTAINERNAME == webEntity.containerName); if (container == null) { msg = "无此托盘"; return false; } #region 增加对此托盘的库存关系验证,如果这个托盘此时在立体库中,或者是有任务被占用,就禁止修改组盘 【Editby shaocx,2023-01-10】 int num = edm.TASK_TASK.Where(x => x.CONTAINERID == cvi.CONTAINERID && x.HASFINISHED == 0 && x.TASKSTATUS != "任务删除").Count(); if (num > 0) { msg = "此托盘" + container.CONTAINERNAME + "有任务被占用,不允许修改组盘信息!"; return false; } var pvc = edm.BASE_PLACE_VS_CONTAINER.Where(x => x.CONTAINERID == cvi.CONTAINERID).FirstOrDefault(); if (pvc != null) { var place = edm.BASE_PLACE.Where(x => x.ID == pvc.PLACEID).FirstOrDefault(); msg = "此托盘" + container.CONTAINERNAME + "已经被库位" + place.PLACE + "占用,不允许修改组盘信息!"; return false; } #endregion cvi.BASE_CONTAINER = container; BASE_ITEM item = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME == webEntity.itemName); if (item == null) { msg = "无此零件"; return false; } item.IMAGE = string.IsNullOrEmpty(webEntity.image) ? "" : item.IMAGE; cvi.BASE_ITEM = item; cvi.UPDATETIME = DateTime.Now; cvi.OperationRemark = "ContainerVsItemSqlFunc Update[修改组盘]时"; int usreid = 0; var user = edm.SYS_USER.FirstOrDefault(x => x.USERNAME == webEntity.createUser); if (user != null) { usreid = user.ID; } cvi.UpdateUserId = usreid; cvi.ITEMNUM = webEntity.itemNum; cvi.ISBAD = webEntity.isBad; if (!string.IsNullOrEmpty(webEntity.inOrderCode)) { ORDER_INORDER inOrder = edm.ORDER_INORDER.FirstOrDefault(x => x.INORDERCODE == webEntity.inOrderCode); if (inOrder == null) { msg = "无此入库计划"; return false; } cvi.ORDER_INORDER = inOrder; } if (!string.IsNullOrEmpty(webEntity.outOrderCode)) { ORDER_OUTORDER outOrder = edm.ORDER_OUTORDER.FirstOrDefault(x => x.OUTORDERCODE == webEntity.outOrderCode); if (outOrder == null) { msg = "无此入库计划"; return false; } cvi.ORDER_OUTORDER = outOrder; } cvi.ENABLE = webEntity.enable; cvi.BADBYFACTORY = webEntity.badByFactory; if (!string.IsNullOrEmpty(webEntity.inType)) { BASE_INTYPE inType = edm.BASE_INTYPE.FirstOrDefault(x => x.INTYPE == webEntity.inType); if (inType == null) { msg = "无此入库类型"; return false; } cvi.BASE_INTYPE = inType; } cvi.GETWEIGHT = webEntity.getWeight; //总重量 cvi.TOTALWEIGHT = (cvi.ITEMNUM ?? 0) * (item.WEIGHT ?? 0); var oldCviCode = cvi.CVICODE; cvi.CVICODE = webEntity.cviCode; edm.BASE_CONTAINER_VS_ITEM.AddOrUpdateExtension(cvi); //计算 【EditBy shaocx,2022-11-08】 Helper.Helper.CalcInOrderNumPub(oldCviCode, edm, cvi); if (edm.SaveChanges() > 0) { return true; } else { msg = "保存失败"; return false; } } } /// /// 修改 冲压生产计划跟组盘入库的关联关系 /// /// /// public static bool BindCviCode(UpdateCviCodeInput input, out string msg) { msg = ""; using (Model edm = new Model()) { //重新计算订单表的数量 var order = edm.ORDER_INORDER.Where(x => x.INORDERCODE == input.cviCode).FirstOrDefault(); if (order == null) { msg = "根据计划单号'" + input.cviCode + "'没有找到计划"; return false; } if (order.OrderStatusId != (int)InOrderStatusEnum.新建) { msg = "计划单号'" + input.cviCode + "'当前状态是'" + order.ORDERSTATUS + "',只有状态是'新建'时才能关联!"; return false; } int doneNum = 0; //现有的关联关系 List curCviList = edm.BASE_CONTAINER_VS_ITEM.Where(x => x.CVICODE == input.cviCode).ToList(); if (input.cviIds == null || input.cviIds.Count == 0) { //表示全部移除关系 foreach (var item in curCviList) { item.CVICODE = ""; } doneNum = 0; } else { List addList = new List(); foreach (var cviId in input.cviIds) { if (!curCviList.Exists(x => x.ID == cviId)) { addList.Add(cviId); } else { //已经存在了 doneNum += Convert.ToInt32(curCviList.Find(x => x.ID == cviId).ITEMNUM); } } var updateList = edm.BASE_CONTAINER_VS_ITEM.Where(x => addList.Contains(x.ID)).ToList(); foreach (var item in updateList) { item.CVICODE = input.cviCode; doneNum += Convert.ToInt32(item.ITEMNUM); } } order.DONENUM = doneNum; order.AllFinishedNum = (order.DONENUM ?? 0) + (order.UNLINENUM ?? 0); if (edm.SaveChanges() > 0) { return true; } else { msg = "保存失败"; return false; } } } /// /// 删除器具上所有东西 /// /// /// public static bool DeleteAll(ContainerVsItemWebEntity webEntity, out string msg) { msg = ""; using (Model edm = new Model()) { try { List cvi = edm.BASE_CONTAINER_VS_ITEM.Where(x => x.BASE_CONTAINER.CONTAINERNAME == webEntity.containerName).ToList(); if (cvi != null && cvi.Count > 0) { int id = (int)cvi[0].CONTAINERID; BASE_PLACE_VS_CONTAINER pvc = edm.BASE_PLACE_VS_CONTAINER.FirstOrDefault(x => x.CONTAINERID == id); TASK_TASK task = edm.TASK_TASK.FirstOrDefault(x => x.CONTAINERID == id && x.HASFINISHED == 0); if (pvc == null && task == null) { edm.BASE_CONTAINER_VS_ITEM.RemoveRange(cvi); if (edm.SaveChanges() > 0) { //记录删除托盘和物料绑定关系日志 【Editby shaoc,2023-03-07】 IWareDataAccess.Helper.Helper.LogRemoveBASE_CONTAINER_VS_ITEM(cvi, "ContainerVsItemSqlFunc.DeleteAll", "删除器具上所有东西"); WZ.Useful.Commons.LogTextHelper.WriteLine("组盘", "删除", "器具:" + webEntity.containerName + "用户:" + (webEntity.createUser ?? "无")); return true; } else { msg = "保存失败"; return false; } } else if (pvc != null) { msg = "在库里不能修改"; return false; } else if (task != null) { msg = "任务中不能修改"; return false; } else { msg = "其它"; return false; } } else { msg = ""; return true; } } catch (Exception ex) { msg = ex.ToString(); return false; } } } /// /// 删除指定组盘关系 /// /// /// public static bool DeleteOne(ContainerVsItemWebEntity webEntity, out string msg) { msg = ""; using (Model edm = new Model()) { BASE_CONTAINER_VS_ITEM cvi = edm.BASE_CONTAINER_VS_ITEM.FirstOrDefault(x => x.ID == webEntity.id); TASK_TASK task = edm.TASK_TASK.FirstOrDefault(x => x.CONTAINERID == cvi.CONTAINERID && x.HASFINISHED == 0); if (cvi == null) { //无此角色 msg = "无此组盘关系"; return false; } else if (task != null) { msg = "任务中不能修改"; return false; } else { WZ.Useful.Commons.LogTextHelper.WriteLine("删除单个", cvi.BASE_CONTAINER.CONTAINERNAME, cvi.BASE_ITEM.ITEMNAME); edm.BASE_CONTAINER_VS_ITEM.Remove(cvi); cvi.ENABLE = 0; } if (edm.SaveChanges() > 0) { //记录删除托盘和物料绑定关系日志 【Editby shaoc,2023-03-07】 IWareDataAccess.Helper.Helper.LogRemoveBASE_CONTAINER_VS_ITEM(cvi, "ContainerVsItemSqlFunc.DeleteOne", "删除指定组盘关系"); return true; } else { msg = "保存失败"; return false; } } } /// /// 获取组盘号 /// /// public static string GetCode() { string month = DateTime.Now.Month.ToString("00"); string day = DateTime.Now.Day.ToString("00"); string hour = DateTime.Now.Hour.ToString("00"); string minute = DateTime.Now.Minute.ToString("00"); string second = DateTime.Now.Second.ToString("00"); string millSecond = DateTime.Now.Millisecond.ToString("0000"); string time = DateTime.Now.Year.ToString() + month + day + hour + minute + second + millSecond; return "CI" + time; } public static bool PrintContainerVsItem(ContainerVsItemListWebEntity model, out string msg) { try { msg = ""; List itemEntity = JsonConvert.DeserializeObject>(model.itemList); List itemnamelst = new List(); itemnamelst = itemEntity.Select(x => x.itemName).ToList(); using (Model md = new Model()) { string devname = model.printDevName; if (string.IsNullOrEmpty(model.printDevName)) { devname = "80mmThermalPrinter"; } List prlsy = new List(); var itemlst = md.BASE_ITEM.Where(x => itemnamelst.Contains(x.ITEMNAME)); if (model.inType.Contains("EU")) { BASE_PRINT pri = new BASE_PRINT(); pri.STATE = 0; pri.CREATETIME = DateTime.Now; pri.PRINTDEVNAME = devname; pri.TYPE = 1; pri.ITEMNUM = itemEntity.Sum(x => x.itemNum).ToString(); pri.ITEMTYPENUM = itemEntity.Count.ToString(); pri.CVIQRCODE = model.cviCode; pri.CVICODE = model.cviCode; pri.ISOK = model.isBad == 1 ? "不合格" : "合格"; prlsy.Add(pri); } else { if (itemEntity != null && itemEntity.Count > 0) { itemEntity.ForEach(x => { BASE_PRINT pri = new BASE_PRINT(); pri.STATE = 0; pri.CREATETIME = DateTime.Now; pri.PRINTDEVNAME = devname; pri.TYPE = 0; pri.NUM = x.itemNum.ToString(); pri.ITEMCODE = x.itemName; pri.CVIQRCODE = model.cviCode; pri.CVICODE = model.cviCode; pri.ISOK = model.isBad == 1 ? "不合格" : "合格"; var item = itemlst.FirstOrDefault(y => y.ITEMNAME == y.ITEMNAME); pri.ITEMNAME = item.ITEMDES; pri.BACKUP1 = item.CREATELINE; prlsy.Add(pri); }); } } md.BASE_PRINT.AddRange(prlsy); if (md.SaveChanges() > 0) { return true; } else { msg = "打印发送失败"; return false; } } } catch (Exception ex) { msg = "打印发送失败"; return false; } } public static string PdaPrint(ContainerVsItemListWebEntity model, string path, out string msg) { string url = ""; //Engine btEngine = new Engine(); try { msg = ""; using (Model md = new Model()) { //List itemEntity = JsonConvert.DeserializeObject>(model.itemList); //List itemnamelst = new List(); //itemnamelst = itemEntity.Select(x => x.itemName).ToList(); //var itemlst = md.BASE_ITEM.Where(x => itemnamelst.Contains(x.ITEMNAME)); //LabelFormatDocument btFormat; //int type = 0; //BASE_PRINT pri = new BASE_PRINT(); //if (model.inType.Contains("EU")) //{ // type = 1; // pri.STATE = 0; // pri.CREATETIME = DateTime.Now; // pri.TYPE = 1; // pri.ITEMNUM = itemEntity.Sum(x => x.itemNum).ToString(); // pri.ITEMTYPENUM = itemEntity.Count.ToString(); // pri.CVIQRCODE = model.cviCode; // pri.CVICODE = model.cviCode; // pri.ISOK = model.isBad == 1 ? "不合格" : "合格"; //} //else //{ // type = 0; // pri.STATE = 0; // pri.CREATETIME = DateTime.Now; // pri.TYPE = 0; // pri.NUM = itemEntity[0].itemNum.ToString(); // pri.ITEMCODE = itemEntity[0].itemName; // pri.CVIQRCODE = model.cviCode; // pri.CVICODE = model.cviCode; // pri.ISOK = model.isBad == 1 ? "不合格" : "合格"; // var item = itemlst.FirstOrDefault(y => y.ITEMNAME == y.ITEMNAME); // pri.ITEMNAME = item.ITEMDES; // pri.BACKUP1 = item.CREATELINE; //} //btEngine.Start(); ////btFormat.PrintSetup.PrinterName = printinfo.PRINTDEVNAME;// "80mmThermalPrinter";//打印机名称 ////btFormat.PrintSetup.IdenticalCopiesOfLabel = 1; //打印份数 ////Messages messages; ////int waitout = 1000; // 10秒 超时 //if (type == 1) //{ // LabelFormatDocument btFormatEu = btEngine.Documents.Open(Path.Combine(@"F:\", "EUPrint.btw"));//这里是Bartender软件生成的模板文件,你需要先把模板文件做好。 // btFormat = btFormatEu; // btFormat.SubStrings["ItemNum"].Value = pri.ITEMNUM;//为Bartender里的数据源(文本框、条码等等)传值 // btFormat.SubStrings["ItemTypeNum"].Value = pri.ITEMTYPENUM; // btFormat.SubStrings["CVIQRCode"].Value = pri.CVIQRCODE; //} //else //{ // LabelFormatDocument btFormatIs = btEngine.Documents.Open(Path.Combine(@"F:\", "IsOkPrint.btw"));//这里是Bartender软件生成的模板文件,你需要先把模板文件做好。 // btFormat = btFormatIs; // btFormat.SubStrings["Num"].Value = pri.NUM; // btFormat.SubStrings["ItemCode"].Value = pri.ITEMCODE; // btFormat.SubStrings["ItemName"].Value = pri.ITEMNAME; // btFormat.SubStrings["ProductLine"].Value = pri.BACKUP1; //} //btFormat.SubStrings["CVICode"].Value = pri.CVICODE; //btFormat.SubStrings["IsOk"].Value = pri.ISOK; ; //btFormat.SubStrings["CreateTime"].Value = ((DateTime)pri.CREATETIME).ToString("yyyy-MM-dd"); //// Result nResult1 = btFormat.Print("标签打印软件", waitout, out messages); ////btFormat.PrintSetup.Cache.FlushInterval = CacheFlushInterval.Daily; //Resolution rl = new Resolution(300, 300); //string datetime = Helper.Helper.GetTimeStamp(); //string strPath = path + "PrintImg\\" + datetime + ".PNG";//这里要注意的是先要建立File文件夹,不然会报错,也可以自己写一个检测文件夹,这里就先不赘述 //url = @"PrintImg\" + datetime + ".PNG"; //btFormat.ExportImageToFile(strPath, ImageType.PNG, ColorDepth.Mono, rl, OverwriteOptions.Overwrite); //btFormat.Close(SaveOptions.DoNotSaveChanges);//不保存对打开模板的修改 //btEngine.Stop(); return url; } } catch (Exception ex) { msg = "打印发送失败"; return url; } } public static string PdaPrintBtn(ContainerVsItemListWebEntity model, string path, out string msg) { string url = ""; try { msg = ""; using (Model md = new Model()) { List itemEntity = JsonConvert.DeserializeObject>(model.itemList); List itemnamelst = new List(); itemnamelst = itemEntity.Select(x => x.itemName).ToList(); var itemlst = md.BASE_ITEM.Where(x => itemnamelst.Contains(x.ITEMNAME)); int type = 0; string templateUrl = ""; BASE_PRINT pri = new BASE_PRINT(); if (model.inType.Contains("EU")) { type = 1; pri.STATE = 0; pri.CREATETIME = DateTime.Now; pri.TYPE = 1; pri.ITEMNUM = itemEntity.Sum(x => x.itemNum).ToString(); pri.ITEMTYPENUM = itemEntity.Count.ToString(); pri.CVIQRCODE = model.cviCode; pri.CVICODE = model.cviCode; pri.ISOK = model.isBad == 1 ? "不合格" : "合格"; } else { type = 0; pri.STATE = 0; pri.CREATETIME = DateTime.Now; pri.TYPE = 0; pri.NUM = itemEntity[0].itemNum.ToString(); pri.ITEMCODE = itemEntity[0].itemName; pri.CVIQRCODE = model.cviCode; pri.CVICODE = model.cviCode; pri.ISOK = model.isBad == 1 ? "不合格" : "合格"; var item = itemlst.FirstOrDefault(y => y.ITEMNAME == y.ITEMNAME); pri.ITEMNAME = item.ITEMDES; pri.BACKUP1 = item.CREATELINE; } var app = new Application(); var format = new Format(); Dictionary data = new Dictionary(); if (type == 1) { templateUrl = Path.Combine(@"D:\", "EUPrint.btw"); data.Add("ItemNum", pri.ITEMNUM); data.Add("ItemTypeNum", pri.ITEMTYPENUM); data.Add("CVIQRCode", pri.CVIQRCODE); } else { templateUrl = Path.Combine(@"D:\", "IsOkPrint.btw"); data.Add("Num", pri.NUM); data.Add("ItemCode", pri.ITEMCODE); data.Add("ItemName", pri.ITEMNAME); data.Add("ProductLine", pri.BACKUP1); } data.Add("CVICode", pri.CVICODE); data.Add("IsOk", pri.ISOK); data.Add("CreateTime", ((DateTime)pri.CREATETIME).ToString("yyyy-MM-dd")); format = app.Formats.Open(templateUrl, false, ""); foreach (var item in data) { format.SetNamedSubStringValue(item.Key, item.Value.ToString()); } string datetime = Helper.Helper.GetTimeStamp(); string strPath = path + "PrintImg\\" + datetime + ".PNG"; format.ExportToFile(strPath, "PNG", BarTender.BtColors.btColors24Bit, BarTender.BtResolution.btResolutionPrinter, BarTender.BtSaveOptions.btSaveChanges); format.Close(BarTender.BtSaveOptions.btSaveChanges); app.Quit(BarTender.BtSaveOptions.btSaveChanges); url = @"PrintImg\" + datetime + ".PNG"; return url; } } catch (Exception ex) { msg = "打印发送失败"; return ex.ToString(); } } } }