This commit is contained in:
commit
570abdc2e8
|
|
@ -0,0 +1,92 @@
|
|||
USE [SGGLDB]
|
||||
GO
|
||||
|
||||
/****** Object: View [dbo].[View_HJGL_InstallData] Script Date: 2026/4/16 0:12:44 ******/
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
ALTER VIEW [dbo].[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 and pipe.PrefabricatedComponents not in('裕-量'))),
|
||||
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
|
||||
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace BLL
|
||||
|
|
@ -53,6 +53,11 @@ namespace BLL
|
|||
{
|
||||
throw new Exception("当前包装状态不可修改车次号");
|
||||
}
|
||||
// 检查包装是否已关联其他车次
|
||||
if (!string.IsNullOrEmpty(packModel.TrainNumberId) && packModel.TrainNumberId != trainNumberId)
|
||||
{
|
||||
throw new Exception("该包装已在其他车次中存在,不能重复添加");
|
||||
}
|
||||
packModel.TrainNumberId = trainNumberId;
|
||||
HJGLPackagingmanageService.UpdateHJGL_PackagingManage(packModel);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using FastReport.DevComponents.DotNetBar;
|
||||
using FastReport.DevComponents.DotNetBar;
|
||||
using FineUIPro;
|
||||
using Model;
|
||||
using System;
|
||||
|
|
@ -15,7 +15,9 @@ namespace BLL
|
|||
public static class HJGLPackagingmanageService
|
||||
{
|
||||
#region Fields
|
||||
|
||||
/// <summary>
|
||||
/// 包装分类映射字典
|
||||
/// </summary>
|
||||
public static Dictionary<string, int> CategoryIntMap = new Dictionary<string, int>
|
||||
{
|
||||
{ "打捆" ,(int)CategoryInt.打捆},
|
||||
|
|
@ -528,6 +530,20 @@ namespace BLL
|
|||
{
|
||||
baseQuery = baseQuery.Where(z => z.train.Id != null && z.train.Id.Contains(filter.TrainNumberId));
|
||||
}
|
||||
// 是否关联车次筛选
|
||||
if (filter.HasTrainNumber.HasValue)
|
||||
{
|
||||
if (filter.HasTrainNumber.Value)
|
||||
{
|
||||
// 已关联车次:TrainNumberId 不为空
|
||||
baseQuery = baseQuery.Where(z => z.x.TrainNumberId != null && z.x.TrainNumberId != "");
|
||||
}
|
||||
else
|
||||
{
|
||||
// 未关联车次:TrainNumberId 为空
|
||||
baseQuery = baseQuery.Where(z => z.x.TrainNumberId == null || z.x.TrainNumberId == "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
baseQuery = baseQuery.OrderByDescending(z => (z.x.ReceiveDate ?? DateTime.MinValue)).ThenBy(z => z.x.PackagingCode);
|
||||
|
|
@ -545,6 +561,9 @@ namespace BLL
|
|||
ReceiveMan = z.train.ContactName,
|
||||
ReceiveDate = string.Format("{0:g}", z.x.ReceiveDate),
|
||||
TrainNumber = z.train.TrainNumber,
|
||||
ComponentCount = db.HJGL_PackagingManageDetail.Count(d => d.PackagingManageId == z.x.PackagingManageId),
|
||||
CategoryInt = z.x.CategoryInt,
|
||||
CategoryString = z.x.CategoryInt == 10 ? "打捆" : (z.x.CategoryInt == 20 ? "装箱" : (z.x.CategoryInt == 30 ? "散装" : ""))
|
||||
}).Distinct();
|
||||
|
||||
totalCount = q.Count();
|
||||
|
|
|
|||
|
|
@ -474,17 +474,28 @@ namespace FineUIPro.Web.CLGL
|
|||
return;
|
||||
}
|
||||
string planId = Grid1.SelectedRowID;
|
||||
string message = TwOutputmasterService.RevokeGenOutMasterByPlanId(planId);
|
||||
if (string.IsNullOrEmpty(message))
|
||||
var planMaster = BLL.TwInOutplanmasterService.GetById(planId);
|
||||
switch (planMaster.State)
|
||||
{
|
||||
ShowNotify("撤销出库成功!", MessageBoxIcon.Success);
|
||||
case (int)TwConst.State.已审核:
|
||||
planMaster.State = (int)TwConst.State.待审核;
|
||||
planMaster.AuditMan = null;
|
||||
planMaster.AuditDate = null;
|
||||
TwInOutplanmasterService.Update(planMaster);
|
||||
BindGrid();
|
||||
}
|
||||
else
|
||||
{
|
||||
Alert.ShowInTop(message, MessageBoxIcon.Warning);
|
||||
return;
|
||||
ShowNotify("撤销审核成功!", MessageBoxIcon.Success);
|
||||
|
||||
break;
|
||||
case (int)TwConst.State.已完成:
|
||||
TwOutputmasterService.RevokeGenOutMasterByPlanId(planId);
|
||||
BindGrid();
|
||||
ShowNotify("撤销出库单成功!", MessageBoxIcon.Success);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
Alert.ShowInTop("请选择有效的计划!", MessageBoxIcon.Warning);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17033,7 +17033,7 @@
|
|||
</COMReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v18.0\WebApplications\Microsoft.WebApplication.targets" />
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using BLL;
|
||||
using BLL;
|
||||
using MiniExcelLibs;
|
||||
using Model;
|
||||
using System;
|
||||
|
|
@ -213,29 +213,24 @@ namespace FineUIPro.Web.HJGL.PreDesign
|
|||
private void BindGrid()
|
||||
{
|
||||
if (tvControlItem.SelectedNode == null) return;
|
||||
var view_HJGL_InstallDatas = BindData(Grid1.PageIndex+1, Grid1.PageSize,out int totalCount);
|
||||
var view_HJGL_InstallDatas = BindData(Grid1.PageIndex+1, Grid1.PageSize,out int totalCount, out int componentCount, out int partCount);
|
||||
// 2.获取当前分页数据
|
||||
Grid1.RecordCount = totalCount;
|
||||
var table = view_HJGL_InstallDatas;
|
||||
Grid1.DataSource = table;
|
||||
Grid1.DataBind();
|
||||
|
||||
// 更新汇总信息
|
||||
UpdateSummary();
|
||||
// 更新汇总信息(使用已统计的数据)
|
||||
UpdateSummary(componentCount, partCount);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新汇总信息
|
||||
/// </summary>
|
||||
private void UpdateSummary()
|
||||
private void UpdateSummary(int componentCount, int partCount)
|
||||
{
|
||||
try
|
||||
{
|
||||
var baseQuery = GetIQueryableInstallDatas();
|
||||
// 计算汇总数据
|
||||
var componentCount = baseQuery.Count(x => x.TypeStr == "预制组件");
|
||||
var partCount = baseQuery.Count(x => x.TypeStr == "预制散件");
|
||||
|
||||
// 更新汇总标签
|
||||
lblSummary1.Text = $"预制组件数量:{componentCount}";
|
||||
lblSummary2.Text = $"预制散件数量:{partCount}";
|
||||
|
|
@ -252,14 +247,27 @@ namespace FineUIPro.Web.HJGL.PreDesign
|
|||
/// 查询数据
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private List<View_HJGL_InstallData> BindData(int pageIndex, int pageSize, out int totalCount)
|
||||
private List<View_HJGL_InstallData> BindData(int pageIndex, int pageSize, out int totalCount, out int componentCount, out int partCount)
|
||||
{
|
||||
var baseQuery = GetIQueryableInstallDatas();
|
||||
totalCount = baseQuery.Count();
|
||||
|
||||
// 一次性统计所有需要的数据(使用 GroupBy 优化)
|
||||
var stats = baseQuery
|
||||
.GroupBy(x => x.TypeStr)
|
||||
.Select(g => new { TypeStr = g.Key, Count = g.Count() })
|
||||
.ToList();
|
||||
|
||||
// 从统计结果中提取数据
|
||||
totalCount = stats.Sum(s => s.Count);
|
||||
componentCount = stats.FirstOrDefault(s => s.TypeStr == "预制组件")?.Count ?? 0;
|
||||
partCount = stats.FirstOrDefault(s => s.TypeStr == "预制散件")?.Count ?? 0;
|
||||
|
||||
// 分页保护
|
||||
if (pageIndex <= 0) pageIndex = 1;
|
||||
if (pageSize <= 0) pageSize = 10;
|
||||
|
||||
var query = baseQuery.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
|
||||
|
||||
// 预制组件数量显示为1,预制散件保持原始数量
|
||||
foreach (var item in query)
|
||||
{
|
||||
|
|
@ -308,8 +316,6 @@ namespace FineUIPro.Web.HJGL.PreDesign
|
|||
baseQuery = baseQuery.Where(x => x.PipelineCode.Contains(txtPipelineCode.Text.Trim()));
|
||||
|
||||
}
|
||||
// 过滤组件编号/材料编码值为"裕-量"的记录
|
||||
baseQuery = baseQuery.Where(x => x.Code != "裕-量");
|
||||
baseQuery = baseQuery.OrderBy(x => x.PipelineCode).ThenBy(x => x.Code);
|
||||
|
||||
return baseQuery;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
|
@ -20,6 +20,18 @@ namespace Model
|
|||
public string ReceiveMan { get; set; }
|
||||
public string ReceiveDate { get; set; }
|
||||
public string TrainNumber { get; set; }
|
||||
/// <summary>
|
||||
/// 包装内数量(预制组件或散件数量)
|
||||
/// </summary>
|
||||
public int ComponentCount { get; set; }
|
||||
/// <summary>
|
||||
/// 包装分类代码
|
||||
/// </summary>
|
||||
public int? CategoryInt { get; set; }
|
||||
/// <summary>
|
||||
/// 包装分类名称
|
||||
/// </summary>
|
||||
public string CategoryString { get; set; }
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
|
@ -55,5 +55,9 @@ namespace Model
|
|||
/// 车次id
|
||||
/// </summary>
|
||||
public string TrainNumberId { get; set; }
|
||||
/// <summary>
|
||||
/// 是否关联车次(true:已关联, false:未关联, null:不筛选)
|
||||
/// </summary>
|
||||
public bool? HasTrainNumber { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
|
@ -31,6 +31,10 @@ namespace Model
|
|||
public string TypeString { get; set; }
|
||||
public int? CategoryInt { get; set; }
|
||||
public string CategoryString { get; set; }
|
||||
/// <summary>
|
||||
/// 包装内数量(预制组件或散件数量)
|
||||
/// </summary>
|
||||
public int ComponentCount { get; set; }
|
||||
|
||||
|
||||
#endregion Properties
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using BLL;
|
||||
using BLL;
|
||||
using Model;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
|
@ -229,6 +229,26 @@ namespace WebAPI.Controllers
|
|||
return responeData;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取包装分类列表
|
||||
/// </summary>
|
||||
/// <returns>包装分类字典</returns>
|
||||
[HttpGet]
|
||||
public Model.ResponeData GetPackagingCategories()
|
||||
{
|
||||
var responeData = new Model.ResponeData();
|
||||
try
|
||||
{
|
||||
responeData.data = HJGLPackagingmanageService.CategoryIntMap;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
responeData.code = 0;
|
||||
responeData.message = ex.Message;
|
||||
}
|
||||
return responeData;
|
||||
}
|
||||
|
||||
#endregion Methods
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue