This commit is contained in:
alex
2023-07-19 16:05:47 +08:00
8 changed files with 368 additions and 119 deletions

View File

@@ -12,6 +12,18 @@ public static class DictConst
/// </summary> /// </summary>
public const string RegionCategoryStationCode = "workstation"; public const string RegionCategoryStationCode = "workstation";
/// <summary> /// <summary>
/// 区域类型-公司Code
/// </summary>
public const string RegionCategoryCompanyCode = "company";
/// <summary>
/// 区域类型-车间Code
/// </summary>
public const string RegionCategoryWorkshopCode = "workshop";
/// <summary>
/// 区域类型-产线Code
/// </summary>
public const string RegionCategoryWorklineCode = "workline";
/// <summary>
/// 备品备件类型 /// 备品备件类型
/// </summary> /// </summary>
public const string SparePartsType = "SparePartsType"; public const string SparePartsType = "SparePartsType";

View File

@@ -0,0 +1,42 @@
namespace Tnb.EquipMgr.Entities.Dto
{
public class WorklineAndEquipTreeOutput
{
/// <summary>
/// 获取节点id.
/// </summary>
/// <returns></returns>
public string id { get; set; }
/// <summary>
/// 标题
/// </summary>
public string title { get; set; }
/// <summary>
/// 获取节点父id.
/// </summary>
/// <returns></returns>
public string parentId { get; set; }
/// <summary>
/// 是否有子级.
/// </summary>
public bool hasChildren { get; set; }
/// <summary>
/// 设置Children.
/// </summary>
public List<WorklineAndEquipTreeOutput>? children { get; set; } = new List<WorklineAndEquipTreeOutput>();
/// <summary>
/// 子节点数量.
/// </summary>
public int num { get; set; }
/// <summary>
/// 是否为子节点.
/// </summary>
public bool isLeaf { get; set; } = false;
}
}

View File

@@ -17,5 +17,11 @@ namespace Tnb.EquipMgr.Interfaces
/// <param name="dic"></param> /// <param name="dic"></param>
/// <returns></returns> /// <returns></returns>
public Task<dynamic> GetListByTypeId(Dictionary<string, string> dic); public Task<dynamic> GetListByTypeId(Dictionary<string, string> dic);
/// <summary>
/// 获取产线和注塑挤出设备树
/// </summary>
/// <returns></returns>
public Task<dynamic> GetWorklineAndEquipTree(Dictionary<string,string> dic);
} }
} }

View File

