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
|
{
|
/// <summary>天永安全交互
|
///
|
/// </summary>
|
yunneiWCS.tianyong.AutoServiceSoapClient ty = new tianyong.AutoServiceSoapClient();
|
public static Mutex single = new Mutex();
|
/// <summary>用户登录
|
///
|
/// </summary>
|
/// <param name="userName">用户名</param>
|
/// <param name="userPassword">密码</param>
|
/// <returns></returns>
|
public resMsg<user> login(string userName, string userPassword)
|
{
|
resMsg<user> msg = new resMsg<user>();
|
try
|
{
|
using (dbmodel mod = new dbmodel())
|
{
|
var dd = mod.user.ToList();
|
List<user> 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<roleVsModule> 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;
|
}
|
/// <summary>添加角色
|
///
|
/// </summary>
|
/// <param name="addName">角色名</param>
|
/// <param name="area">1=wms用户,2=PDA用户</param>
|
/// <param name="operation">1=增加,2=删除</param>
|
/// <returns></returns>
|
public resMsg<string> addRole(string addName, int area, int operation)
|
{
|
resMsg<string> msg = new resMsg<string>();
|
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<roleVsModule> 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;
|
|
}
|
/// <summary>查询角色列表
|
///
|
/// </summary>
|
/// <param name="page">分页</param>
|
/// <param name="roleName">角色名</param>
|
/// <returns></returns>
|
public resMsg<role> findRole(paging page, string roleName)
|
{
|
|
resMsg<role> msg = new resMsg<role>();
|
try
|
{
|
List<role> roleList = new List<role>();
|
using (dbmodel mod = new dbmodel())
|
{
|
if (roleName == "")
|
{
|
roleList = mod.role.ToList();
|
}
|
else
|
{
|
roleList = mod.role.Where(x => x.roleName == roleName).ToList();
|
}
|
}
|
|
List<role> fenyeRerult = new List<role>();
|
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;
|
}
|
|
/// <summary>添加和删除角色菜单
|
///
|
/// </summary>
|
/// <param name="module">彩带名</param>
|
/// <param name="roleName">角色名</param>
|
/// <param name="operation">1=添加,2=删除</param>
|
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());
|
}
|
|
|
|
}
|
|
/// <summary>查找用户
|
///
|
/// </summary>
|
/// <param name="page">分页</param>
|
/// <param name="userName">用户名</param>
|
/// <returns></returns>
|
public resMsg<userAndRole> findUser(paging page, string userName)
|
{
|
|
resMsg<userAndRole> msg = new resMsg<userAndRole>();
|
try
|
{
|
List<userAndRole> userList = new List<userAndRole>();
|
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<userAndRole> fenyeRerult = new List<userAndRole>();
|
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;
|
}
|
/// <summary>用户增删改查
|
///
|
/// </summary>
|
/// <param name="addName">用户对象</param>
|
/// <param name="creator">创建/修改人</param>
|
/// <param name="operation">增=1删=2改=3</param>
|
/// <returns></returns>
|
public resMsg<string> addUser(user addName, string creator, int operation)
|
{
|
resMsg<string> msg = new resMsg<string>();
|
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;
|
|
}
|
/// <summary>分配空库位
|
///
|
/// </summary>
|
/// <param name="positionType">库位类型,库口=0,空库位=1,缸体=2,缸盖=3</param>
|
/// <returns></returns>
|
public string findStock(int positionType)
|
{
|
string toplace = "";
|
try
|
{
|
toplace = Form1.findStorage(positionType);
|
}
|
catch (Exception)
|
{
|
toplace = "";
|
}
|
|
return toplace;
|
|
}
|
/// <summary>物料查询
|
///
|
/// </summary>
|
/// <param name="page"></param>
|
/// <param name="materialName"></param>
|
/// <param name="materialCode"></param>
|
/// <returns></returns>
|
public resMsg<material> findMaterial(paging page, string materialName, string materialCode)
|
{
|
resMsg<material> msg = new resMsg<material>();
|
List<material> materials = new List<material>();
|
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<material> fenyeRerult = new List<material>();
|
|
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;
|
}
|
/// <summary>物料增删改
|
///
|
/// </summary>
|
/// <param name="types">1=新建,2=编辑,3=删除</param>
|
/// <param name="ID">编辑时物料ID</param>
|
/// <param name="materialCode">编辑时传物料编号</param>
|
/// <param name="materialName">编辑时传物料名称</param>
|
/// <param name="materialType">新建物料时 物料类型 0=缸盖,1=缸体</param>
|
/// <param name="version">机型</param>
|
/// <returns></returns>
|
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;
|
}
|
/// <summary>查找入库单
|
///
|
/// </summary>
|
/// <param name="page">分页</param>
|
/// <param name="code">入库单号</param>
|
/// <param name="materialCode">物料编号</param>
|
/// <param name="status">入库单状态</param>
|
/// <param name="selectDateTime">筛选日期</param>
|
/// <returns></returns>
|
public resMsg<inStockOrder> findInStock(paging page, string materialName, string materialCode, int status)
|
{
|
resMsg<inStockOrder> msg = new resMsg<inStockOrder>();
|
List<inStockOrder> dataList = new List<inStockOrder>();
|
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<inStockOrder>(sql).ToList();
|
|
#endregion
|
#endregion
|
|
//分页计算
|
List<inStockOrder> fenyeRerult = new List<inStockOrder>();
|
|
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;
|
}
|
|
/// <summary>查找入库单,新版 [EditBy shaocx,2022-01-14]
|
///
|
/// </summary>
|
/// <param name="page">分页</param>
|
/// <returns></returns>
|
public resMsg<v_inStockOrder> findInStockNewVersion(paging page, v_inStockOrder value)
|
{
|
resMsg<v_inStockOrder> msg = new resMsg<v_inStockOrder>();
|
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<v_inStockOrder> dataList = mod.Database.SqlQuery<v_inStockOrder>(sql).ToList();
|
|
if (dataList.Count > 0)
|
{
|
msg.quantity = (int)dataList.Sum(x => x.quantity);
|
msg.totalNum = dataList.Count;
|
msg.dateAll = dataList;
|
//分页计算
|
List<v_inStockOrder> fenyeRerult = new List<v_inStockOrder>();
|
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;
|
}
|
|
/// <summary>查找出入库记录给MES [EditBy shaocx,2025-09-01]
|
///
|
/// </summary>
|
/// <param name="page">分页</param>
|
/// <returns></returns>
|
public resMsg<Wms_outInStockRecord_V2_Mes> findOutInStockRecord_V2_Mes(paging page, Wms_outInStockRecord_V2_Mes value)
|
{
|
resMsg<Wms_outInStockRecord_V2_Mes> msg = new resMsg<Wms_outInStockRecord_V2_Mes>();
|
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<Wms_outInStockRecord_V2_Mes> dataList = mod.Database.SqlQuery<Wms_outInStockRecord_V2_Mes>(sql).ToList();
|
|
if (dataList.Count > 0)
|
{
|
//msg.quantity = (int)dataList.Sum(x => x.quantity);
|
msg.totalNum = dataList.Count;
|
msg.dateAll = dataList;
|
//分页计算
|
List<Wms_outInStockRecord_V2_Mes> fenyeRerult = new List<Wms_outInStockRecord_V2_Mes>();
|
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;
|
}
|
|
|
/// <summary>查找入库单流水号
|
///
|
/// </summary>
|
/// <param name="inStockCode"></param>
|
/// <returns></returns>
|
public resMsg<inStockOrderList> findInStockList(string inStockCode)
|
{
|
resMsg<inStockOrderList> res = new resMsg<inStockOrderList>();
|
res.status = 400;
|
try
|
{
|
using (dbmodel mod = new dbmodel())
|
{
|
inStockOrder stockCode = mod.inStockOrder.FirstOrDefault(x => x.orderCode == inStockCode.Trim());
|
if (stockCode != null)
|
{
|
List<inStockOrderList> 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;
|
}
|
|
|
/// <summary>查找出入库记录推行mes详情
|
///
|
/// </summary>
|
/// <param name="inStockCode"></param>
|
/// <returns></returns>
|
public resMsg<Wms_outInStockRecord_Details_V2_Mes> findOutInStockRecord_Details_V2_Mes(long mainId)
|
{
|
resMsg<Wms_outInStockRecord_Details_V2_Mes> res = new resMsg<Wms_outInStockRecord_Details_V2_Mes>();
|
res.status = 400;
|
try
|
{
|
using (dbmodel mod = new dbmodel())
|
{
|
|
List<Wms_outInStockRecord_Details_V2_Mes> 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;
|
}
|
|
/// <summary>修改入库单流水号
|
///
|
/// </summary>
|
/// <param name="value"></param>
|
/// <returns></returns>
|
public resMsg<string> modfiyInStockList(List<inStockOrderList> value)
|
{
|
resMsg<string> msg = new resMsg<string>();
|
msg.status = 400;
|
try
|
{
|
if (value.Count > 0)
|
{
|
using (dbmodel mod = new dbmodel())
|
{
|
int orderCode = (int)value[0].orderCodeId;
|
List<inStockOrderList> 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;
|
}
|
/// <summary>手动作废入库单
|
///
|
/// </summary>
|
/// <param name="inStockCode"></param>
|
/// <returns></returns>
|
public resMsg<string> deleteInStock(string inStockCode)
|
{
|
|
resMsg<string> msg = new resMsg<string>();
|
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;
|
|
}
|
|
/// <summary>查找库位
|
///
|
/// </summary>
|
/// <param name="page">分页</param>
|
/// <param name="position">库位名称</param>
|
/// <param name="islock">是否锁定</param>
|
/// <param name="isfree">是否有货</param>
|
/// <returns></returns>
|
public resMsg<position> findPosition(paging page, string position, int islock, int isfree)
|
{
|
resMsg<position> msg = new resMsg<position>();
|
List<position> dataList = new List<position>();
|
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<position>(sql).ToList();
|
}
|
#endregion
|
|
//分页计算
|
List<position> fenyeRerult = new List<position>();
|
|
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;
|
|
}
|
|
/// <summary>查找指定库位
|
///
|
/// </summary>
|
/// <param name="position">库位名称</param>
|
/// <returns></returns>
|
public resMsg<position> findSinglePosition(string position)
|
{
|
resMsg<position> msg = new resMsg<position>();
|
List<position> dataList = new List<position>();
|
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<position>(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 人工推送天永消息
|
|
///// <summary>人工推送天永消息,原先的方法
|
/////
|
///// </summary>
|
///// <param name="inStockCode"></param>
|
///// <returns></returns>
|
//public resMsg<string> safetySignalByPerson(int taskId)
|
//{
|
// resMsg<string> msg = new resMsg<string>();
|
// 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;
|
|
//}
|
|
/// <summary>人工推送天永消息,新的方法
|
///
|
/// </summary>
|
/// <param name="inStockCode"></param>
|
/// <returns></returns>
|
public resMsg<string> safetySignalByPerson(int taskId)
|
{
|
resMsg<string> msg = new resMsg<string>();
|
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系统使用的接口
|
|
/// <summary>机器人上料 安全交互信号
|
///
|
/// </summary>
|
/// <param name="station">站点号</param>
|
/// <param name="OutOrIn">1=进2=出</param>
|
/// <param name="taskId">任务id</param>
|
/// <returns></returns>
|
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
|
|
|
/// <summary>查找任务
|
///
|
/// </summary>
|
/// <param name="page">分页</param>
|
/// <param name="taskId">任务ID</param>
|
/// <param name="taskType">任务类型</param>
|
/// <param name="place">起始位目标位</param>
|
/// <returns></returns>
|
public resMsg<task> findTask(paging page, int taskId, int taskType, string place, string order, string taskName, string materialCode, string materialName)
|
{
|
resMsg<task> msg = new resMsg<task>();
|
List<task> dataList = new List<task>();
|
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<task>(sql).ToList();
|
|
#endregion
|
|
//分页计算
|
List<task> fenyeRerult = new List<task>();
|
|
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;
|
|
}
|
|
/// <summary>查找子任务
|
///
|
/// </summary>
|
/// <param name="taskId">任务ID</param>
|
/// <returns></returns>
|
public resMsg<taskRecord> findTaskChild(string taskId)
|
{
|
resMsg<taskRecord> msg = new resMsg<taskRecord>();
|
msg.status = 400;
|
List<taskRecord> dataList = new List<taskRecord>();
|
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;
|
|
}
|
/// <summary>任务作废
|
///
|
/// </summary>
|
/// <param name="taskId">任务ID</param>
|
/// <returns></returns>
|
public resMsg<string> deleteTask(string taskId)
|
{
|
resMsg<string> msg = new resMsg<string>();
|
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;
|
|
}
|
|
/// <summary>任务强制完成
|
///
|
/// </summary>
|
/// <param name="taskId">任务ID</param>
|
/// <returns></returns>
|
public resMsg<string> forceCompleteTask(string taskId, string user, string forceCompleteReason)
|
{
|
resMsg<string> msg = new resMsg<string>();
|
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;
|
|
}
|
|
/// <summary>寻找菜单权限
|
///
|
/// </summary>
|
/// <param name="page">分页</param>
|
/// <param name="roleName">角色名</param>
|
/// <returns></returns>
|
public resMsg<roleVsModule> findRoleModule(paging page, string roleName)
|
{
|
resMsg<roleVsModule> msg = new resMsg<roleVsModule>();
|
msg.status = 400;
|
if (roleName == "")
|
{
|
return msg;
|
}
|
List<roleVsModule> dataList = new List<roleVsModule>();
|
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<roleVsModule> fenyeRerult = new List<roleVsModule>();
|
|
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;
|
|
}
|
/// <summary>库存查询
|
///
|
/// </summary>
|
/// <param name="page">分页</param>
|
/// <returns></returns>
|
public resMsg<VproductStock> findProductStock(paging page, VproductStock value)
|
{
|
resMsg<VproductStock> msg = new resMsg<VproductStock>();
|
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<VproductStock> dataList = mod.Database.SqlQuery<VproductStock>(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<long> stockIdList = mod.Database.SqlQuery<long>(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<VproductStock> fenyeRerult = new List<VproductStock>();
|
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;
|
}
|
|
/// <summary>
|
/// 查询所有库存
|
/// </summary>
|
/// <returns></returns>
|
public List<MyVproductStock> findAllProductStock()
|
{
|
List<MyVproductStock> list = new List<MyVproductStock>();
|
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<MyVproductStock>(sql).ToList();
|
}
|
return list;
|
}
|
catch (Exception ex)
|
{
|
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findAllProductStock", ex.ToString());
|
}
|
return null;
|
}
|
|
|
/// <summary>查找库位流水号明细
|
///
|
/// </summary>
|
/// <param name="positionName">库位号</param>
|
/// <returns></returns>
|
public resMsg<productStockList> findStockList(string positionName)
|
{
|
resMsg<productStockList> msg = new resMsg<productStockList>();
|
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;
|
}
|
/// <summary>修改库存流水号
|
///
|
/// </summary>
|
/// <param name="value"></param>
|
/// <returns></returns>
|
public resMsg<string> modfiyStockList(List<productStockList> value, long taskId)
|
{
|
resMsg<string> msg = new resMsg<string>();
|
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<string> all_serialNumberList = new List<string>();//全部的流水号
|
List<string> now_serialNumberList = new List<string>();//删除后的全部的流水号
|
List<productStockList> 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<productStockList> record_delteList = new List<productStockList>();
|
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;
|
}
|
|
/// <summary>返回上线点和输送线状态
|
///
|
/// </summary>
|
/// <returns></returns>
|
public resMsg<position> stationStatus()
|
{
|
resMsg<position> msg = new resMsg<position>();
|
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;
|
}
|
/// <summary>读取上线点数据
|
///
|
/// </summary>
|
/// <returns></returns>
|
public resMsg<position> UpStationInfo()
|
{
|
resMsg<position> msg = new resMsg<position>();
|
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;
|
}
|
/// <summary>解锁库位
|
///
|
/// </summary>
|
/// <param name="postionName">库位名称</param>
|
/// <returns></returns>
|
public resMsg<string> unlockPosition(string postionName)
|
{
|
resMsg<string> msg = new resMsg<string>();
|
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;
|
}
|
|
/// <summary>解锁、锁定库位
|
///
|
/// </summary>
|
/// <param name="postionName">库位名称</param>
|
/// <param name="lockRemark">锁定原因</param
|
/// <returns></returns>
|
public resMsg<string> unlockAndLockPosition(bool isLock, string postionName, string lockRemark, string lockUser)
|
{
|
resMsg<string> msg = new resMsg<string>();
|
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;
|
}
|
|
/// <summary>AGV发送状态
|
///
|
/// </summary>
|
/// <returns></returns>
|
public string[] findAgvInfo()
|
{
|
try
|
{
|
return Form1.agvSendStatus;
|
}
|
catch (Exception)
|
{
|
|
throw;
|
}
|
|
}
|
/// <summary>堆垛机任务重发
|
///
|
/// </summary>
|
/// <param name="taskId">任务ID</param>
|
/// <param name="SourcePlace">起始位置</param>
|
/// <param name="ToPlace">目标位置</param>
|
/// <param name="isref">1=不是任务重发,2=任务重发</param>
|
/// <param name="isUnLineTask">是否是线下发的任务,true表示是线下任务,false是线上任务</param>
|
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;
|
|
}
|
/// <summary>AGV任务重发
|
///
|
/// </summary>
|
/// <param name="taskId">任务id</param>
|
/// <param name="sourcePlace">起始位置</param>
|
/// <param name="toPlace">目标位置</param>
|
/// <returns></returns>
|
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 "发送失败";
|
}
|
|
}
|
/// <summary>大屏显示
|
///
|
/// </summary>
|
/// <param name="arae">1是缸体侧 2是缸盖</param>
|
/// <returns></returns>
|
public resMsg<task> TaskDisplay(int arae)
|
{
|
resMsg<task> msg = new resMsg<task>();
|
msg.status = 400;
|
List<task> dataList = new List<task>();
|
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;
|
}
|
/// <summary>空托盘回库
|
///
|
/// </summary>
|
/// <param name="station"></param>
|
public void emptyBack(string station)
|
{
|
try
|
{
|
HTTPService api = new HTTPService(" http://localhost:1025/pda/");
|
List<inStockOrderList> serialNumbers = new List<inStockOrderList>();
|
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<productStockList> 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)
|
{
|
|
}
|
|
}
|
/// <summary>获取堆垛机状态
|
///
|
/// </summary>
|
/// <returns></returns>
|
public srmEntity getSrmStatus()
|
{
|
|
try
|
{
|
return Form1.srm;
|
}
|
catch (Exception)
|
{
|
return null;
|
}
|
|
}
|
/// <summary>获取输送线状态
|
///
|
/// </summary>
|
/// <returns></returns>
|
public List<convEntity> getConvStatus()
|
{
|
|
try
|
{
|
return Form1.convs;
|
}
|
catch (Exception)
|
{
|
return null;
|
}
|
}
|
/// <summary>出入库记录
|
///
|
/// </summary>
|
/// <param name="page">分页</param>
|
/// <param name="materialName">物料名称</param>
|
/// <param name="materialCode">物料编号</param>
|
/// <param name="taskType">任务类型</param>
|
/// <returns></returns>
|
public resMsg<outInStockRecord> getTakeRecord(paging page, string materialName, string materialCode, int taskType)
|
{
|
resMsg<outInStockRecord> msg = new resMsg<outInStockRecord>();
|
msg.status = 400;
|
try
|
{
|
List<outInStockRecord> dataList = new List<outInStockRecord>();
|
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<outInStockRecord>(sql).ToList();
|
}
|
#endregion
|
//分页计算
|
List<outInStockRecord> fenyeRerult = new List<outInStockRecord>();
|
|
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;
|
}
|
|
/// <summary>出入库记录,新版 [EditBy shaocx,2022-01-14]
|
///
|
/// </summary>
|
/// <param name="page">分页</param>
|
/// <returns></returns>
|
public resMsg<Wms_outInStockRecord> getOutInStockRecord(paging page, Wms_outInStockRecord value)
|
{
|
resMsg<Wms_outInStockRecord> msg = new resMsg<Wms_outInStockRecord>();
|
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<Wms_outInStockRecord> dataList = mod.Database.SqlQuery<Wms_outInStockRecord>(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<Wms_outInStockRecord> fenyeRerult = new List<Wms_outInStockRecord>();
|
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;
|
}
|
|
/// <summary>查找出库单,新版 [EditBy shaocx,2022-01-14]
|
///
|
/// </summary>
|
/// <param name="page">分页</param>
|
/// <returns></returns>
|
public resMsg<v_outStockList> getOutStockOrderNewVersion(paging page, v_outStockList value)
|
{
|
resMsg<v_outStockList> msg = new resMsg<v_outStockList>();
|
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<v_outStockList> dataList = mod.Database.SqlQuery<v_outStockList>(sql).ToList();
|
|
if (dataList.Count > 0)
|
{
|
msg.quantity = (int)dataList.Sum(x => x.quantity);
|
msg.totalNum = dataList.Count;
|
msg.dateAll = dataList;
|
//分页计算
|
List<v_outStockList> fenyeRerult = new List<v_outStockList>();
|
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;
|
}
|
|
/// <summary>ACK确认
|
///
|
/// </summary>
|
public void sendSrmACK()
|
{
|
try
|
{
|
baseData.sendSrmACK();
|
}
|
catch (Exception)
|
{
|
}
|
|
}
|
/// <summary>任务确认
|
///
|
/// </summary>
|
public void srmConfirm()
|
{
|
try
|
{
|
baseData.srmConfirm();
|
}
|
catch (Exception)
|
{
|
}
|
|
}
|
/// <summary>解除报警
|
///
|
/// </summary>
|
public void srmAlarmReset()
|
{
|
try
|
{
|
baseData.srmAlarmReset();
|
}
|
catch (Exception)
|
{
|
}
|
|
}
|
/// <summary>根据库位删除数据
|
///
|
/// </summary>
|
/// <param name="positionName">库位名称</param>
|
/// <returns></returns>
|
public FunctionReturnEntity<bool> 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<bool>.Fail("删除失败:" + res);
|
}
|
int result = mod.SaveChanges();
|
if (result > 0)
|
{
|
return FunctionReturnEntity<bool>.Success("删除成功");
|
}
|
else
|
{
|
return FunctionReturnEntity<bool>.Fail("删除失败:保存数据失败");
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
res = "删除异常,请检查参数";
|
return FunctionReturnEntity<bool>.Fail("删除失败,异常:" + ex.Message);
|
WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "TaskDisplay", ex.ToString());
|
}
|
}
|
|
/// <summary>库位编辑
|
///
|
/// </summary>
|
/// <param name="place">库位对象</param>
|
/// <returns></returns>
|
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;
|
|
}
|
|
|
/// <summary>
|
/// 查询下拉列表数据 [EditBy shaocx,2021-01-13]
|
/// </summary>
|
/// <param name="type"></param>
|
/// <returns></returns>
|
public FunctionReturnEntity<List<string>> GetSelectList(string type)
|
{
|
FunctionReturnEntity<List<string>> fr = new FunctionReturnEntity<List<string>>();
|
using (dbmodel context = new dbmodel())
|
{
|
if (type == "version")
|
{//机型
|
string sql = " SELECT DISTINCT version FROM [LA20025].[dbo].[material] where ISNULL(version, '')<> '' ";
|
List<string> dataList = context.Database.SqlQuery<string>(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<string> dataList = context.Database.SqlQuery<string>(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<string> dataList = context.Database.SqlQuery<string>(sql).ToList();
|
|
fr.resData = dataList;
|
fr.result = true;
|
return fr;
|
}
|
}
|
return fr;
|
}
|
|
|
/// <summary>
|
/// 查询枚举下拉列表数据 [EditBy shaocx,2021-01-13]
|
/// </summary>
|
/// <param name="type"></param>
|
/// <returns></returns>
|
public FunctionReturnEntity<List<ListItem>> GetEnumSelectList(string enumName, bool isAddEmpty)
|
{
|
FunctionReturnEntity<List<ListItem>> fr = new FunctionReturnEntity<List<ListItem>>();
|
|
List<ListItem> dataList = new List<ListItem>();
|
if (isAddEmpty)
|
{
|
ListItem li = new ListItem()
|
{
|
Text = "不筛选",
|
Value = ""
|
};
|
dataList.Add(li);
|
}
|
if (enumName == "taskType")
|
{//任务类型
|
List<EnumberEntity> eeList = EnumberHelper.EnumToList<taskType>();
|
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<EnumberEntity> eeList = EnumberHelper.EnumToList<OutInFlag>();
|
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;
|
}
|
|
/// <summary>
|
/// 创建人工出库任务 [EditBy shaocx,2022-03-02]
|
/// </summary>
|
/// <param name="flag">1:人工出库 2:出库分拣 3:人工空托盘出库</param>
|
/// <param name="userName"></param>
|
/// <param name="source_station">起点</param>
|
/// <param name="to_station">目标点</param>
|
/// <returns></returns>
|
public FunctionReturnEntity<string> CreateTaskForHandOutStore(int flag, string userName, string source_station, string to_station)
|
{
|
resMsg<string> res = new resMsg<string>();
|
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<string>.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<string>.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<string>.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<productStockList> 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<string>.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<string>.Success("成功");
|
}
|
else
|
{
|
res.status = 400;
|
res.msg = "保存数据失败";
|
WZ.Useful.Commons.LogTextHelper.WriteLine("yunneiWcf", "CreateTaskForOutStore", "保存数据失败");
|
return FunctionReturnEntity<string>.Fail(res.msg);
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
res.status = 400;
|
res.msg = "保存异常:" + ex.Message;
|
WZ.Useful.Commons.LogTextHelper.WriteLine("yunneiWcf", "CreateTaskForOutStore", ex.ToString());
|
return FunctionReturnEntity<string>.Fail(res.msg);
|
}
|
}
|
|
|
#region 输送线交互
|
|
/// <summary>
|
/// 输送线写入上料完成信号
|
/// </summary>
|
/// <param name="index">输送线索引(0,1,2,3)</param>
|
/// <returns></returns>
|
public FunctionReturnEntity<string> Trans_LoadMaterialConfirm(int index)
|
{
|
try
|
{
|
TransService.LoadMaterialConfirm(index);
|
return FunctionReturnEntity<string>.Success("成功");
|
}
|
catch (Exception ex)
|
{
|
WZ.Useful.Commons.LogTextHelper.WriteLine("yunneiWcf", "Trans_LoadMaterialConfirm", "输送线写入上料完成信号:" + JsonConvert.SerializeObject(ex));
|
return FunctionReturnEntity<string>.Fail(ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// 输送线清除工件记忆
|
/// </summary>
|
/// <param name="index">输送线索引(0,1,2,3)</param>
|
/// <returns></returns>
|
public FunctionReturnEntity<string> ClearGJJY(int index)
|
{
|
try
|
{
|
TransService.ClearGJJY(index);
|
return FunctionReturnEntity<string>.Success("成功");
|
}
|
catch (Exception ex)
|
{
|
WZ.Useful.Commons.LogTextHelper.WriteLine("yunneiWcf", "ClearGJJY", "输送线清除工件记忆:" + JsonConvert.SerializeObject(ex));
|
return FunctionReturnEntity<string>.Fail(ex.Message);
|
}
|
}
|
|
|
#endregion
|
|
/// <summary>清除库存查询
|
///
|
/// </summary>
|
/// <param name="page">分页</param>
|
/// <returns></returns>
|
public resMsg<StockClearLog> findStockClearLog(paging page, StockClearLog value)
|
{
|
resMsg<StockClearLog> msg = new resMsg<StockClearLog>();
|
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<StockClearLog> dataList = mod.Database.SqlQuery<StockClearLog>(sql).ToList();
|
|
if (dataList.Count > 0)
|
{
|
msg.quantity = 0;
|
msg.totalNum = dataList.Count;
|
msg.dateAll = dataList;
|
//分页计算
|
List<StockClearLog> fenyeRerult = new List<StockClearLog>();
|
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;
|
}
|
|
/// <summary>
|
/// 获取 指定供应商出库配置的供应商名称
|
/// </summary>
|
/// <param name="edm"></param>
|
/// <returns></returns>
|
public String GetBasicDataSetForSupplier()
|
{
|
return BasicDataSetHandler.GetBasicDataSetForSupplier();
|
}
|
|
public String GetBasicDataSetForStayMonths()
|
{
|
return BasicDataSetHandler.GetBasicDataSetForStayMonths();
|
}
|
|
/// <summary>
|
/// 修改出库配置的供应商数据
|
/// </summary>
|
/// <param name="supplier"></param>
|
/// <param name="user"></param>
|
/// <returns></returns>
|
public FunctionReturnEntity<BasicDataSet> UpdateBasicDataSetForSupplier(string supplier, string user)
|
{
|
return BasicDataSetHandler.UpdateBasicDataSetForSupplier(supplier, user);
|
}
|
|
/// <summary>
|
/// 修改 呆滞库位时长
|
/// </summary>
|
/// <param name="supplier"></param>
|
/// <param name="user"></param>
|
/// <returns></returns>
|
public FunctionReturnEntity<BasicDataSet> UpdateBasicDataSetForStayMonths(int stayMonths, string user)
|
{
|
return BasicDataSetHandler.UpdateBasicDataSetForStayMonths(stayMonths, user);
|
}
|
|
/// <summary>
|
/// 获取缺料任务
|
/// </summary>
|
/// <returns></returns>
|
public FunctionReturnEntity<task> 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<task>.Success("成功", _task);
|
}
|
catch (Exception ex)
|
{
|
return FunctionReturnEntity<task>.Fail("异常:" + ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// 手动创建AGV任务号
|
/// </summary>
|
/// <returns></returns>
|
public string CreateTaskIdForAgvTaskByHand()
|
{
|
return TaskNoHelper.CreateTaskIdForAgvTaskByHand();
|
}
|
|
/// <summary>
|
/// 创建设备任务号
|
/// </summary>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
/// 下发旁路工位的任务
|
/// </summary>
|
/// <param name="taskId"></param>
|
/// <returns></returns>
|
public FunctionReturnEntity<string> IssueTaskForPangLuGongWei(int taskId, string midStorePosition)
|
{
|
var errMsg = "";
|
var res = TaskHelper.IssueTaskForPangLuGongWei(taskId, midStorePosition, ref errMsg);
|
if (res)
|
{
|
return FunctionReturnEntity<string>.Success("成功");
|
}
|
else
|
{
|
return FunctionReturnEntity<string>.Fail("失败:" + errMsg);
|
}
|
}
|
}
|
}
|