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
|
{
|
/// <summary>
|
/// 搜索表
|
/// </summary>
|
/// <param name="keyValue"></param>
|
/// <param name="page"></param>
|
/// <returns></returns>
|
public static List<BASE_CONTAINER_VS_ITEM> Search(ContainerVsItemWebEntity webEntity, int page, int onePageNum, out string msg)
|
{
|
msg = "";
|
using (Model edm = new Model())
|
{
|
var f = PredicateBuilder.True<BASE_CONTAINER_VS_ITEM>();
|
//便利所有属性
|
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<BASE_CONTAINER_VS_ITEM> list = edm.BASE_CONTAINER_VS_ITEM.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
|
|
return list;
|
}
|
}
|
|
|
|
|
/// <summary>
|
/// 搜索视图
|
/// </summary>
|
/// <param name="keyValue"></param>
|
/// <param name="page"></param>
|
/// <returns></returns>
|
public static List<View_BASE_CONTAINER_VS_ITEM> SearchView(Expression<Func<View_BASE_CONTAINER_VS_ITEM, bool>> f, ContainerVsItemWebEntity webEntity, int page, int onePageNum, out string msg)
|
{
|
msg = "";
|
using (Model edm = new Model())
|
{
|
//var f = PredicateBuilder.True<View_BASE_CONTAINER_VS_ITEM>();
|
////便利所有属性
|
//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<View_BASE_CONTAINER_VS_ITEM> list = edm.View_BASE_CONTAINER_VS_ITEM.OrderByDescending(x => x.id).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
|
|
return list;
|
}
|
}
|
|
/// <summary>
|
/// 搜索视图数量
|
/// </summary>
|
/// <param name="keyValue"></param>
|
/// <param name="page"></param>
|
/// <returns></returns>
|
public static int SearchViewNum(Expression<Func<View_BASE_CONTAINER_VS_ITEM, bool>> f, ContainerVsItemWebEntity webEntity, out string msg)
|
{
|
msg = "";
|
using (Model edm = new Model())
|
{
|
//var f = PredicateBuilder.True<View_BASE_CONTAINER_VS_ITEM>();
|
////便利所有属性
|
//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;
|
}
|
}
|
|
/// <summary>
|
/// 添加组盘(单独)
|
/// </summary>
|
/// <param name="role"></param>
|
/// <returns></returns>
|
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;
|
}
|
}
|
}
|
|
|
/// <summary>
|
/// 添加组盘(群体)
|
/// </summary>
|
/// <param name="role"></param>
|
/// <returns></returns>
|
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<ItemListWebEntity> itemEntity = JsonConvert.DeserializeObject<List<ItemListWebEntity>>(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;
|
}
|
|
}
|
|
|
/// <summary>
|
/// 修改组盘
|
/// </summary>
|
/// <param name="role"></param>
|
/// <returns></returns>
|
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;
|
}
|
}
|
}
|
|
/// <summary>
|
/// 修改 冲压生产计划跟组盘入库的关联关系
|
/// </summary>
|
/// <param name="role"></param>
|
/// <returns></returns>
|
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<BASE_CONTAINER_VS_ITEM> 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<int> addList = new List<int>();
|
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;
|
}
|
}
|
}
|
|
|
/// <summary>
|
/// 删除器具上所有东西
|
/// </summary>
|
/// <param name="webDevice"></param>
|
/// <returns></returns>
|
public static bool DeleteAll(ContainerVsItemWebEntity webEntity, out string msg)
|
{
|
msg = "";
|
using (Model edm = new Model())
|
{
|
|
try
|
{
|
List<BASE_CONTAINER_VS_ITEM> 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;
|
}
|
|
}
|
}
|
|
|
/// <summary>
|
/// 删除指定组盘关系
|
/// </summary>
|
/// <param name="webDevice"></param>
|
/// <returns></returns>
|
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;
|
}
|
}
|
}
|
|
|
/// <summary>
|
/// 获取组盘号
|
/// </summary>
|
/// <returns></returns>
|
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<ItemListWebEntity> itemEntity = JsonConvert.DeserializeObject<List<ItemListWebEntity>>(model.itemList);
|
List<string> itemnamelst = new List<string>();
|
itemnamelst = itemEntity.Select(x => x.itemName).ToList();
|
using (Model md = new Model())
|
{
|
string devname = model.printDevName;
|
if (string.IsNullOrEmpty(model.printDevName))
|
{
|
devname = "80mmThermalPrinter";
|
}
|
List<BASE_PRINT> prlsy = new List<BASE_PRINT>();
|
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<ItemListWebEntity> itemEntity = JsonConvert.DeserializeObject<List<ItemListWebEntity>>(model.itemList);
|
//List<string> itemnamelst = new List<string>();
|
//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<ItemListWebEntity> itemEntity = JsonConvert.DeserializeObject<List<ItemListWebEntity>>(model.itemList);
|
List<string> itemnamelst = new List<string>();
|
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<string, object> data = new Dictionary<string, object>();
|
|
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();
|
}
|
}
|
}
|
}
|