@@ -1,13 +1,18 @@
using Aop.Api.Domain; using Aop.Api.Domain;
using Aspose.Cells.Drawing; using Aspose.Cells.Drawing;
using JNPF.Common.Filter; using JNPF.Common.Filter;
using JNPF.Common.Security;
using JNPF.DependencyInjection; using JNPF.DependencyInjection;
using JNPF.DynamicApiController; using JNPF.DynamicApiController;
using JNPF.Extras.CollectiveOAuth.Models;
using JNPF.Systems.Entitys.Permission;
using JNPF.VisualDev; using JNPF.VisualDev;
using JNPF.VisualDev.Entitys.Dto.VisualDevModelData; using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
using Mapster; using Mapster;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Senparc.NeuChar.ApiHandlers;
using SqlSugar; using SqlSugar;
using Tnb.BasicData;
using Tnb.EquipMgr.Entities; using Tnb.EquipMgr.Entities;
using Tnb.EquipMgr.Entities.Dto; using Tnb.EquipMgr.Entities.Dto;
using Tnb.EquipMgr.Interfaces; using Tnb.EquipMgr.Interfaces;
@@ -78,5 +83,67 @@ namespace Tnb.EquipMgr
return await _repository.AsSugarClient().Queryable<EqpEquipment>().Where(x => typeIdArr.Contains(x.equip_type_id)) return await _repository.AsSugarClient().Queryable<EqpEquipment>().Where(x => typeIdArr.Contains(x.equip_type_id))
.ToListAsync(); .ToListAsync();
} }
[HttpPost]
public async Task<dynamic> GetWorklineAndEquipTree(Dictionary<string,string> dic)
{
string equipTypes = dic.ContainsKey("equipTypes") ? dic["equipTypes"] : "";
var db = _repository.AsSugarClient();
var queryable1 = db.Queryable<OrganizeEntity>()
.Where((a) => a.DeleteMark == null && a.Category==DictConst.RegionCategoryWorkshopCode)
.Select((a) => new WorklineAndEquipTreeOutput()
{
id = a.Id,
title = a.EnCode+"/"+a.FullName,
parentId = "0",
hasChildren = SqlFunc.Subqueryable<OrganizeEntity>().Where(b=>b.ParentId==a.Id && b.DeleteMark==null && b.Category==DictConst.RegionCategoryWorklineCode).Any(),
num = SqlFunc.Subqueryable<OrganizeEntity>().Where(b=>b.ParentId==a.Id && b.DeleteMark==null && b.Category==DictConst.RegionCategoryWorklineCode).Count(),
isLeaf = false,
children = SqlFunc.Subqueryable<OrganizeEntity>().Where(b=>b.ParentId==a.Id && b.DeleteMark==null && b.Category==DictConst.RegionCategoryWorklineCode).ToList(b=>new WorklineAndEquipTreeOutput()
{
id = b.Id,
title = b.EnCode+"/"+b.FullName,
parentId = b.ParentId,
hasChildren = false,
num = 0,
isLeaf = true,
})
});
List<WorklineAndEquipTreeOutput> list2 = new List<WorklineAndEquipTreeOutput>();
if (!string.IsNullOrEmpty(equipTypes))
{
string[] equipTypeArr = equipTypes.Split(",");
list2 = await db.Queryable<EqpEquipType>()
.Where((a) => equipTypeArr.Contains(a.code))
.Select((a) => new WorklineAndEquipTreeOutput()
{
id = a.id,
title = a.name,
parentId = "0",
hasChildren = SqlFunc.Subqueryable<EqpEquipment>().Where(b=>b.equip_type_id==a.id).Any(),
num = SqlFunc.Subqueryable<EqpEquipment>().Where(b=>b.equip_type_id==a.id).Count(),
isLeaf = false,
children = SqlFunc.Subqueryable<EqpEquipment>().Where(b=>b.equip_type_id==a.id).ToList(b=>new WorklineAndEquipTreeOutput()
{
id = b.id,
title = b.code+"/"+b.name,
parentId = b.equip_type_id,
hasChildren = false,
num = 0,
isLeaf = true,
})
}).ToListAsync();
}
// var list = await db.UnionAll(queryable1, queryable2).ToListAsync();
var list1 = await queryable1.ToListAsync();
list1.AddRange(list2);
return new AuthResponse(200, "", new Dictionary<string,object>()
{
["list"] = list1,
});
}
} }
} }

View File

@@ -0,0 +1,21 @@
namespace Tnb.ProductionMgr.Entities.Dto.PrdManage
{
/// <summary>
/// 任务单调整列表输出
/// </summary>
public class WorkOrderAdjustmentListOutput
{
public string id { get; set; }
public string mo_task_code { get; set; }
public string mo_task_status { get; set; }
public string material_id { get; set; }
public string mold_id { get; set; }
public int? plan_qty { get; set; }
public int? complete_qty { get; set; }
public int? scheduled_qty { get; set; }
public string workline_id { get; set; }
public string estimated_start_date { get; set; }
public string estimated_end_date { get; set; }
public string eqp_id { get; set; }
}
}

View File

