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();
}
}
}
}