using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using yunneiWCS.ORM;
using yunneiWCS.EnumDefine;
using System.Threading;
using Newtonsoft.Json;
using yunneiWCS.data;
using yunneiWCS.ExtendFunction;
using yunneiWCS.EnumDefine.InStockOrder;
using System.Threading.Tasks;
using yunneiWCS.DataAccess;
using yunneiWCS.Common;
using yunneiWCS.SystemInteraction.tianyong;
using yunneiWCS.Models;
namespace yunneiWCS.wcf
{
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“yunneiWcf”。
public class yunneiWcf : IyunneiWcf
{
/// 天永安全交互
///
///
yunneiWCS.tianyong.AutoServiceSoapClient ty = new tianyong.AutoServiceSoapClient();
public static Mutex single = new Mutex();
/// 用户登录
///
///
/// 用户名
/// 密码
///
public resMsg login(string userName, string userPassword)
{
resMsg msg = new resMsg();
try
{
using (dbmodel mod = new dbmodel())
{
var dd = mod.user.ToList();
List users = mod.user.Where(x => x.WorkNo == userName).ToList();
if (users.Count < 1)
{
msg.status = 400;
msg.msg = "工号不存在!";
return msg;
}
else
{
if (users[0].Password == userPassword)
{
int roleid = (int)users[0].roleId;
List moduele = mod.roleVsModule.Where(x => x.roleId == roleid).ToList();
msg.dateList = moduele.Select(x => x.value).ToList();
msg.date = users;
msg.status = 200;
msg.msg = "登录成功";
return msg;
}
else
{
msg.status = 400;
msg.msg = "密码错误!";
return msg;
}
}
}
}
catch (Exception ex)
{
msg.status = 400;
msg.msg = "密码错误!";
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "login", ex.ToString());
}
return msg;
}
/// 添加角色
///
///
/// 角色名
/// 1=wms用户,2=PDA用户
/// 1=增加,2=删除
///
public resMsg addRole(string addName, int area, int operation)
{
resMsg msg = new resMsg();
try
{
using (dbmodel mod = new dbmodel())
{
role newRole = mod.role.FirstOrDefault(x => x.roleName == addName);
if (operation == 1)
{
if (newRole != null)
{
msg.status = 400;
msg.msg = "此角色已存在";
return msg;
}
newRole = new role();
newRole.roleName = addName;
newRole.area = area;
newRole.createTime = DateTime.Now;
mod.role.Add(newRole);
}
else//删除角色
{
if (newRole == null)
{
msg.status = 400;
msg.msg = "没有此用户";
return msg;
}
List delmoule = mod.roleVsModule.Where(x => x.roleId == newRole.id).ToList();
foreach (var item in delmoule)
{
mod.roleVsModule.Remove(item);
}
mod.role.Remove(newRole);
}
int saveOk = mod.SaveChanges();
if (saveOk > 0)
{
//msg.status = 200;
//msg.msg = "创建成功";
if (operation == 1)
{
#region MyRegion
string[] roleModule = { };
if (area == 1)
{
roleModule = new string[] { "入库", "出库", "库存查询", "任务管理", "状态预览", "出入库记录", "报警记录查询", "清理库存查询", "权限管理", "库位维护", "物料维护" };
}
else
{
roleModule = new string[] { "缸体下线", "刚盖下线", "任务管理" };
}
for (int i = 0; i < roleModule.Length; i++)
{
roleVsModule addRole = new roleVsModule();
addRole.roleId = newRole.id;
addRole.value = roleModule[i];
mod.roleVsModule.Add(addRole);
}
saveOk = mod.SaveChanges();
if (saveOk > 1)
{
msg.status = 200;
msg.msg = "创建成功";
}
else
{
msg.status = 400;
msg.msg = "保存失败";
}
#endregion
}
else
{
msg.status = 200;
msg.msg = "修改成功";
}
}
else
{
msg.status = 400;
msg.msg = "保存失败";
}
}
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "login", ex.ToString());
}
return msg;
}
/// 查询角色列表
///
///
/// 分页
/// 角色名
///
public resMsg findRole(paging page, string roleName)
{
resMsg msg = new resMsg();
try
{
List roleList = new List();
using (dbmodel mod = new dbmodel())
{
if (roleName == "")
{
roleList = mod.role.ToList();
}
else
{
roleList = mod.role.Where(x => x.roleName == roleName).ToList();
}
}
List fenyeRerult = new List();
if (roleList.Count > 0)
{
msg.status = 200;
msg.total = roleList.Count;
// msg.date = takeStock;
//假如每页数量 大于盘点数据
if (page.pagesize > roleList.Count)
{
msg.date = roleList;
}
else
{
#region 分页计算
int a = page.pagesize;
int b = page.pagenum;
int c = (int)Math.Ceiling((double)roleList.Count / a);
int d = roleList.Count % a;
int e = 0;
int f = a * (b - 1);
if (d != 0 && b == c)
{
e = d + f;
}
else
{
e = a + f;
}
for (int i = f; i < e; i++)
{
fenyeRerult.Add(roleList[i]);
}
msg.date = fenyeRerult;
#endregion
}
}
else
{
msg.status = 400;
msg.total = 1;
msg.date = null;
}
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "login", ex.ToString());
}
return msg;
}
/// 添加和删除角色菜单
///
///
/// 彩带名
/// 角色名
/// 1=添加,2=删除
public void addModule(string module, string roleName, int operation)
{
try
{
using (dbmodel mod = new dbmodel())
{
role addRole = mod.role.FirstOrDefault(x => x.roleName == roleName);
if (operation == 1)//添加菜单
{
if (addRole != null)
{
roleVsModule addmodule = new roleVsModule();
addmodule.roleId = addRole.id;
addmodule.value = module;
mod.roleVsModule.Add(addmodule);
}
}
else//删除菜单
{
if (addRole != null)
{
roleVsModule delmoule = mod.roleVsModule.FirstOrDefault(x => x.value == module && x.roleId == addRole.id);
mod.roleVsModule.Remove(delmoule);
}
}
mod.SaveChanges();
}
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "addModule", ex.ToString());
}
}
/// 查找用户
///
///
/// 分页
/// 用户名
///
public resMsg findUser(paging page, string userName)
{
resMsg msg = new resMsg();
try
{
List userList = new List();
using (dbmodel mod = new dbmodel())
{
if (userName == "")
{
userList = mod.userAndRole.ToList();
}
else//contains
{
userList = mod.userAndRole.Where(x => x.WorkNo.Contains(userName) || x.UserName.Contains(userName)).ToList();
}
}
List fenyeRerult = new List();
if (userList.Count > 0)
{
msg.status = 200;
msg.total = userList.Count;
// msg.date = takeStock;
//假如每页数量 大于盘点数据
if (page.pagesize > userList.Count)
{
msg.date = userList;
}
else
{
#region 分页计算
int a = page.pagesize;
int b = page.pagenum;
int c = (int)Math.Ceiling((double)userList.Count / a);
int d = userList.Count % a;
int e = 0;
int f = a * (b - 1);
if (d != 0 && b == c)
{
e = d + f;
}
else
{
e = a + f;
}
for (int i = f; i < e; i++)
{
fenyeRerult.Add(userList[i]);
}
msg.date = fenyeRerult;
#endregion
}
}
else
{
msg.status = 400;
msg.total = 1;
msg.date = null;
}
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "login", ex.ToString());
}
return msg;
}
/// 用户增删改查
///
///
/// 用户对象
/// 创建/修改人
/// 增=1删=2改=3
///
public resMsg addUser(user addName, string creator, int operation)
{
resMsg msg = new resMsg();
msg.status = 400;
if (operation > 3 || operation < 1 || addName == null)
{
msg.msg = "参数异常";
return msg;
}
try
{
using (dbmodel mod = new dbmodel())
{
if (operation == 2)
{
user delUser = mod.user.FirstOrDefault(x => x.WorkNo == addName.WorkNo);
if (delUser != null)
{
mod.user.Remove(delUser);
msg.msg = "删除成功";
}
else
{
msg.msg = "删除失败";
}
}
else
{
if (operation == 1)
{
user addUsers = new user();
addUsers.WorkNo = addName.WorkNo.Trim();
addUsers.UserName = addName.UserName.Trim();
addUsers.Password = WZ.Useful.Commons.MD5Util.GetMD5_32(addName.Password.Trim());
addUsers.roleId = addName.roleId;
addUsers.Status = 1;
addUsers.creatDate = DateTime.Now;
mod.user.Add(addUsers);
}
else
{
user upUser = mod.user.FirstOrDefault(x => x.WorkNo == addName.WorkNo);
upUser.UserName = addName.UserName;
if (addName.Password.Trim() != "")
{
upUser.Password = WZ.Useful.Commons.MD5Util.GetMD5_32(addName.Password.Trim());
}
upUser.roleId = addName.roleId;
upUser.modifierTime = DateTime.Now;
}
}
int saveOk = mod.SaveChanges();
if (saveOk == 1)
{
msg.status = 200;
}
else
{
msg.msg = "执行失败";
}
}
}
catch (Exception ex)
{
msg.msg = "执行异常";
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "login", ex.ToString());
}
return msg;
}
/// 分配空库位
///
///
/// 库位类型,库口=0,空库位=1,缸体=2,缸盖=3
///
public string findStock(int positionType)
{
string toplace = "";
try
{
toplace = Form1.findStorage(positionType);
}
catch (Exception)
{
toplace = "";
}
return toplace;
}
/// 物料查询
///
///
///
///
///
///
public resMsg findMaterial(paging page, string materialName, string materialCode)
{
resMsg msg = new resMsg();
List materials = new List();
try
{
using (dbmodel mod = new dbmodel())
{
#region 查找数据
if (materialName.Trim() == "" && materialCode.Trim() == "")
{
materials = mod.material.ToList();
}
else
{
if (materialName.Trim() != "" && materialCode.Trim() != "")
{
materials = mod.material.Where(x => x.materialCode.Contains(materialCode.Trim()) || x.materialName.Contains(materialName.Trim())).ToList();
}
else
{
if (materialName.Trim() != "")
{
materials = mod.material.Where(x => x.materialName.Contains(materialName.Trim())).ToList();
}
else
{
materials = mod.material.Where(x => x.materialCode.Contains(materialCode.Trim())).ToList();
}
}
}
#endregion
//分页计算
List fenyeRerult = new List();
if (materials.Count > 0)
{
msg.status = 200;
//假如每页数量 大于盘点数据
if (page.pagesize > materials.Count)
{
msg.date = materials;
msg.total = 1;
}
else
{
#region 分页计算
int a = page.pagesize;
int b = page.pagenum;
int c = (int)Math.Ceiling((double)materials.Count / a);
msg.total = c;
int d = materials.Count % a;
int e = 0;
int f = a * (b - 1);
if (d != 0 && b == c)
{
e = d + f;
}
else
{
e = a + f;
}
for (int i = f; i < e; i++)
{
fenyeRerult.Add(materials[i]);
}
msg.date = fenyeRerult;
#endregion
}
}
else
{
msg.status = 400;
msg.total = 1;
msg.date = null;
}
return msg;
}
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findMaterial", ex.ToString());
}
return msg;
}
/// 物料增删改
///
///
/// 1=新建,2=编辑,3=删除
/// 编辑时物料ID
/// 编辑时传物料编号
/// 编辑时传物料名称
/// 新建物料时 物料类型 0=缸盖,1=缸体
/// 机型
///
public string materialOP(int types, int ID, string materialCode, string materialName, int materialType, string version)
{
string res = "";
try
{
using (dbmodel mod = new dbmodel())
{
switch (types)
{
#region 物料增删改
case 1:
material newmat = mod.material.FirstOrDefault(x => x.materialCode == materialCode);
if (newmat != null)
{
return "此物料编号已存在,不能重发创建";
}
material addmat = new material();
addmat.materialCode = materialCode;
addmat.materialName = materialName;
addmat.materialType = materialType;
addmat.version = version;
addmat.createTime = DateTime.Now;
addmat.modifierTime = DateTime.Now;
mod.material.Add(addmat);
break;
case 2:
material editmat = mod.material.Find(ID);
if (editmat != null)
{
editmat.materialType = materialType;
editmat.materialName = materialName;
editmat.materialCode = materialCode;
editmat.version = version;
editmat.modifierTime = DateTime.Now;
}
else
{
return "修改失败-无此物料";
}
break;
case 3:
material delmat = mod.material.Find(ID);
if (delmat != null)
{
mod.material.Remove(delmat);
}
else
{
return "删除失败-无此物料";
}
break;
default:
break;
#endregion
}
int result = mod.SaveChanges();
if (result < 1)
{
result = mod.SaveChanges();
if (result < 1)
{
return "保存失败请重试";
}
}
}
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "materialOP", ex.ToString());
return "保存失败请检查参数";
}
return res;
}
/// 查找入库单
///
///
/// 分页
/// 入库单号
/// 物料编号
/// 入库单状态
/// 筛选日期
///
public resMsg findInStock(paging page, string materialName, string materialCode, int status)
{
resMsg msg = new resMsg();
List dataList = new List();
try
{
using (dbmodel mod = new dbmodel())
{
#region 查找数据
#region 查找数据
string sql = "SELECT * FROM [LA20025].[dbo].[inStockOrder] where orderCodeId > 0";
DateTime selectTime = Convert.ToDateTime("0002-01-01 0:00:00");
if (page.startDateTime > selectTime)
{
sql = sql + " and createDate>'" + page.startDateTime + "'";
}
if (page.endDateTime > selectTime)
{
sql = sql + " and createDate<'" + page.endDateTime + "'";
}
if (materialName.Trim() != "")
{
sql = sql + " and productName='" + materialName.Trim() + "'";
}
if (materialCode.Trim() != "")
{
sql = sql + " and productCode='" + materialCode.Trim() + "'";
}
if (status != 0)
{
sql = sql + " and status=" + status;
}
sql = sql + " order by orderCodeId desc";
dataList = mod.Database.SqlQuery(sql).ToList();
#endregion
#endregion
//分页计算
List fenyeRerult = new List();
if (dataList.Count > 0)
{
msg.status = 200;
//假如每页数量 大于盘点数据
if (page.pagesize > dataList.Count)
{
msg.date = dataList;
msg.total = 1;
}
else
{
#region 分页计算
int a = page.pagesize;
int b = page.pagenum;
int c = (int)Math.Ceiling((double)dataList.Count / a);
msg.total = c;
int d = dataList.Count % a;
int e = 0;
int f = a * (b - 1);
if (d != 0 && b == c)
{
e = d + f;
}
else
{
e = a + f;
}
for (int i = f; i < e; i++)
{
fenyeRerult.Add(dataList[i]);
}
msg.date = fenyeRerult;
#endregion
}
}
else
{
msg.status = 400;
msg.total = 1;
msg.date = null;
}
return msg;
}
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findInStock", ex.ToString());
}
return msg;
}
/// 查找入库单,新版 [EditBy shaocx,2022-01-14]
///
///
/// 分页
///
public resMsg findInStockNewVersion(paging page, v_inStockOrder value)
{
resMsg msg = new resMsg();
msg.status = 400;
try
{
using (dbmodel mod = new dbmodel())
{
string sql = "SELECT * FROM [LA20025].[dbo].[v_inStockOrder] ";
sql = sql + " WHERE 1=1 ";
if (!string.IsNullOrEmpty(value.sourcePlace))//起点
{
sql = sql + " and sourcePlace='" + value.sourcePlace + "' ";
}
if (!string.IsNullOrEmpty(value.toPlace))//目标点
{
sql = sql + " and toPlace='" + value.toPlace + "' ";
}
if (!string.IsNullOrEmpty(value.containerCode))//托盘号
{
sql = sql + " and containerCode like'%" + value.containerCode + "%' ";
}
if (!string.IsNullOrEmpty(value.productCode))//物料编号
{
sql = sql + " and productCode like '%" + value.productCode + "%'";
}
if (!string.IsNullOrEmpty(value.productName))//物料名称
{
sql = sql + " and productName like '%" + value.productName + "%' ";
}
if (!string.IsNullOrEmpty(value.version))//机型
{
sql = sql + " and version like '%" + value.version + "%' ";
}
if (!string.IsNullOrEmpty(value.supplier))//供应商
{
sql = sql + " and supplier like '%" + value.supplier + "%'";
}
if (value.status != null && value.status != 0)
{
sql = sql + " and status = '" + value.status + "' ";
}
//if (value.positionType == (byte)positionType.余料回库)//是否查询余料
//{
// sql = sql + " and positionType =" + value.positionType;
//}
if (page.startDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.startDateTime != DateTime.Parse("0001-01-01 0:00:00"))//起始时间
{
sql = sql + " and createDate >'" + page.startDateTime + "'";
}
if (page.endDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.endDateTime != DateTime.Parse("0001-01-01 0:00:00"))//截止时间
{
sql = sql + " and createDate <'" + page.endDateTime + "'";
}
sql = sql + " order by createDate desc";
List dataList = mod.Database.SqlQuery(sql).ToList();
if (dataList.Count > 0)
{
msg.quantity = (int)dataList.Sum(x => x.quantity);
msg.totalNum = dataList.Count;
msg.dateAll = dataList;
//分页计算
List fenyeRerult = new List();
msg.status = 200;
//假如每页数量 大于盘点数据
if (page.pagesize > dataList.Count)
{
msg.date = dataList;
msg.total = 1;
}
else
{
#region 分页计算
int a = page.pagesize;
int b = page.pagenum;
int c = (int)Math.Ceiling((double)dataList.Count / a);
msg.total = c;
int d = dataList.Count % a;
int e = 0;
int f = a * (b - 1);
if (d != 0 && b == c)
{
e = d + f;
}
else
{
e = a + f;
}
for (int i = f; i < e; i++)
{
fenyeRerult.Add(dataList[i]);
}
msg.date = fenyeRerult;
#endregion
}
}
else
{
msg.status = 200;
msg.msg = "查找数据为0,请更换查询条件";
}
}
}
catch (Exception ex)
{
msg.msg = "查询失败";
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findInStockNewVersion", ex.ToString());
}
return msg;
}
/// 查找出入库记录给MES [EditBy shaocx,2025-09-01]
///
///
/// 分页
///
public resMsg findOutInStockRecord_V2_Mes(paging page, Wms_outInStockRecord_V2_Mes value)
{
resMsg msg = new resMsg();
msg.status = 400;
try
{
using (dbmodel mod = new dbmodel())
{
string sql = "SELECT * FROM [LA20025].[dbo].[Wms_outInStockRecord_V2_Mes] ";
sql = sql + " WHERE 1=1 ";
if (!string.IsNullOrEmpty(value.sourcePlace))//起点
{
sql = sql + " and sourcePlace='" + value.sourcePlace + "' ";
}
if (!string.IsNullOrEmpty(value.toPlace))//目标点
{
sql = sql + " and toPlace='" + value.toPlace + "' ";
}
if (!string.IsNullOrEmpty(value.containerCode))//托盘号
{
sql = sql + " and containerCode like'%" + value.containerCode + "%' ";
}
if (!string.IsNullOrEmpty(value.materialCode))//物料编号
{
sql = sql + " and materialCode like '%" + value.materialCode + "%'";
}
if (!string.IsNullOrEmpty(value.materialName))//物料名称
{
sql = sql + " and materialName like '%" + value.materialName + "%' ";
}
if (!string.IsNullOrEmpty(value.version))//机型
{
sql = sql + " and version like '%" + value.version + "%' ";
}
if (!string.IsNullOrEmpty(value.supplier))//供应商
{
sql = sql + " and supplier like '%" + value.supplier + "%'";
}
if (value.isSendToMes != null && value.isSendToMes != 0)
{
sql = sql + " and isSendToMes = '" + value.isSendToMes + "' ";
}
//if (value.positionType == (byte)positionType.余料回库)//是否查询余料
//{
// sql = sql + " and positionType =" + value.positionType;
//}
if (page.startDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.startDateTime != DateTime.Parse("0001-01-01 0:00:00"))//起始时间
{
sql = sql + " and CreateTime >'" + page.startDateTime + "'";
}
if (page.endDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.endDateTime != DateTime.Parse("0001-01-01 0:00:00"))//截止时间
{
sql = sql + " and CreateTime <'" + page.endDateTime + "'";
}
sql = sql + " order by CreateTime desc";
List dataList = mod.Database.SqlQuery(sql).ToList();
if (dataList.Count > 0)
{
//msg.quantity = (int)dataList.Sum(x => x.quantity);
msg.totalNum = dataList.Count;
msg.dateAll = dataList;
//分页计算
List fenyeRerult = new List();
msg.status = 200;
//假如每页数量 大于盘点数据
if (page.pagesize > dataList.Count)
{
msg.date = dataList;
msg.total = 1;
}
else
{
#region 分页计算
int a = page.pagesize;
int b = page.pagenum;
int c = (int)Math.Ceiling((double)dataList.Count / a);
msg.total = c;
int d = dataList.Count % a;
int e = 0;
int f = a * (b - 1);
if (d != 0 && b == c)
{
e = d + f;
}
else
{
e = a + f;
}
for (int i = f; i < e; i++)
{
fenyeRerult.Add(dataList[i]);
}
msg.date = fenyeRerult;
#endregion
}
}
else
{
msg.status = 200;
msg.msg = "查找数据为0,请更换查询条件";
}
}
}
catch (Exception ex)
{
msg.msg = "查询失败";
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findOutInStockRecord_V2_Mes", ex.ToString());
}
return msg;
}
/// 查找入库单流水号
///
///
///
///
public resMsg findInStockList(string inStockCode)
{
resMsg res = new resMsg();
res.status = 400;
try
{
using (dbmodel mod = new dbmodel())
{
inStockOrder stockCode = mod.inStockOrder.FirstOrDefault(x => x.orderCode == inStockCode.Trim());
if (stockCode != null)
{
List instockList = mod.inStockOrderList.Where(x => x.orderCodeId == stockCode.orderCodeId).ToList();
if (instockList.Count > 0)
{
res.status = 200;
res.date = instockList;
}
else
{
res.msg = "查不到明细";
}
}
else
{
res.msg = "查不入库单";
}
}
}
catch (Exception)
{
res.msg = "查询异常";
}
return res;
}
/// 查找出入库记录推行mes详情
///
///
///
///
public resMsg findOutInStockRecord_Details_V2_Mes(long mainId)
{
resMsg res = new resMsg();
res.status = 400;
try
{
using (dbmodel mod = new dbmodel())
{
List instockList = mod.Wms_outInStockRecord_Details_V2_Mes.Where(x => x.mainId == mainId).ToList();
if (instockList.Count > 0)
{
res.status = 200;
res.date = instockList;
}
else
{
res.msg = "查不到明细";
}
}
}
catch (Exception)
{
res.msg = "查询异常";
}
return res;
}
/// 修改入库单流水号
///
///
///
///
public resMsg modfiyInStockList(List value)
{
resMsg msg = new resMsg();
msg.status = 400;
try
{
if (value.Count > 0)
{
using (dbmodel mod = new dbmodel())
{
int orderCode = (int)value[0].orderCodeId;
List deleteList = mod.inStockOrderList.Where(x => x.orderCodeId == orderCode).ToList();
if (deleteList.Count > 0)
{
mod.inStockOrderList.RemoveRange(deleteList);
}
foreach (var addItem in value)
{
inStockOrderList newList = new inStockOrderList();
newList.orderCodeId = addItem.orderCodeId;
newList.productCode = addItem.productCode;
newList.productName = addItem.productName;
newList.serialNumber = addItem.serialNumber;
mod.inStockOrderList.Add(newList);
}
int res = mod.SaveChanges();
if (res > 0)
{
msg.status = 200;
msg.msg = "修改成功";
}
}
}
else
{
msg.msg = "至少留一个明细";
}
}
catch (Exception)
{
msg.msg = "执行错误";
}
return msg;
}
/// 手动作废入库单
///
///
///
///
public resMsg deleteInStock(string inStockCode)
{
resMsg msg = new resMsg();
msg.status = 400;
try
{
using (dbmodel mod = new dbmodel())
{
inStockOrder inOrder = mod.inStockOrder.FirstOrDefault(x => x.orderCode == inStockCode.Trim());
if (inOrder != null)
{
//inOrder.status = 5;
inOrder.status = (int)InStockOrderStatus.已作废;
int res = mod.SaveChanges();
if (res == 1)
{
msg.status = 200;
msg.msg = "作废成功";
}
else
{
msg.msg = "保存失败";
}
}
else
{
msg.msg = "查无此单";
}
}
}
catch (Exception)
{
msg.msg = "查无异常";
}
return msg;
}
/// 查找库位
///
///
/// 分页
/// 库位名称
/// 是否锁定
/// 是否有货
///
public resMsg findPosition(paging page, string position, int islock, int isfree)
{
resMsg msg = new resMsg();
List dataList = new List();
try
{
using (dbmodel mod = new dbmodel())
{
#region 查找数据
if (position.Trim() == "" && islock == 0 && isfree == 0)
{
dataList = mod.position.ToList();
}
else
{
string sql = "SELECT * FROM [LA20025].[dbo].[position] where positionId>0";
if (position.Trim() != "")
{
sql = sql + " and positionName='" + position.Trim() + "'";
}
if (islock == 1 && isfree == 1)
{
sql = sql + " and (isLock=" + islock + " or isfree=" + isfree + ")";
}
else
{
if (islock == 1)
{
sql = sql + " and isLock=" + islock;
}
if (isfree == 1)
{
sql = sql + " and isfree=" + isfree;
}
}
dataList = mod.Database.SqlQuery(sql).ToList();
}
#endregion
//分页计算
List fenyeRerult = new List();
if (dataList.Count > 0)
{
msg.status = 200;
//假如每页数量 大于盘点数据
if (page.pagesize > dataList.Count)
{
msg.date = dataList;
msg.total = 1;
}
else
{
#region 分页计算
int a = page.pagesize;
int b = page.pagenum;
int c = (int)Math.Ceiling((double)dataList.Count / a);
msg.total = c;
int d = dataList.Count % a;
int e = 0;
int f = a * (b - 1);
if (d != 0 && b == c)
{
e = d + f;
}
else
{
e = a + f;
}
for (int i = f; i < e; i++)
{
fenyeRerult.Add(dataList[i]);
}
msg.date = fenyeRerult;
#endregion
}
}
else
{
msg.status = 400;
msg.total = 1;
msg.date = null;
}
return msg;
}
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findPosition", ex.ToString());
}
return msg;
}
/// 查找指定库位
///
///
/// 库位名称
///
public resMsg findSinglePosition(string position)
{
resMsg msg = new resMsg();
List dataList = new List();
try
{
using (dbmodel mod = new dbmodel())
{
#region 查找数据
string sql = "SELECT * FROM [LA20025].[dbo].[position] where positionId>0";
if (position.Trim() != "")
{
sql = sql + " and positionName='" + position.Trim() + "'";
}
dataList = mod.Database.SqlQuery(sql).ToList();
#endregion
if (dataList.Count > 0)
{
msg.status = 200;
msg.date = dataList;
msg.total = 1;
}
else
{
msg.status = 400;
msg.total = 1;
msg.date = null;
}
return msg;
}
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findSinglePosition", ex.ToString());
}
return msg;
}
#region 人工推送天永消息
///// 人工推送天永消息,原先的方法
/////
/////
/////
/////
//public resMsg safetySignalByPerson(int taskId)
//{
// resMsg msg = new resMsg();
// msg.status = 400;
// try
// {
// string station = "";
// int OutOrIn = 0;//1=进,2=出
// using (dbmodel mod = new dbmodel())
// {
// task sf = mod.task.FirstOrDefault(x => x.taskId == taskId);
// if (sf != null)
// {
// taskType _taskType = (taskType)Enum.Parse(typeof(taskType), sf.taskType.ToString());
// switch (_taskType)
// {
// case taskType.缸盖上线:
// case taskType.缸体上线:
// OutOrIn = 1;
// station = sf.toPlace;
// break;
// case taskType.空托回库:
// case taskType.余料回库:
// OutOrIn = 2;
// station = sf.sourcePlace;
// break;
// default:
// msg.msg = "任务类型必须是缸盖上线/缸体上线/空托回库/余料回库";
// return msg;
// }
// var result = TianYongSystem.safetySignal(station, OutOrIn, taskId, "人工推送天永消息");
// if (result)
// {
// sf.isSendTotianyong = 1;
// sf.isSendTotianyongName = "是";
// sf.SendTotianyongTime = DateTime.Now;
// mod.SaveChanges();
// msg.status = 200;
// msg.msg = "推送给天永机器人消息成功";
// }
// else
// {
// msg.msg = "推送给天永机器人消息失败";
// }
// }
// else
// {
// msg.msg = "查无此单";
// }
// }
// }
// catch (Exception ex)
// {
// msg.msg = "异常" + ex.Message;
// }
// return msg;
//}
/// 人工推送天永消息,新的方法
///
///
///
///
public resMsg safetySignalByPerson(int taskId)
{
resMsg msg = new resMsg();
msg.status = 400;
try
{
string station = "";
using (dbmodel mod = new dbmodel())
{
task sf = mod.task.FirstOrDefault(x => x.taskId == taskId);
if (sf != null)
{
taskType _taskType = (taskType)Enum.Parse(typeof(taskType), sf.taskType.ToString());
switch (_taskType)
{
case taskType.缸盖上线:
case taskType.缸体上线:
case taskType.缸盖下线直接去上线点:
case taskType.缸体下线直接去上线点:
case taskType.空托回库:
case taskType.余料回库:
case taskType.旁路工位缸体空托回库:
case taskType.旁路工位缸体余料回库:
case taskType.缸体下线直接去旁路工位:
case taskType.缸体上线去旁路工位:
break;
default:
msg.msg = "任务类型不正确,必须是去往天永站点或离开天永站点的任务类型";
return msg;
}
var result = TianYongSystem.UpdateStoreByTaskID(mod, sf, station, taskId, "人工推送天永消息");
var res = mod.SaveChanges();
if (result && res > 0)
{
msg.status = 200;
msg.msg = "人工推送给天永机器人消息成功";
}
else
{
msg.msg = "人工推送给天永机器人消息失败";
}
}
else
{
msg.msg = "查无此单";
}
}
}
catch (Exception ex)
{
msg.msg = "异常" + ex.Message;
}
return msg;
}
#endregion
#region AGV系统使用的接口
/// 机器人上料 安全交互信号
///
///
/// 站点号
/// 1=进2=出
/// 任务id
///
public bool safetySignal(string station, int OutOrIn, string agvTaskNo)
{
bool res = false;
try
{
return TianYongSystem.safetySignal(station, OutOrIn, agvTaskNo, "wcf接口调用,应该是agv调用的");
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "safetySignal", ex.ToString());
}
return res;
}
#endregion
/// 查找任务
///
///
/// 分页
/// 任务ID
/// 任务类型
/// 起始位目标位
///
public resMsg findTask(paging page, int taskId, int taskType, string place, string order, string taskName, string materialCode, string materialName)
{
resMsg msg = new resMsg();
List dataList = new List();
try
{
using (dbmodel mod = new dbmodel())
{
#region 查找数据
string sql = "SELECT * FROM [LA20025].[dbo].[task] where taskId>0";
if (taskId > 0)
{
sql = sql + " and taskId=" + taskId;
}
if (taskType > 0)//
{
sql = sql + " and taskStatus=" + taskType;
}
if (!string.IsNullOrEmpty(materialCode))//物料编号
{
sql = sql + " and materialCode = '" + materialCode + "'";
}
if (!string.IsNullOrEmpty(materialName))//物料名称
{
sql = sql + " and materialName = '" + materialName + "' ";
}
if (place != "")
{
sql = sql + " and (sourcePlace= '" + place + "' or toPlace='" + place + "' or containerCode='" + place + "' )";
}
if (order != "")
{
sql = sql + " and (createListCode= '" + order + "')";
}
if (taskName != "")
{
//转换成taskType的枚举
taskType _taskType = (taskType)Enum.Parse(typeof(taskType), taskName);
sql = sql + " and (taskType= '" + (int)_taskType + "')";
}
if (page.startDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.startDateTime != DateTime.Parse("0001-01-01 0:00:00"))//起始时间
{
sql = sql + " and createTime >'" + page.startDateTime + "'";
}
if (page.endDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.endDateTime != DateTime.Parse("0001-01-01 0:00:00"))//截止时间
{
sql = sql + " and createTime <'" + page.endDateTime + "'";
}
sql = sql + " order by taskId desc";
dataList = mod.Database.SqlQuery(sql).ToList();
#endregion
//分页计算
List fenyeRerult = new List();
if (dataList.Count > 0)
{
msg.status = 200;
//假如每页数量 大于盘点数据
if (page.pagesize > dataList.Count)
{
msg.date = dataList;
msg.total = 1;
}
else
{
#region 分页计算
int a = page.pagesize;
int b = page.pagenum;
int c = (int)Math.Ceiling((double)dataList.Count / a);
msg.total = c;
int d = dataList.Count % a;
int e = 0;
int f = a * (b - 1);
if (d != 0 && b == c)
{
e = d + f;
}
else
{
e = a + f;
}
for (int i = f; i < e; i++)
{
fenyeRerult.Add(dataList[i]);
}
msg.date = fenyeRerult;
#endregion
}
}
else
{
msg.status = 400;
msg.total = 1;
msg.date = null;
}
return msg;
}
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findTask", ex.ToString());
}
return msg;
}
/// 查找子任务
///
///
/// 任务ID
///
public resMsg findTaskChild(string taskId)
{
resMsg msg = new resMsg();
msg.status = 400;
List dataList = new List();
try
{
long TaskId = 0;
bool parseok = long.TryParse(taskId, out TaskId);
if (parseok)
{
using (dbmodel mod = new dbmodel())
{
dataList = mod.taskRecord.Where(x => x.taskId == TaskId).ToList();
if (dataList.Count > 0)
{
msg.date = dataList;
msg.status = 200;
}
else
{
msg.msg = "此任务没有子任务!";
}
}
}
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findTaskChild", ex.ToString());
}
return msg;
}
/// 任务作废
///
///
/// 任务ID
///
public resMsg deleteTask(string taskId)
{
resMsg msg = new resMsg();
msg.status = 400;
task _task = new task();
try
{
long TaskId = 0;
bool parseok = long.TryParse(taskId, out TaskId);
if (parseok)
{
using (dbmodel mod = new dbmodel())
{
_task = mod.task.FirstOrDefault(x => x.taskId == TaskId);
if (_task != null)
{
//验证
if (_task.taskStatus == (int)taskStatus.作废 || _task.taskStatus == (int)taskStatus.完成)
{
msg.msg = "该任务状态是作废或完成,不允许操作";
return msg;
}
taskStatus changeStatus = taskStatus.作废;
_task.taskStatus = (int)changeStatus;
//dataList.taskStatus = 6;
//解锁目标位置和起点位置和中间位置 【EditBy shaocx,2022-03-04】
var sourcePosition = mod.position.FirstOrDefault(x => x.positionName == _task.sourcePlace);
if (sourcePosition != null)
{
//sourcePosition.isLock = false;
PositionHandler.Lock(false, sourcePosition, "任务作废", SysGloble.WCSNAME, _task);
}
var toPosition = mod.position.FirstOrDefault(x => x.positionName == _task.toPlace);
if (toPosition != null)
{
//toPosition.isLock = false;
PositionHandler.Lock(false, toPosition, "任务作废", SysGloble.WCSNAME, _task);
}
if (!string.IsNullOrEmpty(_task.middlePlace))
{
var midPosition = mod.position.FirstOrDefault(x => x.positionName == _task.middlePlace);
if (midPosition != null)
{
//midPosition.isLock = false;
PositionHandler.Lock(false, midPosition, "任务作废", SysGloble.WCSNAME, _task);
}
}
int res = mod.SaveChanges();
if (res > 0)
{
msg.msg = "作废成功";
msg.status = 200;
}
else
{
msg.msg = "保存失败";
}
}
else
{
msg.msg = "无此任务!";
}
}
}
}
catch (Exception ex)
{
msg.msg = "修改异常!";
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "deleteTask", ex.ToString());
}
return msg;
}
/// 任务强制完成
///
///
/// 任务ID
///
public resMsg forceCompleteTask(string taskId, string user, string forceCompleteReason)
{
resMsg msg = new resMsg();
msg.status = 400;
task _task = new task();
try
{
long TaskId = 0;
bool parseok = long.TryParse(taskId, out TaskId);
if (parseok)
{
using (dbmodel mod = new dbmodel())
{
_task = mod.task.FirstOrDefault(x => x.taskId == TaskId);
if (_task != null)
{
//验证
if (_task.taskStatus == (int)taskStatus.作废 || _task.taskStatus == (int)taskStatus.完成)
{
msg.msg = "该任务状态是作废或完成,不允许操作";
return msg;
}
_task.isForceComplete = 1;
_task.isForceCompleteName = "是";
_task.forceCompleteTime = DateTime.Now;
_task.forceCompleteUser = user;
_task.forceCompleteReason = forceCompleteReason;
int res = mod.SaveChanges();
if (res > 0)
{
msg.msg = "标记任务强制完成成功";
msg.status = 200;
}
else
{
msg.msg = "标记任务强制完成失败";
}
}
else
{
msg.msg = "无此任务!";
}
}
}
}
catch (Exception ex)
{
msg.msg = "修改异常!";
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "forceCompleteTask", ex.ToString());
}
return msg;
}
/// 寻找菜单权限
///
///
/// 分页
/// 角色名
///
public resMsg findRoleModule(paging page, string roleName)
{
resMsg msg = new resMsg();
msg.status = 400;
if (roleName == "")
{
return msg;
}
List dataList = new List();
try
{
using (dbmodel mod = new dbmodel())
{
#region 查找数据
role roleID = mod.role.FirstOrDefault(x => x.roleName == roleName);
if (roleID == null)
{
return msg;
}
dataList = mod.roleVsModule.Where(x => x.roleId == roleID.id).ToList();
#endregion
//分页计算
List fenyeRerult = new List();
if (dataList.Count > 0)
{
msg.status = 200;
msg.total = dataList.Count;
//假如每页数量 大于盘点数据
if (page.pagesize > dataList.Count)
{
msg.date = dataList;
}
else
{
#region 分页计算
int a = page.pagesize;
int b = page.pagenum;
int c = (int)Math.Ceiling((double)dataList.Count / a);
int d = dataList.Count % a;
int e = 0;
int f = a * (b - 1);
if (d != 0 && b == c)
{
e = d + f;
}
else
{
e = a + f;
}
for (int i = f; i < e; i++)
{
fenyeRerult.Add(dataList[i]);
}
msg.date = fenyeRerult;
#endregion
}
}
else
{
msg.status = 400;
msg.total = 1;
msg.date = null;
}
return msg;
}
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findRoleModule", ex.ToString());
}
return msg;
}
/// 库存查询
///
///
/// 分页
///
public resMsg findProductStock(paging page, VproductStock value)
{
resMsg msg = new resMsg();
msg.status = 400;
try
{
using (dbmodel mod = new dbmodel())
{
string sql = "SELECT * FROM [LA20025].[dbo].[VproductStock] where stockId>0 ";
if (!string.IsNullOrEmpty(value.positionName))//库位名称
{
sql = sql + " and positionName='" + value.positionName + "' ";
}
if (!string.IsNullOrEmpty(value.containerCode))//托盘号
{
sql = sql + " and containerCode like'%" + value.containerCode + "%' ";
}
if (!string.IsNullOrEmpty(value.materialCode))//物料编号
{
sql = sql + " and materialCode = '" + value.materialCode + "'";
}
if (!string.IsNullOrEmpty(value.materialName))//物料名称
{
sql = sql + " and materialName = '" + value.materialName + "' ";
}
if (!string.IsNullOrEmpty(value.version))//机型
{
sql = sql + " and version = '" + value.version + "' ";
}
if (!string.IsNullOrEmpty(value.supplier))//供应商
{
sql = sql + " and supplier like '%" + value.supplier + "%'";
}
if (value.positionType == (byte)positionType.余料回库)//是否查询余料
{
sql = sql + " and positionType =" + value.positionType;
}
if (page.startDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.startDateTime != DateTime.Parse("0001-01-01 0:00:00"))//起始时间
{
sql = sql + " and createTime >'" + page.startDateTime + "'";
}
if (page.endDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.endDateTime != DateTime.Parse("0001-01-01 0:00:00"))//截止时间
{
sql = sql + " and createTime <'" + page.endDateTime + "'";
}
if (page.IsAscOrderBy)
{
sql = sql + " order by createTime asc";
}
else
{
sql = sql + " order by createTime desc";
}
List dataList = mod.Database.SqlQuery(sql).ToList();
#region 增加对流水号的筛选 【EditBy shaocx,2022-09-07】
if (!string.IsNullOrEmpty(page.serialNumber))//供应商
{
//stockId字段是库位表的positionId
var productStockList_sql = " SELECT stockId FROM productStockList WHERE serialNumber='" + page.serialNumber + "' ";
List stockIdList = mod.Database.SqlQuery(productStockList_sql).ToList();
if (stockIdList == null || stockIdList.Count == 0)
{//查无数据
msg.status = 200;
msg.msg = "查找数据为0,请更换查询条件";
return msg;
}
//按照流水号进行过滤 dataList
if (dataList != null && dataList.Count > 0)
{
dataList = dataList.Where(x => stockIdList.Contains(x.positionId)).ToList();
}
}
#endregion
if (dataList.Count > 0)
{
msg.quantity = (int)dataList.Sum(x => x.quantity);
msg.totalNum = dataList.Count;
msg.dateAll = dataList;
//分页计算
List fenyeRerult = new List();
msg.status = 200;
//假如每页数量 大于盘点数据
if (page.pagesize > dataList.Count)
{
msg.date = dataList;
msg.total = 1;
}
else
{
#region 分页计算
int a = page.pagesize;
int b = page.pagenum;
int c = (int)Math.Ceiling((double)dataList.Count / a);
msg.total = c;
int d = dataList.Count % a;
int e = 0;
int f = a * (b - 1);
if (d != 0 && b == c)
{
e = d + f;
}
else
{
e = a + f;
}
for (int i = f; i < e; i++)
{
fenyeRerult.Add(dataList[i]);
}
msg.date = fenyeRerult;
#endregion
}
}
else
{
msg.status = 200;
msg.msg = "查找数据为0,请更换查询条件";
}
}
}
catch (Exception ex)
{
msg.msg = "查询失败";
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findProductStock", ex.ToString());
}
return msg;
}
///
/// 查询所有库存
///
///
public List findAllProductStock()
{
List list = new List();
try
{
string sql = @"SELECT dbo.position.positionName, dbo.position.isLock, dbo.position.isfree,
dbo.material.materialCode, dbo.material.materialName, dbo.productStock.quantity, dbo.productStock.taskType,
dbo.productStock.status, dbo.productStock.createTime, dbo.productStock.updateTime, dbo.position.enable,
dbo.productStock.positionId, dbo.productStock.materialId, dbo.productStock.productCode,
dbo.productStock.containerCode, dbo.position.positionType, dbo.productStock.supplier, dbo.material.version
FROM dbo.position LEFT JOIN
dbo.productStock ON dbo.position.positionId = dbo.productStock.positionId LEFT JOIN
dbo.material ON dbo.productStock.materialId = dbo.material.materialId
WHERE [position].row=1 OR [position].row=2";
using (dbmodel mod = new dbmodel())
{
list = mod.Database.SqlQuery(sql).ToList();
}
return list;
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findAllProductStock", ex.ToString());
}
return null;
}
/// 查找库位流水号明细
///
///
/// 库位号
///
public resMsg findStockList(string positionName)
{
resMsg msg = new resMsg();
msg.status = 400;
try
{
using (dbmodel mod = new dbmodel())
{
var position = mod.position.FirstOrDefault(x => x.positionName == positionName);
if (position != null)
{
var stocks = mod.productStockList.Where(x => x.stockId == position.positionId).ToList();
if (stocks.Count > 0)
{
msg.status = 200;
msg.date = stocks;
}
else
{
msg.msg = "没有明细";
}
}
else
{
msg.msg = "没有这个库位";
}
}
}
catch (Exception ex)
{
msg.msg = "查询失败";
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findStockList", ex.ToString());
}
return msg;
}
/// 修改库存流水号
///
///
///
///
public resMsg modfiyStockList(List value, long taskId)
{
resMsg msg = new resMsg();
msg.status = 400;
try
{
if (value.Count > 0)
{
using (dbmodel mod = new dbmodel())
{
long stockid = (long)value[0].stockId;
productStock modfiyStock = mod.productStock.FirstOrDefault(x => x.positionId == stockid);
VproductStock currentStock = mod.VproductStock.FirstOrDefault(x => x.positionId == stockid);
string code = value[0].productCode;
material getMaterial = mod.material.FirstOrDefault(x => x.materialCode == code);
if (modfiyStock != null && getMaterial != null)
{
modfiyStock.materialId = getMaterial.materialId;
modfiyStock.quantity = value.Count;
}
List all_serialNumberList = new List();//全部的流水号
List now_serialNumberList = new List();//删除后的全部的流水号
List deleteList = mod.productStockList.Where(x => x.stockId == stockid).ToList();
if (deleteList.Count > 0)
{
mod.productStockList.RemoveRange(deleteList);
foreach (var item in deleteList)
{
all_serialNumberList.Add(item.serialNumber);
}
}
foreach (var addItem in value)
{
now_serialNumberList.Add(addItem.serialNumber);
productStockList newList = new productStockList();
newList.stockId = addItem.stockId;
newList.productCode = addItem.productCode;
newList.productName = addItem.productName;
newList.serialNumber = addItem.serialNumber;
mod.productStockList.Add(newList);
}
List record_delteList = new List();
var realDeleteList = all_serialNumberList.Where(x => !now_serialNumberList.Contains(x)).ToList();
foreach (var item in deleteList)
{
if (realDeleteList.Contains(item.serialNumber))
{
record_delteList.Add(item);
//记录日志 [EditBy shaocx,2022-03-16]
StockClearLog _StockClearLog = new StockClearLog()
{
ID = Guid.NewGuid().ToString(),
serialNumber = item.serialNumber,
containerCode = modfiyStock.containerCode,
materialCode = item.productCode,
materialName = item.productName,
positionName = currentStock != null ? currentStock.positionName : "",
qty = modfiyStock.quantity,
supplier = modfiyStock.supplier,
version = currentStock != null ? currentStock.version : "",
Remark = "人工删除库存",
CreateTime = DateTime.Now,
LastModifyTime = DateTime.Now,
Creator = "",
LastModifier = ""
};
mod.StockClearLog.Add(_StockClearLog);
}
}
var preLog = "普通删除";
if (taskId > 0)
{//说明是 出库分拣 【Editby shaocx,2022-03-02】
var task = mod.task.Where(x => x.taskId == taskId).FirstOrDefault();
if (task == null)
{
msg.msg = "根据任务号" + taskId + "未找到出库分拣任务";
return msg;
}
if (task.taskStatus != (int)taskStatus.待分拣)
{
msg.msg = "根据任务号" + taskId + "找到的任务状态不是待分拣状态,不允许操作";
return msg;
}
task.taskStatus = (int)taskStatus.分拣完成;
preLog = "人工分拣";
}
OutInStockRecord_V2_MesHandler.AddRecordForPersonDelete(mod, OutInFlag.出库, "人工删除库存:" + preLog, record_delteList, modfiyStock);//堆垛机任务完成后的出库
int res = mod.SaveChanges();
if (res > 0)
{
msg.status = 200;
msg.msg = "修改成功";
}
}
}
else
{
msg.msg = "至少留一个明细";
}
}
catch (Exception)
{
msg.msg = "执行错误";
}
return msg;
}
/// 返回上线点和输送线状态
///
///
///
public resMsg stationStatus()
{
resMsg msg = new resMsg();
msg.status = 200;
try
{
using (dbmodel mod = new dbmodel())
{
var stations = mod.position.Where(x => x.positionType == 0).ToList();
msg.date = stations;
}
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "stationStatus", ex.ToString());
}
return msg;
}
/// 读取上线点数据
///
///
///
public resMsg UpStationInfo()
{
resMsg msg = new resMsg();
msg.status = 400;
try
{
using (dbmodel mod = new dbmodel())
{
var stations = mod.position.Where(x => x.positionType == 7 || x.positionType == 8).ToList();
if (stations.Count > 0)
{
msg.status = 200;
msg.date = stations;
}
}
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "UpStationInfo", ex.ToString());
}
return msg;
}
/// 解锁库位
///
///
/// 库位名称
///
public resMsg unlockPosition(string postionName)
{
resMsg msg = new resMsg();
msg.status = 400;
try
{
using (dbmodel mod = new dbmodel())
{
var stations = mod.position.FirstOrDefault(x => x.positionName == postionName);
if (stations != null)
{
//stations.isLock = false;
PositionHandler.Lock(false, stations, "人工操作unlockPosition", SysGloble.WCSNAME, null);
// stations.isfree = false;
int res = mod.SaveChanges();
if (res == 1)
{
msg.status = 200;
}
}
}
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "unlockPosition", ex.ToString());
}
return msg;
}
/// 解锁、锁定库位
///
///
/// 库位名称
/// 锁定原因
public resMsg unlockAndLockPosition(bool isLock, string postionName, string lockRemark, string lockUser)
{
resMsg msg = new resMsg();
msg.status = 400;
try
{
using (dbmodel mod = new dbmodel())
{
var stations = mod.position.FirstOrDefault(x => x.positionName == postionName);
if (stations != null)
{
PositionHandler.Lock(isLock, stations, "人工操作:" + lockRemark, lockUser, null);
int res = mod.SaveChanges();
if (res == 1)
{
msg.status = 200;
}
}
}
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "unlockAndLockPosition", ex.ToString());
}
return msg;
}
/// AGV发送状态
///
///
///
public string[] findAgvInfo()
{
try
{
return Form1.agvSendStatus;
}
catch (Exception)
{
throw;
}
}
/// 堆垛机任务重发
///
///
/// 任务ID
/// 起始位置
/// 目标位置
/// 1=不是任务重发,2=任务重发
/// 是否是线下发的任务,true表示是线下任务,false是线上任务
public string srmTaskReSend(long taskId, string SourcePlace, string ToPlace, int isref, bool isUnLineTask)
{
string res = "";
try
{
//增加验证,必须满足设备允许下发任务的条件
if (!MyExtendHelper.IsAllowSendNewTaskToSrm())
{
res = "堆垛机必须满足模式是自动,状态是待机,任务执行是复位,无报警情况下才可下发任务";
return res;
}
task _task = null;
if (isUnLineTask == false)
{//自动任务
using (dbmodel mod = new dbmodel())
{
_task = mod.task.Where(x => x.taskId == taskId).FirstOrDefault();
}
if (_task == null)
{
return "没有找到任务ID是" + taskId + "的任务";
}
}
baseData.sendSrmTask(_task, taskId, SourcePlace, ToPlace, isref);
res = "";
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("yunneiWcf", "srmTaskReSend", "发送异常:" + JsonConvert.SerializeObject(ex));
res = "发送异常:" + ex.Message;
}
return res;
}
/// AGV任务重发
///
///
/// 任务id
/// 起始位置
/// 目标位置
///
public string AgvTaskReSend(long taskId, string sourcePlace, string toPlace)
{
try
{
task _task = null;
using (dbmodel mod = new dbmodel())
{
_task = mod.task.Where(x => x.taskId == taskId).FirstOrDefault();
}
if (_task == null)
{
return "没有找到任务ID是" + taskId + "的任务";
}
string res = baseData.sendAgvTask(_task, taskId, sourcePlace, toPlace, 2);
return res;
}
catch (Exception)
{
return "发送失败";
}
}
/// 大屏显示
///
///
/// 1是缸体侧 2是缸盖
///
public resMsg TaskDisplay(int arae)
{
resMsg msg = new resMsg();
msg.status = 400;
List dataList = new List();
try
{
using (dbmodel mod = new dbmodel())
{
dataList = mod.task.Where(x => x.area == arae).OrderByDescending(x => x.taskId).Take(10).ToList();
if (dataList.Count > 0)
{
msg.status = 200;
msg.date = dataList;
}
}
}
catch (Exception ex)
{
msg.status = 400;
msg.msg = "查找失败";
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "TaskDisplay", ex.ToString());
}
return msg;
}
/// 空托盘回库
///
///
///
public void emptyBack(string station)
{
try
{
HTTPService api = new HTTPService(" http://localhost:1025/pda/");
List serialNumbers = new List();
using (dbmodel mod = new dbmodel())
{
VproductStock backStock = mod.VproductStock.FirstOrDefault(x => x.positionName == station);
if (backStock == null)
{
messages mes = new messages(2, "回库失败,找不到回库库存数据");
mes.Show();
return;
}
List stockList = mod.productStockList.Where(x => x.stockId == backStock.positionId).ToList();
if (stockList.Count > 0)
{
for (int i = 0; i < stockList.Count; i++)
{
inStockOrderList serialNumber = new inStockOrderList();
serialNumber.serialNumber = stockList[i].productCode + "**" + stockList[i].serialNumber;
serialNumbers.Add(serialNumber);
}
}
else
{
messages mes = new messages(2, "回库失败,找不到回库站点数据");
mes.Show();
return;
}
}
var data = new
{
station = station,
datalist = serialNumbers
};
string paprm = JsonConvert.SerializeObject(data);
Guid guid = System.Guid.NewGuid();
api.postContentForString("EmptyBack", paprm, guid);
}
catch (Exception)
{
}
}
/// 获取堆垛机状态
///
///
///
public srmEntity getSrmStatus()
{
try
{
return Form1.srm;
}
catch (Exception)
{
return null;
}
}
/// 获取输送线状态
///
///
///
public List getConvStatus()
{
try
{
return Form1.convs;
}
catch (Exception)
{
return null;
}
}
/// 出入库记录
///
///
/// 分页
/// 物料名称
/// 物料编号
/// 任务类型
///
public resMsg getTakeRecord(paging page, string materialName, string materialCode, int taskType)
{
resMsg msg = new resMsg();
msg.status = 400;
try
{
List dataList = new List();
using (dbmodel mod = new dbmodel())
{
DateTime selectTime = Convert.ToDateTime("0002-01-01 0:00:00");
#region 查找数据
if (materialName.Trim() == "" && materialCode.Trim() == "" && taskType == 0)//&& page.selectDay < selectTime
{
dataList = mod.outInStockRecord.OrderByDescending(x => x.taskId).ToList();
}
else
{
string sql = "SELECT * FROM [LA20025].[dbo].[outInStockRecord] where taskId>0";
if (materialName.Trim() != "")
{
sql = sql + " and materialName like '%" + materialName.Trim() + "%' ";
}
if (materialCode.Trim() != "")//
{
sql = sql + " and materialCode like '%" + materialCode.Trim() + "%' ";
}
if (taskType != 0)
{
sql = sql + " and taskType like '%" + taskType + "%' ";
}
//if (page.selectDay > selectTime)
//{
// DateTime beforeDawn = Convert.ToDateTime(page.selectDay.ToString("D"));//当天0时0秒
// DateTime afterDawn = Convert.ToDateTime(page.selectDay.AddDays(1).ToString("D")).AddSeconds(-1);//当天23时59秒
// sql = sql + " and createTime>'" + beforeDawn + "' and createTime<'" + afterDawn+"'";
//}
sql = sql + " order by taskId desc";
dataList = mod.Database.SqlQuery(sql).ToList();
}
#endregion
//分页计算
List fenyeRerult = new List();
if (dataList.Count > 0)
{
msg.status = 200;
msg.totalNum = dataList.Count;
msg.dateAll = dataList.Take(2000).ToList();
//假如每页数量 大于盘点数据
if (page.pagesize > dataList.Count)
{
msg.date = dataList;
msg.total = 1;
}
else
{
#region 分页计算
int a = page.pagesize;
int b = page.pagenum;
int c = (int)Math.Ceiling((double)dataList.Count / a);
msg.total = c;
int d = dataList.Count % a;
int e = 0;
int f = a * (b - 1);
if (d != 0 && b == c)
{
e = d + f;
}
else
{
e = a + f;
}
for (int i = f; i < e; i++)
{
fenyeRerult.Add(dataList[i]);
}
msg.date = fenyeRerult;
#endregion
}
}
else
{
msg.total = 1;
msg.date = null;
msg.msg = "此条件查不到数据";
}
}
}
catch (Exception)
{
msg.total = 1;
msg.date = null;
msg.msg = "查询异常";
}
return msg;
}
/// 出入库记录,新版 [EditBy shaocx,2022-01-14]
///
///
/// 分页
///
public resMsg getOutInStockRecord(paging page, Wms_outInStockRecord value)
{
resMsg msg = new resMsg();
msg.status = 400;
try
{
using (dbmodel mod = new dbmodel())
{
string sql = "SELECT * FROM [LA20025].[dbo].[Wms_outInStockRecord] ";
sql = sql + " WHERE 1=1 ";
if (!string.IsNullOrEmpty(value.sourcePlace))//起点
{
sql = sql + " and sourcePlace='" + value.sourcePlace + "' ";
}
if (!string.IsNullOrEmpty(value.toPlace))//目标点
{
sql = sql + " and toPlace='" + value.toPlace + "' ";
}
if (!string.IsNullOrEmpty(value.containerCode))//托盘号
{
sql = sql + " and containerCode like'%" + value.containerCode + "%' ";
}
if (!string.IsNullOrEmpty(value.materialCode))//物料编号
{
sql = sql + " and materialCode = '" + value.materialCode + "'";
}
if (!string.IsNullOrEmpty(value.materialName))//物料名称
{
sql = sql + " and materialName = '" + value.materialName + "' ";
}
if (!string.IsNullOrEmpty(value.version))//机型
{
sql = sql + " and version = '" + value.version + "' ";
}
if (!string.IsNullOrEmpty(value.supplier))//供应商
{
sql = sql + " and supplier like '%" + value.supplier + "%'";
}
if (!string.IsNullOrEmpty(value.taskTypeName))
{
sql = sql + " and taskTypeName = '" + value.taskTypeName + "' ";
}
if (!string.IsNullOrEmpty(value.outInFlagName))
{
sql = sql + " and outInFlagName = '" + value.outInFlagName + "' ";
}
if (page.materilaSalverFlag == 1)
{
sql = sql + " and (materialCode !='GG-KTP' and materialCode !='GT-KTP' and materialCode !='') ";
}
else if (page.materilaSalverFlag == 2)
{
sql = sql + " and (materialCode ='GG-KTP' or materialCode ='GT-KTP' or materialCode ='') ";
}
if (page.startDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.startDateTime != DateTime.Parse("0001-01-01 0:00:00"))//起始时间
{
sql = sql + " and CreateTime >'" + page.startDateTime + "'";
}
if (page.endDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.endDateTime != DateTime.Parse("0001-01-01 0:00:00"))//截止时间
{
sql = sql + " and CreateTime <'" + page.endDateTime + "'";
}
sql = sql + " order by CreateTime desc";
List dataList = mod.Database.SqlQuery(sql).ToList();
if (dataList.Count > 0)
{
var outQuery = (int)OutInFlag.出库;
var inQuery = (int)OutInFlag.入库;
msg.title = "入库数量:" + (int)dataList.Where(x => x.outInFlag == inQuery).Sum(x => x.qty)
+ ",出库数量:" + (int)dataList.Where(x => x.outInFlag == outQuery).Sum(x => x.qty);
msg.totalNum = dataList.Count;
msg.dateAll = dataList;
//分页计算
List fenyeRerult = new List();
msg.status = 200;
//假如每页数量 大于盘点数据
if (page.pagesize > dataList.Count)
{
msg.date = dataList;
msg.total = 1;
}
else
{
#region 分页计算
int a = page.pagesize;
int b = page.pagenum;
int c = (int)Math.Ceiling((double)dataList.Count / a);
msg.total = c;
int d = dataList.Count % a;
int e = 0;
int f = a * (b - 1);
if (d != 0 && b == c)
{
e = d + f;
}
else
{
e = a + f;
}
for (int i = f; i < e; i++)
{
fenyeRerult.Add(dataList[i]);
}
msg.date = fenyeRerult;
#endregion
}
}
else
{
msg.status = 400;
msg.msg = "查找数据为0,请更换查询条件";
}
}
}
catch (Exception ex)
{
msg.msg = "查询失败";
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "getOutInStockRecord", ex.ToString());
}
return msg;
}
/// 查找出库单,新版 [EditBy shaocx,2022-01-14]
///
///
/// 分页
///
public resMsg getOutStockOrderNewVersion(paging page, v_outStockList value)
{
resMsg msg = new resMsg();
msg.status = 400;
try
{
using (dbmodel mod = new dbmodel())
{
string sql = "SELECT * FROM [LA20025].[dbo].[v_outStockList] ";
sql = sql + " WHERE 1=1 ";
if (!string.IsNullOrEmpty(value.sourcePlace))//起点
{
sql = sql + " and sourcePlace='" + value.sourcePlace + "' ";
}
if (!string.IsNullOrEmpty(value.toPlace))//目标点
{
sql = sql + " and toPlace='" + value.toPlace + "' ";
}
if (!string.IsNullOrEmpty(value.containerCode))//托盘号
{
sql = sql + " and containerCode like'%" + value.containerCode + "%' ";
}
if (!string.IsNullOrEmpty(value.materialCode))//物料编号
{
sql = sql + " and materialCode like '%" + value.materialCode + "%'";
}
if (!string.IsNullOrEmpty(value.materialName))//物料名称
{
sql = sql + " and materialName like '%" + value.materialName + "%' ";
}
if (!string.IsNullOrEmpty(value.version))//机型
{
sql = sql + " and version like '%" + value.version + "%' ";
}
if (!string.IsNullOrEmpty(value.supplier))//供应商
{
sql = sql + " and supplier like '%" + value.supplier + "%'";
}
//if (value.status != null && value.status != 0)
//{
// sql = sql + " and status = '" + value.status + "' ";
//}
//if (value.positionType == (byte)positionType.余料回库)//是否查询余料
//{
// sql = sql + " and positionType =" + value.positionType;
//}
if (page.startDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.startDateTime != DateTime.Parse("0001-01-01 0:00:00"))//起始时间
{
sql = sql + " and createTime >'" + page.startDateTime + "'";
}
if (page.endDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.endDateTime != DateTime.Parse("0001-01-01 0:00:00"))//截止时间
{
sql = sql + " and createTime <'" + page.endDateTime + "'";
}
sql = sql + " order by createTime desc";
List dataList = mod.Database.SqlQuery(sql).ToList();
if (dataList.Count > 0)
{
msg.quantity = (int)dataList.Sum(x => x.quantity);
msg.totalNum = dataList.Count;
msg.dateAll = dataList;
//分页计算
List fenyeRerult = new List();
msg.status = 200;
//假如每页数量 大于盘点数据
if (page.pagesize > dataList.Count)
{
msg.date = dataList;
msg.total = 1;
}
else
{
#region 分页计算
int a = page.pagesize;
int b = page.pagenum;
int c = (int)Math.Ceiling((double)dataList.Count / a);
msg.total = c;
int d = dataList.Count % a;
int e = 0;
int f = a * (b - 1);
if (d != 0 && b == c)
{
e = d + f;
}
else
{
e = a + f;
}
for (int i = f; i < e; i++)
{
fenyeRerult.Add(dataList[i]);
}
msg.date = fenyeRerult;
#endregion
}
}
else
{
msg.status = 200;
msg.msg = "查找数据为0,请更换查询条件";
}
}
}
catch (Exception ex)
{
msg.msg = "查询失败";
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findInStockNewVersion", ex.ToString());
}
return msg;
}
/// ACK确认
///
///
public void sendSrmACK()
{
try
{
baseData.sendSrmACK();
}
catch (Exception)
{
}
}
/// 任务确认
///
///
public void srmConfirm()
{
try
{
baseData.srmConfirm();
}
catch (Exception)
{
}
}
/// 解除报警
///
///
public void srmAlarmReset()
{
try
{
baseData.srmAlarmReset();
}
catch (Exception)
{
}
}
/// 根据库位删除数据
///
///
/// 库位名称
///
public FunctionReturnEntity deleteProduct(string positionName, string user)
{
string res = "";
try
{
using (dbmodel mod = new dbmodel())
{
var b_result = MyExtend.deleteProduct(true, user, mod, positionName, null, ref res, "人工直接删除库存");
if (b_result == false)
{
return FunctionReturnEntity.Fail("删除失败:" + res);
}
int result = mod.SaveChanges();
if (result > 0)
{
return FunctionReturnEntity.Success("删除成功");
}
else
{
return FunctionReturnEntity.Fail("删除失败:保存数据失败");
}
}
}
catch (Exception ex)
{
res = "删除异常,请检查参数";
return FunctionReturnEntity.Fail("删除失败,异常:" + ex.Message);
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "TaskDisplay", ex.ToString());
}
}
/// 库位编辑
///
///
/// 库位对象
///
public string editPlace(position place)
{
string res = "修改失败";
try
{
using (dbmodel mod = new dbmodel())
{
if (place != null)
{
if (place.positionId != 0)
{
position editplace = mod.position.Find(place.positionId);
if (editplace != null)
{
//editplace.isLock = place.isLock;
//editplace.isfree = place.isfree;
PositionHandler.LockAndFree((bool)place.isLock, (bool)place.isfree, editplace, "人工库位编辑", SysGloble.WCSNAME, null);
editplace.positionType = place.positionType;
editplace.enable = place.enable;
int result = mod.SaveChanges();
if (result > 0)
{
res = "修改成功";
}
}
}
}
}
}
catch (Exception)
{
res = "修改异常";
}
return res;
}
///
/// 查询下拉列表数据 [EditBy shaocx,2021-01-13]
///
///
///
public FunctionReturnEntity> GetSelectList(string type)
{
FunctionReturnEntity> fr = new FunctionReturnEntity>();
using (dbmodel context = new dbmodel())
{
if (type == "version")
{//机型
string sql = " SELECT DISTINCT version FROM [LA20025].[dbo].[material] where ISNULL(version, '')<> '' ";
List dataList = context.Database.SqlQuery(sql).ToList();
fr.resData = dataList;
fr.result = true;
return fr;
}
else if (type == "materialCode")
{//materialCode
string sql = " SELECT DISTINCT materialCode FROM [LA20025].[dbo].[material] where ISNULL(materialCode, '')<> '' ";
List dataList = context.Database.SqlQuery(sql).ToList();
fr.resData = dataList;
fr.result = true;
return fr;
}
else if (type == "materialName")
{//materialName
string sql = " SELECT DISTINCT materialName FROM [LA20025].[dbo].[material] where ISNULL(materialName, '')<> '' ";
List dataList = context.Database.SqlQuery(sql).ToList();
fr.resData = dataList;
fr.result = true;
return fr;
}
}
return fr;
}
///
/// 查询枚举下拉列表数据 [EditBy shaocx,2021-01-13]
///
///
///
public FunctionReturnEntity> GetEnumSelectList(string enumName, bool isAddEmpty)
{
FunctionReturnEntity> fr = new FunctionReturnEntity>();
List dataList = new List();
if (isAddEmpty)
{
ListItem li = new ListItem()
{
Text = "不筛选",
Value = ""
};
dataList.Add(li);
}
if (enumName == "taskType")
{//任务类型
List eeList = EnumberHelper.EnumToList();
foreach (var item in eeList)
{
ListItem li = new ListItem()
{
Text = item.EnumName,
Value = item.EnumValue.ToString()
};
dataList.Add(li);
}
fr.resData = dataList;
fr.result = true;
return fr;
}
else if (enumName == "OutInFlag")
{//出入库类型
List eeList = EnumberHelper.EnumToList();
foreach (var item in eeList)
{
ListItem li = new ListItem()
{
Text = item.EnumName,
Value = item.EnumValue.ToString()
};
dataList.Add(li);
}
fr.resData = dataList;
fr.result = true;
return fr;
}
return fr;
}
///
/// 创建人工出库任务 [EditBy shaocx,2022-03-02]
///
/// 1:人工出库 2:出库分拣 3:人工空托盘出库
///
/// 起点
/// 目标点
///
public FunctionReturnEntity CreateTaskForHandOutStore(int flag, string userName, string source_station, string to_station)
{
resMsg res = new resMsg();
res.status = 400;
try
{
var pre_createListCode = "";
taskType _taskType = default(taskType);
if (flag == 1)
{
_taskType = taskType.手动出库;
pre_createListCode = "SDCK";
}
else if (flag == 2)
{
_taskType = taskType.出库分拣;
pre_createListCode = "CKFJ";
}
else if (flag == 3)
{
_taskType = taskType.空托人工出库;
pre_createListCode = "KTRGCK";
}
else
{
return FunctionReturnEntity.Fail("标记错误");
}
using (dbmodel mod = new dbmodel())
{
VproductStock stationIsHave = mod.VproductStock.FirstOrDefault(x => x.positionName == to_station);
if (stationIsHave != null)
{
res.msg = "出库口" + to_station + "已经有货";
return FunctionReturnEntity.Fail(res.msg);
}
string sourcePlace = "";
//起点
VproductStock OutStock = mod.VproductStock.OrderBy(x => x.createTime).FirstOrDefault(x => x.positionName == source_station);
if (OutStock == null)
{
res.msg = "没有找到库位" + to_station + "的库存";
return FunctionReturnEntity.Fail(res.msg);
}
//判断站点是否有任务被占用
var isStationHasDoingTaskResult = MyExtendHelper.IsStationHasDoingTask(mod, to_station);
if (isStationHasDoingTaskResult.result == false) return isStationHasDoingTaskResult;
isStationHasDoingTaskResult = MyExtendHelper.IsStationHasDoingTask(mod, OutStock.positionName);
if (isStationHasDoingTaskResult.result == false) return isStationHasDoingTaskResult;
//判断站点是否空闲状态
var isStationAllowCreateNewTask = MyExtendHelper.IsStationAllowCreateNewTask(mod, to_station);
if (isStationAllowCreateNewTask.result == false) return isStationAllowCreateNewTask;
isStationAllowCreateNewTask = MyExtendHelper.IsStationAllowCreateNewTask(mod, OutStock.positionName);
if (isStationAllowCreateNewTask.result == false) return isStationAllowCreateNewTask;
List stockSerialNumber = null;
int quantity = 0;
if (_taskType == taskType.手动出库 || _taskType == taskType.出库分拣)
{
stockSerialNumber = mod.productStockList.Where(x => x.stockId == OutStock.positionId).ToList();
if (stockSerialNumber.Count < 1)
{
res.msg = "此库存无流水号明细";
return FunctionReturnEntity.Fail(res.msg);
}
quantity = stockSerialNumber.Count;
}
sourcePlace = OutStock.positionName;
task newTask = new task();
newTask.createListCode = pre_createListCode + DateTime.Now.ToString("yyMMddHHmmss");
newTask.taskType = (int)_taskType;
newTask.taskTypeName = _taskType.ToString();
newTask.taskName = _taskType.ToString();
newTask.taskStatus = (int)taskStatus.未下发;
newTask.sourcePlace = sourcePlace;
newTask.toPlace = to_station.Trim();
newTask.middlePlace = "";
newTask.area = MyExtendHelper.GetTaskAreaByOutStorePostion(to_station);
newTask.priority = 1;
newTask.materialCode = OutStock.materialCode;
newTask.materialName = OutStock.materialName;
newTask.quantity = quantity;
newTask.createTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
newTask.sendMesed = 1;//1=未发送,2=发送成功,3=发送失败
newTask.mesReply = "未发送";
newTask.supplier = OutStock.supplier;//供应商 【EditBy shaocx,2022-01-15】
newTask.containerCode = OutStock.containerCode;//托盘号 【EditBy shaocx,2022-01-15】
newTask.version = OutStock.version;//机型
newTask.creator = SysGloble.WCSNAME;
//记录PLC任务号和AGV任务号 【EditBy shaocx,2022-03-28】
newTask.PlcTaskNo = TaskNoHelper.CreatePlcTaskIdForSrmTaskPublic(1);
newTask.AgvTaskNo = TaskNoHelper.CreateTaskIdForAgvTask(newTask.PlcTaskNo);
mod.task.Add(newTask);
outStockList outStockRecord = new outStockList();
outStockRecord.outStockOrder = newTask.createListCode;
outStockRecord.materialName = OutStock.materialName;
outStockRecord.materialCode = OutStock.materialCode;
outStockRecord.quantity = quantity;
outStockRecord.creator = userName;
outStockRecord.createTime = newTask.createTime;
outStockRecord.version = OutStock.version;//机型 【EditBy shaocx,2022-01-18】
mod.outStockList.Add(outStockRecord);
OutStock.isLock = true;
//起点和目标点锁定
position p_sourcePlace = mod.position.FirstOrDefault(x => x.positionName == newTask.sourcePlace);
position p_toPlace = mod.position.FirstOrDefault(x => x.positionName == newTask.toPlace);
//p_sourcePlace.isLock = true;
//p_toPlace.isLock = true;
PositionHandler.Lock(true, p_sourcePlace, "创建人工出库任务,锁定该库位", SysGloble.WCSNAME, newTask);
PositionHandler.Lock(true, p_toPlace, "创建人工出库任务,锁定该库位", SysGloble.WCSNAME, newTask);
int ress = mod.SaveChanges();
if (ress > 0)
{
res.status = 200;
return FunctionReturnEntity.Success("成功");
}
else
{
res.status = 400;
res.msg = "保存数据失败";
WZ.Useful.Commons.LogTextHelper.WriteLine("yunneiWcf", "CreateTaskForOutStore", "保存数据失败");
return FunctionReturnEntity.Fail(res.msg);
}
}
}
catch (Exception ex)
{
res.status = 400;
res.msg = "保存异常:" + ex.Message;
WZ.Useful.Commons.LogTextHelper.WriteLine("yunneiWcf", "CreateTaskForOutStore", ex.ToString());
return FunctionReturnEntity.Fail(res.msg);
}
}
#region 输送线交互
///
/// 输送线写入上料完成信号
///
/// 输送线索引(0,1,2,3)
///
public FunctionReturnEntity Trans_LoadMaterialConfirm(int index)
{
try
{
TransService.LoadMaterialConfirm(index);
return FunctionReturnEntity.Success("成功");
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("yunneiWcf", "Trans_LoadMaterialConfirm", "输送线写入上料完成信号:" + JsonConvert.SerializeObject(ex));
return FunctionReturnEntity.Fail(ex.Message);
}
}
///
/// 输送线清除工件记忆
///
/// 输送线索引(0,1,2,3)
///
public FunctionReturnEntity ClearGJJY(int index)
{
try
{
TransService.ClearGJJY(index);
return FunctionReturnEntity.Success("成功");
}
catch (Exception ex)
{
WZ.Useful.Commons.LogTextHelper.WriteLine("yunneiWcf", "ClearGJJY", "输送线清除工件记忆:" + JsonConvert.SerializeObject(ex));
return FunctionReturnEntity.Fail(ex.Message);
}
}
#endregion
/// 清除库存查询
///
///
/// 分页
///
public resMsg findStockClearLog(paging page, StockClearLog value)
{
resMsg msg = new resMsg();
msg.status = 400;
try
{
using (dbmodel mod = new dbmodel())
{
string sql = "SELECT * FROM [LA20025].[dbo].[StockClearLog] where 1=1 ";
if (!string.IsNullOrEmpty(value.positionName))//库位名称
{
sql = sql + " and positionName='" + value.positionName + "' ";
}
if (!string.IsNullOrEmpty(value.containerCode))//托盘号
{
sql = sql + " and containerCode like'%" + value.containerCode + "%' ";
}
if (!string.IsNullOrEmpty(value.materialCode))//物料编号
{
sql = sql + " and materialCode like '%" + value.materialCode + "%'";
}
if (!string.IsNullOrEmpty(value.materialName))//物料名称
{
sql = sql + " and materialName like '%" + value.materialName + "%' ";
}
if (!string.IsNullOrEmpty(value.version))//机型
{
sql = sql + " and version like '%" + value.version + "%' ";
}
if (!string.IsNullOrEmpty(value.supplier))//供应商
{
sql = sql + " and supplier like '%" + value.supplier + "%'";
}
if (page.startDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.startDateTime != DateTime.Parse("0001-01-01 0:00:00"))//起始时间
{
sql = sql + " and CreateTime >'" + page.startDateTime + "'";
}
if (page.endDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.endDateTime != DateTime.Parse("0001-01-01 0:00:00"))//截止时间
{
sql = sql + " and CreateTime <'" + page.endDateTime + "'";
}
sql = sql + " order by createTime desc";
List dataList = mod.Database.SqlQuery(sql).ToList();
if (dataList.Count > 0)
{
msg.quantity = 0;
msg.totalNum = dataList.Count;
msg.dateAll = dataList;
//分页计算
List fenyeRerult = new List();
msg.status = 200;
//假如每页数量 大于盘点数据
if (page.pagesize > dataList.Count)
{
msg.date = dataList;
msg.total = 1;
}
else
{
#region 分页计算
int a = page.pagesize;
int b = page.pagenum;
int c = (int)Math.Ceiling((double)dataList.Count / a);
msg.total = c;
int d = dataList.Count % a;
int e = 0;
int f = a * (b - 1);
if (d != 0 && b == c)
{
e = d + f;
}
else
{
e = a + f;
}
for (int i = f; i < e; i++)
{
fenyeRerult.Add(dataList[i]);
}
msg.date = fenyeRerult;
#endregion
}
}
else
{
msg.status = 200;
msg.msg = "查找数据为0,请更换查询条件";
}
}
}
catch (Exception ex)
{
msg.msg = "查询失败";
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findStockClearLog", ex.ToString());
}
return msg;
}
///
/// 获取 指定供应商出库配置的供应商名称
///
///
///
public String GetBasicDataSetForSupplier()
{
return BasicDataSetHandler.GetBasicDataSetForSupplier();
}
public String GetBasicDataSetForStayMonths()
{
return BasicDataSetHandler.GetBasicDataSetForStayMonths();
}
///
/// 修改出库配置的供应商数据
///
///
///
///
public FunctionReturnEntity UpdateBasicDataSetForSupplier(string supplier, string user)
{
return BasicDataSetHandler.UpdateBasicDataSetForSupplier(supplier, user);
}
///
/// 修改 呆滞库位时长
///
///
///
///
public FunctionReturnEntity UpdateBasicDataSetForStayMonths(int stayMonths, string user)
{
return BasicDataSetHandler.UpdateBasicDataSetForStayMonths(stayMonths, user);
}
///
/// 获取缺料任务
///
///
public FunctionReturnEntity GetQueLiao()
{
try
{
task _task = null;
var status1 = (int)taskStatus.新建;
using (dbmodel mod = new dbmodel())
{
var taskList = mod.task.Where(x => x.isQueLiao == 1 && x.taskStatus == status1).OrderBy(x => x.createTime).ToList();
if (taskList != null && taskList.Count > 0)
{
_task = taskList.First();
}
}
return FunctionReturnEntity.Success("成功", _task);
}
catch (Exception ex)
{
return FunctionReturnEntity.Fail("异常:" + ex.Message);
}
}
///
/// 手动创建AGV任务号
///
///
public string CreateTaskIdForAgvTaskByHand()
{
return TaskNoHelper.CreateTaskIdForAgvTaskByHand();
}
///
/// 创建设备任务号
///
///
public DeviceTaskNoEntity CreateTaskId()
{
DeviceTaskNoEntity entity = null;
var plcTaskNo = TaskNoHelper.CreatePlcTaskIdForSrmTaskPublic(1);
var agvTaskNo = TaskNoHelper.CreateTaskIdForAgvTask(plcTaskNo);
entity = new DeviceTaskNoEntity()
{
PlcTaskNo = plcTaskNo,
AgvTaskNo = agvTaskNo
};
return entity;
}
///
/// 下发旁路工位的任务
///
///
///
public FunctionReturnEntity IssueTaskForPangLuGongWei(int taskId, string midStorePosition)
{
var errMsg = "";
var res = TaskHelper.IssueTaskForPangLuGongWei(taskId, midStorePosition, ref errMsg);
if (res)
{
return FunctionReturnEntity.Success("成功");
}
else
{
return FunctionReturnEntity.Fail("失败:" + errMsg);
}
}
}
}