@@ -20,6 +20,11 @@ using Tnb.ProductionMgr.Interfaces;
using Aspose.Cells.Drawing; using Aspose.Cells.Drawing;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using JNPF.Common.Extension; using JNPF.Common.Extension;
using JNPF.Common.Filter;
using JNPF.Systems.Entitys.System;
using Newtonsoft.Json;
using Senparc.Weixin.Work.AdvancedAPIs.OaDataOpen;
using Tnb.BasicData;
namespace Tnb.ProductionMgr namespace Tnb.ProductionMgr
{ {
@@ -46,54 +51,82 @@ namespace Tnb.ProductionMgr
} }
// private async Task<dynamic> GetList(VisualDevModelListQueryInput input)
// {
// var db = _repository.AsSugarClient();
// VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true);
// var data = await _runService.GetListResult(templateEntity, input);
// if (data?.list?.Count > 0)
// {
// var scheduledTypeField = nameof(PrdMoTask.schedule_type);
// data.list = data.list.Where(it => it[scheduledTypeField].IsNotEmptyOrNull() && it[scheduledTypeField].ParseToInt() == 1).ToList();
// foreach (var row in data.list)
// {
// var dic = row.ToDictionary(x => x.Key, x => x.Value);
// var pkName = "material_id";
// if (dic.ContainsKey(pkName))
// {
// var materialId = dic[pkName]?.ToString();
// var material = await db.Queryable<BasMaterial>().FirstAsync(it => it.id == materialId);
// if (material != null)
// {
// row["material_id"] = $"{material.code}/{material.name}";
// row["materialid"] = material.id;
// }
// }
// //模具
// if (dic.ContainsKey("mold_id"))
// {
// var moldId = dic["mold_id"]?.ToString();
// var mold = await db.Queryable<ToolMolds>().FirstAsync(it => it.id == moldId);
// if (mold != null)
// {
// row["mold_id"] = $"{mold.mold_code}/{mold.mold_name}";
// row["moldid"] = mold.id;
// }
// }
// //设备
// if (dic.ContainsKey("eqp_id"))
// {
// var eqpId = dic["eqp_id"]?.ToString();
// var eqp = await db.Queryable<EqpEquipment>().FirstAsync(it => it.id == eqpId);
// if (eqp != null)
// {
// row["eqp_id"] = $"{eqp.code}/{eqp.name}";
// row["eqpid"] = eqp.id;
// }
// }
// }
// }
// return data!;
// }
private async Task<dynamic> GetList(VisualDevModelListQueryInput input) private async Task<dynamic> GetList(VisualDevModelListQueryInput input)
{ {
var db = _repository.AsSugarClient(); var db = _repository.AsSugarClient();
VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); Dictionary<string, string> queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject<Dictionary<string, string>>(input.queryJson) : new Dictionary<string, string>();
var data = await _runService.GetListResult(templateEntity, input); string moTaskCode = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : "";
if (data?.list?.Count > 0) string moTaskStatus = queryJson.ContainsKey("mo_task_status") ? queryJson["mo_task_status"].ToString() : "";
{ var result = await db.Queryable<PrdMoTask>()
var scheduledTypeField = nameof(PrdMoTask.schedule_type); .LeftJoin<BasMaterial>((a, b) => a.material_id == b.id)
data.list = data.list.Where(it => it[scheduledTypeField].IsNotEmptyOrNull() && it[scheduledTypeField].ParseToInt() == 1).ToList(); .LeftJoin<DictionaryTypeEntity>((a, b, c) => c.EnCode == DictConst.TaskStatus)
foreach (var row in data.list) .LeftJoin<DictionaryDataEntity>((a, b, c, d) => c.Id == d.DictionaryTypeId && a.mo_task_status == d.EnCode)
.LeftJoin<ToolMolds>((a,b,c,d,e)=>a.mold_id==e.id)
.LeftJoin<PrdMo>((a,b,c,d,e,f)=>a.mo_id==f.id)
.WhereIF(!string.IsNullOrEmpty(moTaskCode), (a, b, c, d) => a.mo_task_code.Contains(moTaskCode))
.WhereIF(!string.IsNullOrEmpty(moTaskStatus), (a, b, c, d) => a.mo_task_status == moTaskStatus)
.Where((a,b,c,d,e,f)=>a.schedule_type==1)
.Select((a, b, c, d,e,f) => new PrdMoTask
{ {
var dic = row.ToDictionary(x => x.Key, x => x.Value); id = a.id,
var pkName = "material_id"; mo_task_code = a.mo_task_code,
if (dic.ContainsKey(pkName)) material_id = b.code+"/"+b.name,
{ mold_id = e.mold_code+"/"+e.mold_name,
var materialId = dic[pkName]?.ToString(); mo_task_status = d.FullName,
var material = await db.Queryable<BasMaterial>().FirstAsync(it => it.id == materialId); plan_qty = f.plan_qty,
if (material != null) scheduled_qty = a.scheduled_qty,
{ }).ToPagedListAsync(input.currentPage, input.pageSize);
row["material_id"] = $"{material.code}/{material.name}"; return PageResult<PrdMoTask>.SqlSugarPageResult(result);
row["materialid"] = material.id;
}
}
//模具
if (dic.ContainsKey("mold_id"))
{
var moldId = dic["mold_id"]?.ToString();
var mold = await db.Queryable<ToolMolds>().FirstAsync(it => it.id == moldId);
if (mold != null)
{
row["mold_id"] = $"{mold.mold_code}/{mold.mold_name}";
row["moldid"] = mold.id;
}
}
//设备
if (dic.ContainsKey("eqp_id"))
{
var eqpId = dic["eqp_id"]?.ToString();
var eqp = await db.Queryable<EqpEquipment>().FirstAsync(it => it.id == eqpId);
if (eqp != null)
{
row["eqp_id"] = $"{eqp.code}/{eqp.name}";
row["eqpid"] = eqp.id;
}
}
}
}
return data!;
} }
} }
} }

