This commit is contained in:
2023-06-14 16:52:20 +08:00
parent edf3f135b1
commit 030d375871
7 changed files with 350 additions and 125 deletions

View File

@@ -83,6 +83,14 @@ public static class DictConst
/// </summary> /// </summary>
public const string MoStatusPauseCode = "Pause"; public const string MoStatusPauseCode = "Pause";
/// <summary> /// <summary>
/// 任务单状态码-异常
/// </summary>
public const string MoStatusExceptionCode = "Exception";
/// <summary>
/// 任务单状态码-撤销
/// </summary>
public const string MoStatusRevokeCode = "Revoke";
/// <summary>
/// 模具维修状态码-待维修 /// 模具维修状态码-待维修
/// </summary> /// </summary>
public const string MaintainStatusDWXCode = "DWX"; public const string MaintainStatusDWXCode = "DWX";

View File

@@ -0,0 +1,17 @@
namespace Tnb.ProductionMgr.Entities.Dto.PrdManage
{
public class PrdTaskManageListOutput
{
public string id { get; set; }
public string mo_task_code { get; set; }
public string material_id { get; set; }
public string mold_id { get; set; }
public string eqp_id { get; set; }
public string plan_start_date { get; set; }
public string plan_end_date { get; set; }
public int? plan_qty { get; set; }
public int? complete_qty { get; set; }
public string mo_task_status { get; set; }
public string schedule_type { get; set; }
}
}

View File

@@ -78,6 +78,11 @@ public partial class PrdMoTask : BaseEntity<string>
/// 已完工数量 /// 已完工数量
/// </summary> /// </summary>
public int? complete_qty { get; set; } public int? complete_qty { get; set; }
/// <summary>
/// 已报工数量
/// </summary>
public int? reported_work_qty { get; set; }
/// <summary> /// <summary>
/// 报废数量 /// 报废数量

View File

@@ -38,11 +38,6 @@ namespace Tnb.ProductionMgr.Entities
[SugarColumn(IsIgnore = true)] [SugarColumn(IsIgnore = true)]
public int? icmo_qty { get; set; } public int? icmo_qty { get; set; }
/// <summary> /// <summary>
/// 已报工数量
/// </summary>
[SugarColumn(IsIgnore = true)]
public int? reported_work_qty { get; set; }
/// <summary>
/// 提报数 /// 提报数
/// </summary> /// </summary>
[SugarColumn(IsIgnore = true)] [SugarColumn(IsIgnore = true)]

View File

