diff --git a/BasicData/Tnb.BasicData.Entities/Consts/FactoryConfigConst.cs b/BasicData/Tnb.BasicData.Entities/Consts/FactoryConfigConst.cs index cd2321bb..aaa43e9b 100644 --- a/BasicData/Tnb.BasicData.Entities/Consts/FactoryConfigConst.cs +++ b/BasicData/Tnb.BasicData.Entities/Consts/FactoryConfigConst.cs @@ -29,5 +29,10 @@ namespace Tnb.BasicData /// BIP地址 /// public const string BIPURL = "bipUrl"; + + /// + /// 白班夜班时间 + /// + public const string DAYNIGHTWORKTIME = "dayNightWorkTime"; } } \ No newline at end of file diff --git a/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/PADPackageTaskPageOutput.cs b/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/PADPackageTaskPageOutput.cs index 25a0b07f..f573e992 100644 --- a/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/PADPackageTaskPageOutput.cs +++ b/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/PADPackageTaskPageOutput.cs @@ -26,6 +26,7 @@ namespace Tnb.ProductionMgr.Entities.Dto.PrdManage public string material_code { get; set; } public string material_name { get; set; } + public string material_specification { get; set; } /// /// 产线id diff --git a/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTask.cs b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTask.cs index 93b74557..472d6627 100644 --- a/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTask.cs +++ b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTask.cs @@ -217,7 +217,7 @@ public partial class PrdMoTask : BaseEntity public int has_last_check { get; set; } /// - /// 排班类型 + /// 排班类型 1 两班倒 2 四班倒 /// public string scheduling_class_type { get; set; } diff --git a/ProductionMgr/Tnb.ProductionMgr.Interfaces/IPrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr.Interfaces/IPrdMoTaskService.cs index 29d1af13..60f65468 100644 --- a/ProductionMgr/Tnb.ProductionMgr.Interfaces/IPrdMoTaskService.cs +++ b/ProductionMgr/Tnb.ProductionMgr.Interfaces/IPrdMoTaskService.cs @@ -1,4 +1,5 @@ -using Tnb.ProductionMgr.Entities; +using SqlSugar; +using Tnb.ProductionMgr.Entities; using Tnb.ProductionMgr.Entities.Dto; using Tnb.ProductionMgr.Entities.Dto.PrdManage; @@ -58,6 +59,6 @@ namespace Tnb.ProductionMgr.Interfaces /// /// /// - Task ReportInstock(CheckCompleteInput input); + Task ReportInstock(CheckCompleteInput input,ISqlSugarClient db = null); } } diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs index 05219fcd..8c055c1e 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs @@ -424,10 +424,27 @@ namespace Tnb.ProductionMgr estimated_end_date = a.estimated_end_date == null ? null : a.estimated_end_date.Value.ToString(DbTimeFormat.SS), bom_id = d.id, bom_version = d.version, - create_time = a.create_time==null ? "" : a.create_time.Value.ToString(DbTimeFormat.SS) + create_time = a.create_time==null ? "" : a.create_time.Value.ToString(DbTimeFormat.SS), + dayshift_worker_id = a.dayshift_worker_id, + dayshiftafter_worker_id = a.dayshiftafter_worker_id, + nightshift_worker_id = a.nightshift_worker_id, + nightshiftafter_worker_id = a.nightshiftafter_worker_id, }) .Mapper(it => it.mo_task_status = dic.ContainsKey(it.mo_task_status) ? dic[it.mo_task_status].ToString()! : "") .ToListAsync(); + + List userIdList = result.Select(x => x.dayshift_worker_id).Distinct().ToList(); + userIdList.AddRange(result.Select(x => x.dayshiftafter_worker_id).Distinct().ToList()); + userIdList.AddRange(result.Select(x => x.nightshift_worker_id).Distinct().ToList()); + userIdList.AddRange(result.Select(x => x.nightshiftafter_worker_id).Distinct().ToList()); + List userEntities = await _db.Queryable().Where(x=>userIdList.Contains(x.Id)).ToListAsync(); + foreach (var item in result) + { + item.dayshift_worker_id = userEntities.Find(x=>x.Id==item.dayshift_worker_id)?.RealName ?? item.dayshift_worker_id; + item.dayshiftafter_worker_id = userEntities.Find(x=>x.Id==item.dayshiftafter_worker_id)?.RealName ?? item.dayshiftafter_worker_id; + item.nightshift_worker_id = userEntities.Find(x=>x.Id==item.nightshift_worker_id)?.RealName ?? item.nightshift_worker_id; + item.nightshiftafter_worker_id = userEntities.Find(x=>x.Id==item.nightshiftafter_worker_id)?.RealName ?? item.nightshiftafter_worker_id; + } return result; } /// @@ -2129,13 +2146,13 @@ namespace Tnb.ProductionMgr return "提报成功"; } - public async Task ReportInstock(CheckCompleteInput input) + public async Task ReportInstock(CheckCompleteInput input,ISqlSugarClient db = null) { try { - var db = _repository.AsSugarClient(); - PrdReport report = await db.Queryable().FirstAsync(it => it.id==input.report_id); - PrdMoTask? prdMoTask = await db.Queryable().SingleAsync(x => x.id == report.mo_task_id); + if(db==null) db = _repository.AsSugarClient(); + PrdReport report = await db.Queryable().FirstAsync(it => it.id==input.report_id && !SqlFunc.IsNullOrEmpty(it.id)); + PrdMoTask? prdMoTask = await db.Queryable().FirstAsync(x => x.id == report.mo_task_id && !SqlFunc.IsNullOrEmpty(x.id)); EqpEquipment equip = await db.Queryable().SingleAsync(x => x.id == prdMoTask.eqp_id); BasMaterial basMaterial = await db.Queryable().SingleAsync(x => x.id == prdMoTask.material_id); WmsCarryH wmsCarryH = await db.Queryable().FirstAsync(x=>x.carry_code==report.material_box_code); @@ -2219,7 +2236,7 @@ namespace Tnb.ProductionMgr Log.Information($"生产入库参数:${JsonConvert.SerializeObject(wmsPrdInstockInput)}"); - Tnb.WarehouseMgr.Entities.Dto.Outputs.Result result2 = await _wmsPrdInstockHService.PrdInstock(wmsPrdInstockInput, _db); + Tnb.WarehouseMgr.Entities.Dto.Outputs.Result result2 = await _wmsPrdInstockHService.PrdInstock(wmsPrdInstockInput, db); if (result2 != null) { Log.Information($"生产入库接口返回参数:${JsonConvert.SerializeObject(result2)}"); @@ -3033,13 +3050,17 @@ namespace Tnb.ProductionMgr DbResult result = await db.Ado.UseTranAsync(async () => { PrdMoTask moTask = await db.Queryable().SingleAsync(x => x.id == input.mo_task_id); - if (moTask.worker_id == input.worker_id) - { - throw new Exception("与原员工相同"); - } + // if (moTask.worker_id == input.worker_id) + // { + // throw new Exception("与原员工相同"); + // } - _ = await db.Updateable().SetColumns(x => x.worker_id == input.worker_id) + _ = await db.Updateable() + .SetColumns(x => x.dayshift_worker_id == input.dayshift_worker_id) + .SetColumns(x => x.nightshift_worker_id == input.nightshift_worker_id) + .SetColumns(x => x.dayshiftafter_worker_id == input.dayshiftafter_worker_id) + .SetColumns(x => x.nightshiftafter_worker_id == input.nightshiftafter_worker_id) .Where(x => x.id == input.mo_task_id).ExecuteCommandAsync(); PrdMo mo = await db.Queryable().SingleAsync(x => x.id == moTask.mo_id); @@ -3746,11 +3767,13 @@ namespace Tnb.ProductionMgr string ids = input.GetOrDefault("ids"); string[] idList = ids.Split(","); // string workerId = input.GetOrDefault("worker_id"); + string schedulingClassType = input.GetOrDefault("scheduling_class_type"); string dayshiftWorkerId = input.GetOrDefault("dayshift_worker_id"); string nightshiftWorkerId = input.GetOrDefault("nightshift_worker_id"); string dayshiftafterWorkerId = input.GetOrDefault("dayshiftafter_worker_id"); string nightshiftafterWorkerId = input.GetOrDefault("nightshiftafter_worker_id"); int row = await _db.Updateable() + .SetColumns(x => x.scheduling_class_type == schedulingClassType) .SetColumns(x => x.dayshift_worker_id == dayshiftWorkerId) .SetColumns(x => x.nightshift_worker_id == nightshiftWorkerId) .SetColumns(x => x.dayshiftafter_worker_id == dayshiftafterWorkerId) diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdPackReportService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdPackReportService.cs index 53e506bb..230e56cf 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdPackReportService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdPackReportService.cs @@ -11,6 +11,7 @@ using JNPF.Systems.Entitys.System; using JNPF.Systems.Interfaces.System; using Mapster; using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; using SqlSugar; using Tnb.BasicData; using Tnb.BasicData.Entities; @@ -21,6 +22,7 @@ using Tnb.ProductionMgr.Entities.Dto.PrdManage; using Tnb.ProductionMgr.Entities.Entity; using Tnb.ProductionMgr.Interfaces; using Tnb.ProductionMgr.Entities.Dto; +using Tnb.WarehouseMgr.Entities.Consts; namespace Tnb.ProductionMgr @@ -413,7 +415,33 @@ namespace Tnb.ProductionMgr input.sidx = "create_time"; input.sort = "desc"; } + + string userId = _userManager.UserId; + string nowTime = DateTime.Now.ToString("HH:mm"); + BasFactoryConfig config = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.DAYNIGHTWORKTIME); + Dictionary dayNightWorkTime = JsonConvert.DeserializeObject>(config.value); + string dayStime = dayNightWorkTime["白班"].Split("-")[0]; + string dayEtime = dayNightWorkTime["白班"].Split("-")[1]; + string nightStime = dayNightWorkTime["夜班"].Split("-")[0]; + string nightEtime = dayNightWorkTime["夜班"].Split("-")[1]; + string dayBeforeStime = dayNightWorkTime["白班前"].Split("-")[0]; + string dayBeforeEtime = dayNightWorkTime["白班前"].Split("-")[1]; + string dayAfterStime = dayNightWorkTime["白班后"].Split("-")[0]; + string dayAfterEtime = dayNightWorkTime["白班后"].Split("-")[1]; + string nightBeforeStime = dayNightWorkTime["夜班前"].Split("-")[0]; + string nightBeforeEtime = dayNightWorkTime["夜班前"].Split("-")[1]; + string nightAfterStime = dayNightWorkTime["夜班后"].Split("-")[0]; + string nightAfterEtime = dayNightWorkTime["夜班后"].Split("-")[1]; + + bool twoDayFlag = string.Compare(nowTime, dayStime) >= 0 && string.Compare(nowTime, dayEtime) <= 0; + bool twoNightFlag = string.Compare(nowTime,nightStime)>=0 && string.Compare(nowTime,nightEtime)<=0; + bool fourDayBeforeFlag = (string.Compare(nowTime,dayBeforeStime)>=0 && string.Compare(nowTime,dayBeforeEtime)<=0) ; + bool fourDayAfterFlag = (string.Compare(nowTime,dayAfterStime)>=0 && string.Compare(nowTime,dayAfterEtime)<=0) ; + bool fourNightBeforeFlag = (string.Compare(nowTime,nightBeforeStime)>=0 && string.Compare(nowTime,nightBeforeEtime)<=0) ; + bool fourNightAfterFlag = (string.Compare(nowTime,nightAfterStime)>=0 && string.Compare(nowTime,nightAfterEtime)<=0) ; + //模具部门的人 + List moldUserIds = await _db.Queryable().Where(x=>x.ObjectId=="35792898276629").Select(x=>x.UserId).ToListAsync(); SqlSugarPagedList result = await _db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b, c) => a.process_id == c.id) @@ -422,18 +450,30 @@ namespace Tnb.ProductionMgr .LeftJoin((a, b, c, d, e, f) => a.eqp_id == f.id) .LeftJoin((a, b, c, d, e, f, g) => a.mold_id == g.id) .LeftJoin((a, b, c, d, e, f, g, h) => a.material_id == h.output_material_id && a.eqp_id == h.equip_id && a.mold_id == h.molds_id && h.enabled == 1) - .LeftJoin((a, b, c, d, e, f, g, h, i) => a.process_id == i.process_id && i.enabled == 1 && a.schedule_type==1) - .LeftJoin((a, b, c, d, e, f, g, h, i, j) => a.mo_id == j.id) - .LeftJoin((a, b, c, d, e, f, g, h, i, j, k) => a.material_id == k.material_id && k.auxiliary_unit_id == "KGM") - .LeftJoin((a, b, c, d, e, f, g, h, i, j, k, l) => a.eqp_id == l.equip_id && l.enabled == 1 && l.label_name.Contains("允许称重"))//注塑空满箱请求 + //.LeftJoin((a, b, c, d, e, f, g, h, i) => a.process_id == i.process_id && i.enabled == 1 && a.schedule_type==1) + .LeftJoin((a, b, c, d, e, f, g, h, j) => a.mo_id == j.id) + .LeftJoin((a, b, c, d, e, f, g, h, j, k) => a.material_id == k.material_id && k.auxiliary_unit_id == "KGM") + .LeftJoin((a, b, c, d, e, f, g, h, j, k, l) => a.eqp_id == l.equip_id && l.enabled == 1 && l.label_name.Contains("允许称重"))//注塑空满箱请求 + .LeftJoin((a, b, c, d, e, f, g, h, j, k, l,m)=>a.workstation_id==m.Id) // .Where((a, b) => a.workstation_id == input.stationId) - .Where((a, b) => a.worker_id == _userManager.UserId && (a.schedule_type==1 || (a.schedule_type==2 && a.parent_id!=null))) + // .Where((a, b) => a.worker_id == _userManager.UserId && (a.schedule_type==1 || (a.schedule_type==2 && a.parent_id!=null))) + .Where((a, b) => a.schedule_type==1 || (a.schedule_type==2 && a.parent_id!=null)) + // .Where(a=>a.dayshift_worker_id==userId || a.dayshiftafter_worker_id==userId || a.nightshift_worker_id==userId || a.nightshiftafter_worker_id==userId) .WhereIF(!string.IsNullOrEmpty(mo_task_code), a => a.mo_task_code.Contains(mo_task_code)) //.WhereIF(!string.IsNullOrEmpty(mo_task_status),a=>a.mo_task_status==mo_task_status) .WhereIF(statusList.Count > 0, a => statusList.Contains(a.mo_task_status)) .WhereIF(status == "3" && start_time != null, a => a.act_end_date >= start_time) .WhereIF(status == "3" && end_time != null, a => a.act_end_date <= end_time) - .Select((a, b, c, d, e, f, g, h, i, j, k, l) => new PADPackageTaskPageOutput + .Where((a, b, c, d, e, f, g, h, j, k, l,m)=>(m.ManagerId==userId) + || (a.schedule_type==1 && a.mo_task_status==DictConst.ToBeStartedEnCode && moldUserIds.Contains(userId)) + || (a.scheduling_class_type=="1" && twoDayFlag && a.dayshift_worker_id==userId) + || (a.scheduling_class_type=="1" && twoNightFlag && a.nightshift_worker_id==userId) + || (a.scheduling_class_type=="2" && fourDayBeforeFlag && a.dayshift_worker_id==userId) + || (a.scheduling_class_type=="2" && fourDayAfterFlag && a.dayshiftafter_worker_id==userId) + || (a.scheduling_class_type=="2" && fourNightBeforeFlag && a.nightshift_worker_id==userId) + || (a.scheduling_class_type=="2" && fourNightAfterFlag && a.nightshiftafter_worker_id==userId) + ) + .Select((a, b, c, d, e, f, g, h, j, k, l) => new PADPackageTaskPageOutput { id = a.id, mo_task_code = a.mo_task_code, @@ -442,7 +482,8 @@ namespace Tnb.ProductionMgr material_id = a.material_id, material_code = b.code, material_name = b.name, - material_standard = b.material_specification, + material_standard = b.material_standard, + material_specification = b.material_specification, container_no = b.container_no, di = b.di, workline_id = a.workline_id, @@ -469,7 +510,7 @@ namespace Tnb.ProductionMgr schedule_type = a.schedule_type, mold_cavity = g.mold_cavity, moulding_cycle = h.moulding_cycle, - standard_time = i.standard_time, + // standard_time = i.standard_time, act_start_date = a.act_start_date == null ? "" : a.act_start_date.Value.ToString(DbTimeFormat.SS), act_end_date = a.act_end_date == null ? "" : a.act_end_date.Value.ToString(DbTimeFormat.SS), plan_end_date = a.plan_end_date == null ? "" : a.plan_end_date.Value.ToString(DbTimeFormat.SS), @@ -521,6 +562,10 @@ namespace Tnb.ProductionMgr x.output_material_id == item.material_id && x.enabled == 1) .OrderByDescending(x => x.create_time).FirstAsync(); item.standard_time = processStandardsH?.moulding_cycle?.ToString(); + }else if (item.schedule_type==1) + { + BasStandardTime basStandardTime = await _db.Queryable().Where(x=>x.process_id==item.process_id && x.enabled==1).FirstAsync(); + item.standard_time = basStandardTime.standard_time; } } } diff --git a/QcMgr/Tnb.QcMgr/QcCheckPlanService.cs b/QcMgr/Tnb.QcMgr/QcCheckPlanService.cs index 6f341836..9fbc9cae 100644 --- a/QcMgr/Tnb.QcMgr/QcCheckPlanService.cs +++ b/QcMgr/Tnb.QcMgr/QcCheckPlanService.cs @@ -423,45 +423,46 @@ namespace Tnb.QcMgr GetQuery(Query, entity); List list = await Query.ToListAsync(); List removes = new(); - // foreach (QcCheckPlanH data in list) - // { - // if (!string.IsNullOrEmpty(entity.materialid)) - // { - // if (_repository.AsSugarClient().Queryable().Where(p => p.planid == data.id).Any()) - // { - // if (!_repository.AsSugarClient().Queryable().Where(p => p.planid == data.id && p.materialid == entity.materialid).Any()) - // { - // removes.Add(data.id); - // } - // } - // } - // if (!string.IsNullOrEmpty(entity.processid)) - // { - // if (_repository.AsSugarClient().Queryable().Where(p => p.planid == data.id).Any()) - // { - // if (!_repository.AsSugarClient().Queryable().Where(p => p.planid == data.id && p.processid == entity.processid).Any()) - // { - // removes.Add(data.id); - // } - // - // } - // } - // if (!string.IsNullOrEmpty(entity.workid)) - // { - // if (_repository.AsSugarClient().Queryable().Where(p => p.planid == data.id).Any()) - // { - // if (!_repository.AsSugarClient().Queryable().Where(p => p.planid == data.id && p.workid == entity.workid).Any()) - // { - // removes.Add(data.id); - // } - // } - // } - // } + foreach (QcCheckPlanH data in list) + { + if (!string.IsNullOrEmpty(entity.materialid)) + { + if (_repository.AsSugarClient().Queryable().Where(p => p.planid == data.id).Any()) + { + if (!_repository.AsSugarClient().Queryable().Where(p => p.planid == data.id && p.materialid == entity.materialid).Any()) + { + removes.Add(data.id); + } + } + } + if (!string.IsNullOrEmpty(entity.processid)) + { + if (_repository.AsSugarClient().Queryable().Where(p => p.planid == data.id).Any()) + { + if (!_repository.AsSugarClient().Queryable().Where(p => p.planid == data.id && p.processid == entity.processid).Any()) + { + removes.Add(data.id); + } + + } + } + if (!string.IsNullOrEmpty(entity.workid)) + { + if (_repository.AsSugarClient().Queryable().Where(p => p.planid == data.id).Any()) + { + if (!_repository.AsSugarClient().Queryable().Where(p => p.planid == data.id && p.workid == entity.workid).Any()) + { + removes.Add(data.id); + } + } + } + } // list = list.Where(p => !removes.Contains(p.id)).ToList(); // .WhereIF(!string.IsNullOrEmpty(entity.materialid), (a, b, c, d, e) => c.materialid == entity.materialid) // .WhereIF(!string.IsNullOrEmpty(entity.processid), (a, b, c, d, e) => d.processid == entity.processid) // .WhereIF(!string.IsNullOrEmpty(entity.workid), (a, b, c, d, e) => e.workid == entity.workid).ToListAsync(); + Filter(list, entity); if (list.Count > 0) { @@ -478,7 +479,7 @@ namespace Tnb.QcMgr RemarkAttribute remark = RemarkAttribute.GetRemark(enumTriggerEvent); string type = DictionaryData.Where(p => p.FullName == remark.CheckType).First().Id; TriggerEvent = _repository.AsSugarClient().Queryable().Where(p => p.type == type && p.name == remark.CheckContent).First(); - Query = Query.Where((a, b, c, d, e) => b.triggertype == "3" && b.content!.Contains(TriggerEvent.id) && c.materialid==entity.materialid); + Query = Query.Where((a, b, c, d, e) => b.triggertype == "3" && b.content!.Contains(TriggerEvent.id)); } private void Filter(List QcCheckPlanHs, TriggerPlanEntity entity) { diff --git a/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs b/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs index 651ba769..8cef7728 100644 --- a/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs +++ b/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs @@ -10,6 +10,7 @@ using JNPF.Systems.Entitys.Permission; using JNPF.Systems.Entitys.System; using JNPF.VisualDev; using JNPF.VisualDev.Entitys.Dto.VisualDevModelData; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using SqlSugar; @@ -367,7 +368,7 @@ namespace Tnb.QcMgr pqty = pqty, rqty = rqty, check_result = ((EnumCheckConclusion)dic[CheckTaskInput.result]).ToString(), - }); + },db); } } await db.Ado.CommitTranAsync();