View File

@@ -888,6 +888,7 @@ namespace Tnb.ProductionMgr
if (subTaskList?.Count > 0) if (subTaskList?.Count > 0)
{ {
List<PrdMoTask> subMoTasks = new(); List<PrdMoTask> subMoTasks = new();
List<PrdTaskLog> subMoTaskLogs = new();
foreach (var item in subTaskList) foreach (var item in subTaskList)
{ {
PrdMoTask subMoTask = new(); PrdMoTask subMoTask = new();
@@ -909,6 +910,20 @@ namespace Tnb.ProductionMgr
subMoTask.create_id = _userManager.UserId; subMoTask.create_id = _userManager.UserId;
subMoTask.create_time = DateTime.Now; subMoTask.create_time = DateTime.Now;
subMoTasks.Add(subMoTask); subMoTasks.Add(subMoTask);
var subTaskLog = new PrdTaskLog();
var subMaterial = await _db.Queryable<BasMaterial>().SingleAsync(x => x.id == item.material_id);
subTaskLog.id = SnowflakeIdHelper.NextId();
subTaskLog.mo_code = (await _db.Queryable<PrdMo>().FirstAsync(it => it.id == input.mo_id))?.mo_code!;
subTaskLog.item_code = subMaterial?.code!;
subTaskLog.item_standard = subMaterial?.material_standard!;
subTaskLog.status = DictConst.ToBeScheduledEncode;
subTaskLog.operator_name = _userManager.RealName;
subTaskLog.create_id = _userManager.UserId;
subTaskLog.create_time = DateTime.Now;
subTaskLog.mo_task_id = subMoTask.id;
subTaskLog.mo_task_code = subMoTask.mo_task_code!;
subMoTaskLogs.Add(subTaskLog);
} }
//根据生产任务编号生成子任务编号 //根据生产任务编号生成子任务编号
if (moTask.mo_task_code!.IsNotEmptyOrNull()) if (moTask.mo_task_code!.IsNotEmptyOrNull())
@@ -920,6 +935,7 @@ namespace Tnb.ProductionMgr
} }
} }
row = await _db.Insertable(subMoTasks).ExecuteCommandAsync(); row = await _db.Insertable(subMoTasks).ExecuteCommandAsync();
await _db.Insertable(subMoTaskLogs).ExecuteCommandAsync();
} }
await _db.Ado.CommitTranAsync(); await _db.Ado.CommitTranAsync();
} }
@@ -1575,49 +1591,93 @@ namespace Tnb.ProductionMgr
} }
return instance; return instance;
} }
// private async Task<dynamic> GetList(VisualDevModelListQueryInput input)
// {
// var db = _repository.AsSugarClient();
// VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true);
// var data = await _runService.GetListResult(templateEntity, input);
// if (data?.list?.Count > 0)
// {
// foreach (var row in data.list)
// {
// var dic = row.ToDictionary(x => x.Key, x => x.Value);
// var pkName = "material_id_id";
// if (dic.ContainsKey(pkName))
// {
// var materialId = dic[pkName]?.ToString();
// var material = await db.Queryable<BasMaterial>().FirstAsync(it => it.id == materialId);
// if (material != null)
// {
// row["material_id"] = $"{material.code}/{material.name}";
// }
// }
// //模具
// if (dic.ContainsKey("mold_id"))
// {
// var moldId = dic["mold_id"]?.ToString();
// var mold = await db.Queryable<ToolMolds>().FirstAsync(it => it.id == moldId);
// if (mold != null)
// {
// row["mold_id"] = $"{mold.mold_code}/{mold.mold_name}";
// }
// }
// //设备
// if (dic.ContainsKey("eqp_id"))
// {
// var eqpId = dic["eqp_id"]?.ToString();
// var eqp = await db.Queryable<EqpEquipment>().FirstAsync(it => it.id == eqpId);
// if (eqp != null)
// {
// row["eqp_id"] = $"{eqp.code}/{eqp.name}";
// }
// }
// }
// }
// return data!;
// }
private async Task<dynamic> GetList(VisualDevModelListQueryInput input) private async Task<dynamic> GetList(VisualDevModelListQueryInput input)
{ {
var db = _repository.AsSugarClient(); var db = _repository.AsSugarClient();
VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); Dictionary<string, string> queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject<Dictionary<string, string>>(input.queryJson) : new Dictionary<string, string>();
var data = await _runService.GetListResult(templateEntity, input); string moTaskCode = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : "";
if (data?.list?.Count > 0) string eqpId = queryJson.ContainsKey("eqp_id") ? queryJson["eqp_id"].ToString() : "";
List<string> worklineIds = new List<string>();
List<string> equipIds = new List<string>();
if (!string.IsNullOrEmpty(eqpId))
{ {
foreach (var row in data.list) worklineIds = await db.Queryable<OrganizeEntity>().Where(x => x.ParentId == eqpId && x.Category==DictConst.RegionCategoryWorklineCode && x.DeleteMark==null).Select(x=>x.Id).ToListAsync();
{ equipIds = await db.Queryable<EqpEquipment>().Where(x => x.equip_type_id == eqpId).Select(x => x.id).ToListAsync();
var dic = row.ToDictionary(x => x.Key, x => x.Value);
var pkName = "material_id_id";
if (dic.ContainsKey(pkName))
{
var materialId = dic[pkName]?.ToString();
var material = await db.Queryable<BasMaterial>().FirstAsync(it => it.id == materialId);
if (material != null)
{
row["material_id"] = $"{material.code}/{material.name}";
}
}
//模具
if (dic.ContainsKey("mold_id"))
{
var moldId = dic["mold_id"]?.ToString();
var mold = await db.Queryable<ToolMolds>().FirstAsync(it => it.id == moldId);
if (mold != null)
{
row["mold_id"] = $"{mold.mold_code}/{mold.mold_name}";
}
}
//设备
if (dic.ContainsKey("eqp_id"))
{
var eqpId = dic["eqp_id"]?.ToString();
var eqp = await db.Queryable<EqpEquipment>().FirstAsync(it => it.id == eqpId);
if (eqp != null)
{
row["eqp_id"] = $"{eqp.code}/{eqp.name}";
}
}
}
} }
return data!;
var result = await db.Queryable<PrdMoTask>()
.LeftJoin<BasMaterial>((a, b) => a.material_id == b.id)
.LeftJoin<DictionaryTypeEntity>((a, b, c) => c.EnCode == DictConst.TaskStatus)
.LeftJoin<DictionaryDataEntity>((a, b, c, d) => c.Id == d.DictionaryTypeId && a.mo_task_status == d.EnCode)
.LeftJoin<ToolMolds>((a,b,c,d,e)=>a.mold_id==e.id)
.LeftJoin<PrdMo>((a,b,c,d,e,f)=>a.mo_id==f.id)
.LeftJoin<OrganizeEntity>((a,b,c,d,e,f,g)=>a.workline_id==g.Id)
.LeftJoin<EqpEquipment>((a,b,c,d,e,f,g,h)=>a.eqp_id==h.id)
.WhereIF(!string.IsNullOrEmpty(moTaskCode), (a, b, c, d) => a.mo_task_code.Contains(moTaskCode))
.WhereIF(!string.IsNullOrEmpty(eqpId) && equipIds.Count<=0 && worklineIds.Count<=0, (a, b, c, d) => a.workline_id==eqpId || a.eqp_id==eqpId)
.WhereIF(worklineIds.Count>0,(a, b, c, d)=>worklineIds.Contains(a.workline_id))
.WhereIF(equipIds.Count>0,(a, b, c, d)=>equipIds.Contains(a.eqp_id))
.Select((a, b, c, d,e,f,g,h) => new WorkOrderAdjustmentListOutput
{
id = a.id,
mo_task_code = a.mo_task_code,
material_id = b.code+"/"+b.name,
mold_id = e.mold_code+"/"+e.mold_name,
mo_task_status = d.FullName,
plan_qty = f.plan_qty,
complete_qty = SqlFunc.IsNull(a.reported_work_qty,0) + SqlFunc.IsNull(a.scrap_qty,0),
scheduled_qty = a.scheduled_qty,
workline_id = a.workline_id==null ? "" :g.EnCode+"/"+g.FullName,
estimated_start_date = a.estimated_start_date==null ? "" : a.estimated_start_date.Value.ToString("yyyy-MM-dd"),
estimated_end_date = a.estimated_end_date==null ? "" : a.estimated_end_date.Value.ToString("yyyy-MM-dd"),
eqp_id = a.eqp_id==null ? "" : h.code+"/"+h.name,
}).ToPagedListAsync(input.currentPage, input.pageSize);
return PageResult<WorkOrderAdjustmentListOutput>.SqlSugarPageResult(result);
} }
/// <summary> /// <summary>

