diff --git a/BasicData/Tnb.BasicData.Entities/Consts/CodeTemplateConst.cs b/BasicData/Tnb.BasicData.Entities/Consts/CodeTemplateConst.cs index 473334bb..d64fbec0 100644 --- a/BasicData/Tnb.BasicData.Entities/Consts/CodeTemplateConst.cs +++ b/BasicData/Tnb.BasicData.Entities/Consts/CodeTemplateConst.cs @@ -79,6 +79,21 @@ namespace Tnb.BasicData /// 成品检验单号 /// public const string CHENGPINJIANYAN_CODE = "chengpinjianyan"; + + /// + /// 设备点巡检 + /// + public const string SPOTINSPECTIONEXECUTIONSHEET_CODE = "spotInspectionExecutionSheet"; + + /// + /// /设备保养 + /// + public const string MAINTENANCERECORDFIJIPROJECT_CODE = "maintenancerecordfijiproject"; + + /// + /// /模具保养 + /// + public const string MOLDMAINTENANCE_CODE = "MoldMaintenance"; } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/EqpMaintainRecordListOutput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EqpMaintainRecordListOutput.cs index 51b1443c..266380ca 100644 --- a/EquipMgr/Tnb.EquipMgr.Entities/Dto/EqpMaintainRecordListOutput.cs +++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EqpMaintainRecordListOutput.cs @@ -3,6 +3,7 @@ namespace Tnb.EquipMgr.Entities.Dto public class EqpMaintainRecordListOutput { public string id { get; set; } + public string code { get; set; } public string equip_id { get; set; } public string equip_id_id { get; set; } public string status { get; set; } diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/ToolMoldMaintainRecordListOutput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/ToolMoldMaintainRecordListOutput.cs index 369b25fb..c9866f66 100644 --- a/EquipMgr/Tnb.EquipMgr.Entities/Dto/ToolMoldMaintainRecordListOutput.cs +++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/ToolMoldMaintainRecordListOutput.cs @@ -3,6 +3,7 @@ namespace Tnb.EquipMgr.Entities.Dto public class ToolMoldMaintainRecordListOutput { public string id { get; set; } + public string code { get; set; } public string mold_id { get; set; } public string mold_id_id { get; set; } public string status { get; set; } diff --git a/EquipMgr/Tnb.EquipMgr/EquMaintainRecordService.cs b/EquipMgr/Tnb.EquipMgr/EquMaintainRecordService.cs index a7bfc7e3..548e033c 100644 --- a/EquipMgr/Tnb.EquipMgr/EquMaintainRecordService.cs +++ b/EquipMgr/Tnb.EquipMgr/EquMaintainRecordService.cs @@ -82,6 +82,7 @@ namespace Tnb.EquipMgr .Select((a, b, c, d,e) => new EqpMaintainRecordListOutput { id = a.id, + code = a.code, equip_id = b.code + "/" + b.name, equip_id_id = a.equip_id, status = a.status, diff --git a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRecordService.cs b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRecordService.cs index a7e179e5..d452c4c3 100644 --- a/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRecordService.cs +++ b/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainRecordService.cs @@ -82,6 +82,7 @@ namespace Tnb.EquipMgr .Select((a, b, c, d,e) => new ToolMoldMaintainRecordListOutput { id = a.id, + code = a.code, mold_id = b.mold_code + "/" + b.mold_name, mold_id_id = a.mold_id, status = a.status, diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs index 3dce13ad..4f1bfa0c 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs @@ -1318,7 +1318,7 @@ namespace Tnb.ProductionMgr if (toolMaintainTemMoldH != null && toolMolds!=null) { - string code = DateTime.Now.Ticks.ToString(); + string code = await _billRuleService.GetBillNumber(CodeTemplateConst.MOLDMAINTENANCE_CODE); ToolMoldMaintainRecordH toolMoldMaintainRecordH = new ToolMoldMaintainRecordH() { id = SnowflakeIdHelper.NextId(), @@ -2516,7 +2516,7 @@ namespace Tnb.ProductionMgr erpRequestData.Add("pk_org_v",erpOrg.pk_org_v); erpRequestData.Add("vtrantypecode","55A4-01"); erpRequestData.Add("vtrantypeid","0001A11000000002LVX8"); - erpRequestData.Add("vdef1",null); + erpRequestData.Add("vdef1",null);//todo 倒冲日期 erpRequestData.Add("vdef2",null); erpRequestData.Add("report_id",report.id); diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs index 74f11399..4abb990f 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs @@ -709,5 +709,26 @@ /// 成品提报 /// public const string bipwarehouseid_cp = "1001A1100000001MA8ME"; + + + /// + /// 四厂区生产部id + /// + public const string sichangqushengchanbu_id = "1001A1100000001RLNAD"; + + /// + /// 四厂区生产部id + /// + public const string sichangqushengchanbu_vid = "0001A1100000000BUMTN"; + + /// + /// 四厂区仓库id + /// + public const string sichangqucangku_id = "1001A1100000001JFOOL"; + + /// + /// 四厂区仓库vid + /// + public const string sichangqucangku_vid = "0001A1100000000AOMIG"; } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdInstockHService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdInstockHService.cs index 32b943ee..270979a1 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdInstockHService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdInstockHService.cs @@ -357,12 +357,13 @@ namespace Tnb.WarehouseMgr List allInstockDetails = await _db.Queryable().Where(it => it.prd_instockD_id == wmsPrdInstockD.id).ToListAsync(); List materialIds = Arrays.AsList(instock.material_id); - List unitCodes = allInstockDetails.Select(x => x.unit_id).Distinct().ToList(); - List unitDatas = await _db.Queryable() - .LeftJoin((x, y) => x.Id == y.DictionaryTypeId) - .Where((x, y) => x.EnCode == DictConst.MeasurementUnit && unitCodes.Contains(y.EnCode)) - .Select((x, y) => y) - .ToListAsync(); + List unitIds = allInstockDetails.Select(x => x.unit_id).Distinct().ToList(); + // List unitCodes = allInstockDetails.Select(x => x.unit_id).Distinct().ToList(); + // List unitDatas = await _db.Queryable() + // .LeftJoin((x, y) => x.Id == y.DictionaryTypeId) + // .Where((x, y) => x.EnCode == DictConst.MeasurementUnit && unitCodes.Contains(y.EnCode)) + // .Select((x, y) => y) + // .ToListAsync(); List erpWarehouserelaHs = await _db.Queryable().Where(x=>x.id!=null).ToListAsync(); string userId = instock?.create_id ?? WmsWareHouseConst.AdministratorUserId; @@ -372,7 +373,8 @@ namespace Tnb.WarehouseMgr tableIds.Add(WmsWareHouseConst.AdministratorOrgId); tableIds.AddRange(materialIds); tableIds.Add(supplierId); - tableIds.AddRange(unitDatas.Select(x => x.Id).ToList()); + // tableIds.AddRange(unitDatas.Select(x => x.Id).ToList()); + tableIds.AddRange(unitIds); List erpExtendFields = await _db.Queryable().Where(x => tableIds.Contains(x.table_id)).ToListAsync(); string erpCreateId = erpExtendFields.Find(x => x.table_id == userId)?.user_id ?? ""; @@ -420,7 +422,7 @@ namespace Tnb.WarehouseMgr ["crowno"] = (allInstockDetails.FindIndex(x => x.id == item.id) + 1) * 10, ["csourcebillhid"] = prdReport?.erp_pk_wr ?? "", ["csourcebillbid"] = prdReport?.erp_pk_wr_product ?? "", - ["cunitid"] = erpExtendFields.Find(x => x.table_id == (unitDatas.Find(x => x.EnCode == item.unit_id)?.Id ?? ""))?.cunitid ?? "", + ["cunitid"] = erpExtendFields.Find(x => x.table_id == item.unit_id)?.cunitid ?? "", ["cvendorid"] = erpExtendFields.Find(x => x.table_id == supplierId)?.supplier_id ?? "", ["cvendorvid"] = erpExtendFields.Find(x => x.table_id == supplierId)?.supplier_vid ?? "", ["dbizdate"] = instock.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss"), diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatOutstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatOutstockService.cs index ca437876..4e5e8e94 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatOutstockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatOutstockService.cs @@ -1,239 +1,340 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Aop.Api.Domain; -using JNPF.Common.Core.Manager; -using JNPF.Common.Dtos.VisualDev; -using JNPF.Common.Enums; -using JNPF.FriendlyException; -using JNPF.Systems.Interfaces.System; -using JNPF.VisualDev; -using JNPF.VisualDev.Interfaces; -using Mapster; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Logging; -using Newtonsoft.Json.Linq; -using NPOI.HPSF; -using Senparc.Weixin.Work.AdvancedAPIs.OaDataOpen; -using SqlSugar; -using Tnb.BasicData.Entities; -using Tnb.WarehouseMgr.Entities; -using Tnb.WarehouseMgr.Entities.Attributes; -using Tnb.WarehouseMgr.Entities.Consts; -using Tnb.WarehouseMgr.Entities.Dto; -using Tnb.WarehouseMgr.Entities.Dto.Inputs; -using Tnb.WarehouseMgr.Entities.Entity; -using Tnb.WarehouseMgr.Interfaces; - -namespace Tnb.WarehouseMgr -{ - /// - /// 材料出库单 - /// - [OverideVisualDev(ModuleConsts.MODULE_WmsRawmatOutstock_ID)] - [ServiceModule(BizTypeId)] - public class WmsRawmatOutstockService : BaseWareHouseService - { - private const string BizTypeId = WmsWareHouseConst.BIZTYPE_WmsRawmatOutstock_ID; - private readonly ISqlSugarClient _db; - private readonly IUserManager _userManager; - private readonly IBillRullService _billRullService; - private readonly IRunService _runService; - private readonly IVisualDevService _visualDevService; - private readonly IWmsPDAScanInStockService _wmsPDAScanInStock; - private readonly IWareHouseService _wareHouseService; - public WmsRawmatOutstockService( - ISqlSugarRepository repository, - IUserManager userManager, - IBillRullService billRullService, - IRunService runService, - IVisualDevService visualDevService, - IWmsPDAScanInStockService wmsPDAScanInStock, - IWareHouseService wareHouseService) - { - _db = repository.AsSugarClient(); - _userManager = userManager; - _billRullService = billRullService; - _runService = runService; - _visualDevService = visualDevService; - _wmsPDAScanInStock = wmsPDAScanInStock; - _wareHouseService = wareHouseService; - - OverideFuncs.GetDetailsAsync = GetDetailsAsync; - } - - - public override async Task ModifyAsync(WareHouseUpInput input) - { - if (input == null) - { - throw new ArgumentNullException(nameof(input)); - } - - } - - [NonAction] - private async Task GetDetailsAsync(string id) - { - try - { - return await Task.FromResult(_db.Queryable().Where(r => r.bill_id == id).ToList()); - } - catch (Exception ex) - { - return Task.FromResult(ex); - } - } - - /// - /// 下发 - /// - /// - /// - /// - [HttpPost, NonUnify, AllowAnonymous] - public async Task Distribute(RawmatOutstockInput input) - { - try - { - await _s_taskExecuteSemaphore_YCLOutstock.WaitAsync(); - if (string.IsNullOrEmpty(input.source_id)) - { - throw new AppFriendlyException("来源单据id不可为空", 500); - } - if (input.carrys.Count == 0) - { - throw new AppFriendlyException("至少选择一个载具", 500); - } - - WmsRawmatOutstockD wmsRawmatOutstockD = await _db.Queryable().FirstAsync(it => it.id == input.source_id); - WmsRawmatOutstockH wmsRawmatOutstockH = await _db.Queryable().FirstAsync(it => it.id == wmsRawmatOutstockD.bill_id); - - List _items = await _db.Queryable().Where(r => input.carrys.Select(c => c.carry_code).Contains(r.carry_code)).ToListAsync(); - - List wmsCarryCodes = await _db.Queryable().Where(r => _items.Select(c => c.id).Contains(r.carry_id) - && r.material_id == wmsRawmatOutstockD.material_id && r.code_batch == wmsRawmatOutstockD.batchno).ToListAsync(); - - List items = new List(); - - foreach (var carry in input.carrys.Select(c => c.carry_code)) - { - items.Add(_items.Where(r => r.carry_code == carry).First()); - } - - foreach (var item in items) - { - if (item.is_lock == 1) - { - throw new AppFriendlyException($"载具{item.carry_code}已锁定", 500); - } - BasLocation carrryLoc = await _db.Queryable().Where(r => r.id == item.location_id).FirstAsync(); - if (carrryLoc == null || carrryLoc.is_type != "0") - { - throw new Exception($"托盘{item.carry_code}已经不在存储库位中,不能出库!"); - } - } - - decimal? sign_qty = 0; - - decimal qty = wmsCarryCodes.Sum(c => c.codeqty); - if (wmsRawmatOutstockD.actual_outstock_qty + qty > wmsRawmatOutstockD.qty) - { - // 最后一个托盘的数量 - decimal lastCarryQty = wmsCarryCodes.Where(r => r.carry_id == items[items.Count - 1].id).Sum(r => r.codeqty); - // 如果最后一个托盘数量小于超出的出库数量 - if (lastCarryQty < wmsRawmatOutstockD.actual_outstock_qty + qty - wmsRawmatOutstockD.qty) - { - throw new AppFriendlyException($"本次出库数量{qty}已超过可出库数量{wmsRawmatOutstockD.qty - wmsRawmatOutstockD.actual_outstock_qty} 且无需选择{items[items.Count - 1].carry_code}", 500); - } - // 签收数量 - sign_qty = lastCarryQty - (wmsRawmatOutstockD.actual_outstock_qty + qty - wmsRawmatOutstockD.qty); - } - - await _db.Ado.BeginTranAsync(); - - List endLocations = new List(); - - endLocations = _db.Queryable().Where(r => _wareHouseService.GetFloor1YCLDBOutstockLocation().Contains(r.id) && r.is_lock == 0 && r.is_use == "0") - .OrderBy("is_lock, task_nums, location_code").ToList(); - - if (endLocations.Count() < items.Count) - { - throw new AppFriendlyException($@"可用的终点库位数量为{endLocations.Count()}个 下发数量为{items.Count}个 请检查终点库位的锁定和占用状态", 500); - } - - foreach (var wmsCarryH in items) - { - BasLocation startLocation = await _db.Queryable().Where(r => r.id == wmsCarryH.location_id).FirstAsync(); - - BasLocation endLocation = null; - - endLocation = await _db.Queryable().Where(r => _wareHouseService.GetFloor1YCLDBOutstockLocation().Contains(r.id) && r.is_lock == 0 && r.is_use == "0").OrderBy("is_lock, task_nums, location_code").FirstAsync(); - - if (endLocation == null) - { - throw new AppFriendlyException($@"没有可用的终点库位!请检查终点库位的锁定和占用状态", 500); - } - - WmsRawmatOutstockC wmsRawmatOutstockC = new WmsRawmatOutstockC(); - wmsRawmatOutstockC.bill_id = wmsRawmatOutstockH.id; - wmsRawmatOutstockC.mat_bill_id = wmsRawmatOutstockD.id; - wmsRawmatOutstockC.carry_id = wmsCarryH.id; - wmsRawmatOutstockC.carry_code = wmsCarryH.carry_code; - wmsRawmatOutstockC.create_id = input.create_id; - wmsRawmatOutstockC.create_time = DateTime.Now; - wmsRawmatOutstockC.startlocation_id = startLocation.id; - wmsRawmatOutstockC.startlocation_code = startLocation.location_code; - wmsRawmatOutstockC.endlocation_id = endLocation.id; - wmsRawmatOutstockC.endlocation_code = endLocation.location_code; - decimal carryQty = wmsCarryCodes.Where(r => r.carry_id == wmsCarryH.id).Sum(r => r.codeqty); - wmsRawmatOutstockC.qty = carryQty; - wmsRawmatOutstockC.sign_qty = wmsCarryH.id == items[items.Count - 1].id && sign_qty > 0 ? sign_qty : carryQty; - - await _db.Insertable(wmsRawmatOutstockC).ExecuteCommandAsync(); - - CommonCreatePretaskInput commonCreatePretaskInput = new CommonCreatePretaskInput(); - commonCreatePretaskInput.startlocation_id = startLocation.id; - commonCreatePretaskInput.endlocation_id = endLocation.id; - commonCreatePretaskInput.task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID; - commonCreatePretaskInput.biz_type = WmsWareHouseConst.BIZTYPE_WmsRawmatOutstock_ID; - commonCreatePretaskInput.source_id = input.source_id; - commonCreatePretaskInput.carry_id = wmsCarryH.id; - commonCreatePretaskInput.carry_code = wmsCarryH.carry_code; - commonCreatePretaskInput.isExcuteMission = false; - - Entities.Dto.Outputs.Result res = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput, _db); - - if (res.code != HttpStatusCode.OK) - { - Logger.LogInformation($@"生成预任务失败"); - throw new AppFriendlyException($@"生成预任务失败", 500); - } - } - - // 更新子表已下发数量 - await _db.Updateable().SetColumns(r => r.actual_outstock_qty == r.actual_outstock_qty + qty).Where(r => r.id == input.source_id).ExecuteCommandAsync(); - - await _db.Ado.CommitTranAsync(); - } - catch (Exception ex) - { - await _db.Ado.RollbackTranAsync(); - Logger.LogError("【Distribute】" + ex.Message); - Logger.LogError("【Distribute】" + ex.StackTrace); - return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); - } - finally - { - _ = _s_taskExecuteSemaphore_YCLOutstock.Release(); - InvokeGenPretaskExcute(); - } - - return await ToApiResult(HttpStatusCode.OK, "成功"); - } - - } -} +// using System; +// using System.Collections.Generic; +// using System.Linq; +// using System.Text; +// using System.Threading.Tasks; +// using Aop.Api.Domain; +// using JNPF.Common.Core.Manager; +// using JNPF.Common.Dtos.VisualDev; +// using JNPF.Common.Enums; +// using JNPF.Common.Security; +// using JNPF.FriendlyException; +// using JNPF.Systems.Entitys.System; +// using JNPF.Systems.Interfaces.System; +// using JNPF.VisualDev; +// using JNPF.VisualDev.Interfaces; +// using Mapster; +// using Microsoft.AspNetCore.Authorization; +// using Microsoft.AspNetCore.Mvc; +// using Microsoft.Extensions.Logging; +// using Newtonsoft.Json; +// using Newtonsoft.Json.Linq; +// using NPOI.HPSF; +// using Senparc.Weixin.Work.AdvancedAPIs.OaDataOpen; +// using SqlSugar; +// using Tnb.BasicData.Entities; +// using Tnb.WarehouseMgr.Entities; +// using Tnb.WarehouseMgr.Entities.Attributes; +// using Tnb.WarehouseMgr.Entities.Consts; +// using Tnb.WarehouseMgr.Entities.Dto; +// using Tnb.WarehouseMgr.Entities.Dto.Inputs; +// using Tnb.WarehouseMgr.Entities.Entity; +// using Tnb.WarehouseMgr.Interfaces; +// using Tnb.ProductionMgr.Entities.Entity; +// using Tnb.BasicData; +// +// namespace Tnb.WarehouseMgr +// { +// /// +// /// 材料出库单 +// /// +// [OverideVisualDev(ModuleConsts.MODULE_WmsRawmatOutstock_ID)] +// [ServiceModule(BizTypeId)] +// public class WmsRawmatOutstockService : BaseWareHouseService +// { +// private const string BizTypeId = WmsWareHouseConst.BIZTYPE_WmsRawmatOutstock_ID; +// private readonly ISqlSugarClient _db; +// private readonly IUserManager _userManager; +// private readonly IBillRullService _billRullService; +// private readonly IRunService _runService; +// private readonly IVisualDevService _visualDevService; +// private readonly IWmsPDAScanInStockService _wmsPDAScanInStock; +// private readonly IWareHouseService _wareHouseService; +// public WmsRawmatOutstockService( +// ISqlSugarRepository repository, +// IUserManager userManager, +// IBillRullService billRullService, +// IRunService runService, +// IVisualDevService visualDevService, +// IWmsPDAScanInStockService wmsPDAScanInStock, +// IWareHouseService wareHouseService) +// { +// _db = repository.AsSugarClient(); +// _userManager = userManager; +// _billRullService = billRullService; +// _runService = runService; +// _visualDevService = visualDevService; +// _wmsPDAScanInStock = wmsPDAScanInStock; +// _wareHouseService = wareHouseService; +// +// OverideFuncs.GetDetailsAsync = GetDetailsAsync; +// } +// +// +// public override async Task ModifyAsync(WareHouseUpInput input) +// { +// if (input == null) +// { +// throw new ArgumentNullException(nameof(input)); +// } +// +// WmsRawmatOutstockD wmsRawmatOutstockD = await _db.Queryable().SingleAsync(x=>x.id==input.requireId); +// WmsRawmatOutstockH wmsRawmatOutstockH = await _db.Queryable().SingleAsync(x=>x.id==wmsRawmatOutstockD.bill_id); +// List wmsCarryCodes = await _db.Queryable() +// .Where(r => r.carry_id == input.wmsDistaskH.carry_id) +// .Where(r => r.material_id == wmsRawmatOutstockD.material_id && r.code_batch == wmsRawmatOutstockD.batchno) +// .ToListAsync(); +// +// decimal qty = wmsCarryCodes.Sum(r => r.codeqty); +// +// List unitCodes = wmsCarryCodes.Select(x => x.unit_id).Distinct().ToList(); +// List materialIds = wmsCarryCodes.Select(x => x.material_id).ToList(); +// List unitDatas = await _db.Queryable() +// .LeftJoin((x, y) => x.Id == y.DictionaryTypeId) +// .Where((x, y) => x.EnCode == DictConst.MeasurementUnit && unitCodes.Contains(y.EnCode)) +// .Select((x, y) => y) +// .ToListAsync(); +// +// string supplierId = WmsWareHouseConst.TIANYIGONGYINGSHANG_ID; +// List tableIds = new List(); +// tableIds.Add(WmsWareHouseConst.AdministratorOrgId); +// tableIds.AddRange(materialIds); +// tableIds.Add(supplierId); +// tableIds.AddRange(unitDatas.Select(x => x.Id).ToList()); +// +// List erpExtendFields = await _db.Queryable().Where(x => tableIds.Contains(x.table_id)).ToListAsync(); +// string userId = wmsRawmatTransferoutstockH.create_id; +// string erpCreateId = erpExtendFields.Find(x => x.table_id == userId)?.user_id ?? ""; +// ErpExtendField erpOrg = erpExtendFields.Find(x => x.table_id == (WmsWareHouseConst.AdministratorOrgId)); +// string nowStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); +// List wmsErpWarehouserelaHs = await _db.Queryable().Where(x=>!SqlFunc.IsNullOrEmpty(x.id)).ToListAsync(); +// +// List> requestData = new List>(); +// Dictionary erpRequestData = new Dictionary(); +// erpRequestData.Add("billmaker", erpCreateId); +// erpRequestData.Add("ccostdomainoid", null); +// erpRequestData.Add("cdrawcalbodyoid", erpOrg.pk_org); +// erpRequestData.Add("cdrawcalbodyvid", erpOrg.pk_org_v); +// +// erpRequestData.Add("corpoid", erpOrg.corpoid); +// erpRequestData.Add("corpvid", erpOrg.corpvid); +// erpRequestData.Add("cdptid","1001A1100000001JFOPQ");//部门先写死 +// erpRequestData.Add("cdptvid","0001A1100000000AOMIQ");//部门先写死 +// erpRequestData.Add("cotherdptid","1001A1100000001JFOPQ");//部门先写死 +// erpRequestData.Add("cotherdptvid","0001A1100000000AOMIQ");//部门先写死 +// erpRequestData.Add("creationtime", nowStr); +// erpRequestData.Add("creator", erpCreateId); +// erpRequestData.Add("ctrantypeid", "0001H11000000000D32A");//先写死 +// erpRequestData.Add("cwarehouseid", outWhid);//先写死 +// erpRequestData.Add("dbilldate", wmsRawmatTransferoutstockH.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss")); +// erpRequestData.Add("dmakedate", nowStr); +// erpRequestData.Add("dshldarrivedate", nowStr); +// erpRequestData.Add("dshlddiliverdate", nowStr); +// erpRequestData.Add("fbillflag", 1); +// erpRequestData.Add("isbackdeliver", false); +// erpRequestData.Add("ntotalnum", qty); +// erpRequestData.Add("pk_org", erpOrg.pk_org); +// erpRequestData.Add("pk_org_v", erpOrg.pk_org_v); +// erpRequestData.Add("pk_group", erpOrg.pk_group); +// erpRequestData.Add("vbillcode", wmsRawmatTransferoutstockH.bill_code); +// erpRequestData.Add("vtrantypecode", "4Y-01");//先写死 +// +// List> erpRequestDataDetails = new List>(); +// foreach(var item in wmsCarryCodes) +// { +// // 出库数量wmsMaterialSignD.sign_qty +// erpRequestDataDetails.Add(new Dictionary() +// { +// ["cmaterialoid"] = erpExtendFields.Find(x => x.table_id == item.material_id)?.cmaterialoid ?? "", +// ["cmaterialvid"] = erpExtendFields.Find(x => x.table_id == item.material_id)?.cmaterialvid ?? "", +// ["corpoid"] = erpOrg.corpoid, +// ["corpvid"] = erpOrg.corpvid, +// ["crowno"] = (wmsCarryCodes.FindIndex(x => x.id == item.id) + 1) * 10, +// ["cunitid"] = erpExtendFields.Find(x => x.table_id == (unitDatas.Find(x => x.EnCode == item.unit_id)?.Id ?? ""))?.cunitid ?? "", +// ["nnum"] = item.codeqty, +// ["nshouldnum"] = item.codeqty, +// ["pk_group"] = erpOrg.pk_group, +// ["pk_org"] = erpOrg.pk_org, +// ["pk_org_v"] = erpOrg.pk_org_v, +// ["vbatchcode"] = item.code_batch, +// +// }); +// } +// erpRequestData.Add("dtls", erpRequestDataDetails); +// requestData.Add(erpRequestData); +// BasFactoryConfig config = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.BIPURL); +// ThirdWebapiRecord thirdWebapiRecord = new ThirdWebapiRecord(); +// thirdWebapiRecord.id = SnowflakeIdHelper.NextId(); +// thirdWebapiRecord.third_name = WmsWareHouseConst.BIP; +// thirdWebapiRecord.name = "材料出库单(自制)"; +// thirdWebapiRecord.method = "POST"; +// thirdWebapiRecord.url = config.value + "uapws/rest/materialOut/self/save"; +// // thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN + "uapws/rest/transIn/save"; +// thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData); +// thirdWebapiRecord.create_time = DateTime.Now; +// await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); +// +// } +// +// [NonAction] +// private async Task GetDetailsAsync(string id) +// { +// try +// { +// return await Task.FromResult(_db.Queryable().Where(r => r.bill_id == id).ToList()); +// } +// catch (Exception ex) +// { +// return Task.FromResult(ex); +// } +// } +// +// /// +// /// 下发 +// /// +// /// +// /// +// /// +// [HttpPost, NonUnify, AllowAnonymous] +// public async Task Distribute(RawmatOutstockInput input) +// { +// try +// { +// await _s_taskExecuteSemaphore_YCLOutstock.WaitAsync(); +// if (string.IsNullOrEmpty(input.source_id)) +// { +// throw new AppFriendlyException("来源单据id不可为空", 500); +// } +// if (input.carrys.Count == 0) +// { +// throw new AppFriendlyException("至少选择一个载具", 500); +// } +// +// WmsRawmatOutstockD wmsRawmatOutstockD = await _db.Queryable().FirstAsync(it => it.id == input.source_id); +// WmsRawmatOutstockH wmsRawmatOutstockH = await _db.Queryable().FirstAsync(it => it.id == wmsRawmatOutstockD.bill_id); +// +// List _items = await _db.Queryable().Where(r => input.carrys.Select(c => c.carry_code).Contains(r.carry_code)).ToListAsync(); +// +// List wmsCarryCodes = await _db.Queryable().Where(r => _items.Select(c => c.id).Contains(r.carry_id) +// && r.material_id == wmsRawmatOutstockD.material_id && r.code_batch == wmsRawmatOutstockD.batchno).ToListAsync(); +// +// List items = new List(); +// +// foreach (var carry in input.carrys.Select(c => c.carry_code)) +// { +// items.Add(_items.Where(r => r.carry_code == carry).First()); +// } +// +// foreach (var item in items) +// { +// if (item.is_lock == 1) +// { +// throw new AppFriendlyException($"载具{item.carry_code}已锁定", 500); +// } +// BasLocation carrryLoc = await _db.Queryable().Where(r => r.id == item.location_id).FirstAsync(); +// if (carrryLoc == null || carrryLoc.is_type != "0") +// { +// throw new Exception($"托盘{item.carry_code}已经不在存储库位中,不能出库!"); +// } +// } +// +// decimal? sign_qty = 0; +// +// decimal qty = wmsCarryCodes.Sum(c => c.codeqty); +// if (wmsRawmatOutstockD.actual_outstock_qty + qty > wmsRawmatOutstockD.qty) +// { +// // 最后一个托盘的数量 +// decimal lastCarryQty = wmsCarryCodes.Where(r => r.carry_id == items[items.Count - 1].id).Sum(r => r.codeqty); +// // 如果最后一个托盘数量小于超出的出库数量 +// if (lastCarryQty < wmsRawmatOutstockD.actual_outstock_qty + qty - wmsRawmatOutstockD.qty) +// { +// throw new AppFriendlyException($"本次出库数量{qty}已超过可出库数量{wmsRawmatOutstockD.qty - wmsRawmatOutstockD.actual_outstock_qty} 且无需选择{items[items.Count - 1].carry_code}", 500); +// } +// // 签收数量 +// sign_qty = lastCarryQty - (wmsRawmatOutstockD.actual_outstock_qty + qty - wmsRawmatOutstockD.qty); +// } +// +// await _db.Ado.BeginTranAsync(); +// +// List endLocations = new List(); +// +// endLocations = _db.Queryable().Where(r => _wareHouseService.GetFloor1YCLDBOutstockLocation().Contains(r.id) && r.is_lock == 0 && r.is_use == "0") +// .OrderBy("is_lock, task_nums, location_code").ToList(); +// +// if (endLocations.Count() < items.Count) +// { +// throw new AppFriendlyException($@"可用的终点库位数量为{endLocations.Count()}个 下发数量为{items.Count}个 请检查终点库位的锁定和占用状态", 500); +// } +// +// foreach (var wmsCarryH in items) +// { +// BasLocation startLocation = await _db.Queryable().Where(r => r.id == wmsCarryH.location_id).FirstAsync(); +// +// BasLocation endLocation = null; +// +// endLocation = await _db.Queryable().Where(r => _wareHouseService.GetFloor1YCLDBOutstockLocation().Contains(r.id) && r.is_lock == 0 && r.is_use == "0").OrderBy("is_lock, task_nums, location_code").FirstAsync(); +// +// if (endLocation == null) +// { +// throw new AppFriendlyException($@"没有可用的终点库位!请检查终点库位的锁定和占用状态", 500); +// } +// +// WmsRawmatOutstockC wmsRawmatOutstockC = new WmsRawmatOutstockC(); +// wmsRawmatOutstockC.bill_id = wmsRawmatOutstockH.id; +// wmsRawmatOutstockC.mat_bill_id = wmsRawmatOutstockD.id; +// wmsRawmatOutstockC.carry_id = wmsCarryH.id; +// wmsRawmatOutstockC.carry_code = wmsCarryH.carry_code; +// wmsRawmatOutstockC.create_id = input.create_id; +// wmsRawmatOutstockC.create_time = DateTime.Now; +// wmsRawmatOutstockC.startlocation_id = startLocation.id; +// wmsRawmatOutstockC.startlocation_code = startLocation.location_code; +// wmsRawmatOutstockC.endlocation_id = endLocation.id; +// wmsRawmatOutstockC.endlocation_code = endLocation.location_code; +// decimal carryQty = wmsCarryCodes.Where(r => r.carry_id == wmsCarryH.id).Sum(r => r.codeqty); +// wmsRawmatOutstockC.qty = carryQty; +// wmsRawmatOutstockC.sign_qty = wmsCarryH.id == items[items.Count - 1].id && sign_qty > 0 ? sign_qty : carryQty; +// +// await _db.Insertable(wmsRawmatOutstockC).ExecuteCommandAsync(); +// +// CommonCreatePretaskInput commonCreatePretaskInput = new CommonCreatePretaskInput(); +// commonCreatePretaskInput.startlocation_id = startLocation.id; +// commonCreatePretaskInput.endlocation_id = endLocation.id; +// commonCreatePretaskInput.task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID; +// commonCreatePretaskInput.biz_type = WmsWareHouseConst.BIZTYPE_WmsRawmatOutstock_ID; +// commonCreatePretaskInput.source_id = input.source_id; +// commonCreatePretaskInput.carry_id = wmsCarryH.id; +// commonCreatePretaskInput.carry_code = wmsCarryH.carry_code; +// commonCreatePretaskInput.isExcuteMission = false; +// +// Entities.Dto.Outputs.Result res = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput, _db); +// +// if (res.code != HttpStatusCode.OK) +// { +// Logger.LogInformation($@"生成预任务失败"); +// throw new AppFriendlyException($@"生成预任务失败", 500); +// } +// } +// +// // 更新子表已下发数量 +// await _db.Updateable().SetColumns(r => r.actual_outstock_qty == r.actual_outstock_qty + qty).Where(r => r.id == input.source_id).ExecuteCommandAsync(); +// +// await _db.Ado.CommitTranAsync(); +// } +// catch (Exception ex) +// { +// await _db.Ado.RollbackTranAsync(); +// Logger.LogError("【Distribute】" + ex.Message); +// Logger.LogError("【Distribute】" + ex.StackTrace); +// return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); +// } +// finally +// { +// _ = _s_taskExecuteSemaphore_YCLOutstock.Release(); +// InvokeGenPretaskExcute(); +// } +// +// return await ToApiResult(HttpStatusCode.OK, "成功"); +// } +// +// } +// } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsSterilizationInstockHService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsSterilizationInstockHService.cs index 31d0cba5..c269b076 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsSterilizationInstockHService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsSterilizationInstockHService.cs @@ -69,15 +69,34 @@ namespace Tnb.WarehouseMgr BasLocation endLocation = await _db.Queryable().Where(r => r.id == input.wmsDistaskH.endlocation_id).FirstAsync(); string outWhid = ""; + string outDeptid = ""; + string outDeptvid = ""; + string inDeptid = ""; + string inDeptvid = ""; + string tranTypeid = ""; + string tranTypecode = ""; // 生产入库(灭菌完成) 仓库传 1001A1100000001MA8KP if (endLocation.wh_id == WmsWareHouseConst.WAREHOUSE_MJC_ID) { outWhid = WmsWareHouseConst.bipwarehouseid_bz; + outDeptid = WmsWareHouseConst.sichangqushengchanbu_id; + outDeptvid = WmsWareHouseConst.sichangqushengchanbu_vid; + inDeptid = WmsWareHouseConst.sichangqucangku_id; + inDeptvid = WmsWareHouseConst.sichangqucangku_vid; + tranTypeid = "1001A110000000077KMR"; + tranTypecode = "4K-Cxx-06"; } // 生产入库(成品) 仓库传 1001A1100000001MA8ME else if (endLocation.wh_id == WmsWareHouseConst.WAREHOUSE_CP_ID) { outWhid = WmsWareHouseConst.bipwarehouseid_mj; + outDeptid = WmsWareHouseConst.sichangqucangku_id; + outDeptvid = WmsWareHouseConst.sichangqucangku_vid; + inDeptid = WmsWareHouseConst.sichangqucangku_id; + inDeptvid = WmsWareHouseConst.sichangqucangku_vid; + tranTypeid = "1001A11000000006YKHG"; + tranTypecode = "4K-Cxx-01"; + bool isOk = await _db.Updateable().SetColumns(it => new WmsSterilizationInstockH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }) .Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); if (!isOk) @@ -107,7 +126,7 @@ namespace Tnb.WarehouseMgr tableIds.AddRange(unitDatas.Select(x => x.Id).ToList()); List erpExtendFields = await _db.Queryable().Where(x => tableIds.Contains(x.table_id)).ToListAsync(); - string userId = wmsRawmatTransferoutstockH.create_id; + string userId = wmsRawmatTransferoutstockH.create_id ?? WmsWareHouseConst.AdministratorUserId; string erpCreateId = erpExtendFields.Find(x => x.table_id == userId)?.user_id ?? ""; ErpExtendField erpOrg = erpExtendFields.Find(x => x.table_id == (WmsWareHouseConst.AdministratorOrgId)); string nowStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); @@ -118,14 +137,13 @@ namespace Tnb.WarehouseMgr erpRequestData.Add("billmaker", erpCreateId); erpRequestData.Add("corpoid", erpOrg.corpoid); erpRequestData.Add("corpvid", erpOrg.corpvid); - erpRequestData.Add("cdptid","1001A1100000001JFOPQ");//部门先写死 - erpRequestData.Add("cdptvid","0001A1100000000AOMIQ");//部门先写死 - erpRequestData.Add("cotherdptid","1001A1100000001JFOPQ");//部门先写死 - erpRequestData.Add("cotherdptvid","0001A1100000000AOMIQ");//部门先写死 + erpRequestData.Add("cdptid",outDeptid);//部门先写死 + erpRequestData.Add("cdptvid",outDeptvid);//部门先写死 + erpRequestData.Add("cotherdptid",inDeptid);//部门先写死 + erpRequestData.Add("cotherdptvid",inDeptvid);//部门先写死 erpRequestData.Add("creationtime", nowStr); erpRequestData.Add("creator", erpCreateId); - erpRequestData.Add("ctrantypeid", "0001H11000000000D32A");//先写死 - erpRequestData.Add("cwarehouseid", "outWhid");//先写死 + erpRequestData.Add("cwarehouseid", outWhid);//先写死 erpRequestData.Add("dbilldate", wmsRawmatTransferoutstockH.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss")); erpRequestData.Add("dmakedate", nowStr); erpRequestData.Add("dshldarrivedate", nowStr); @@ -137,7 +155,8 @@ namespace Tnb.WarehouseMgr erpRequestData.Add("pk_org_v", erpOrg.pk_org_v); erpRequestData.Add("pk_group", erpOrg.pk_group); erpRequestData.Add("vbillcode", wmsRawmatTransferoutstockH.bill_code); - erpRequestData.Add("vtrantypecode", "4Y-01");//先写死 + erpRequestData.Add("ctrantypeid", tranTypeid);//先写死 + erpRequestData.Add("vtrantypecode", tranTypecode);//先写死 List> erpRequestDataDetails = new List>(); foreach(var item in wmsCarryCodes) diff --git a/taskschedule/Tnb.TaskScheduler/Listener/GenerateMaintainPlanTimeWorker.cs b/taskschedule/Tnb.TaskScheduler/Listener/GenerateMaintainPlanTimeWorker.cs index 2d1932e3..b642caa7 100644 --- a/taskschedule/Tnb.TaskScheduler/Listener/GenerateMaintainPlanTimeWorker.cs +++ b/taskschedule/Tnb.TaskScheduler/Listener/GenerateMaintainPlanTimeWorker.cs @@ -3,8 +3,10 @@ using JNPF.Logging; using JNPF.Message; using JNPF.Message.Interfaces.Message; using JNPF.Message.Service; +using JNPF.Systems.Interfaces.System; using SqlSugar; using Tnb.EquipMgr.Entities; +using Tnb.BasicData; namespace JNPF.TaskScheduler.Listener { @@ -19,6 +21,7 @@ namespace JNPF.TaskScheduler.Listener // _repository = repository; // } private IMessageService _sendMessageService => App.GetService(); + private IBillRullService _billRuleService => App.GetService(); [SpareTime("0 0 0 * * ?", "生成保养计划", ExecuteType = SpareTimeExecuteTypes.Serial, StartNow = false)] public async void GenerateSpotInspectionPlan(SpareTimer timer, long count) { @@ -105,7 +108,8 @@ namespace JNPF.TaskScheduler.Listener if (equipments.FirstOrDefault(x => x.id == item.equip_id) == null) continue; - string code = $"{now.ToString("yyyyMMdd") + (index++).ToString().PadLeft(3, '0')}"; + // string code = $"{now.ToString("yyyyMMdd") + (index++).ToString().PadLeft(3, '0')}"; + string code = await _billRuleService.GetBillNumber(CodeTemplateConst.MAINTENANCERECORDFIJIPROJECT_CODE); tobeCreateList.Add(new EqpMaintainRecordH() { code = code, @@ -290,7 +294,8 @@ namespace JNPF.TaskScheduler.Listener if (toolMoldList.FirstOrDefault(x => x.id == item.mold_id) == null) continue; - string code = $"{now.ToString("yyyyMMdd") + (index++).ToString().PadLeft(3, '0')}"; + // string code = $"{now.ToString("yyyyMMdd") + (index++).ToString().PadLeft(3, '0')}"; + string code = await _billRuleService.GetBillNumber(CodeTemplateConst.MOLDMAINTENANCE_CODE); toolMoldTobeCreateList.Add(new ToolMoldMaintainRecordH() { code = code, diff --git a/taskschedule/Tnb.TaskScheduler/Listener/GenerateSpotInspectionPlanTimeWorker.cs b/taskschedule/Tnb.TaskScheduler/Listener/GenerateSpotInspectionPlanTimeWorker.cs index 594d2565..5a83f52d 100644 --- a/taskschedule/Tnb.TaskScheduler/Listener/GenerateSpotInspectionPlanTimeWorker.cs +++ b/taskschedule/Tnb.TaskScheduler/Listener/GenerateSpotInspectionPlanTimeWorker.cs @@ -1,7 +1,9 @@ using JNPF.Common.Security; using JNPF.Logging; using JNPF.Message.Interfaces.Message; +using JNPF.Systems.Interfaces.System; using SqlSugar; +using Tnb.BasicData; using Tnb.EquipMgr.Entities; namespace JNPF.TaskScheduler.Listener @@ -17,6 +19,7 @@ namespace JNPF.TaskScheduler.Listener // _repository = repository; // } private IMessageService _sendMessageService => App.GetService(); + private IBillRullService _billRuleService => App.GetService(); [SpareTime("0 0,30 * * * ?", "生成点巡检计划", ExecuteType = SpareTimeExecuteTypes.Serial, StartNow = false)] public async void GenerateSpotInspectionPlan(SpareTimer timer, long count) { @@ -90,7 +93,8 @@ namespace JNPF.TaskScheduler.Listener if (equipments.FirstOrDefault(x => x.id == item.equip_id) == null) continue; - string code = $"{now.ToString("yyyyMMddHHmm") + (index++).ToString().PadLeft(3, '0')}"; + // string code = $"{now.ToString("yyyyMMddHHmm") + (index++).ToString().PadLeft(3, '0')}"; + string code = await _billRuleService.GetBillNumber(CodeTemplateConst.SPOTINSPECTIONEXECUTIONSHEET_CODE); tobeCreateList.Add(new EqpSpotInsRecordH() { id = SnowflakeIdHelper.NextId(),