@@ -303,7 +303,7 @@ namespace Tnb.ProductionMgr
mo_task_qty = SqlFunc.Subqueryable<PrdMoTask>().Where(a => a.mo_id == moId).Count(), mo_task_qty = SqlFunc.Subqueryable<PrdMoTask>().Where(a => a.mo_id == moId).Count(),
estimated_start_date = a.estimated_start_date, estimated_start_date = a.estimated_start_date,
estimated_end_date = a.estimated_end_date, estimated_end_date = a.estimated_end_date,
plan_qty = b.plan_qty, plan_qty = a.scheduled_qty,
complete_qty = a.complete_qty, complete_qty = a.complete_qty,
process_code = SqlFunc.Subqueryable<BasProcess>().Where(it => it.id == a.process_id).Select(it => it.process_code), process_code = SqlFunc.Subqueryable<BasProcess>().Where(it => it.id == a.process_id).Select(it => it.process_code),
process_name = SqlFunc.Subqueryable<BasProcess>().Where(it => it.id == a.process_id).Select(it => it.process_name), process_name = SqlFunc.Subqueryable<BasProcess>().Where(it => it.id == a.process_id).Select(it => it.process_name),
@@ -1103,6 +1103,56 @@ namespace Tnb.ProductionMgr
row = await db.Updateable(icmoItem).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); row = await db.Updateable(icmoItem).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
return (row > 0); return (row > 0);
} }
// /// <summary>
// /// 生产提报
// /// </summary>
// /// <param name="input"></param>
// /// <remarks>
// /// input:
// /// <br/>{
// /// <br/> icmo_id:生产任务ID
// /// <br/> icmo_code:任务单号
// /// <br/> prd_qty生产数量
// /// <br/> reported_work_qty已报工数量
// /// <br/> reported_qty提报数量
// /// <br/> icmo_qty生产任务量
// /// <br/>}
// /// </remarks>
// [HttpPost]
// public async Task<dynamic> PrdReport(PrdReportCrInput input)
// {
// var row = -1;
// var db = _repository.AsSugarClient();
// var report = await db.Queryable<PrdReport>().FirstAsync(it => it.mo_task_id == input.mo_task_id);
//
// //if (report is not null)
// //{
// // report.mo_task_code = input.mo_task_code;
// // report.mo_task_id = input.mo_task_id;
// // report.reported_work_qty += input.reported_qty;
// // report.prd_qty += input.reported_qty;
// //}
// //else
// {
// report = input.Adapt<PrdReport>();
// report.id = SnowflakeIdHelper.NextId();
// report.reported_qty = input.reported_qty;
// report.create_id = _userManager.UserId;
// report.create_time = DateTime.Now;
//
// }
// row = await db.Insertable(report).ExecuteCommandAsync();
// var master = await db.Queryable<PrdReportRecord>().FirstAsync(it => it.mo_task_id == input.mo_task_id);
// if (master != null)
// {
// master.reported_work_qty += input.reported_qty;
// master.completed_qty += input.reported_qty;
// await db.Updateable(master).ExecuteCommandAsync();
// }
// return row > 0;
// }
/// <summary> /// <summary>
/// 生产提报 /// 生产提报
/// </summary> /// </summary>
@@ -1121,36 +1171,49 @@ namespace Tnb.ProductionMgr
[HttpPost] [HttpPost]
public async Task<dynamic> PrdReport(PrdReportCrInput input) public async Task<dynamic> PrdReport(PrdReportCrInput input)
{ {
var row = -1;
var db = _repository.AsSugarClient(); var db = _repository.AsSugarClient();
var report = await db.Queryable<PrdReport>().FirstAsync(it => it.mo_task_id == input.mo_task_id); DbResult<bool> result = await _repository.AsSugarClient().Ado.UseTranAsync(async () =>
//if (report is not null)
//{
// report.mo_task_code = input.mo_task_code;
// report.mo_task_id = input.mo_task_id;
// report.reported_work_qty += input.reported_qty;
// report.prd_qty += input.reported_qty;
//}
//else
{ {
var row = -1;
var report = await db.Queryable<PrdReport>().FirstAsync(it => it.mo_task_id == input.mo_task_id);
report = input.Adapt<PrdReport>(); report = input.Adapt<PrdReport>();
report.id = SnowflakeIdHelper.NextId(); report.id = SnowflakeIdHelper.NextId();
report.reported_qty = input.reported_qty; report.reported_qty = input.reported_qty;
report.create_id = _userManager.UserId; report.create_id = _userManager.UserId;
report.create_time = DateTime.Now; report.create_time = DateTime.Now;
} row = await db.Insertable(report).ExecuteCommandAsync();
row = await db.Insertable(report).ExecuteCommandAsync();
var master = await db.Queryable<PrdReportRecord>().FirstAsync(it => it.mo_task_id == input.mo_task_id); var prdMoTask = await db.Queryable<PrdMoTask>().SingleAsync(x => x.id == input.mo_task_id);
if (master != null) if (prdMoTask.reported_work_qty == null)
{ {
master.reported_work_qty += input.reported_qty; await db.Updateable<PrdMoTask>()
master.completed_qty += input.reported_qty; // .SetColumns(x => x.complete_qty == x.complete_qty + input.reported_qty)
await db.Updateable(master).ExecuteCommandAsync(); .SetColumns(x => x.reported_work_qty == input.reported_qty)
} .Where(x => x.id == input.mo_task_id).ExecuteCommandAsync();
return row > 0; }
else
{
await db.Updateable<PrdMoTask>()
// .SetColumns(x => x.complete_qty == x.complete_qty + input.reported_qty)
.SetColumns(x => x.reported_work_qty == x.reported_work_qty + input.reported_qty)
.Where(x => x.id == input.mo_task_id).ExecuteCommandAsync();
}
var master = await db.Queryable<PrdReportRecord>().FirstAsync(it => it.mo_task_id == input.mo_task_id);
if (master != null)
{
master.reported_work_qty += input.reported_qty;
master.completed_qty += input.reported_qty;
await db.Updateable(master).ExecuteCommandAsync();
}
});
return result.IsSuccess;
} }
/// <summary> /// <summary>
/// 自检报废提交 /// 自检报废提交
/// </summary> /// </summary>

