From 0e42f871905f207658d822fcbe29aeb57b2156af Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周三, 21 5月 2025 16:18:01 +0800
Subject: [PATCH] 修复查询bug
---
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Models/Service/PipeAccessoryAssembly.ts | 8
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Controllers/PipeAccessoryAssembly.ts | 37 ++
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs | 564 +++++++++++++++++++++++++++++++++++----
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/SendFlangeCodeInput.cs | 27 +
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanPublicController.cs | 58 ++++
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Models/PipeAccessoryAssembly.ts | 10
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/CMSPluginEntry.cs | 1
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Views/Pages/PipeAccessoryAssembly/PipeAccessoryAssembly.tsx | 15 +
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs | 71 ++++
9 files changed, 715 insertions(+), 76 deletions(-)
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Controllers/PipeAccessoryAssembly.ts b/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Controllers/PipeAccessoryAssembly.ts
index 382dd40..a5a52e0 100644
--- a/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Controllers/PipeAccessoryAssembly.ts
+++ b/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Controllers/PipeAccessoryAssembly.ts
@@ -142,6 +142,40 @@
},
]
+
+ //涓嬪彂娉曞叞鍐茬爜
+ const onSendFlangeCode = () => {
+ const names = selection.value.map((item: { dataIdentifier: string }) => item.dataIdentifier)
+ if(names.length==0){
+ ElMessage.warning('璇烽�夋嫨涓�鏉¤褰�');
+ return;
+ }
+ if(names.length>1){
+ ElMessage.warning('璇峰彧鑳介�夋嫨涓�鏉¤褰�');
+ return;
+ }
+ ConfirmBox(
+ `鏄惁瑕佷笅鍙戞硶鍏板啿鐮�${names.length ? names.join(',') : ''}`
+ ).then(async () => {
+ // 鑾峰彇閫変腑鐨勭涓�鏉¤褰�
+ const selectedItem = selection.value[0];
+
+ // 鏋勫缓鍙傛暟瀵硅薄
+ const param = {
+ Son_TaskCode: selectedItem.son_TaskCode || '', // 瀛愪换鍔$紪鍙�
+ TaskCode: selectedItem.taskCode || '', // 浠诲姟缂栧彿
+ PipeSpecCode: selectedItem.pipeSpecCode || '',// 绠℃缂栫爜
+ };
+
+ var ret= await PipeAccessoryAssembly.sendFlangeCode(param)
+ if(ret.code=="200"){
+ ElMessage.success('涓嬪彂鎴愬姛')
+ tableRef.value.getList()
+ }else{
+ ElMessage.error('涓嬪彂澶辫触:'+ret.message)
+ }
+ })
+ }
const onCheck = (records: any) => {
selection.value = records
}
@@ -270,6 +304,7 @@
onConfirmPipeAccessoryAssembly,
onCheck,
onAddPipeAccessoryAssembly,
- onAdvancedQuery
+ onAdvancedQuery,
+ onSendFlangeCode
}
}
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Models/PipeAccessoryAssembly.ts b/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Models/PipeAccessoryAssembly.ts
index 95c2457..782861f 100644
--- a/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Models/PipeAccessoryAssembly.ts
+++ b/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Models/PipeAccessoryAssembly.ts
@@ -2,6 +2,7 @@
import {
// deletePipeAccessoryAssemblys,
// addPipeAccessoryAssembly,
+ sendFlangeCode,
cloneData,
} from './Service/PipeAccessoryAssembly'
@@ -20,7 +21,14 @@
async deletePipeAccessoryAssemblys(ids: string[]) {
// return deletePipeAccessoryAssemblys(ids)
}
-
+ /**
+ * 涓嬪彂娉曞叞鍐茬爜
+ * @param id
+ * @returns
+ */
+ async sendFlangeCode(data: Record<string, any>) {
+ return sendFlangeCode(data)
+ }
/**
* 娣诲姞鏁版嵁
* @param data
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Models/Service/PipeAccessoryAssembly.ts b/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Models/Service/PipeAccessoryAssembly.ts
index 92614a8..581ae4a 100644
--- a/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Models/Service/PipeAccessoryAssembly.ts
+++ b/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Models/Service/PipeAccessoryAssembly.ts
@@ -76,4 +76,12 @@
*/
export const finishProduction = (data: any) => {
return request.post('/api/v1/PipeLineLems/WorkPlanPublic/finishProduction', data)
+}
+
+/**
+ * 涓嬪彂娉曞叞鍐茬爜
+ * @returns
+ */
+export const sendFlangeCode = (data: any) => {
+ return request.post('/api/v1/PipeLineLems/WorkPlanPublic/sendFlangeCode', data)
}
\ No newline at end of file
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Views/Pages/PipeAccessoryAssembly/PipeAccessoryAssembly.tsx b/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Views/Pages/PipeAccessoryAssembly/PipeAccessoryAssembly.tsx
index 6bca6a4..e34a429 100644
--- a/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Views/Pages/PipeAccessoryAssembly/PipeAccessoryAssembly.tsx
+++ b/PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryAssembly/Views/Pages/PipeAccessoryAssembly/PipeAccessoryAssembly.tsx
@@ -62,6 +62,7 @@
openDetail,
onSuccess,
onBeforeUpload,
+ onSendFlangeCode
} = usePipeAccessoryAssembly(props, ctx)
// 鏌ヨ琛ㄥ崟鏁版嵁
@@ -196,6 +197,15 @@
routeUrl.value="/api/v1/PipeLineLems/workTask/page";
paramForProcessRoute.pipeSpecCode = queryForm.value.pipeSpecCode
tableRef.value.getList(paramForProcessRoute)
+ }
+ // 涓嬪彂娉曞叞鍐茬爜
+ const sendFlangeCode = () => {
+ console.log('鎵ц 涓嬪彂娉曞叞鍐茬爜')
+ if (queryForm.value.pipeSpecCode == '') {
+ ElMessage.error('璇疯緭鍏ョ娈电紪鐮�')
+ return
+ }
+ onSendFlangeCode();
}
// 寮�宸ヤ簨浠跺鐞�
const startWork = () => {
@@ -539,10 +549,13 @@
</div> */}
<div class="info-block">
<h2 class="block-title">宸ヨ壓淇℃伅</h2>
- <div class={styles.actionButtons}>
+ <div class={styles.actionButtons} style="margin-bottom:5px;">
<ElButton type="warning" onClick={refreshProcessRoute}>
鍒锋柊
</ElButton>
+ <ElButton type="warning" onClick={sendFlangeCode}>
+ 涓嬪彂娉曞叞鍐茬爜
+ </ElButton>
</div>
<RenderBaseTable
url={routeUrl.value}
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/SendFlangeCodeInput.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/SendFlangeCodeInput.cs
new file mode 100644
index 0000000..c8c633d
--- /dev/null
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/SendFlangeCodeInput.cs
@@ -0,0 +1,27 @@
+锘縰sing 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 SendFlangeCodeInput
+ {
+
+ /// <summary>
+ /// 瀛愪换鍔$紪鍙�
+ /// </summary>
+ public string Son_TaskCode { get; set; }
+
+ /// <summary>
+ /// 浠诲姟缂栧彿
+ /// </summary>
+ public string TaskCode { get; set; }
+
+ }
+}
\ No newline at end of file
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs
index 867e94c..e1754ac 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs
@@ -21,6 +21,7 @@
using CmsQueryExtensions;
using CmsQueryExtensions.Entitys;
using CmsQueryExtensions.Extension;
+using Humanizer;
using KissUtil.Extensions;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
@@ -35,6 +36,8 @@
/// </summary>
public class SharedService : CMSPluginAppService
{
+
+
/// <summary>
/// 鍒嗘嫞鍔熻兘
@@ -813,7 +816,7 @@
/// <summary>
- /// 瑁呴厤宸ュ簭瀹屽伐
+ /// 瑁呴厤/鐒婃帴宸ュ簭瀹屽伐
/// </summary>
/// <param name="_serviceProvider"></param>
/// <param name="input"></param>
@@ -833,69 +836,7 @@
}
- 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 workTaskAppService = _serviceProvider.GetRequiredService<IWorkTaskAppService>();
- var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
- var workTaskRepository = _serviceProvider.GetRequiredService<IWorkTaskRepository>();
- var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>();
- string processName = "";
- var firstWorkTask = await workTaskAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode && x.ProcessName == input.ProcessName);
- if (firstWorkTask == null)
- {
- throw new UserFriendlyException($"鎵句笉鍒颁綔涓氳鍒�");
- }
- //鐗╂枡鍙傛暟鍒楄〃
- 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 浜嬪姟
@@ -906,6 +847,70 @@
try
{
#region 鏁版嵁澶勭悊
+
+ 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 workTaskAppService = _serviceProvider.GetRequiredService<IWorkTaskAppService>();
+ var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
+ var workTaskRepository = _serviceProvider.GetRequiredService<IWorkTaskRepository>();
+ var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>();
+
+ string processName = "";
+ var firstWorkTask = await workTaskAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode && x.ProcessName == input.ProcessName);
+ if (firstWorkTask == null)
+ {
+ throw new UserFriendlyException($"鎵句笉鍒颁綔涓氳鍒�");
+ }
+ //鐗╂枡鍙傛暟鍒楄〃
+ 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()
+ });
+ }
firstWorkTask.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.宸插畬鎴�;
await workTaskRepository.UpdateAsync(firstWorkTask);
@@ -1066,6 +1071,12 @@
await traceProvider.CreateTraceAsync(traceModel);
+
+
+ #endregion
+
+ await uow.CompleteAsync();
+
var response = new MesOrderResponse
{
Code = "200",
@@ -1074,10 +1085,6 @@
Time = DateTime.UtcNow
};
return response;
-
- #endregion
-
- await uow.CompleteAsync();
}
catch (Exception)
{
@@ -1095,6 +1102,429 @@
}
+ #region 娉曞叞鍐茬爜
+
+
+ /// <summary>
+ ///涓嬪彂娉曞叞鍐茬爜 寮�宸�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <param name="_serviceProvider"></param>
+ /// <param name="myCurrentUser"></param>
+ /// <returns></returns>
+ /// <exception cref="UserFriendlyException"></exception>
+ public async Task<MesOrderResponse> SendFlangeCode_StartProduction(SendFlangeCodeInput 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 workTaskRepository = _serviceProvider.GetRequiredService<IWorkTaskRepository>();
+ var callMaterialOrderRecordRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRecordRepository>();
+ var orderManager = _serviceProvider.GetRequiredService<IOrderManager>();
+ var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>();
+
+ var workTaskAppService = _serviceProvider.GetRequiredService<IWorkTaskAppService>();
+
+
+ // 鏌ユ壘鏁版嵁
+ var workTask = await workTaskRepository.GetSingleByFilterAsync(x => x.Son_TaskCode == input.Son_TaskCode);
+ if (workTask == null)
+ {
+ throw new UserFriendlyException($"娌℃湁鎵惧埌瀛愪换鍔$紪鍙穥input.Son_TaskCode}鐨勪换鍔℃暟鎹�");
+ }
+ if (workTask.WorkPlanStatus != Domain.Shared.Enums.WorkPlanStatusEnum.鏈敓浜�)
+ {
+ throw new UserFriendlyException($"瀛愪换鍔$紪鍙穥input.Son_TaskCode}鐨勪换鍔$姸鎬佷笉鏄�'{Domain.Shared.Enums.WorkPlanStatusEnum.鏈敓浜�.ToString()}'");
+ }
+ var workPlan = await workPlanRepository.GetSingleByFilterAsync(x => x.TaskCode == input.TaskCode);
+ if (workPlan == null)
+ {
+ throw new UserFriendlyException($"鎵句笉鍒颁綔涓氳鍒�");
+ }
+
+
+ // 楠岃瘉鐘舵��
+ 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.宸插畬鎴�;
+ //}
+ workPlan.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.鐢熶骇涓�;
+ workTask.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.鐢熶骇涓�;
+
+ await workPlanRepository.UpdateAsync(workPlan);
+
+ await workTaskRepository.UpdateAsync(workTask);
+
+ 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}鍐呭", workTask.PipeAllowableStress},
+
+ { $"{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> SendFlangeCode_CompleteAssemblyProcess(IServiceProvider _serviceProvider, CompleteAssemblyProcessInput input, MyCurrentUser myCurrentUser)
+ {
+ //1銆佽褰曞垎鎷h褰曡〃
+ //2銆佹洿鏂颁綔涓氳鍒掕〃鐨勭姸鎬� =宸插垎鎷�
+ //3銆佸啓鍏� 鍒嗘嫞鍙橀噺
+ //4銆佸啓鍏ヨ拷婧姤琛�
+ //5銆佺墿鏂欑粍鐩�
+
+ if (string.IsNullOrEmpty(input.PipeSpecCode))
+ {
+ throw new UserFriendlyException($"绠℃缂栫爜涓嶈兘涓虹┖");
+ }
+
+
+
+
+ #region 浜嬪姟
+
+ using var scope = _serviceProvider.CreateScope();
+ var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
+ using var uow = unitOfWorkManager.Begin(requiresNew: true);
+
+ try
+ {
+ #region 鏁版嵁澶勭悊
+
+ 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 workTaskAppService = _serviceProvider.GetRequiredService<IWorkTaskAppService>();
+ var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
+ var workTaskRepository = _serviceProvider.GetRequiredService<IWorkTaskRepository>();
+ var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>();
+
+ string processName = "娉曞叞鍐茬爜";
+ var firstWorkTask = await workTaskAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode && x.ProcessName == (input.ProcessName));
+ if (firstWorkTask == null)
+ {
+ throw new UserFriendlyException($"鎵句笉鍒颁綔涓氳鍒�");
+ }
+ //鐗╂枡鍙傛暟鍒楄〃
+ var firstWorkPlan = await workPlanAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode && x.ProcessName == "瑁呴厤宸ュ簭");
+ if (firstWorkPlan == null)
+ {
+ throw new UserFriendlyException($"鎵句笉鍒颁綔涓氳鍒�");
+ }
+
+ 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()
+ });
+ }
+
+ firstWorkTask.WorkPlanStatus = Domain.Shared.Enums.WorkPlanStatusEnum.宸插畬鎴�;
+ await workTaskRepository.UpdateAsync(firstWorkTask);
+
+ //杩欎釜鍦版柟涓嶆敼鏁版嵁
+ //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}鍐呭")
+ {
+ 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);
+
+
+
+ #endregion
+
+ await uow.CompleteAsync();
+
+ var response = new MesOrderResponse
+ {
+ Code = "200",
+ Data = "",
+ Message = "澶勭悊鎴愬姛",
+ Time = DateTime.UtcNow
+ };
+ return response;
+ }
+ catch (Exception)
+ {
+ await uow.RollbackAsync();
+ throw;
+ }
+ finally
+ {
+
+ }
+
+
+
+ #endregion
+
+ }
+
+ #endregion
+
/// <summary>
/// 鍏叡澶勭悊 鍝嶅簲鍑虹珯瀹屾垚淇″彿
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/CMSPluginEntry.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/CMSPluginEntry.cs
index f9efcec..4af0a1d 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/CMSPluginEntry.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/CMSPluginEntry.cs
@@ -50,6 +50,7 @@
context.Services.AddSingleton<IProjectService, PipeLineLemsProjectService>();
context.Services.AddScoped<IMesAppService, MesAppService>();
context.Services.AddScoped<IWorkPlanAppService, WorkPlanAppService>();
+ context.Services.AddScoped<IWorkTaskAppService, WorkTaskAppService>();
//context.Services.AddScoped<ILMesOperateAppService, LMesOperateAppService>();
//context.Services.AddScoped<IWmsTaskRepository, EfCoreWmsTaskRepository>();
//context.Services.AddScoped<IWmsMaterialRepository, EfCoreWmsMaterialRepository>();
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanPublicController.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanPublicController.cs
index 57151fc..33a15cf 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanPublicController.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanPublicController.cs
@@ -113,6 +113,64 @@
}
/// <summary>
+ /// 涓嬪彂娉曞叞鍐茬爜
+ /// </summary>
+ /// <param name="input">鏍囪瘑绗�.</param>
+ /// <returns></returns>
+ [Authorize]
+ [HttpPost]
+ [Route("SendFlangeCode")]
+ public virtual async Task<MesOrderResponse> SendFlangeCode([FromBody] SendFlangeCodeInput input)
+ {
+ try
+ {
+ MyCurrentUser myCurrentUser = new MyCurrentUser()
+ {
+ UserAccount = _currentUser.UserAccount,
+ UserId = _currentUser.UserId
+ };
+ return await sharedService.SendFlangeCode_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("SendFlangeCode_FinishProduction")]
+ public virtual async Task<MesOrderResponse> SendFlangeCode_FinishProduction([FromBody] CompleteAssemblyProcessInput input)
+ {
+ try
+ {
+ MyCurrentUser myCurrentUser = new MyCurrentUser()
+ {
+ UserAccount = _currentUser.UserAccount,
+ UserId = _currentUser.UserId
+ };
+ return await sharedService.SendFlangeCode_CompleteAssemblyProcess(_serviceProvider, input, myCurrentUser);
+ }
+ catch (Exception ex)
+ {
+ return new MesOrderResponse()
+ {
+ Code = "400",
+ Message = ex.Message
+ };
+ }
+ }
+
+ /// <summary>
/// 寮�宸�
/// </summary>
/// <param name="input"></param>
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs
index 6a65e24..9e1ae40 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/ProjectService/PipeLineLemsProjectService.cs
@@ -37,7 +37,6 @@
private readonly ILogger<PipeLineLemsProjectService> _logger;
private readonly IVariableDataCache _variableDataCache;
-
/// <summary>
/// 鍙橀噺鏈嶅姟
/// </summary>
@@ -96,6 +95,7 @@
{ "瑁呴厤瀹屽伐淇″彿", "瑁呴厤瀹屽伐淇″彿(鎻忚堪)" },
{ "鐒婃帴瀹屽伐淇″彿", "鐒婃帴瀹屽伐淇″彿(鎻忚堪)" },
+ { "娉曞叞鍐茬爜瀹屽伐淇″彿", "娉曞叞鍐茬爜瀹屽伐淇″彿(鎻忚堪)" },
};
// 鍒涘缓閫氶亾鐩戝惉
@@ -296,6 +296,24 @@
_ = Task.Run(async () =>
{
await HanlderFor瀹屽伐淇″彿WhenFalseAsync("鐒婃帴");
+ });
+ }
+ }
+
+ if (changed.Name == "娉曞叞鍐茬爜瀹屽伐淇″彿")
+ {
+ if (changed.New?.Value.SafeString().ToBool() == true)
+ {
+ _ = Task.Run(async () =>
+ {
+ await HanlderFor娉曞叞鍐茬爜瀹屽伐淇″彿Async();
+ });
+ }
+ else
+ {
+ _ = Task.Run(async () =>
+ {
+ await HanlderFor瀹屽伐淇″彿WhenFalseAsync("娉曞叞鍐茬爜");
});
}
}
@@ -892,12 +910,12 @@
{
UserAccount = userName.Content.Value.SafeString().ToString()
};
- sharedService.CompleteAssemblyProcess(_serviceProvider, new Application.Contracts.Dtos.WorkPlan.CompleteAssemblyProcessInput() { PipeSpecCode = myPipeSpecCode, ProcessName = "瑁呴厤宸ュ簭" }, myCurrentUser);
+ await sharedService.CompleteAssemblyProcess(_serviceProvider, new Application.Contracts.Dtos.WorkPlan.CompleteAssemblyProcessInput() { PipeSpecCode = myPipeSpecCode, ProcessName = "瑁呴厤宸ュ簭" }, myCurrentUser);
}
- catch (Exception)
+ catch (Exception ex)
{
-
+ _logger.LogException(ex, LogLevel.Error);
}
}
}
@@ -934,12 +952,53 @@
{
UserAccount = userName.Content.Value.SafeString().ToString()
};
- sharedService.CompleteAssemblyProcess(_serviceProvider, new Application.Contracts.Dtos.WorkPlan.CompleteAssemblyProcessInput() { PipeSpecCode = myPipeSpecCode, ProcessName = "鐒婃帴宸ュ簭" }, myCurrentUser);
+ await sharedService.CompleteAssemblyProcess(_serviceProvider, new Application.Contracts.Dtos.WorkPlan.CompleteAssemblyProcessInput() { PipeSpecCode = myPipeSpecCode, ProcessName = "鐒婃帴宸ュ簭" }, myCurrentUser);
}
- catch (Exception)
+ catch (Exception ex)
{
+ _logger.LogException(ex, LogLevel.Error);
+ }
+ }
+ }
+ /// <summary>
+ /// 娉曞叞鍐茬爜瀹屽伐淇″彿=true鏃�
+ /// </summary>
+ /// <returns></returns>
+ private async Task HanlderFor娉曞叞鍐茬爜瀹屽伐淇″彿Async()
+ {
+
+ var txt = "娉曞叞鍐茬爜";
+ var workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>();
+ var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
+ var callMaterialOrderAppService = _serviceProvider.GetRequiredService<ICallMaterialOrderAppService>();
+
+ var pipeSpecCode = await _variableService.ReadValueAsync($"{txt}绠℃缂栫爜");
+
+ 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($"{txt}浜�");
+ MyCurrentUser myCurrentUser = new MyCurrentUser()
+ {
+ UserAccount = userName.Content.Value.SafeString().ToString()
+ };
+ await sharedService.SendFlangeCode_CompleteAssemblyProcess(_serviceProvider, new Application.Contracts.Dtos.WorkPlan.CompleteAssemblyProcessInput()
+ { PipeSpecCode = myPipeSpecCode, ProcessName = $"{txt}宸ュ簭" }, myCurrentUser);
+
+ }
+ catch (Exception ex)
+ {
+ _logger.LogException(ex, LogLevel.Error);
}
}
}
--
Gitblit v1.9.3