zhuangpei-mesbackend/DOAN.Service/Mobile/PreparationTaskService.cs

270 lines
11 KiB
C#

using Infrastructure.Attribute;
using DOAN.Service.Mobile.IService;
using DOAN.Model.MES.mm;
using DOAN.Model.MES.base_;
using DOAN.Model.MES.product;
using DOAN.Model.Mobile.Dto;
using DOAN.Common.Mobile;
using Mapster;
using System;
using DOAN.Model.MES.product.Dto;
using DOAN.Infrastructure;
namespace DOAN.Service.Mobile
{
[AppService(ServiceType = typeof(IPreparationTaskService), ServiceLifetime = LifeTime.Transient)]
public class PreparationTaskService : BaseService<MmPreparationTask>, IPreparationTaskService
{
public List<BaseWorkRoute> GetLines()
{
return Context.Queryable<BaseWorkRoute>().Where(it => it.Status == 1).ToList();
}
public List<ProWorkorder> GetWorkOrderList(DateTime HandleDate, string route_code)
{
HandleDate = HandleDate.ToLocalTime().Date;
return Context.Queryable<ProWorkorder>().Where(it => it.WorkorderDate == HandleDate)
.Where(it => it.LineCode == route_code).ToList();
}
public MaterialModel ParseMaterialCode(string materialCode)
{
//1 解析原码
string materialCode_true = null;
materialCode_true = ParselabelHelper.ParseLabel01(materialCode);
//1 返回 物料详情
BaseMaterialList baseMaterial = Context.Queryable<BaseMaterialList>().Where(it => it.Code == materialCode_true).First();
TypeAdapterConfig<BaseMaterialList, MaterialModel>.NewConfig()
.Map(dest => dest.MaterialName, (src) => src.Name)
.Map(dest => dest.Partnumber, (src) => src.Code)
.Map(dest => dest.Batchnumber, (src) => "")
.Map(dest => dest.quantity, (src) => 0)
.Map(dest => dest.Code, (src) => "")
.Map(dest => dest.Color, (src) => src.Color)
.Map(dest => dest.Specification, (src) => src.Specification)
.Map(dest => dest.Unit, (src) => src.Unit)
.Map(dest => dest.Description, (src) => src.Description);
return baseMaterial.Adapt<MaterialModel>();
}
public List<MmPreparationTask> GetWorkorderTask(string workorder)
{
return Context.Queryable<MmPreparationTask>().Where(it => it.FkWorkorder == workorder).OrderBy(it => it.SerialNum).ToList();
}
public List<MmTaskMaterialInfo> GetTaskInfos(string task_code)
{
return Context.Queryable<MmTaskMaterialInfo>().Where(it => it.FkTaskCode == task_code).ToList();
}
public int GenerateIngredientTask(IngredientTaskRequestForm form)
{
int result = 0;
// 生成任务
MmPreparationTask Max_task = Context.Queryable<MmPreparationTask>()
.Where(it => it.FkWorkorder == form.workorder)
.OrderByDescending(it => it.SerialNum)
.First();
int SerialNumMax = 0;
if (Max_task != null)
{
SerialNumMax = Max_task.SerialNum;
}
MmPreparationTask newMmPreparationTask = new MmPreparationTask();
newMmPreparationTask.Id = XueHua;
newMmPreparationTask.SerialNum = SerialNumMax + 1;
newMmPreparationTask.TaskCode = form.workorder + "_" + newMmPreparationTask.SerialNum;
newMmPreparationTask.FkWorkorder = form.workorder;
newMmPreparationTask.PreparationStatus = 2;
newMmPreparationTask.CreatedBy = "PDA";
newMmPreparationTask.CreatedTime = DateTime.Now;
List<MmTaskMaterialInfo> TaskDetailsinserted = new List<MmTaskMaterialInfo>();
//生成配料任务详情
if (form.Ingredient_task != null && form.Ingredient_task.Count() > 0)
{
foreach (var item in form.Ingredient_task)
{
MmTaskMaterialInfo materialInfo = new MmTaskMaterialInfo();
materialInfo.Id = XueHua;
materialInfo.FkTaskCode = newMmPreparationTask.TaskCode;
materialInfo.MaterialCode = item.MaterialCode;
materialInfo.MaterialName = item.MaterialName;
materialInfo.Specification = item.Specification;
materialInfo.Quantity = item.Quantity;
materialInfo.Unit = item.Unit;
materialInfo.CreatedBy = "PDA";
materialInfo.CreatedTime = DateTime.Now;
TaskDetailsinserted.Add(materialInfo);
}
}
UseTran2(() =>
{
Context.Insertable(TaskDetailsinserted).ExecuteCommand();
result = Context.Insertable(newMmPreparationTask).ExecuteCommand();
});
return result;
}
public List<CheckMaterialResult> CheckMaterialIsInDateAndLine(CheckMaterialDto checkMaterial)
{
List<CheckMaterialResult> CheckMaterialResultList = new List<CheckMaterialResult>();
//查询 日期 线 下所有工单
if (checkMaterial.HandelDate.Kind == DateTimeKind.Utc)
{
checkMaterial.HandelDate = checkMaterial.HandelDate.ToLocalTime();
}
checkMaterial.HandelDate = checkMaterial.HandelDate.Date;
// 查询工单下所有bom
List<BaseMaterialBom> bomss = Context.Queryable<BaseMaterialBom>().Where(ib => SqlFunc.Subqueryable<ProWorkorder>().Where(it => it.WorkorderDate == checkMaterial.HandelDate)
.Where(it => it.LineCode == checkMaterial.LineCode).Where(it => it.ProductionCode == ib.InvCode).Any()).ToList();
if (bomss != null && bomss.Count > 0)
{
if (checkMaterial.MatetialCodeArray.Length > 0)
{
for (int i = 0; i < checkMaterial.MatetialCodeArray.Length; i++)
{
if (bomss.Any(it => it.SubInvCode == checkMaterial.MatetialCodeArray[i]))
{
//materialResult.result = true;
}
else
{
CheckMaterialResult materialResult = new CheckMaterialResult();
materialResult.MatetialCode = checkMaterial.MatetialCodeArray[i];
materialResult.result = false;
CheckMaterialResultList.Add(materialResult);
}
}
}
}
return CheckMaterialResultList;
}
public bool CheckAnyPerationMaterialRequirement(DateTime handleDate, string line_code)
{
handleDate = ConvertDateTime.ConvertLocalDate(handleDate);
return Context.Queryable<ProWorkorder>().Where(it => it.WorkorderDate == handleDate)
.Where(it => it.LineCode == line_code).Any();
}
public List<MmPreparationTaskLine> SearchTaskByLine(string lineCode, DateTime hadleDate)
{
return Context.Queryable<MmPreparationTaskLine>().Where(it => it.LineCode == lineCode)
.Where(it => it.TaskDate == hadleDate).OrderBy(it => it.SerialNum).ToList();
}
public List<MmTaskMaterialInfoByLine> GetTaskInfosByLine(string task_code)
{
return Context.Queryable<MmTaskMaterialInfoByLine>().Where(it => it.FkTaskCode == task_code).ToList();
}
public int GenerateIngredientTaskByline(IngredientTaskRequestForm2 form)
{
int result = 0;
// 生成任务
form.HandleDate = form.HandleDate.ToLocalTime().Date;
MmPreparationTaskLine Max_task = Context.Queryable<MmPreparationTaskLine>()
.Where(it => it.LineCode == form.lineCode)
.Where(it => it.TaskDate == form.HandleDate)
.OrderByDescending(it => it.SerialNum)
.First();
int SerialNumMax = 0;
if (Max_task != null)
{
SerialNumMax = Max_task.SerialNum.Value;
}
MmPreparationTaskLine newMmPreparationTask = new MmPreparationTaskLine();
newMmPreparationTask.Id = XueHua;
newMmPreparationTask.SerialNum = SerialNumMax + 1;
newMmPreparationTask.TaskCode = form.HandleDate.ToString("yyyyMMdd") + "_" + form.lineCode + "_" + newMmPreparationTask.SerialNum;
newMmPreparationTask.LineCode = form.lineCode;
newMmPreparationTask.TaskDate = form.HandleDate;
newMmPreparationTask.PreparationStatus = 2;
newMmPreparationTask.CreatedBy = "PDA";
newMmPreparationTask.CreatedTime = DateTime.Now;
List<MmTaskMaterialInfoByLine> TaskDetailsinserted = new List<MmTaskMaterialInfoByLine>();
//生成配料任务详情
if (form.Ingredient_task != null && form.Ingredient_task.Count() > 0)
{
foreach (var item in form.Ingredient_task)
{
MmTaskMaterialInfoByLine materialInfo = new MmTaskMaterialInfoByLine();
materialInfo.Id = XueHua;
materialInfo.FkTaskCode = newMmPreparationTask.TaskCode;
materialInfo.MaterialCode = item.MaterialCode;
materialInfo.MaterialName = item.MaterialName;
materialInfo.Specification = item.Specification;
materialInfo.Quantity = item.Quantity;
materialInfo.Unit = item.Unit;
materialInfo.CreatedBy = "PDA";
materialInfo.CreatedTime = DateTime.Now;
TaskDetailsinserted.Add(materialInfo);
}
}
UseTran2(() =>
{
Context.Insertable(TaskDetailsinserted).ExecuteCommand();
result = Context.Insertable(newMmPreparationTask).ExecuteCommand();
});
return result;
}
public int DeletePreparationMaterialTask(string task_code)
{
int rt = 0;
UseTran2(() =>
{
rt = Context.Deleteable<MmPreparationTaskLine>().Where(it => it.TaskCode == task_code).ExecuteCommand();
Context.Deleteable<MmTaskMaterialInfoByLine>().Where(it => it.FkTaskCode == task_code).ExecuteCommand();
});
return rt;
}
public int DeletePreparationMaterialInfo(string id)
{
return Context.Deleteable<MmTaskMaterialInfoByLine>().Where(it => it.Id == id).ExecuteCommand();
}
public int UpdatePreParationMaterialNum(string id, decimal num)
{
return Context.Updateable<MmTaskMaterialInfoByLine>().Where(it => it.Id == id).SetColumns(it => it.Quantity == num).ExecuteCommand();
}
}
}