From 29d2f240c2d070c84e2dd72edfbfb89c9e6d04ee Mon Sep 17 00:00:00 2001
From: zhoukeda <1315948824@qq.com>
Date: Tue, 18 Jul 2023 17:14:49 +0800
Subject: [PATCH 1/2] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=BA=A7=E7=BA=BF?=
=?UTF-8?q?=E5=92=8C=E6=B3=A8=E5=A1=91=E6=8C=A4=E5=87=BA=E8=AE=BE=E5=A4=87?=
=?UTF-8?q?=E6=A0=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Consts/DictConst.cs | 12 ++++
.../Dto/WorklineAndEquipTreeOutput.cs | 42 ++++++++++++
.../IEquipmentService.cs | 6 ++
EquipMgr/Tnb.EquipMgr/EquipmentService.cs | 67 +++++++++++++++++++
4 files changed, 127 insertions(+)
create mode 100644 EquipMgr/Tnb.EquipMgr.Entities/Dto/WorklineAndEquipTreeOutput.cs
diff --git a/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs b/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs
index 8c6eede0..bfc6fcf5 100644
--- a/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs
+++ b/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs
@@ -12,6 +12,18 @@ public static class DictConst
///
public const string RegionCategoryStationCode = "workstation";
///
+ /// 区域类型-公司Code
+ ///
+ public const string RegionCategoryCompanyCode = "company";
+ ///
+ /// 区域类型-车间Code
+ ///
+ public const string RegionCategoryWorkshopCode = "workshop";
+ ///
+ /// 区域类型-产线Code
+ ///
+ public const string RegionCategoryWorklineCode = "workline";
+ ///
/// 备品备件类型
///
public const string SparePartsType = "SparePartsType";
diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/WorklineAndEquipTreeOutput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/WorklineAndEquipTreeOutput.cs
new file mode 100644
index 00000000..dcfee410
--- /dev/null
+++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/WorklineAndEquipTreeOutput.cs
@@ -0,0 +1,42 @@
+namespace Tnb.EquipMgr.Entities.Dto
+{
+ public class WorklineAndEquipTreeOutput
+ {
+ ///
+ /// 获取节点id.
+ ///
+ ///
+ public string id { get; set; }
+
+ ///
+ /// 标题
+ ///
+ public string title { get; set; }
+
+ ///
+ /// 获取节点父id.
+ ///
+ ///
+ public string parentId { get; set; }
+
+ ///
+ /// 是否有子级.
+ ///
+ public bool hasChildren { get; set; }
+
+ ///
+ /// 设置Children.
+ ///
+ public List? children { get; set; } = new List();
+
+ ///
+ /// 子节点数量.
+ ///
+ public int num { get; set; }
+
+ ///
+ /// 是否为子节点.
+ ///
+ public bool isLeaf { get; set; } = false;
+ }
+}
\ No newline at end of file
diff --git a/EquipMgr/Tnb.EquipMgr.Interfaces/IEquipmentService.cs b/EquipMgr/Tnb.EquipMgr.Interfaces/IEquipmentService.cs
index a1255946..3473dbf8 100644
--- a/EquipMgr/Tnb.EquipMgr.Interfaces/IEquipmentService.cs
+++ b/EquipMgr/Tnb.EquipMgr.Interfaces/IEquipmentService.cs
@@ -17,5 +17,11 @@ namespace Tnb.EquipMgr.Interfaces
///
///
public Task GetListByTypeId(Dictionary dic);
+
+ ///
+ /// 获取产线和注塑挤出设备树
+ ///
+ ///
+ public Task GetWorklineAndEquipTree(Dictionary dic);
}
}
\ No newline at end of file
diff --git a/EquipMgr/Tnb.EquipMgr/EquipmentService.cs b/EquipMgr/Tnb.EquipMgr/EquipmentService.cs
index f2be6958..a904bcaa 100644
--- a/EquipMgr/Tnb.EquipMgr/EquipmentService.cs
+++ b/EquipMgr/Tnb.EquipMgr/EquipmentService.cs
@@ -1,13 +1,18 @@
using Aop.Api.Domain;
using Aspose.Cells.Drawing;
using JNPF.Common.Filter;
+using JNPF.Common.Security;
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
+using JNPF.Extras.CollectiveOAuth.Models;
+using JNPF.Systems.Entitys.Permission;
using JNPF.VisualDev;
using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
using Mapster;
using Microsoft.AspNetCore.Mvc;
+using Senparc.NeuChar.ApiHandlers;
using SqlSugar;
+using Tnb.BasicData;
using Tnb.EquipMgr.Entities;
using Tnb.EquipMgr.Entities.Dto;
using Tnb.EquipMgr.Interfaces;
@@ -78,5 +83,67 @@ namespace Tnb.EquipMgr
return await _repository.AsSugarClient().Queryable().Where(x => typeIdArr.Contains(x.equip_type_id))
.ToListAsync();
}
+
+ [HttpPost]
+ public async Task GetWorklineAndEquipTree(Dictionary dic)
+ {
+ string equipTypes = dic.ContainsKey("equipTypes") ? dic["equipTypes"] : "";
+ var db = _repository.AsSugarClient();
+ var queryable1 = db.Queryable()
+ .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().Where(b=>b.ParentId==a.Id && b.DeleteMark==null && b.Category==DictConst.RegionCategoryWorklineCode).Any(),
+ num = SqlFunc.Subqueryable().Where(b=>b.ParentId==a.Id && b.DeleteMark==null && b.Category==DictConst.RegionCategoryWorklineCode).Count(),
+ isLeaf = false,
+ children = SqlFunc.Subqueryable().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 list2 = new List();
+ if (!string.IsNullOrEmpty(equipTypes))
+ {
+ string[] equipTypeArr = equipTypes.Split(",");
+ list2 = await db.Queryable()
+ .Where((a) => equipTypeArr.Contains(a.code))
+ .Select((a) => new WorklineAndEquipTreeOutput()
+ {
+ id = a.id,
+ title = a.name,
+ parentId = "0",
+ hasChildren = SqlFunc.Subqueryable().Where(b=>b.equip_type_id==a.id).Any(),
+ num = SqlFunc.Subqueryable().Where(b=>b.equip_type_id==a.id).Count(),
+ isLeaf = false,
+ children = SqlFunc.Subqueryable().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()
+ {
+ ["list"] = list1,
+ });
+ }
}
}
\ No newline at end of file
From 36c65acc0e1d7267cbd11feea2d2c302341fa662 Mon Sep 17 00:00:00 2001
From: zhoukeda <1315948824@qq.com>
Date: Wed, 19 Jul 2023 11:06:17 +0800
Subject: [PATCH 2/2] bug
---
.../PrdMoTaskIssueService.cs | 121 +++++++++++-------
1 file changed, 77 insertions(+), 44 deletions(-)
diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskIssueService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskIssueService.cs
index 28190f8d..2f3ebcec 100644
--- a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskIssueService.cs
+++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskIssueService.cs
@@ -20,6 +20,11 @@ using Tnb.ProductionMgr.Interfaces;
using Aspose.Cells.Drawing;
using Microsoft.AspNetCore.Mvc;
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
{
@@ -46,54 +51,82 @@ namespace Tnb.ProductionMgr
}
+ // private async Task 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().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().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().FirstAsync(it => it.id == eqpId);
+ // if (eqp != null)
+ // {
+ // row["eqp_id"] = $"{eqp.code}/{eqp.name}";
+ // row["eqpid"] = eqp.id;
+ // }
+ // }
+ // }
+ // }
+ // return data!;
+ // }
+
private async Task 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)
+ Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary();
+ string moTaskCode = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : "";
+ string moTaskStatus = queryJson.ContainsKey("mo_task_status") ? queryJson["mo_task_status"].ToString() : "";
+ var result = await db.Queryable()
+ .LeftJoin((a, b) => a.material_id == b.id)
+ .LeftJoin((a, b, c) => c.EnCode == DictConst.TaskStatus)
+ .LeftJoin((a, b, c, d) => c.Id == d.DictionaryTypeId && a.mo_task_status == d.EnCode)
+ .LeftJoin((a,b,c,d,e)=>a.mold_id==e.id)
+ .LeftJoin((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);
- var pkName = "material_id";
- if (dic.ContainsKey(pkName))
- {
- var materialId = dic[pkName]?.ToString();
- var material = await db.Queryable().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().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().FirstAsync(it => it.id == eqpId);
- if (eqp != null)
- {
- row["eqp_id"] = $"{eqp.code}/{eqp.name}";
- row["eqpid"] = eqp.id;
- }
- }
- }
- }
- return data!;
+ 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,
+ scheduled_qty = a.scheduled_qty,
+ }).ToPagedListAsync(input.currentPage, input.pageSize);
+ return PageResult.SqlSugarPageResult(result);
}
}
}