Merge branch 'dev' of https://git.tuotong-tech.com/tnb/tnb.server into dev
This commit is contained in:
@@ -53,5 +53,15 @@ public partial class BasMbomProcess : BaseEntity<string>
|
||||
/// 工艺路线子表id
|
||||
/// </summary>
|
||||
public string route_detail_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否时最后一道工序
|
||||
/// </summary>
|
||||
public int is_last { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 排序
|
||||
/// </summary>
|
||||
public int ordinal { get; set; }
|
||||
|
||||
}
|
||||
|
||||
@@ -282,6 +282,7 @@ namespace Tnb.BasicData
|
||||
|
||||
if (mbomSaveDataInput != null && mbomSaveDataInput.processes != null)
|
||||
{
|
||||
int index = 0;
|
||||
foreach (var process in mbomSaveDataInput.processes)
|
||||
{
|
||||
string mbomProcessId = SnowflakeIdHelper.NextId();
|
||||
@@ -296,6 +297,8 @@ namespace Tnb.BasicData
|
||||
byproduct_status = process.byproduct_status,
|
||||
production_method = process.production_method,
|
||||
route_detail_id = process.route_detail_id,
|
||||
ordinal = ++index,
|
||||
is_last = index==mbomSaveDataInput.processes.Count ? 1 : 0,
|
||||
|
||||
});
|
||||
|
||||
|
||||
@@ -182,4 +182,10 @@ public partial class PrdMoTask : BaseEntity<string>
|
||||
/// 生产bom工序id
|
||||
/// </summary>
|
||||
public string? mbom_process_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最后一道工序完成数量
|
||||
/// </summary>
|
||||
public int? last_process_complete_qty { get; set; }
|
||||
|
||||
}
|
||||
|
||||
@@ -320,8 +320,9 @@ namespace Tnb.ProductionMgr
|
||||
result = await _db.Queryable<PrdMoTask>().LeftJoin<PrdMo>((a, b) => a.mo_id == b.id)
|
||||
.LeftJoin<BasMaterial>((a, b, c) => a.material_id == c.id)
|
||||
.LeftJoin<OrganizeEntity>((a, b, c, d) => a.workline_id == d.Id)
|
||||
.LeftJoin<BasProcess>((a,b,c,d,e)=>a.process_id==e.id)
|
||||
.Where((a, b, c, d) => b.id == moId || b.parent_id == moId)
|
||||
.Select((a, b, c, d) => new PrdMoTaskOutput
|
||||
.Select((a, b, c, d,e) => new PrdMoTaskOutput
|
||||
{
|
||||
mo_task_code = a.mo_task_code,
|
||||
mo_task_status = a.mo_task_status,
|
||||
@@ -329,10 +330,12 @@ namespace Tnb.ProductionMgr
|
||||
workline_name = d.FullName,
|
||||
material_code = c.code,
|
||||
material_name = c.name,
|
||||
process_code = e.process_code,
|
||||
process_name = e.process_name,
|
||||
mo_task_qty = SqlFunc.Subqueryable<PrdMoTask>().Where(a => a.mo_id == moId).Count(),
|
||||
estimated_start_date = a.estimated_start_date.Value.ToString("yyyy-MM-dd HH"),
|
||||
estimated_end_date = a.estimated_end_date.Value.ToString("yyyy-MM-dd HH"),
|
||||
plan_qty = b.scheduled_qty,
|
||||
plan_qty = a.scheduled_qty,
|
||||
complete_qty = a.complete_qty,
|
||||
})
|
||||
.Mapper(it =>
|
||||
@@ -1263,7 +1266,22 @@ namespace Tnb.ProductionMgr
|
||||
.SetColumns(x => x.reported_work_qty == x.reported_work_qty + input.reported_qty)
|
||||
.Where(x => x.id == input.mo_task_id).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
var mbomProcess = await db.Queryable<BasMbomProcess>().SingleAsync(x => x.id == prdMoTask.mbom_process_id);
|
||||
if (mbomProcess.is_last==1 && prdMoTask != null && !string.IsNullOrEmpty(prdMoTask.parent_id))
|
||||
{
|
||||
var parentMoTask = await db.Queryable<PrdMoTask>().SingleAsync(x => x.id == prdMoTask.parent_id);
|
||||
if (parentMoTask?.last_process_complete_qty == null)
|
||||
{
|
||||
await db.Updateable<PrdMoTask>()
|
||||
.SetColumns(x => x.last_process_complete_qty == input.reported_qty)
|
||||
.Where(x => x.id == prdMoTask.parent_id).ExecuteCommandAsync();
|
||||
}else if (parentMoTask?.last_process_complete_qty != null)
|
||||
{
|
||||
await db.Updateable<PrdMoTask>()
|
||||
.SetColumns(x => x.last_process_complete_qty == x.last_process_complete_qty + input.reported_qty)
|
||||
.Where(x => x.id == prdMoTask.parent_id).ExecuteCommandAsync();
|
||||
}
|
||||
}
|
||||
|
||||
var master = await db.Queryable<PrdReportRecord>().FirstAsync(it => it.mo_task_id == input.mo_task_id);
|
||||
if (master != null)
|
||||
|
||||
@@ -70,7 +70,7 @@ namespace Tnb.ProductionMgr
|
||||
plan_end_date = a.estimated_end_date,
|
||||
plan_qty = c.plan_qty,
|
||||
// complete_qty = SqlFunc.Subqueryable<PrdReport>().Where(it => it.mo_task_code == a.mo_task_code).Sum(it => it.reported_work_qty),
|
||||
complete_qty = a.reported_work_qty+a.scrap_qty,
|
||||
complete_qty = a.last_process_complete_qty,
|
||||
mo_task_status = a.mo_task_status,
|
||||
|
||||
})
|
||||
@@ -94,8 +94,8 @@ namespace Tnb.ProductionMgr
|
||||
node.workline_id = $"{workLine.Item1}/{workLine.Item2}";
|
||||
}
|
||||
}
|
||||
node.plan_start_date = item.estimated_start_date.HasValue ? item.estimated_start_date.Value.ToString("yyyy-MM-dd HH:mm:ss") : "";
|
||||
node.plan_end_date = item.estimated_end_date.HasValue ? item.estimated_end_date.Value.ToString("yyyy-MM-dd HH:mm:ss") : "";
|
||||
node.plan_start_date = item.plan_start_date.HasValue ? item.plan_start_date.Value.ToString("yyyy-MM-dd HH:mm:ss") : "";
|
||||
node.plan_end_date = item.plan_end_date.HasValue ? item.plan_end_date.Value.ToString("yyyy-MM-dd HH:mm:ss") : "";
|
||||
await GetChild(item.id, trees, dic);
|
||||
trees.Add(node);
|
||||
}
|
||||
@@ -116,8 +116,12 @@ namespace Tnb.ProductionMgr
|
||||
|
||||
private async Task GetChild(string parentId, List<PackReportTreeOutput> nodes, Dictionary<string, object> dic)
|
||||
{
|
||||
var items = await _db.Queryable<PrdMoTask>().LeftJoin<BasProcess>((a, b) => a.process_id == b.id).LeftJoin<PrdMo>((a, b, c) => a.mo_id == c.id)
|
||||
var items = await _db.Queryable<PrdMoTask>()
|
||||
.LeftJoin<BasProcess>((a, b) => a.process_id == b.id)
|
||||
.LeftJoin<PrdMo>((a, b, c) => a.mo_id == c.id)
|
||||
.LeftJoin<BasMbomProcess>((a,b,c,d)=>a.mbom_process_id==d.id)
|
||||
.Where(a => a.parent_id == parentId && a.mo_task_status != "ToBeScheduled")
|
||||
.OrderBy((a,b,c,d)=>d.ordinal)
|
||||
.Select((a, b, c) => new PrdMoTask
|
||||
{
|
||||
id = a.id,
|
||||
@@ -129,7 +133,8 @@ namespace Tnb.ProductionMgr
|
||||
plan_start_date = a.estimated_start_date,
|
||||
plan_end_date = a.estimated_end_date,
|
||||
plan_qty = c.plan_qty,
|
||||
complete_qty = SqlFunc.Subqueryable<PrdReport>().Where(it => it.mo_task_code == a.mo_task_code).Sum(it => it.reported_work_qty),
|
||||
//complete_qty = SqlFunc.Subqueryable<PrdReport>().Where(it => it.mo_task_code == a.mo_task_code).Sum(it => it.reported_work_qty),
|
||||
complete_qty = a.reported_work_qty+a.scrap_qty,
|
||||
mo_task_status = a.mo_task_status,
|
||||
|
||||
}).ToListAsync();
|
||||
|
||||
@@ -29,16 +29,15 @@ namespace Tnb.QcMgr.Entities.Dto
|
||||
public string? itemdid { get; set; }
|
||||
public ExecItemShow? setShow { get; set; }
|
||||
public ExecItemData? setData { get; set; }
|
||||
public PostItemForm? postItemForm { get; set; }
|
||||
|
||||
}
|
||||
public class PostItemForm
|
||||
{
|
||||
public string? attachment { get; set; }
|
||||
public string[]? checkbox { get; set; }
|
||||
public object[]? checkbox { get; set; }
|
||||
public string? errorcause { get; set; }
|
||||
public string? errorlevel { get; set; }
|
||||
public int measuredValue { get; set; }
|
||||
public object? measuredValue { get; set; }
|
||||
public string? radio { get; set; }
|
||||
public string? remark { get; set; }
|
||||
public string? text { get; set; }
|
||||
@@ -103,29 +102,53 @@ namespace Tnb.QcMgr.Entities.Dto
|
||||
public string? status { get; set; }
|
||||
public string? result { get; set; }
|
||||
|
||||
public List<CheckExexTypeInput>? checktypes { get; set; }
|
||||
public List<List<Exextype>>? checktypes { get; set; }
|
||||
}
|
||||
public class CheckExexTypeInput
|
||||
public class Exextype
|
||||
{
|
||||
public string? id { get; set; }
|
||||
public string? checktypeid { get; set; }
|
||||
public string? checktypename { get; set; }
|
||||
public List<ExecItemInput>? items { get; set; }
|
||||
}
|
||||
public class ExecItemInput
|
||||
{
|
||||
public string? itemdid { get; set; }
|
||||
|
||||
public string? itemdid { get; set; }
|
||||
public string? itemid { get; set; }
|
||||
public string? extype { get; set; }
|
||||
public string? excontent { get; set; }
|
||||
public string? check { get; set; }
|
||||
public string? errorcause { get; set; }
|
||||
public string? errorlevel { get; set; }
|
||||
public string? remark { get; set; }
|
||||
public string? attachment { get; set; }
|
||||
public string? isexec { get; set; }
|
||||
public string? customer { get; set; }
|
||||
public string? result { get; set; }
|
||||
public string? code { get; set; }
|
||||
public string? name { get; set; }
|
||||
public ExecItemData? setData { get; set; }
|
||||
public ExecItemShow? setShow { get; set; }
|
||||
public string? postItemForm { get; set; }
|
||||
|
||||
public string? result { get; set; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
public class Result
|
||||
{
|
||||
public string? mainid { get; set; }
|
||||
public string? checknum { get; set; }
|
||||
public string? status { get; set; }
|
||||
public string? result { get; set; }
|
||||
|
||||
public List<List<Checktype>>? checktypes { get; set; }
|
||||
}
|
||||
public class Checktype
|
||||
{
|
||||
public string? checktypeid { get; set; }
|
||||
public string? checktypename { get; set; }
|
||||
public List<ExecItem>? items { get; set; }
|
||||
}
|
||||
public class ExecItem
|
||||
{
|
||||
public string? itemdid { get; set; }
|
||||
public string? itemid { get; set; }
|
||||
public string? code { get; set; }
|
||||
public string? name { get; set; }
|
||||
public ExecItemData? setData { get; set; }
|
||||
public ExecItemShow? setShow { get; set; }
|
||||
public PostItemForm? postItemForm { get; set; }
|
||||
public string? result { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -106,8 +106,12 @@ namespace Tnb.QcMgr.Entities
|
||||
/// 数据
|
||||
/// </summary>
|
||||
public string? postdata { get; set; }
|
||||
/// <summary>
|
||||
/// 抽样数索引
|
||||
/// </summary>
|
||||
public string? checkindex { get; set; }
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -22,5 +22,12 @@ namespace Tnb.QcMgr.Interfaces
|
||||
/// <param name="CheckTaskInput"></param>
|
||||
/// <returns></returns>
|
||||
public Task SaveData(CheckTaskInput CheckTaskInput);
|
||||
|
||||
/// <summary>
|
||||
/// 获取任务结果明细
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
public Task<dynamic> GetTaskResult(string id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ using System.Threading.Tasks;
|
||||
using Aspose.Cells.Drawing;
|
||||
using JNPF.Common.Core.Manager;
|
||||
using JNPF.Common.Enums;
|
||||
using JNPF.Common.Security;
|
||||
using JNPF.DependencyInjection;
|
||||
using JNPF.DynamicApiController;
|
||||
using JNPF.FriendlyException;
|
||||
@@ -137,8 +138,6 @@ namespace Tnb.QcMgr
|
||||
Item.setShow.attachment = !string.IsNullOrEmpty(Item.setData.attachment);
|
||||
Item.setShow.customer = !string.IsNullOrEmpty(Item.setData.customer);
|
||||
Item.setShow.isexec = Item.setData.isexec == null ? false : true;
|
||||
if(!string.IsNullOrEmpty(QcCheckExecD.postdata))
|
||||
Item.postItemForm= JSON.Deserialize<PostItemForm>(QcCheckExecD.postdata!);
|
||||
CheckTaskOut.checktypes.Where(p => p.checktypeid == QcCheckExecD.typeid).First()?.items?.Add(Item);
|
||||
}
|
||||
return CheckTaskOut;
|
||||
@@ -157,46 +156,155 @@ namespace Tnb.QcMgr
|
||||
{
|
||||
var QcCheckExecH = await db.Queryable<QcCheckExecH>().Where(p => p.id == CheckTaskInput.mainid).FirstAsync();
|
||||
QcCheckExecH.checknum = CheckTaskInput.checknum;
|
||||
QcCheckExecH.status = CheckTaskInput.status;
|
||||
QcCheckExecH.status = "26745885292053";
|
||||
QcCheckExecH.result = CheckTaskInput.result;
|
||||
QcCheckExecH.execuser = _userManager.UserId;
|
||||
QcCheckExecH.exectime = DateTime.Now.ToString();
|
||||
var QcCheckExecDs = await db.Queryable<QcCheckExecD>().Where(p => p.mainid == CheckTaskInput.mainid).ToListAsync();
|
||||
if (CheckTaskInput.checktypes != null)
|
||||
var QcCheckExecDdel = new List<QcCheckExecD>();
|
||||
var QcCheckExecDinsert = new List<QcCheckExecD>();
|
||||
if (CheckTaskInput.checktypes?.Count > 0)
|
||||
{
|
||||
foreach (var checktype in CheckTaskInput.checktypes)
|
||||
for (int i=0;i< CheckTaskInput.checktypes.Count;i++)
|
||||
{
|
||||
if (checktype.items != null)
|
||||
if (CheckTaskInput.checktypes[i].Count > 0)
|
||||
{
|
||||
foreach (var item in checktype.items)
|
||||
foreach (var exextype in CheckTaskInput.checktypes[i])
|
||||
{
|
||||
var QcCheckExecD = QcCheckExecDs.Where(p => p.id == item.itemdid).FirstOrDefault();
|
||||
if (QcCheckExecD == null)
|
||||
continue;
|
||||
QcCheckExecD.excontent = item.excontent;
|
||||
QcCheckExecD.check = item.check;
|
||||
QcCheckExecD.errorcause = item.errorcause;
|
||||
QcCheckExecD.errorlevel = item.errorlevel;
|
||||
QcCheckExecD.remark = item.remark;
|
||||
QcCheckExecD.attachment = item.attachment;
|
||||
QcCheckExecD.isexec = item.isexec;
|
||||
QcCheckExecD.custom = item.customer;
|
||||
QcCheckExecD.result = item.result;
|
||||
QcCheckExecD.postdata = item.postItemForm;
|
||||
if (exextype.items != null)
|
||||
{
|
||||
foreach (var item in exextype.items)
|
||||
{
|
||||
var QcCheckExecD = QcCheckExecDs.Where(p => p.id == item.itemdid).FirstOrDefault();
|
||||
if (QcCheckExecD == null)
|
||||
continue;
|
||||
if (QcCheckExecDdel.Where(p => p.id == QcCheckExecD.id).FirstOrDefault() == null)
|
||||
QcCheckExecDdel.Add(QcCheckExecD);
|
||||
var insert = new QcCheckExecD();
|
||||
insert.mainid = QcCheckExecD.mainid;
|
||||
insert.extype = QcCheckExecD.extype;
|
||||
insert.excontent = QcCheckExecD.excontent;
|
||||
insert.check = QcCheckExecD.check;
|
||||
insert.errorcause = QcCheckExecD.errorcause;
|
||||
insert.errorlevel = QcCheckExecD.errorlevel;
|
||||
insert.remark = QcCheckExecD.remark;
|
||||
insert.attachment = QcCheckExecD.attachment;
|
||||
insert.isexec = QcCheckExecD.isexec;
|
||||
insert.custom = QcCheckExecD.custom;
|
||||
insert.typeid = QcCheckExecD.typeid;
|
||||
insert.itemid = QcCheckExecD.itemid;
|
||||
insert.create_id = QcCheckExecD.create_id;
|
||||
insert.create_time = QcCheckExecD.create_time;
|
||||
insert.postdata = item.postItemForm;
|
||||
insert.result = item.result;
|
||||
insert.checkindex = (i + 1).ToString();
|
||||
QcCheckExecDinsert.Add(insert);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
await db.Ado.BeginTranAsync();
|
||||
await db.Updateable(QcCheckExecH).ExecuteCommandAsync();
|
||||
await db.Updateable(QcCheckExecDs).ExecuteCommandAsync();
|
||||
await db.Deleteable(QcCheckExecDdel).ExecuteCommandAsync();
|
||||
await db.Insertable(QcCheckExecDinsert).ExecuteCommandAsync();
|
||||
await db.Ado.CommitTranAsync();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
|
||||
throw Oops.Oh(ErrorCode.COM1000);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取任务结果明细
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public async Task<dynamic> GetTaskResult(string id)
|
||||
{
|
||||
var db = _repository.AsSugarClient();
|
||||
var QcCheckExecH = await db.Queryable<QcCheckExecH>().Where(p => p.id == id).FirstAsync();
|
||||
var QcCheckExecDs = await db.Queryable<QcCheckExecD>().Where(p => p.mainid == id).ToListAsync();
|
||||
var QcCheckItems = await db.Queryable<QcCheckItem>().ToListAsync();
|
||||
var QcCheckTypes = await db.Queryable<QcCheckType>().ToListAsync();
|
||||
var QcErrorCauses = await db.Queryable<QcErrorCause>().ToListAsync();
|
||||
var QcErrorLevels = await db.Queryable<QcErrorLevel>().ToListAsync();
|
||||
|
||||
Result Result = new Result();
|
||||
Result.mainid = id;
|
||||
Result.checknum = QcCheckExecH.checknum!;
|
||||
Result.status = QcCheckExecH.status!;
|
||||
Result.checktypes = new List<List<Checktype>>();
|
||||
var groupkeys = QcCheckExecDs.Select(p=>p.checkindex).Distinct().ToList();
|
||||
foreach (var key in groupkeys)
|
||||
{
|
||||
var QcCheckExecDsbykey= QcCheckExecDs.Where(p=>p.checkindex==key).ToList();
|
||||
var checktype = new List<Checktype>();
|
||||
foreach (var QcCheckExecD in QcCheckExecDsbykey)
|
||||
{
|
||||
if (checktype.Where(p => p.checktypeid == QcCheckExecD.typeid).ToList().Count == 0)
|
||||
{
|
||||
Checktype checkType = new Checktype();
|
||||
checkType.checktypeid = QcCheckExecD.typeid!;
|
||||
checkType.checktypename = QcCheckTypes.Where(p => p.id == QcCheckExecD.typeid).First().name!;
|
||||
checkType.items = new List<ExecItem>();
|
||||
checktype.Add(checkType);
|
||||
}
|
||||
ExecItem Item = new ExecItem();
|
||||
Item.itemid = QcCheckExecD.itemid!;
|
||||
Item.itemdid = QcCheckExecD.id!;
|
||||
Item.code = QcCheckItems.Where(p => p.id == QcCheckExecD.itemid).First().code!;
|
||||
Item.name = QcCheckItems.Where(p => p.id == QcCheckExecD.itemid).First().name!;
|
||||
Item.setData = new ExecItemData();
|
||||
Item.setData.extype = QcCheckExecD.extype!;
|
||||
Item.setData.excontent = JSON.Deserialize<Excontent>(QcCheckExecD.excontent!);
|
||||
Item.setData.check = QcCheckExecD.check!;
|
||||
if (!string.IsNullOrEmpty(QcCheckExecD.errorcause))
|
||||
{
|
||||
var strs = QcCheckExecD.errorcause!.Replace("[", "").Replace("]", "").Split(',', StringSplitOptions.RemoveEmptyEntries);
|
||||
Item.setData.errorcause = new List<Error>();
|
||||
foreach (var str in strs)
|
||||
{
|
||||
Item.setData.errorcause.Add(new Error { id = str, name = QcErrorCauses.Where(p => p.id == str).First().name! });
|
||||
}
|
||||
}
|
||||
if (!string.IsNullOrEmpty(QcCheckExecD.errorlevel))
|
||||
{
|
||||
var strs = QcCheckExecD.errorlevel!.Replace("[", "").Replace("]", "").Split(',', StringSplitOptions.RemoveEmptyEntries);
|
||||
Item.setData.errorlevel = new List<Error>();
|
||||
foreach (var str in strs)
|
||||
{
|
||||
Item.setData.errorlevel.Add(new Error { id = str, name = QcErrorLevels.Where(p => p.id == str).First().name! });
|
||||
}
|
||||
}
|
||||
Item.setData.remark = QcCheckExecD.remark!;
|
||||
Item.setData.attachment = QcCheckExecD.attachment!;
|
||||
Item.setData.customer = QcCheckExecD.custom!;
|
||||
if (!string.IsNullOrEmpty(QcCheckExecD.isexec))
|
||||
Item.setData.isexec = JSON.Deserialize<IsexecE>(QcCheckExecD.isexec!);
|
||||
Item.setShow = new ExecItemShow();
|
||||
Item.setShow.extype = !string.IsNullOrEmpty(Item.setData.extype);
|
||||
Item.setShow.excontent = !string.IsNullOrEmpty(QcCheckExecD.excontent);
|
||||
Item.setShow.check = !string.IsNullOrEmpty(Item.setData.check);
|
||||
Item.setShow.errorcause = Item.setData.errorcause?.Count == 0 ? false : true;
|
||||
Item.setShow.errorlevel = Item.setData.errorlevel?.Count == 0 ? false : true;
|
||||
Item.setShow.remark = !string.IsNullOrEmpty(Item.setData.remark);
|
||||
Item.setShow.attachment = !string.IsNullOrEmpty(Item.setData.attachment);
|
||||
Item.setShow.customer = !string.IsNullOrEmpty(Item.setData.customer);
|
||||
Item.setShow.isexec = Item.setData.isexec == null ? false : true;
|
||||
if (!string.IsNullOrEmpty(QcCheckExecD.postdata))
|
||||
Item.postItemForm = JSON.Deserialize<PostItemForm>(QcCheckExecD.postdata!);
|
||||
checktype.Where(p => p.checktypeid == QcCheckExecD.typeid).First()?.items?.Add(Item);
|
||||
}
|
||||
Result.checktypes.Add(checktype);
|
||||
}
|
||||
|
||||
return Result;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -67,15 +67,13 @@ namespace Tnb.WarehouseMgr
|
||||
var subCarryId = input.data.ContainsKey("membercarry_id") ? input.data["membercarry_id"]?.ToString() : "";
|
||||
var carry = await _db.Queryable<WmsCarryH>().SingleAsync(it => it.id == carryId);
|
||||
var subCarry = await _db.Queryable<WmsCarryH>().SingleAsync(it => it.id == subCarryId);
|
||||
|
||||
//WmsCarrybindH wmsCarrybindH = carry?.Adapt<WmsCarrybindH>()!;
|
||||
if (carry != null && subCarry != null)
|
||||
{
|
||||
|
||||
carry.carry_status = "1";
|
||||
var row = await _db.Updateable(carry).ExecuteCommandAsync();
|
||||
subCarry.carry_status = "1";
|
||||
row = await _db.Updateable(subCarry).ExecuteCommandAsync();
|
||||
//更新载具明细表
|
||||
WmsCarryD wmsCarryD = new()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId(),
|
||||
@@ -89,6 +87,7 @@ namespace Tnb.WarehouseMgr
|
||||
};
|
||||
row = await _db.Insertable(wmsCarryD).ExecuteCommandAsync();
|
||||
var items = await _db.Queryable<WmsCarryCode>().Where(it => it.carry_id == subCarryId).ToListAsync();
|
||||
//更新载具绑定条码表
|
||||
for (int i = 0; i < items.Count; i++)
|
||||
{
|
||||
WmsCarrybindCode wmsCarrybindCode = new();
|
||||
|
||||
@@ -71,6 +71,7 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
var row = await _db.Deleteable<WmsCarryD>().Where(it => it.carry_id == carryId && it.membercarry_id == subCarryId).ExecuteCommandAsync();
|
||||
var items = await _db.Queryable<WmsCarryCode>().Where(it => it.carry_id == subCarryId).ToListAsync();
|
||||
//更新载具解绑记录条码表
|
||||
WmsCarryunbindCode wmsCarryUnbindCode = new();
|
||||
for (int i = 0; i < items.Count; i++)
|
||||
{
|
||||
|
||||
@@ -51,7 +51,7 @@ namespace Tnb.WarehouseMgr
|
||||
_billRullService = billRullService;
|
||||
OverideFuncs.CreateAsync = PDACarryBind;
|
||||
}
|
||||
|
||||
|
||||
private async Task<dynamic> PDACarryBind(VisualDevModelDataCrInput input)
|
||||
{
|
||||
var isOk = false;
|
||||
@@ -67,27 +67,28 @@ namespace Tnb.WarehouseMgr
|
||||
var subCarryId = input.data.ContainsKey("membercarry_id") ? input.data["membercarry_id"]?.ToString() : "";
|
||||
var carry = await _db.Queryable<WmsCarryH>().SingleAsync(it => it.id == carryId);
|
||||
var subCarry = await _db.Queryable<WmsCarryH>().SingleAsync(it => it.id == subCarryId);
|
||||
WmsCarryD wmsCarryD = new()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId(),
|
||||
carry_id = carry.id,
|
||||
org_id = carry?.org_id!,
|
||||
membercarry_id = subCarry.id,
|
||||
membercarry_code = subCarry.carry_code,
|
||||
|
||||
loc = input.data[nameof(WmsCarrybindH.loc)].ParseToInt(1),
|
||||
create_id = _userManager.UserId,
|
||||
create_time = DateTime.Now
|
||||
};
|
||||
//WmsCarrybindH wmsCarrybindH = carry?.Adapt<WmsCarrybindH>()!;
|
||||
if (carry != null && subCarry != null)
|
||||
{
|
||||
//更新载具明细
|
||||
WmsCarryD wmsCarryD = new()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId(),
|
||||
carry_id = carry.id,
|
||||
org_id = carry?.org_id!,
|
||||
membercarry_id = subCarry.id,
|
||||
membercarry_code = subCarry.carry_code,
|
||||
loc = input.data[nameof(WmsCarrybindH.loc)].ParseToInt(1),
|
||||
create_id = _userManager.UserId,
|
||||
create_time = DateTime.Now
|
||||
};
|
||||
var row = await _db.Insertable(wmsCarryD).ExecuteCommandAsync();
|
||||
carry.carry_status = "1";
|
||||
row = await _db.Updateable(carry).ExecuteCommandAsync();
|
||||
subCarry.carry_status = "1";
|
||||
row = await _db.Updateable(subCarry).ExecuteCommandAsync();
|
||||
var items = await _db.Queryable<WmsCarryCode>().Where(it => it.carry_id == subCarryId).ToListAsync();
|
||||
//更新载具绑定条码表
|
||||
for (int i = 0; i < items.Count; i++)
|
||||
{
|
||||
WmsCarrybindCode wmsCarrybindCode = new();
|
||||
|
||||
@@ -65,8 +65,7 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSCARRYMOOUTSTKPDA_ID, true);
|
||||
await _runService.Create(templateEntity, input);
|
||||
//入库取终点
|
||||
//var OutStockStrategyInput = new OutStockStrategyQuery { carry_id = input.data[nameof(OutStockStrategyQuery.carry_id)].ToString(), Size = 1 };
|
||||
//出库取起点
|
||||
var carry = await _db.Queryable<WmsCarryH>().FirstAsync(it => it.id == input.data[nameof(WmsMoveOutstock.carry_id)].ToString());
|
||||
WmsPointH sPoint = null;
|
||||
WmsPointH ePoint = null;
|
||||
|
||||
@@ -66,11 +66,11 @@ namespace Tnb.WarehouseMgr
|
||||
var subCarryId = input.data.ContainsKey("membercarry_id") ? input.data["membercarry_id"]?.ToString() : "";
|
||||
var carry = await _db.Queryable<WmsCarryH>().FirstAsync(it => it.id == carryId);
|
||||
var subCarry = await _db.Queryable<WmsCarryH>().FirstAsync(it => it.id == subCarryId);
|
||||
//WmsCarryunbindH wmsCarryUnbindH = carry.Adapt<WmsCarryunbindH>();
|
||||
if (carry != null && subCarry != null)
|
||||
{
|
||||
var row = await _db.Deleteable<WmsCarryD>().Where(it => it.carry_id == carryId && it.membercarry_id == subCarryId).ExecuteCommandAsync();
|
||||
var items = await _db.Queryable<WmsCarryCode>().Where(it => it.carry_id == subCarryId).ToListAsync();
|
||||
//更新载具解绑记录
|
||||
WmsCarryunbindCode wmsCarryUnbindCode = new();
|
||||
for (int i = 0; i < items.Count; i++)
|
||||
{
|
||||
|
||||
@@ -68,9 +68,6 @@ namespace Tnb.WarehouseMgr
|
||||
VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSEMPTYOUTSTKPDA_ID, true);
|
||||
await _runService.Create(templateEntity, input);
|
||||
|
||||
/*//入库取终点
|
||||
var inStockStrategyInput = new InStockStrategyQuery { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString(), Size = 1 };
|
||||
var endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput);*/
|
||||
//判断目标库位是否自动签收
|
||||
var loc = await _db.Queryable<BasLocation>().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString());
|
||||
|
||||
|
||||
@@ -81,6 +81,7 @@ namespace Tnb.WarehouseMgr
|
||||
var carryCodes = await _db.Queryable<WmsCarryCode>().Where(it => it.carry_id == carryId).ToListAsync();
|
||||
if (carry != null && feedBox != null)
|
||||
{
|
||||
//更新投料箱
|
||||
feedBox.material_id = carryMaterial.material_id;
|
||||
feedBox.material_code = carryMaterial.material_code;
|
||||
feedBox.qty = carryMaterial.qty;
|
||||
@@ -89,6 +90,7 @@ namespace Tnb.WarehouseMgr
|
||||
feedBox.create_id = _userManager.UserId;
|
||||
feedBox.create_time = DateTime.Now;
|
||||
var row = await _db.Updateable(feedBox).ExecuteCommandAsync();
|
||||
//更新投料记录条码表
|
||||
foreach (var carryCode in carryCodes)
|
||||
{
|
||||
WmsFeedingrecordCode wmsFeedingrecordCode = new();
|
||||
@@ -106,6 +108,7 @@ namespace Tnb.WarehouseMgr
|
||||
wmsFeedingrecordCode.create_time = DateTime.Now;
|
||||
row = await _db.Insertable(wmsFeedingrecordCode).ExecuteCommandAsync();
|
||||
}
|
||||
//更新载具
|
||||
row = await UpdateNullCarry(carry);
|
||||
isOk = (row > 0);
|
||||
if (!isOk) throw Oops.Oh(ErrorCode.COM1001);
|
||||
|
||||
@@ -6,6 +6,7 @@ using JNPF.Common.Security;
|
||||
using JNPF.DependencyInjection;
|
||||
using JNPF.DynamicApiController;
|
||||
using JNPF.FriendlyException;
|
||||
using JNPF.Logging;
|
||||
using JNPF.Systems.Entitys.Dto.Department;
|
||||
using JNPF.Systems.Entitys.Dto.Organize;
|
||||
using JNPF.Systems.Entitys.Dto.SysConfig;
|
||||
@@ -248,7 +249,8 @@ public class DepartmentService : IDepartmentService, IDynamicApiController, ITra
|
||||
if (await _repository.IsAnyAsync(o => o.ParentId == input.parentId && o.FullName == input.fullName && o.Category == "department" && o.DeleteMark == null))
|
||||
throw Oops.Oh(ErrorCode.D2019);
|
||||
OrganizeEntity? entity = input.Adapt<OrganizeEntity>();
|
||||
entity.Category = "department";
|
||||
// entity.Category = "department";
|
||||
entity.Category = input.category;
|
||||
entity.Id = SnowflakeIdHelper.NextId();
|
||||
entity.EnabledMark = 1;
|
||||
entity.CreatorTime = DateTime.Now;
|
||||
@@ -473,7 +475,8 @@ public class DepartmentService : IDepartmentService, IDynamicApiController, ITra
|
||||
var processVal = jsonObj.GetValue("rowprocess");
|
||||
if (processVal is not null)
|
||||
{
|
||||
var dic = _repository.GetList().ToDictionary(x => x.FullName, x => x.Id);
|
||||
//modifyby zhoukeda 2023.06.25
|
||||
var dic = _repository.GetList(x=>x.DeleteMark==null).ToDictionary(x => x.FullName, x => x.Id);
|
||||
var procList = jsonObj.Value<JArray>("rowprocess");
|
||||
var pids = procList.Select(x => x.Value<string>("id")).Distinct().ToList();
|
||||
var dbProcIds = await _repository.AsSugarClient().Queryable<BasProcessStation>().Where(it => pids.Contains(it.process_id)).Select(it => it.process_id).ToListAsync();
|
||||
@@ -517,8 +520,9 @@ public class DepartmentService : IDepartmentService, IDynamicApiController, ITra
|
||||
if (sysConfig.qyhIsSynOrg) await _synThirdInfoService.SynDep(1, 1, sysConfig, orgList);
|
||||
|
||||
}
|
||||
catch (Exception)
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Error(e.Message);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
@@ -17,4 +17,8 @@
|
||||
<ProjectReference Include="..\..\visualdev\Tnb.VisualDev.Engine\Tnb.VisualDev.Engine.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Tnb.Core" Version="2023.5.25.958" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
Reference in New Issue
Block a user