重构包装管理服务,优化数据结构与接口

移除 APIPackagingManageService,功能迁移至 HJGLPackagingmanageService 并进行重构,新增方法支持包装与组件关联管理、分页查询、状态描述等功能。
更新 PackagingManageController,替换旧服务调用,新增接口方法。
调整数据库结构,新增子表 HJGL_PackagingManageDetail,优化包装与组件的关联存储。
更新前端页面逻辑,适配新数据结构,新增 StackingPosition 字段显示。
优化 Model 层字段定义,调整长度限制,提升性能与一致性。
更新报表模板与项目文件,移除冗余代码,提升代码可维护性。
This commit is contained in:
2025-10-29 17:00:27 +08:00
parent 98663b00f7
commit d35ff80f3e
19 changed files with 912 additions and 582 deletions
@@ -0,0 +1,103 @@
Alter VIEW View_HJGL_InstallData
AS
WITH TwOutPutData as (select distinct twRelation.PipelineId,
outdetail.Id as TwOutputDetailId,
twRelation.MaterialCode,
master.Id as OutputMasterId
from Tw_OutputMaster master
join Tw_OutputDetail outdetail on outdetail.OutputMasterId = master.Id
join Tw_InOutPlanMaster planmaster on planmaster.Id = master.InOutPlanMasterId
join Tw_InOutPlanDetail_Relation twRelation
on twRelation.InOutPlanMasterId = planmaster.Id and
outdetail.MaterialCode = twRelation.MaterialCode
where master.TypeInt=70),
PrefabricatedData AS (SELECT pipe.PipeLineMatId as Id,
line.PipelineCode,
pipe.PrefabricatedComponents as Code,
'预制组件' as TypeStr,
'' as Matdef,
CAST(NULL AS DECIMAL(18, 2)) as Number, -- 明确指定数据类型
pack.PackagingCode,
trainnumber.TrainNumber,
line.FlowingSection,
line.UnitWorkId,
line.ProjectId,
pack.StackingPosition
FROM dbo.HJGL_PipeLineMat pipe
INNER JOIN dbo.HJGL_Pipeline line -- 改为INNER JOIN,如果管道必须存在
ON pipe.PipelineId = line.PipelineId
LEFT JOIN dbo.HJGL_MaterialCodeLib lib
ON lib.MaterialCode = pipe.MaterialCode
LEFT JOIN HJGL_Pipeline_Component comonent
ON comonent.PipelineComponentCode = pipe.PrefabricatedComponents
LEFT JOIN HJGL_PackagingManageDetail packdetail
ON packdetail.PipelineComponentId = comonent.PipelineComponentId
LEFT JOIN HJGL_PackagingManage pack
ON packdetail.PackagingManageId = pack.PackagingManageId
AND pack.ProjectId = line.ProjectId -- 添加项目关联条件
LEFT JOIN HJGL_TrainNumberManage trainnumber
ON pack.TrainNumberId = trainnumber.Id
WHERE line.PipeArea = '1'
and (pipe.PrefabricatedComponents != ''
AND pipe.PrefabricatedComponents IS NOT NULL)),
LooseComponentsData AS (SELECT distinct pipe.PipeLineMatId as Id,
line.PipelineCode,
pipe.MaterialCode as Code,
'预制散件' as TypeStr,
lib.MaterialDef as Matdef,
cast( packdetail.Number as DECIMAL(18, 2)) as Number,
pack.PackagingCode,
trainnumber.TrainNumber,
line.FlowingSection,
line.UnitWorkId,
line.ProjectId,
pack.StackingPosition
FROM dbo.HJGL_PipeLineMat pipe
INNER JOIN HJGL_Pipeline line -- 改为INNER JOIN
ON pipe.PipelineId = line.PipelineId
LEFT JOIN dbo.HJGL_MaterialCodeLib lib
ON lib.MaterialCode = pipe.MaterialCode
LEFT JOIN HJGL_PackagingManageDetail packdetail
ON packdetail.MaterialCode = pipe.MaterialCode
LEFT JOIN TwOutPutData twOutPutData
ON twOutPutData.PipelineId = pipe.PipelineId and
twOutPutData.MaterialCode = packdetail.MaterialCode
LEFT JOIN HJGL_PackagingManage pack
ON packdetail.PackagingManageId = pack.PackagingManageId
AND pack.ProjectId = line.ProjectId -- 添加项目关联条件
LEFT JOIN HJGL_TrainNumberManage trainnumber
ON pack.TrainNumberId = trainnumber.Id
where line.PipeArea = '1'
and (pipe.PrefabricatedComponents is null or pipe.PrefabricatedComponents = ''))
-- 合并结果
SELECT *
FROM PrefabricatedData
UNION ALL
SELECT *
FROM LooseComponentsData
go
INSERT INTO HJGL_PackagingManageDetail
SELECT NEWID(),
p.PackagingManageId,
HPC.PipelineId,
s.Value,
NULL,
NULL,
'2025-10-29 15:01:32.513',
'C4A62EC0-E5D3-4EBF-A5FA-E56AA89633C0',
NULL
FROM HJGL_PackagingManage p
CROSS APPLY dbo.SplitString(p.PipelineComponentId, ',', 1) s
JOIN HJGL_Pipeline_Component HPC ON s.Value = HPC.PipelineComponentId
WHERE p.PipelineComponentId IS NOT NULL
AND p.PipelineComponentId != ''
AND NOT EXISTS (
SELECT 1
FROM HJGL_PackagingManageDetail pmd
WHERE pmd.PackagingManageId = p.PackagingManageId
AND pmd.PipelineId = HPC.PipelineId
AND pmd.PipelineComponentId = s.Value
-- 如果还有其他判断重复的字段,可以继续添加条件
)