using iWareCommon.Common.Service;
|
using iWareCommon.Utils;
|
using iWareDataCore.BASE.Entity;
|
using iWareDataCore.ORM;
|
using iWareDataCore.Properties;
|
using iWareDataCore.TASK.Dao;
|
using iWareDataCore.TASK.Entity;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace iWareDataCore.TASK.Service
|
{
|
public class MainTaskService : CommonService<MainTaskEntity, TASKMainTask, DbModelCore>
|
{
|
private static object Lock = new object();
|
|
private MainTaskService() : base(MainTaskDao.GetInstance()) { }
|
|
private static MainTaskService Instance = null;
|
|
/// <summary>
|
/// 获取单例的方法
|
/// </summary>
|
/// <returns>用户服务的单例实体</returns>
|
public static MainTaskService GetInstance()
|
{
|
|
if (Instance == null)
|
{
|
lock (Lock)
|
{
|
if (Instance == null)
|
{
|
Instance = new MainTaskService();
|
}
|
}
|
}
|
return Instance;
|
}
|
|
/// <summary>
|
/// 根据物料号,任务类型获取主任务详细信息
|
/// </summary>
|
/// <param name="materialCode">物料号</param>
|
/// <param name="taskType">主任务类型(堆垛机/输送机任务)</param>
|
/// <param name="msg"></param>
|
/// <returns></returns>
|
public List<string> QueryByCode(string term, int size, out string msg)
|
{
|
using (var dbModel = new DbModelCore())
|
{
|
try
|
{
|
msg = "";
|
|
if (string.IsNullOrEmpty(term))
|
{
|
return new List<string>();
|
}
|
|
var mainTask = dbModel.TASKMainTasks.Select(x => new { x.id, x.materialcode, x.tasktype, x.sendtime }).OrderByDescending(x => x.sendtime).Where(x => x.materialcode.StartsWith(term)).Skip(0).Take(size).ToList();
|
|
var mList = new List<string>();
|
|
mainTask.ForEach(x => mList.Add(x.materialcode));
|
|
return mList;
|
|
}
|
catch (Exception ex)
|
{
|
msg = ex.Message;
|
LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "QueryByCode", ex.Message);
|
return null;
|
}
|
}
|
}
|
|
/// <summary>
|
/// 修改优先级
|
/// </summary>
|
/// <param name="ids"></param>
|
/// <param name="priority"></param>
|
/// <param name="msg"></param>
|
/// <returns></returns>
|
public int ChangePriority(List<int> ids, int priority, out string msg)
|
{
|
msg = "";
|
using (var dbModel = new DbModelCore())
|
{
|
try
|
{
|
var ones = dbModel.TASKMainTasks.Where(x => ids.Contains(x.id)).ToList();
|
|
foreach (var one in ones)
|
{
|
one.priority = priority;
|
}
|
|
dbModel.SaveChanges();
|
return ones.Count;
|
}
|
catch (Exception ex)
|
{
|
msg = ex.Message;
|
LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "ChangePriority", ex.Message);
|
return -1;
|
}
|
}
|
}
|
|
|
/// <summary>
|
/// 批量删除
|
/// </summary>
|
/// <param name="ids"></param>
|
/// <param name="msg"></param>
|
/// <returns></returns>
|
public int ChnageMainTaskStatus(List<int> ids, out string msg)
|
{
|
msg = "";
|
using (var dbModel = new DbModelCore())
|
{
|
try
|
{
|
var ones = dbModel.TASKMainTasks.Where(x => ids.Contains(x.id)).ToList();
|
|
foreach (var one in ones)
|
{
|
if (one.status != 0)
|
{
|
msg = one.taskno + "号任务已分解,只能撤销未分解的任务!";
|
break;
|
}
|
one.status = 2;
|
}
|
if (string.IsNullOrEmpty(msg))
|
{
|
dbModel.SaveChanges();
|
return ones.Count;
|
}
|
return -1;
|
}
|
catch (Exception ex)
|
{
|
msg = ex.Message;
|
LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "ChangePriority", ex.Message);
|
return -1;
|
}
|
}
|
}
|
|
|
/// <summary>
|
/// 保存手动出库任务
|
/// </summary>
|
/// <param name="t"></param>
|
/// <param name="remark"></param>
|
/// <param name="msg"></param>
|
/// <returns></returns>
|
public int SaveMainTask(MainTaskEntity t, int type, out string msg)
|
{
|
msg = "";
|
try
|
{
|
using (var dbModel = new DbModelCore())
|
{
|
var task = dbModel.TASKMainTasks.FirstOrDefault(x => x.materialcode == t.MaterialCode && x.tasktype == type);
|
if (task != null)
|
{
|
msg = "此物料已生成主任务!";
|
return 0;
|
}
|
else
|
{
|
dbModel.TASKMainTasks.Add(t.ToOrm());
|
dbModel.SaveChanges();
|
return t.Id;
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
|
msg = ex.Message;
|
return 0;
|
}
|
}
|
|
/// <summary>
|
/// 保存手动出库任务
|
/// </summary>
|
/// <param name="t"></param>
|
/// <param name="remark"></param>
|
/// <param name="msg"></param>
|
/// <returns></returns>
|
public int SaveMainTaskList(List<MainTaskEntity> t, out string msg)
|
{
|
msg = "";
|
try
|
{
|
using (var dbModel = new DbModelCore())
|
{
|
t.ForEach(x =>
|
{
|
var task = dbModel.TASKMainTasks.FirstOrDefault(y => y.materialcode == x.MaterialCode && y.tasktype == x.TaskType);
|
if (task == null)
|
{
|
dbModel.TASKMainTasks.Add(x.ToOrm());
|
}
|
});
|
return dbModel.SaveChanges();
|
}
|
}
|
catch (Exception ex)
|
{
|
|
msg = ex.Message;
|
return 0;
|
}
|
}
|
/// <summary>
|
/// 保存手动出库任务
|
/// </summary>
|
/// <param name="t"></param>
|
/// <param name="remark"></param>
|
/// <param name="msg"></param>
|
/// <returns></returns>
|
public int SaveOutMainTask(List<int> ida, out string msg)
|
{
|
msg = "";
|
try
|
{
|
using (var dbModel = new DbModelCore())
|
{
|
var placematerial = dbModel.BASEPlaceMaterialViews.Where(y => ida.Contains(y.id)).ToList();
|
placematerial.ForEach(x =>
|
{
|
string matercode = x.materialcode;
|
var task = dbModel.TASKMainTasks.FirstOrDefault(y => y.materialcode == matercode && y.tasktype == 1);
|
if (task == null)
|
{
|
MainTaskEntity newtask = new MainTaskEntity()
|
{
|
TaskNo = DateTime.Now.ToFileTime().ToString(),
|
TaskType = 1,
|
MaterialCode = matercode,
|
SysCode = "1",
|
SendTime = DateTime.Now,
|
SourcePlace = x.placecode,
|
ToPlace = "100202",
|
ProcessCardNumber = "",
|
Quantity = 1,
|
Status = 0,
|
DecompositionTime = DateTime.Now,
|
WipStatus = 0,
|
DecompositionTimes = 0,
|
PackageNo = "",
|
IsLots = 0,
|
Priority = 0,
|
};
|
dbModel.TASKMainTasks.Add(newtask.ToOrm());
|
}
|
|
});
|
return dbModel.SaveChanges();
|
}
|
}
|
catch (Exception ex)
|
{
|
LogTextHelper.WriteLine(Resources.LogDir+"@/MainTask/", ex.Message + "传入参数" + ida.ToString());
|
msg = ex.Message;
|
return -1;
|
}
|
}
|
}
|
}
|