View File

@@ -104,7 +104,8 @@ namespace Tnb.WarehouseMgr
//根据每个载具的起始库位做路径运算 //根据每个载具的起始库位做路径运算
if (carrys?.Count > 0) if (carrys?.Count > 0)
{ {
for (int i = 0; i < setQty.qty; i++) int min = (carrys.Count > setQty.qty) ? setQty.qty : carrys.Count;
for (int i = 0; i < min; i++)
{ {
sPoint = await _db.Queryable<WmsPointH>().FirstAsync(it => it.location_id == carrys[i].location_id); sPoint = await _db.Queryable<WmsPointH>().FirstAsync(it => it.location_id == carrys[i].location_id);
@@ -121,26 +122,29 @@ namespace Tnb.WarehouseMgr
var sPoint = it.FirstOrDefault(); var sPoint = it.FirstOrDefault();
var ePoint = it.LastOrDefault(); var ePoint = it.LastOrDefault();
WmsPretaskH preTask = new(); WmsPretaskH preTask = new()
preTask.org_id = _userManager.User.OrganizeId; {
preTask.startlocation_id = sPoint?.location_id!; org_id = _userManager.User.OrganizeId,
preTask.startlocation_code = sPoint?.location_code!; startlocation_id = sPoint?.location_id!,
preTask.endlocation_id = ePoint?.location_id!; startlocation_code = sPoint?.location_code!,
preTask.endlocation_code = ePoint?.location_code!; endlocation_id = ePoint?.location_id!,
preTask.start_floor = sPoint?.floor.ToString(); endlocation_code = ePoint?.location_code!,
preTask.end_floor = ePoint?.floor.ToString(); start_floor = sPoint?.floor.ToString(),
preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); end_floor = ePoint?.floor.ToString(),
preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(),
preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSEPTYOUTSTK_ID; status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID,
preTask.task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID; biz_type = WmsWareHouseConst.BIZTYPE_WMSEPTYOUTSTK_ID,
preTask.carry_id = carrys![i].id; task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID,
preTask.carry_code = carrys![i].carry_code; carry_id = carrys![i].id,
preTask.area_id = sPoint?.area_id!; carry_code = carrys![i].carry_code,
preTask.area_code = it.Key; area_id = sPoint?.area_id!,
preTask.require_id = input.data["ReturnIdentity"].ToString(); area_code = it.Key,
preTask.require_code = input.data[nameof(preTask.bill_code)]?.ToString()!; require_id = input.data["ReturnIdentity"].ToString(),
preTask.create_id = _userManager.UserId; require_code = input.data[nameof(preTask.bill_code)]?.ToString()!,
preTask.create_time = DateTime.Now; create_id = _userManager.UserId,
create_time = DateTime.Now
};
return preTask; return preTask;
}).ToList(); }).ToList();
//更新页面 //更新页面
@@ -153,24 +157,28 @@ namespace Tnb.WarehouseMgr
} }
if (isOk) if (isOk)
{ {
var preTaskUpInput = new GenPreTaskUpInput(); GenPreTaskUpInput preTaskUpInput = new()
preTaskUpInput.RquireId = input.data["ReturnIdentity"].ToString()!; {
preTaskUpInput.CarryId = carrys![i].id; RquireId = input.data["ReturnIdentity"].ToString()!,
preTaskUpInput.CarryStartLocationId = points!.FirstOrDefault()!.location_id!; CarryId = carrys![i].id,
preTaskUpInput.CarryStartLocationCode = points!.FirstOrDefault()!.location_code!; CarryStartLocationId = points!.FirstOrDefault()!.location_id!,
preTaskUpInput.LocationIds = points!.Select(x => x.location_id).ToList()!; CarryStartLocationCode = points!.FirstOrDefault()!.location_code!,
LocationIds = points!.Select(x => x.location_id).ToList()!
};
//更新明细表 //更新明细表
WmsEmptyOutstockD wmsEmptyOutstockD = new(); WmsEmptyOutstockD wmsEmptyOutstockD = new()
wmsEmptyOutstockD.id = SnowflakeIdHelper.NextId(); {
wmsEmptyOutstockD.bill_id = preTaskUpInput.RquireId; id = SnowflakeIdHelper.NextId(),
wmsEmptyOutstockD.biz_type = WmsWareHouseConst.BIZTYPE_WMSEPTYOUTSTK_ID; bill_id = preTaskUpInput.RquireId,
wmsEmptyOutstockD.location_id = ePoint.location_id!; biz_type = WmsWareHouseConst.BIZTYPE_WMSEPTYOUTSTK_ID,
wmsEmptyOutstockD.status = WmsWareHouseConst.BILLSTATUS_ON_ID; location_id = ePoint.location_id!,
wmsEmptyOutstockD.carry_id = carrys[i].id; status = WmsWareHouseConst.BILLSTATUS_ON_ID,
wmsEmptyOutstockD.carry_code = carrys[i].carry_code; carry_id = carrys[i].id,
wmsEmptyOutstockD.create_id = _userManager.UserId; carry_code = carrys[i].carry_code,
wmsEmptyOutstockD.create_time = DateTime.Now; create_id = _userManager.UserId,
create_time = DateTime.Now
};
await _db.Insertable(wmsEmptyOutstockD) await _db.Insertable(wmsEmptyOutstockD)
.ExecuteCommandAsync(); .ExecuteCommandAsync();