Преглед изворни кода

fix(s7): FQC检验任务状态闭环——检验完成隐藏录入 + 主管退回恢复检验中

Phase 1H:
- fqcInspectionTaskList.vue:操作列改正向白名单——仅 inspectProgress==='检验中' 显
  「录入检验」;检验完成/其他状态不显(避免负向判断 !==检验完成 对未来新状态误显)
- FqcInspBillFlowService.SupervisorReject:既有 UseTran 内、ReturnToPrev 之后同步
  UPDATE qms_fqcbj SET FINSPECTSTATUS='检验中'(退回后 Flow=N1 ⇔ 状态=检验中),
  同事务防分叉;保留 pd/hgsl/bhgsl/明细等结果数据,不改 jyfzr/Initiator/N1 Assignee

实测 H1-H8:检验中显录入/检验完成隐藏/退回后 Flow=N1+状态=检验中/重现录入/
负责人三者一致/结果保留/重提回检验完成 全 PASS。

chore: bump version Web 2.4.310 / server 1.0.376
YY968XX пре 1 дан
родитељ
комит
89fdf3cf84

+ 1 - 1
Web/package.json

@@ -1,7 +1,7 @@
 {
 {
 	"name": "admin.net",
 	"name": "admin.net",
 	"type": "module",
 	"type": "module",
-	"version": "2.4.309",
+	"version": "2.4.310",
 	"packageManager": "pnpm@10.32.1",
 	"packageManager": "pnpm@10.32.1",
 	"lastBuildTime": "2026.03.15",
 	"lastBuildTime": "2026.03.15",
 	"description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",
 	"description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",

+ 1 - 1
Web/src/views/aidop/s7/fqc/fqcInspectionTaskList.vue

@@ -68,7 +68,7 @@
 					<el-table-column label="操作" width="130" fixed="right">
 					<el-table-column label="操作" width="130" fixed="right">
 						<template #default="{ row }">
 						<template #default="{ row }">
 							<el-button v-if="!row.inspBillId" type="success" link :loading="generatingId === row.id" @click="onGenerate(row)">生成检验单</el-button>
 							<el-button v-if="!row.inspBillId" type="success" link :loading="generatingId === row.id" @click="onGenerate(row)">生成检验单</el-button>
-							<el-button v-else type="warning" link @click="openInspection(row)">录入检验</el-button>
+							<el-button v-else-if="row.inspectProgress === '检验中'" type="warning" link @click="openInspection(row)">录入检验</el-button>
 						</template>
 						</template>
 					</el-table-column>
 					</el-table-column>
 					<template #empty><el-empty description="暂无待检任务" /></template>
 					<template #empty><el-empty description="暂无待检任务" /></template>

+ 3 - 3
server/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj

@@ -11,9 +11,9 @@
     <GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
     <GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
     <Copyright>Admin.NET</Copyright>
     <Copyright>Admin.NET</Copyright>
     <Description>Admin.NET 通用权限开发平台</Description>
     <Description>Admin.NET 通用权限开发平台</Description>
-    <AssemblyVersion>1.0.375</AssemblyVersion>
-    <FileVersion>1.0.375</FileVersion>
-    <Version>1.0.375</Version>
+    <AssemblyVersion>1.0.376</AssemblyVersion>
+    <FileVersion>1.0.376</FileVersion>
+    <Version>1.0.376</Version>
   </PropertyGroup>
   </PropertyGroup>
 
 
   <ItemGroup>
   <ItemGroup>

+ 13 - 2
server/Plugins/Admin.NET.Plugin.AiDOP/FinishedWarehouse/FqcInspBillFlowService.cs

@@ -188,13 +188,24 @@ public class FqcInspBillFlowService : IDynamicApiController, ITransient
         if (string.IsNullOrWhiteSpace(input.Comment))
         if (string.IsNullOrWhiteSpace(input.Comment))
             throw Oops.Oh("退回必须填写意见");
             throw Oops.Oh("退回必须填写意见");
 
 
-        await EnsureBillAsync(input.Id);
+        var (_, sourceBillNo) = await EnsureBillAsync(input.Id);
         var (_, myTask) = await RequireSupervisorTaskAsync(input.Id);
         var (_, myTask) = await RequireSupervisorTaskAsync(input.Id);
+        var tid = ResolveTenantOrThrow();
 
 
         var tran = await _db.AsTenant().UseTranAsync(async () =>
         var tran = await _db.AsTenant().UseTranAsync(async () =>
         {
         {
-            // ReturnToPrev 回 N1;不清 pd/hgsl/bhgsl/clfs、不清 FINSPECTSTATUS/jywcsj,检验员改后重提
+            // ReturnToPrev 回 N1(原流程回退,不重新起流/不改 Initiator/N1 Assignee/jyfzr);
+            // 保留已录检验明细与 pd/hgsl/bhgsl/clfs(不清结果),检验员在原数据上修改后重提。
             await _flowEngine.ReturnToPrev(myTask.Id, input.Comment);
             await _flowEngine.ReturnToPrev(myTask.Id, input.Comment);
+
+            // 业务状态同步:退回后 Flow 回 N1 ⇔ FINSPECTSTATUS 恢复"检验中"(与生成时口径一致),
+            // 与 ReturnToPrev 同一事务,杜绝"Flow回N1但状态仍检验完成"或"状态改了但Reject失败仍N2"的分叉。
+            if (!string.IsNullOrWhiteSpace(sourceBillNo))
+            {
+                await _db.Ado.ExecuteCommandAsync(
+                    "UPDATE qms_fqcbj SET FINSPECTSTATUS='检验中' WHERE FBILLNO=@bjbh AND tenant_id=@t",
+                    new SugarParameter("@bjbh", sourceBillNo), new SugarParameter("@t", tid));
+            }
         });
         });
         if (!tran.IsSuccess) throw tran.ErrorException;
         if (!tran.IsSuccess) throw tran.ErrorException;