PipeLineLems/pipelinelems_web/src/config/menu.ts
@@ -14,17 +14,17 @@ "notPage": false }, { "name": "å·¥å管ç(æ°)", "path": "/information-base/OrderManagement-main", "patchName": "OrderManagement-main", "icon": "order", "notPage": false }, { "name": "MyPluginName", "path": "/information-base/MyPluginName", "patchName": "MyPluginName", "icon": "p", "notPage": false }, { "name": "å·¥å管ç(æ°)", "path": "/information-base/OrderManagement-main", "patchName": "OrderManagement-main", "icon": "order", "notPage": false }, { @@ -64,13 +64,6 @@ "icon": "p", "notPage": false }, "OrderManagement-main": { "name": "å·¥å管ç(æ°)", "path": "/information-base/OrderManagement-main", "patchName": "OrderManagement-main", "icon": "order", "notPage": false }, "MyPluginName": { "name": "MyPluginName", "path": "/information-base/MyPluginName", @@ -78,6 +71,13 @@ "icon": "p", "notPage": false }, "OrderManagement-main": { "name": "å·¥å管ç(æ°)", "path": "/information-base/OrderManagement-main", "patchName": "OrderManagement-main", "icon": "order", "notPage": false }, "Http": { "name": "API请æ±", "path": "/information-base/Http", PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Models/Service/PipeAccessoryAssembly.ts
@@ -61,3 +61,19 @@ export const findSingleWorkPlanByFilter = (data: any) => { return request.post('/api/v1/PipeLineLems/WorkPlan/FindSingleByFilter', data) } /** * æ ¹æ® ä»»å¡ç¼å·è¿è¡å¼å·¥ * @returns */ export const startProduction = (data: any) => { return request.post('/api/v1/PipeLineLems/WorkPlanPublic/startProduction', data) } /** * æ ¹æ® ä»»å¡ç¼å·è¿è¡å®å·¥ * @returns */ export const finishProduction = (data: any) => { return request.post('/api/v1/PipeLineLems/WorkPlanPublic/finishProduction', data) } PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Views/Pages/PipeAccessoryAssembly/PipeAccessoryAssembly.tsx
@@ -2,6 +2,7 @@ import type { Ref } from 'vue' import styles from './PipeAccessoryAssembly.module.scss' import pipeImage from '@/images/pipe-assembly-drawing-example.png' import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' import { ElInput, ElForm, @@ -16,7 +17,9 @@ getPlaceNoForStockList, getMaterialModelList, instock, findSingleWorkPlanByFilter findSingleWorkPlanByFilter, startProduction, finishProduction } from '@/widgets/PipeAccessoryAssembly/Models/Service/PipeAccessoryAssembly' import { Message } from '@element-plus/icons-vue/dist/types' @@ -123,13 +126,74 @@ } }; // å¼å·¥äºä»¶å¤ç const startWork = () => { console.log('æ§è¡å¼å·¥æä½'); if(queryForm.value.pipeSpecCode==''){ ElMessage.error('请è¾å ¥ç®¡æ®µç¼ç '); return } ConfirmBox( `ç¡®å®è¦å°ç®¡æ®µç¼ç ${queryForm.value.pipeSpecCode}å¼å·¥å` ).then(async () => { //æ¨çä¸å¡é»è¾ const param={ taskCode:queryForm.value.taskCode, }; const ret = await startProduction(param); console.log('è¿å:'+ret); if(ret.code="200"){ ElMessage.success('å¼å·¥æå'); }else{ ElMessage.error('å¼å·¥å¤±è´¥:'+ret.message); } }) } // å®å·¥äºä»¶å¤ç const finishWork = () => { console.log('æ§è¡å¼å·¥æä½'); if(queryForm.value.pipeSpecCode==''){ ElMessage.error('请è¾å ¥ç®¡æ®µç¼ç '); return } ConfirmBox( `ç¡®å®è¦å°ç®¡æ®µç¼ç ${queryForm.value.pipeSpecCode}å®å·¥å` ).then(async () => { //æ¨çä¸å¡é»è¾ const param={ pipeSpecCode:queryForm.value.pipeSpecCode, processName:queryForm.value.processName, }; const ret = await finishProduction(param); console.log('è¿å:'+ret); if(ret.code="200"){ ElMessage.success('å®å·¥æå'); }else{ ElMessage.error('å®å·¥å¤±è´¥:'+ret.message); } }) } const tableData = ref([ { sequence: 1, flangeA: 'RF-200-1.6MPa', flangeB: 'WN-200-1.6MPa' }, { sequence: 2, flangeA: 'WN-250-2.5MPa', flangeB: 'SO-250-2.5MPa' }, { sequence: 3, flangeA: 'PL-300-1.0MPa', flangeB: 'RF-300-1.0MPa' }, { sequence: 4, flangeA: 'SO-150-2.0MPa', flangeB: 'WN-150-2.0MPa' }, { sequence: 5, flangeA: 'RF-400-1.6MPa', flangeB: 'PL-400-1.6MPa' }, { sequence: 6, flangeA: 'WN-200-4.0MPa', flangeB: 'SO-200-4.0MPa' }, { sequence: 7, flangeA: 'SO-300-1.6MPa', flangeB: 'RF-300-1.6MPa' }, { sequence: 8, flangeA: 'PL-250-1.0MPa', flangeB: 'WN-250-1.0MPa' }, { sequence: 9, flangeA: 'RF-150-2.5MPa', flangeB: 'SO-150-2.5MPa' }, { sequence: 10, flangeA: 'WN-400-2.0MPa', flangeB: 'PL-400-2.0MPa' } ]); return () => { return ( <div class={styles.PipeAccessoryAssemblyContent} style="overflow-y: auto !important; height: 100%;" > <ElFormItem label="管段ç¼å·"> <ElFormItem label="管段ç¼ç "> <ElInput v-model={queryForm.value.pipeSpecCode} clearable @@ -138,8 +202,8 @@ /> </ElFormItem> <div class={styles.actionButtons}> <ElButton type="warning">å¼å·¥</ElButton> <ElButton type="warning">å®å·¥</ElButton> <ElButton type="warning" onClick={startWork}>å¼å·¥</ElButton> <ElButton type="warning" onClick={finishWork}>å®å·¥</ElButton> <ElButton type="warning">æå</ElButton> <ElButton type="warning">èªå¨</ElButton> <ElButton type="warning">è´¨æ£</ElButton> @@ -148,7 +212,7 @@ <h2 class={styles.blockTitle}>å½åä»»å¡</h2> <ElForm label-position="left" > <ElFormItem label="ç©ææµå"> <ElFormItem label="ç©ææµå "> <ElInput v-model={queryForm.value.processRouteNumber} disabled @@ -156,7 +220,7 @@ class={styles.formInput} /> </ElFormItem> <ElFormItem label="ä»»å¡ç¼å·"> <ElFormItem label="ä»»å¡ç¼å· "> <ElInput v-model={queryForm.value.taskCode} disabled @@ -164,7 +228,7 @@ class={styles.formInput} /> </ElFormItem> <ElFormItem label="管段é¿åº¦"> <ElFormItem label="管段é¿åº¦ "> <ElInput v-model={queryForm.value.length} disabled @@ -172,7 +236,7 @@ class={styles.formInput} /> </ElFormItem> <ElFormItem label="项ç®å·"> <ElFormItem label="é¡¹ç® å·"> <ElInput v-model={queryForm.value.projectNumber} disabled @@ -180,7 +244,7 @@ class={styles.formInput} /> </ElFormItem> <ElFormItem label="è¹å·"> <ElFormItem label="è¹ å·"> <ElInput v-model={queryForm.value.shipNumber} disabled @@ -188,7 +252,7 @@ class={styles.formInput} /> </ElFormItem> <ElFormItem label="æè´¨"> <ElFormItem label="æ è´¨"> <ElInput v-model={queryForm.value.material} disabled @@ -196,7 +260,7 @@ class={styles.formInput} /> </ElFormItem> <ElFormItem label="å¤å¾"> <ElFormItem label="å¤ å¾"> <ElInput v-model={queryForm.value.outerDiameter} disabled @@ -204,7 +268,7 @@ class={styles.formInput} /> </ElFormItem> <ElFormItem label="å£ å"> <ElFormItem label="å£ å"> <ElInput v-model={queryForm.value.thickness} disabled @@ -232,7 +296,7 @@ <h2 class={styles.blockTitle}>å½åå·¥ä½/设å¤ä¿¡æ¯</h2> <ElForm label-position="left" > <ElFormItem label="å·¥ä½ä»£ç "> <ElFormItem label="å·¥ä½ä»£ç "> <ElInput v-model={queryForm.value.workstationCode} disabled @@ -240,7 +304,7 @@ class={styles.formInput} /> </ElFormItem> <ElFormItem label="å·¥åºåç§°"> <ElFormItem label="å·¥åºåç§° "> <ElInput v-model={queryForm.value.processName} disabled @@ -248,7 +312,7 @@ class={styles.formInput} /> </ElFormItem> <ElFormItem label="设å¤ä»£ç "> <ElFormItem label="设å¤ä»£ç "> <ElInput v-model={queryForm.value.equipmentCode} disabled @@ -274,14 +338,14 @@ </ElFormItem> */} </ElForm> <div class="info-block"> {/* <div class="info-block"> <h2 class="block-title">å·¥èºä¿¡æ¯</h2> <el-table stripe> <el-table stripe v-model:dataSource={tableData}> <el-table-column prop="sequence" label="åº"></el-table-column> <el-table-column prop="flangeA" label="æ³å °A"></el-table-column> <el-table-column prop="flangeB" label="æ³å °B"></el-table-column> </el-table> </div> </div> */} <h2 class="block-title">å¾çº¸</h2> <img src={pipeImage} PipeLineLems/pipelinelems_web/src/widgets/WorkPlan/Views/Pages/WorkPlan/Config.ts
@@ -10,6 +10,21 @@ width:160, }, { field: 'pipeSpecCode', title: '管段ç¼ç ', width:160, }, { field: 'pipeSectionName', title: '管段åç§°', width:160, }, { field: 'processName', title: 'å·¥åºåç§°', width:160, }, { field: 'workPlanStatusDesc', title: '计åç¶æ', width:160, @@ -119,11 +134,7 @@ title: '项ç®å·', width:160, }, { field: 'processName', title: 'å·¥åºåç§°', width:160, }, { field: 'pipeFittingCode', title: '管件ç¼ç ', @@ -134,16 +145,7 @@ title: '顺åºå·', width:160, }, { field: 'pipeSpecCode', title: '管段ç¼ç ', width:160, }, { field: 'pipeSectionName', title: '管段åç§°', width:160, }, { field: 'outerDiameter', title: 'å¤å¾(mm)', PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/CompleteAssemblyProcessInput.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan { /// <summary> /// è£ é å·¥åºå®å·¥ è¾å ¥åæ°æ¨¡å /// </summary> [Serializable] public class CompleteAssemblyProcessInput { /// <summary> /// 管段ç¼ç /// </summary> public string PipeSpecCode { get; set; } /// <summary> /// å·¥åºåç§° /// </summary> public string ProcessName { get; set; } } } PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/StartProductionInput.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan { /// <summary> /// å¼å·¥è¾å ¥åæ°æ¨¡å /// </summary> [Serializable] public class StartProductionInput { /// <summary> /// ä»»å¡ç¼ç /// </summary> public string TaskCode { get; set; } ///// <summary> ///// å·¥åºåç§° ///// </summary> //public string ProcessName { get; set; } } } PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs
@@ -61,6 +61,7 @@ var traceProvider = _serviceProvider.GetRequiredService<ITraceProvider>(); var materialProvider = _serviceProvider.GetRequiredService<IMaterialProvider>(); var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>(); var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>(); //Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> // { @@ -103,6 +104,9 @@ var firstWorkPlans = await workPlanAppService.GetListByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode); var firstWorkPlan = await workPlanAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode); var callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.DataIdentifier == firstWorkPlan.DataIdentifier); var rawPipe_DataIdentifier = await materialProvider.FindByNameAsync("åæç®¡æ è¯"); var rawPipe_MaterialMode = await materialProvider.FindByNameAsync("åæç®¡åå·"); var rawPipe_Batch = await materialProvider.FindByNameAsync("åæç®¡æ¹æ¬¡"); @@ -141,7 +145,7 @@ Quantity = 1, MaterialId = rawPipe_Batch.MaterialId, MaterialDetailId = rawPipe_Batch.MaterialDetails.First().Id, Value = "111",//æ¹æ¬¡ææ¶åæ» Value = callMaterialOrder.MaterialBatch,//æ¹æ¬¡ææ¶åæ» }); } @@ -154,7 +158,30 @@ string _value = ""; if (item.Name == "忣æ¹å") { _value = "çç®¡è£ é "; _value = "çç®¡åæ£"; } if (item.Name == "忣æçå·") { _value = input.ContinerNo; } if (item.Name == "åæ£äºº") { _value = myCurrentUser.UserAccount; } //item.Key TraceParamModel traceParamModel = new TraceParamModel() { Key = item.Key, Value = _value }; traceModel.Params.Add(traceParamModel); }; foreach (var item in workSection.FormulaParameters) { string _value = ""; if (item.Name == "忣æ¹å") { _value = "çç®¡åæ£"; } if (item.Name == "忣æçå·") { @@ -566,6 +593,434 @@ } /// <summary> ///è£ é /çæ¥å¼å·¥ /// </summary> /// <param name="input"></param> /// <param name="_serviceProvider"></param> /// <param name="myCurrentUser"></param> /// <returns></returns> /// <exception cref="UserFriendlyException"></exception> public async Task<MesOrderResponse> StartProduction(StartProductionInput input, IServiceProvider _serviceProvider, MyCurrentUser myCurrentUser) { if (string.IsNullOrEmpty(input.TaskCode.ToString())) { throw new UserFriendlyException("ä»»å¡ç¼ç ä¸è½ä¸ºç©º"); } string processName = ""; VariableService _variableService = _serviceProvider.GetRequiredService<VariableService>(); var callMaterialOrderRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRepository>(); var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>(); var callMaterialOrderRecordRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRecordRepository>(); var orderManager = _serviceProvider.GetRequiredService<IOrderManager>(); var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>(); // æ¥æ¾æ°æ® var workPlan = await workPlanRepository.GetSingleByFilterAsync(x => x.TaskCode == input.TaskCode); if (workPlan == null) { throw new UserFriendlyException($"æ¾ä¸å°ä½ä¸è®¡å"); } if (workPlan.ProcessName == "è£ é å·¥åº") { processName = "è£ é "; } else if (workPlan.ProcessName == "çæ¥å·¥åº") { processName = "çæ¥"; } // éªè¯ç¶æ if (workPlan.WorkPlanStatus != Domain.Shared.Enums.WorkPlanStatusEnum.æåä¸ && workPlan.WorkPlanStatus != Domain.Shared.Enums.WorkPlanStatusEnum.æªç产) { //ææ¶æ³¨é //throw new UserFriendlyException($"ä»»å¡ç¼ç '{input.TaskCode}' çå½ç¶æä¸º '{workPlan.WorkPlanStatus}'ï¼ä¸å 许å¼å·¥"); } var callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.DataIdentifier == workPlan.DataIdentifier); #region äºå¡ using var scope = _serviceProvider.CreateScope(); var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>(); using var uow = unitOfWorkManager.Begin(requiresNew: true); try { #region æ°æ®å¤ç //1ãæ´æ°ä½ä¸è®¡å表为 çäº§ä¸ //2ãç»PLCåå·¥èºåæ°æä»¤,å¹¶åå ¥ plcä¸ äº§åid //if (workPlan.ProcessName == "è£ é å·¥åº") //{ // workPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.ç产ä¸; //} //else if (workPlan.ProcessName == "çæ¥å·¥åº") //{ // workPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.已宿; //} if (workPlan.ProcessRouteNumber == "æ ") { workPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.已宿; } else { workPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.ç产ä¸; } await workPlanRepository.UpdateAsync(workPlan); Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> { { $"{processName}_ProductID", workPlan.PipeSpecCode }, { $"{processName}管段ç¼ç ", workPlan.PipeSpecCode }, { $"{processName}管段åç§°", workPlan.PipeSectionName }, { $"{processName}åæç®¡æ¹æ¬¡", callMaterialOrder.MaterialBatch }, { $"{processName}åæç®¡åå·", callMaterialOrder.MaterialMode }, { $"{processName}åæç®¡æ è¯", callMaterialOrder.DataIdentifier }, { $"{processName}项ç®å·", workPlan.ProjectNumber }, { $"{processName}è¹å·", workPlan.ShipNumber }, //ééæ°æ®æ¨¡æåå ¥ { $"{processName}åå", "10.0 MPa" }, { $"{processName}é度", "18mm/s"}, { $"{processName}人", myCurrentUser.UserAccount}, { $"{processName}é´é","15mm"}, { $"{processName}ä½ç½®", "10,23,24"}, }; _variableService.WriteValueAsync(keyValuePairs); #endregion await uow.CompleteAsync(); // è¿åç»æ var response = new MesOrderResponse { Code = "200", Message = "å¤çæå", Time = DateTime.UtcNow }; return response; } catch (Exception) { await uow.RollbackAsync(); throw; } finally { } #endregion } /// <summary> /// è£ é å·¥åºå®å·¥ /// </summary> /// <param name="_serviceProvider"></param> /// <param name="input"></param> /// <param name="myCurrentUser"></param> /// <returns></returns> public async Task<MesOrderResponse> CompleteAssemblyProcess(IServiceProvider _serviceProvider, CompleteAssemblyProcessInput input, MyCurrentUser myCurrentUser) { //1ãè®°å½åæ£è®°å½è¡¨ //2ãæ´æ°ä½ä¸è®¡å表çç¶æ =已忣 //3ãåå ¥ 忣åé //4ãåå ¥è¿½æº¯æ¥è¡¨ //5ãç©æç»ç if (string.IsNullOrEmpty(input.PipeSpecCode)) { throw new UserFriendlyException($"管段ç¼ç ä¸è½ä¸ºç©º"); } VariableService _variableService = _serviceProvider.GetRequiredService<VariableService>(); var _workSectionManager = _serviceProvider.GetRequiredService<IWorkSectionManager>(); var _workStationManager = _serviceProvider.GetRequiredService<IWorkStationManager>(); var traceProvider = _serviceProvider.GetRequiredService<ITraceProvider>(); var materialProvider = _serviceProvider.GetRequiredService<IMaterialProvider>(); var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>(); var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>(); var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>(); string processName = ""; //ç©æåæ°å表 var firstWorkPlan = await workPlanAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode && x.ProcessName == input.ProcessName); if (firstWorkPlan == null) { throw new UserFriendlyException($"æ¾ä¸å°ä½ä¸è®¡å"); } if (firstWorkPlan.ProcessName == "è£ é å·¥åº") { processName = "è£ é "; } else if (firstWorkPlan.ProcessName == "çæ¥å·¥åº") { processName = "çæ¥"; } await CompleteHandleOutStoreFinish(_serviceProvider, processName, true); //æ ¹æ®å·¥åºåè·åå·¥åºå¯¹è±¡ var workSection = await _workSectionManager.GetByNameAsync($"{processName}å·¥åº"); var workStation = await _workStationManager.GetByNameAsync($"{processName}å·¥ä½"); //åå ¥è¿½æº¯æ¥è¡¨ var finishTime = DateTime.Now; TraceModel traceModel = new TraceModel() { SerialNumber = input.PipeSpecCode, WorkSectionId = workSection.Id, WorkSectionName = workSection.Name, WorkStationName = workStation.Name, FinishTime = finishTime, IsQualified = true, UnqualifiedReason = "", ProductModel = "", ProductName = "", }; traceModel.Params = new List<TraceParamModel>(); foreach (var item in workSection.ProcessParameters) { var value = "ssss"; traceModel.Params.Add(new TraceParamModel() { Key = item.Key, Value = value.SafeString() }); } #region äºå¡ using var scope = _serviceProvider.CreateScope(); var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>(); using var uow = unitOfWorkManager.Begin(requiresNew: true); try { #region æ°æ®å¤ç firstWorkPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.已宿; await workPlanRepository.UpdateAsync(firstWorkPlan); var callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.DataIdentifier == firstWorkPlan.DataIdentifier); var rawPipe_DataIdentifier = await materialProvider.FindByNameAsync("åæç®¡æ è¯"); var rawPipe_MaterialMode = await materialProvider.FindByNameAsync("åæç®¡åå·"); var rawPipe_Batch = await materialProvider.FindByNameAsync("åæç®¡æ¹æ¬¡"); var rawPipe_ProjectNumber = await materialProvider.FindByNameAsync("项ç®å·"); var rawPipe_ShipNumber = await materialProvider.FindByNameAsync("è¹å·"); List<TraceMaterialModel> _MaterialParams = new List<TraceMaterialModel>(); foreach (var item in workSection.MaterialParameters) { if (item.Name == "åæç®¡åå·") { _MaterialParams.Add(new TraceMaterialModel() { Key = item.Key, Quantity = 1, MaterialId = rawPipe_MaterialMode.MaterialId, MaterialDetailId = rawPipe_MaterialMode.MaterialDetails.First().Id, Value = firstWorkPlan.MaterialMode }); } if (item.Name == "åæç®¡æ è¯") { _MaterialParams.Add(new TraceMaterialModel() { Key = item.Key, Quantity = 1, MaterialId = rawPipe_DataIdentifier.MaterialId, MaterialDetailId = rawPipe_DataIdentifier.MaterialDetails.First().Id, Value = firstWorkPlan.DataIdentifier, }); } if (item.Name == "åæç®¡æ¹æ¬¡") { _MaterialParams.Add(new TraceMaterialModel() { Key = item.Key, Quantity = 1, MaterialId = rawPipe_Batch.MaterialId, MaterialDetailId = rawPipe_Batch.MaterialDetails.First().Id, Value = callMaterialOrder.MaterialBatch,//æ¹æ¬¡ææ¶åæ» }); } if (item.Name == "项ç®å·") { _MaterialParams.Add(new TraceMaterialModel() { Key = item.Key, Quantity = 1, MaterialId = rawPipe_ProjectNumber.MaterialId, MaterialDetailId = rawPipe_ProjectNumber.MaterialDetails.First().Id, Value = firstWorkPlan.ProjectNumber, }); } if (item.Name == "è¹å·") { _MaterialParams.Add(new TraceMaterialModel() { Key = item.Key, Quantity = 1, MaterialId = rawPipe_ShipNumber.MaterialId, MaterialDetailId = rawPipe_ShipNumber.MaterialDetails.First().Id, Value = firstWorkPlan.ShipNumber, }); } }; //é ç½®è¿ç¨åæ°(ééåæ°ãé æ¹åæ°) traceModel.Params = new List<TraceParamModel>(); foreach (var item in workSection.ProcessParameters) { string _value = ""; //ééåæ° if (item.Name == $"{processName}åå") { var _getValue = await _variableService.ReadValueAsync($"{processName}åå"); _value = _getValue.Content.Value.SafeString().ToString(); } if (item.Name == $"{processName}ä½ç½®") { var _getValue = await _variableService.ReadValueAsync($"{processName}ä½ç½®"); _value = _getValue.Content.Value.SafeString().ToString(); } if (item.Name == $"{processName}é度") { var _getValue = await _variableService.ReadValueAsync($"{processName}é度"); _value = _getValue.Content.Value.SafeString().ToString(); } if (item.Name == $"{processName}é´é") { _value = "15mm"; } if (item.Name == $"{processName}人") { _value = myCurrentUser.UserAccount; } //item.Key TraceParamModel traceParamModel = new TraceParamModel() { Key = item.Key, Value = _value }; traceModel.Params.Add(traceParamModel); }; foreach (var item in workSection.FormulaParameters) { string _value = ""; //ééåæ° if (item.Name == $"{processName}åå") { var _getValue = await _variableService.ReadValueAsync($"{processName}åå"); _value = _getValue.Content.Value.SafeString().ToString(); } if (item.Name == $"{processName}ä½ç½®") { var _getValue = await _variableService.ReadValueAsync($"{processName}ä½ç½®"); _value = _getValue.Content.Value.SafeString().ToString(); } if (item.Name == $"{processName}é度") { var _getValue = await _variableService.ReadValueAsync($"{processName}é度"); _value = _getValue.Content.Value.SafeString().ToString(); } if (item.Name == $"{processName}é´é") { _value = "15mm"; } if (item.Name == $"{processName}人") { _value = myCurrentUser.UserAccount; } //item.Key TraceParamModel traceParamModel = new TraceParamModel() { Key = item.Key, Value = _value }; traceModel.Params.Add(traceParamModel); }; traceModel.MaterialParams = _MaterialParams; await traceProvider.CreateTraceAsync(traceModel); var response = new MesOrderResponse { Code = "200", Data = "", Message = "å¤çæå", Time = DateTime.UtcNow }; return response; #endregion await uow.CompleteAsync(); } catch (Exception) { await uow.RollbackAsync(); throw; } finally { } #endregion } /// <summary> /// å ¬å ±å¤ç ååºåºç«å®æä¿¡å· /// </summary> /// <param name="_serviceProvider"></param> /// <param name="input"></param> /// <param name="myCurrentUser"></param> /// <returns></returns> public async Task CompleteHandleOutStoreFinish(IServiceProvider _serviceProvider, string processName, bool isOutResult) { VariableService _variableService = _serviceProvider.GetRequiredService<VariableService>(); Dictionary<string, object?> keyValuePairs = new Dictionary<string, object?> { { $"{processName}åºç«å®æ",isOutResult}, { $"{processName}åºç«ç»æ",isOutResult? "æå":""}, }; await _variableService.WriteValueAsync(keyValuePairs); } /// <summary> /// çæéæºçWmsTaskNo /// </summary> /// <returns>éæºçæçä»»å¡ç¼å·</returns> PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanPublicController.cs
@@ -60,12 +60,23 @@ [Route("Pick")] public virtual async Task<MesOrderResponse> Pick([FromBody] PickInput input) { MyCurrentUser myCurrentUser = new MyCurrentUser() try { UserAccount = _currentUser.UserAccount, UserId = _currentUser.UserId }; return await sharedService.CommonPick(_serviceProvider, input, myCurrentUser); MyCurrentUser myCurrentUser = new MyCurrentUser() { UserAccount = _currentUser.UserAccount, UserId = _currentUser.UserId }; return await sharedService.CommonPick(_serviceProvider, input, myCurrentUser); } catch (Exception ex) { return new MesOrderResponse() { Code = "400", Message = ex.Message }; } } @@ -79,14 +90,81 @@ [Route("CallMaterial")] public virtual async Task<MesOrderResponse> CallMaterial([FromBody] CallMaterialByDataIdentifierInput input) { MyCurrentUser myCurrentUser = new MyCurrentUser() try { UserAccount = _currentUser.UserAccount, UserId = _currentUser.UserId }; return await sharedService.CallMaterial(input, _serviceProvider, myCurrentUser); MyCurrentUser myCurrentUser = new MyCurrentUser() { UserAccount = _currentUser.UserAccount, UserId = _currentUser.UserId }; return await sharedService.CallMaterial(input, _serviceProvider, myCurrentUser); } catch (Exception ex) { return new MesOrderResponse() { Code = "400", Message = ex.Message }; } } /// <summary> /// å¼å·¥ /// </summary> /// <param name="input"></param> /// <returns></returns> [Authorize] [HttpPost] [Route("StartProduction")] public virtual async Task<MesOrderResponse> StartProduction([FromBody] StartProductionInput input) { try { MyCurrentUser myCurrentUser = new MyCurrentUser() { UserAccount = _currentUser.UserAccount, UserId = _currentUser.UserId }; return await sharedService.StartProduction(input, _serviceProvider, myCurrentUser); } catch (Exception ex) { return new MesOrderResponse() { Code = "400", Message = ex.Message }; } } /// <summary> /// å®å·¥ /// </summary> /// <param name="input"></param> /// <returns></returns> [Authorize] [HttpPost] [Route("FinishProduction")] public virtual async Task<MesOrderResponse> FinishProduction([FromBody] CompleteAssemblyProcessInput input) { try { MyCurrentUser myCurrentUser = new MyCurrentUser() { UserAccount = _currentUser.UserAccount, UserId = _currentUser.UserId }; return await sharedService.CompleteAssemblyProcess(_serviceProvider, input, myCurrentUser); } catch (Exception ex) { return new MesOrderResponse() { Code = "400", Message = ex.Message }; } } } } PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs
@@ -22,6 +22,8 @@ using System.Collections.Generic; using CMS.Framework.AspNetCore.Users; using NPOI.SS.Formula.Functions; using CMS.Plugin.PipeLineLems.Application.Implements; using CmsQueryExtensions.Entitys; namespace CMS.Plugin.PipeLineLems.ProjectService { @@ -90,6 +92,8 @@ { "请æ±çææç 产åç ä¿¡å·", "请æ±çææç 产åç ä¿¡å·(æè¿°)" }, { "请æ±çæåå²äº§åç ä¿¡å·", "请æ±çæåå²äº§åç ä¿¡å·(æè¿°)" }, { "åå²è¿ç«ä¿¡å·", "åå²è¿ç«ä¿¡å·(æè¿°)" }, { "è£ é å®å·¥ä¿¡å·", "è£ é å®å·¥ä¿¡å·(æè¿°)" }, }; // å建ééçå¬ @@ -253,6 +257,25 @@ _ = Task.Run(async () => { await HanlderForCutByCreateProductWhenFlaseAsync(); }); } } if (changed.Name == "è£ é å®å·¥ä¿¡å·") { if (changed.New?.Value.SafeString().ToBool() == true) { _ = Task.Run(async () => { await HanlderForè£ é å®å·¥ä¿¡å·Async(); }); } else { _ = Task.Run(async () => { await HanlderForå®å·¥ä¿¡å·WhenFalseAsync("è£ é "); }); } } @@ -778,5 +801,67 @@ }; var ret = _variableService.WriteValueAsync(keyValuePairs_productID); } /// <summary> /// è£ é å®å·¥ä¿¡å·=trueæ¶ /// </summary> /// <returns></returns> private async Task HanlderForè£ é å®å·¥ä¿¡å·Async() { var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>(); var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>(); var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>(); var pipeSpecCode = await _variableService.ReadValueAsync("è£ é 管段ç¼ç "); if (string.IsNullOrEmpty(pipeSpecCode?.Content?.Value.SafeString().ToString())) { } else { var myPipeSpecCode = pipeSpecCode.Content.Value.SafeString().ToString(); CallMaterialOrder callMaterialOrder = null; try { var sharedService = _serviceProvider.GetRequiredService<SharedService>(); var userName = await _variableService.ReadValueAsync("è£ é 人"); MyCurrentUser myCurrentUser = new MyCurrentUser() { UserAccount = userName.Content.Value.SafeString().ToString() }; sharedService.CompleteAssemblyProcess(_serviceProvider, new Application.Contracts.Dtos.WorkPlan.CompleteAssemblyProcessInput() { PipeSpecCode = myPipeSpecCode, ProcessName="è£ é å·¥åº" }, myCurrentUser); } catch (Exception) { } } } /// <summary> /// å®å·¥ä¿¡å·=falseæ¶ /// </summary> /// <returns></returns> private async Task HanlderForå®å·¥ä¿¡å·WhenFalseAsync(string processName) { try { var sharedService = _serviceProvider.GetRequiredService<SharedService>(); await sharedService.CompleteHandleOutStoreFinish(_serviceProvider, processName, false); } catch (Exception) { } } } }