View File

@@ -22,9 +22,12 @@ using Aspose.Cells.Drawing;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using DbModels; using DbModels;
using JNPF.Common.Extension; using JNPF.Common.Extension;
using JNPF.Common.Filter;
using Tnb.ProductionMgr.Entities.Dto.PrdManage; using Tnb.ProductionMgr.Entities.Dto.PrdManage;
using NPOI.OpenXmlFormats; using NPOI.OpenXmlFormats;
using JNPF.Systems.Entitys.Permission; using JNPF.Systems.Entitys.Permission;
using JNPF.Systems.Entitys.System;
using Newtonsoft.Json;
using Tnb.BasicData; using Tnb.BasicData;
namespace Tnb.ProductionMgr namespace Tnb.ProductionMgr
@@ -58,57 +61,179 @@ 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 statusField = "mo_task_status";
// var scheduledTypeField = nameof(PrdMoTask.schedule_type);
// data.list = data.list.Where(it => it.ContainsKey(statusField) &&
// it[statusField].IsNotEmptyOrNull() && it[statusField].ToString() != "待下发" &&
// 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[pkName] = $"{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, object> queryJson = input.queryJson!=null ? JsonConvert.DeserializeObject<Dictionary<string, object>>(input.queryJson) : null;
var data = await _runService.GetListResult(templateEntity, input); string moTaskCode = queryJson!=null && queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : "";
if (data?.list?.Count > 0) Dictionary<string, string> dic = new Dictionary<string, string>()
{ {
var statusField = "mo_task_status"; [DictConst.ToBeStartedEnCode] = "待开工",
var scheduledTypeField = nameof(PrdMoTask.schedule_type); [DictConst.InProgressEnCode] = "进行中",
data.list = data.list.Where(it => it.ContainsKey(statusField) && [DictConst.ClosedEnCode] = "关闭",
it[statusField].IsNotEmptyOrNull() && it[statusField].ToString() != "待下发" && [DictConst.ComplatedEnCode] = "完工",
it[scheduledTypeField].IsNotEmptyOrNull() && it[scheduledTypeField].ParseToInt() == 1 [DictConst.ToBeScheduledEncode] = "待排产",
).ToList(); [DictConst.MoStatusPauseCode] = "暂停",
foreach (var row in data.list) [DictConst.MoStatusExceptionCode] = "异常",
[DictConst.MoStatusRevokeCode] = "撤销",
};
var result = await db.Queryable<PrdMoTask>()
.LeftJoin<EqpEquipment>((a, b) => a.eqp_id == b.id)
.LeftJoin<BasMaterial>((a, b, c) => a.material_id == c.id)
.LeftJoin<ToolMolds>((a, b, c, d) => a.mold_id == d.id)
//.Where((a,b,c,d)=>(a.mo_task_status==DictConst.ToBeStartedEnCode || a.mo_task_status==DictConst.InProgressEnCode || a.mo_task_status==DictConst.MoStatusExceptionCode))
.Where((a,b,c,d)=>a.schedule_type==1)
.WhereIF(!string.IsNullOrEmpty(moTaskCode),(a,b,c,d)=>a.mo_task_code.Contains(moTaskCode))
.OrderByDescending((a, b, c, d) => a.create_time)
.Select((a, b, c, d) => new PrdTaskManageListOutput()
{ {
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 = c.code+"/"+c.name,
{ mold_id = d.mold_code+"/"+d.mold_name,
var materialId = dic[pkName]?.ToString(); eqp_id = b.code+"/"+b.name,
var material = await db.Queryable<BasMaterial>().FirstAsync(it => it.id == materialId); plan_start_date = a.plan_start_date.Value.ToString("yyyy-MM-dd"),
if (material != null) plan_end_date = a.plan_end_date.Value.ToString("yyyy-MM-dd"),
{ plan_qty = a.scheduled_qty,
row[pkName] = $"{material.code}/{material.name}"; complete_qty = a.complete_qty,
} mo_task_status = a.mo_task_status,
} schedule_type = a.schedule_type.ToString()
//模具
if (dic.ContainsKey("mold_id")) })
{ .Mapper(x=>x.mo_task_status=dic[x.mo_task_status])
var moldId = dic["mold_id"]?.ToString(); .ToPagedListAsync(input.currentPage, input.pageSize);
var mold = await db.Queryable<ToolMolds>().FirstAsync(it => it.id == moldId); return PageResult<PrdTaskManageListOutput>.SqlSugarPageResult(result);
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!;
} }
// /// <summary>
// /// 根据任务单号获取提报记录明细
// /// </summary>
// /// <param name="icmoCode">任务单号</param>
// /// <remarks>
// /// returns:
// ///<br/> {
// ///<br/> icmo_qty:任务计划数量
// ///<br/> reported_work_qty:已报工数量
// ///<br/> reported_qty:报工数量
// ///<br/> prd_qty:生产数量
// ///<br/> }
// /// </remarks>
// [HttpGet]
// public async Task<dynamic> GetPrdReportByIcmoCode([FromRoute] string mo_task_code)
// {
// var db = _repository.AsSugarClient();
// var prdTask = await db.Queryable<PrdMoTask>().FirstAsync(it => it.mo_task_code == mo_task_code);
// var eqpCode = "";
// var moldCode = "";
// var materialCode = "";
// var materialName = "";
// var materialProp = "";
// if (prdTask != null)
// {
// var dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId);
// var eqp = await db.Queryable<EqpEquipment>().FirstAsync(it => it.id == prdTask.eqp_id);
// var mold = await db.Queryable<ToolMolds>().FirstAsync(it => it.id == prdTask.mold_id);
// var material = await db.Queryable<BasMaterial>().FirstAsync(it => it.id == prdTask.material_id);
// eqpCode = eqp != null ? eqp.code : "";
// moldCode = mold != null ? mold.mold_code : "";
// materialCode = material != null ? material.code : "";
// materialName = material != null ? material.name : "";
// materialProp = material != null ? material.material_property : "";
// prdTask.workline_code = (await db.Queryable<OrganizeEntity>().Where(it => it.Id == prdTask.workline_id && it.Category == "workline").FirstAsync())?.EnCode;
// prdTask.process_code = (await db.Queryable<BasProcess>().Where(it => it.id == prdTask.process_id).FirstAsync())?.process_code;
// if (dic.ContainsKey(prdTask.mo_task_status))
// {
// prdTask.mo_task_status = dic[prdTask.mo_task_status]?.ToString();
// }
//
// }
// var res = await db.Queryable<PrdReport>().Where(it => it.mo_task_code == mo_task_code)
// .Select(it => new PrdReportOutput
// {
// icmo_qty = it.icmo_qty,
// reported_work_qty = it.reported_work_qty,
// reported_qty = it.reported_qty,
// prd_qty = it.prd_qty,
// scrap_qty = SqlFunc.Subqueryable<PrdMoTaskDefect>().Where(pmtd => pmtd.mo_task_id == it.mo_task_id).Select(pmtd => pmtd.scrap_qty),
// })
// .Mapper(it =>
// {
// it.icmo_qty = it.icmo_qty ?? (
// db.Queryable<PrdMoTask>().First(it => it.mo_task_code == mo_task_code)?.scheduled_qty < 1 ? 0 :
// (it.icmo_qty ?? db.Queryable<PrdMoTask>().First(it => it.mo_task_code == mo_task_code)?.scheduled_qty ?? 0));
// it.reported_work_qty = it.reported_work_qty ?? 0;
// it.reported_qty = it.reported_qty ?? 0;
// it.prd_qty = it.prd_qty ?? 0;
// it.scrap_qty = it.scrap_qty ?? 0;
// })
// .FirstAsync();
// prdTask.eqp_code = eqpCode;
// prdTask.mold_code = moldCode;
// prdTask.material_code = materialCode;
// prdTask.material_name = materialName;
// prdTask.icmo_qty = res?.icmo_qty;
// prdTask.reported_work_qty = res?.reported_work_qty ?? 0;
// prdTask.reported_qty = res?.reported_qty ?? 0;
// prdTask.prd_qty = res?.prd_qty ?? 0;
// prdTask.scrap_qty = res?.scrap_qty ?? 0;
//
// return prdTask;
// }
/// <summary> /// <summary>
/// 根据任务单号获取提报记录明细 /// 根据任务单号获取提报记录明细
/// </summary> /// </summary>
@@ -126,60 +251,34 @@ namespace Tnb.ProductionMgr
public async Task<dynamic> GetPrdReportByIcmoCode([FromRoute] string mo_task_code) public async Task<dynamic> GetPrdReportByIcmoCode([FromRoute] string mo_task_code)
{ {
var db = _repository.AsSugarClient(); var db = _repository.AsSugarClient();
var prdTask = await db.Queryable<PrdMoTask>().FirstAsync(it => it.mo_task_code == mo_task_code); var dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId);
var eqpCode = ""; var prdTask = await db.Queryable<PrdMoTask>()
var moldCode = ""; .LeftJoin<BasMaterial>((a,b)=>a.material_id==b.id)
var materialCode = ""; .LeftJoin<ToolMolds>((a,b,c)=>a.mold_id==c.id)
var materialName = ""; .LeftJoin<EqpEquipment>((a,b,c,d)=>a.eqp_id==d.id)
var materialProp = ""; .LeftJoin<DictionaryDataEntity>((a,b,c,d,e)=>e.DictionaryTypeId==DictConst.PrdTaskStatusTypeId && a.mo_task_status==e.EnCode)
if (prdTask != null) .Where((a,b) => a.mo_task_code == mo_task_code)
{ .Select((a,b,c,d,e) => new
var dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId);
var eqp = await db.Queryable<EqpEquipment>().FirstAsync(it => it.id == prdTask.eqp_id);
var mold = await db.Queryable<ToolMolds>().FirstAsync(it => it.id == prdTask.mold_id);
var material = await db.Queryable<BasMaterial>().FirstAsync(it => it.id == prdTask.material_id);
eqpCode = eqp != null ? eqp.code : "";
moldCode = mold != null ? mold.mold_code : "";
materialCode = material != null ? material.code : "";
materialName = material != null ? material.name : "";
materialProp = material != null ? material.material_property : "";
prdTask.workline_code = (await db.Queryable<OrganizeEntity>().Where(it => it.Id == prdTask.workline_id && it.Category == "workline").FirstAsync())?.EnCode;
prdTask.process_code = (await db.Queryable<BasProcess>().Where(it => it.id == prdTask.process_id).FirstAsync())?.process_code;
if (dic.ContainsKey(prdTask.mo_task_status))
{ {
prdTask.mo_task_status = dic[prdTask.mo_task_status]?.ToString(); id = a.id,
} mo_task_code = a.mo_task_code,
mo_id = a.mo_id,
} material_id = a.material_id,
var res = await db.Queryable<PrdReport>().Where(it => it.mo_task_code == mo_task_code) material_code = b.code,
.Select(it => new PrdReportOutput material_name = b.name,
{ material_property = b.material_property,
icmo_qty = it.icmo_qty, mo_task_status = e.FullName,
reported_work_qty = it.reported_work_qty, plan_qty = a.plan_qty,
reported_qty = it.reported_qty, scheduled_qty = a.scheduled_qty,
prd_qty = it.prd_qty, complete_qty = a.reported_work_qty + a.scrap_qty,
scrap_qty = SqlFunc.Subqueryable<PrdMoTaskDefect>().Where(pmtd => pmtd.mo_task_id == it.mo_task_id).Select(pmtd => pmtd.scrap_qty), scrap_qty = a.scrap_qty,
}) mold_code = c.mold_code,
.Mapper(it => // icmo_qty = a.icmo_qty,
{ reported_work_qty = a.reported_work_qty,
it.icmo_qty = it.icmo_qty ?? ( // reported_qty = a.reported_qty,
db.Queryable<PrdMoTask>().First(it => it.mo_task_code == mo_task_code)?.scheduled_qty < 1 ? 0 : // prd_qty = a.prd_qty,
(it.icmo_qty ?? db.Queryable<PrdMoTask>().First(it => it.mo_task_code == mo_task_code)?.scheduled_qty ?? 0)); eqp_code = d.code,
it.reported_work_qty = it.reported_work_qty ?? 0; }).FirstAsync();
it.reported_qty = it.reported_qty ?? 0;
it.prd_qty = it.prd_qty ?? 0;
it.scrap_qty = it.scrap_qty ?? 0;
})
.FirstAsync();
prdTask.eqp_code = eqpCode;
prdTask.mold_code = moldCode;
prdTask.material_code = materialCode;
prdTask.material_name = materialName;
prdTask.icmo_qty = res?.icmo_qty;
prdTask.reported_work_qty = res?.reported_work_qty ?? 0;
prdTask.reported_qty = res?.reported_qty ?? 0;
prdTask.prd_qty = res?.prd_qty ?? 0;
prdTask.scrap_qty = res?.scrap_qty ?? 0;
return prdTask; return prdTask;
} }

View File

@@ -5,6 +5,7 @@ using System.Reflection;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Aspose.Cells.Drawing; using Aspose.Cells.Drawing;
using JNPF.Common.Dtos.VisualDev;
using JNPF.DependencyInjection; using JNPF.DependencyInjection;
using JNPF.DynamicApiController; using JNPF.DynamicApiController;
using JNPF.VisualDev; using JNPF.VisualDev;
@@ -19,6 +20,7 @@ using Tnb.ProductionMgr.Interfaces;
using JNPF.Systems.Interfaces.System; using JNPF.Systems.Interfaces.System;
using Tnb.BasicData; using Tnb.BasicData;
using JNPF.Common.Extension; using JNPF.Common.Extension;
using Newtonsoft.Json.Linq;
namespace Tnb.ProductionMgr namespace Tnb.ProductionMgr
{ {
@@ -43,7 +45,9 @@ namespace Tnb.ProductionMgr
_runService = runService; _runService = runService;
_visualDevService = visualDevService; _visualDevService = visualDevService;
OverideFuncs.GetListAsync = GetList; OverideFuncs.GetListAsync = GetList;
OverideFuncs.UpdateAsync = AddRecord;
_dictionaryDataService = dictionaryDataService; _dictionaryDataService = dictionaryDataService;
_repository = repository;
} }
@@ -76,5 +80,39 @@ namespace Tnb.ProductionMgr
//} //}
return data!; return data!;
} }
private async Task<dynamic> AddRecord(string id,VisualDevModelDataUpInput input)
{
var db = _repository.AsSugarClient();
var result = await db.Ado.UseTranAsync(async () =>
{
List<PrdReport> prdReports = new List<PrdReport>();
foreach (var item in (JArray)input.data["tablefield107"])
{
if (item["id"] == null)
{
prdReports.Add(new PrdReport()
{
mo_task_id = input.data["mo_task_id"]?.ToString(),
mo_task_code = input.data["mo_task_code"]?.ToString(),
reported_qty = (int)item["reported_qty"],
create_id = item["create_id"]?.ToString(),
create_time = DateTime.Now,
});
}
}
await db.Insertable<PrdReport>(prdReports).ExecuteCommandAsync();
int? sum = prdReports.Sum(x => x.reported_qty);
await db.Updateable<PrdReportRecord>()
.SetColumns(x => x.completed_qty == x.completed_qty + sum)
.SetColumns(x => x.reported_work_qty == x.reported_work_qty + sum)
.Where(x => x.id == input.data["id"].ToString()).ExecuteCommandAsync();
});
return result.IsSuccess;
}
} }
} }