This commit is contained in:
2026-07-13 11:13:27 +08:00
parent 9d52bf0c3f
commit 4bd42dd36a
12 changed files with 523 additions and 442 deletions
@@ -0,0 +1,151 @@
ALTER PROCEDURE [dbo].[Sp_WeekWelding]
(
@StartWeldingDate DATETIME,
@EndWeldingDate DATETIME,
@WelderCode NVARCHAR(20) = NULL
)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Sql NVARCHAR(MAX)
DECLARE @ColList NVARCHAR(MAX) = ''
DECLARE @ColNameList NVARCHAR(MAX) = ''
DECLARE @FinalDateCols NVARCHAR(MAX) = ''
;WITH DateCalendar AS (
SELECT CAST(@StartWeldingDate AS DATE) AS WeldDay
UNION ALL
SELECT DATEADD(DAY, 1, WeldDay)
FROM DateCalendar
WHERE WeldDay < CAST(@EndWeldingDate AS DATE)
)
SELECT
@ColList += ISNULL(',[' + CONVERT(VARCHAR, WeldDay, 23) + ']',''),
@ColNameList += ISNULL(',ISNULL([' + CONVERT(VARCHAR, WeldDay, 23) + '],0) AS [' + CONVERT(VARCHAR, WeldDay, 23) + ']',''),
@FinalDateCols += ISNULL(',t.[' + CONVERT(VARCHAR, WeldDay, 23) + ']','')
FROM DateCalendar
ORDER BY WeldDay
SET @ColList = STUFF(@ColList,1,1,'')
SET @ColNameList = STUFF(@ColNameList,1,1,'')
SET @FinalDateCols = STUFF(@FinalDateCols,1,1,'')
-- 动态行转列SQL
SET @Sql = N'
WITH DailyDataAll AS (
SELECT
welder.WED_Code AS WelderCode,
CONVERT(DATE, daily.JOT_WeldDate) AS WeldDay,
SUM(ISNULL(jot.JOT_DoneDin, 0)) AS DailyWeldingSize
FROM HJGL_PW_JointInfo jot
LEFT JOIN dbo.HJGL_PW_IsoInfo pipe ON pipe.ISO_ID = jot.ISO_ID
LEFT JOIN HJGL_BO_WeldReportMain daily ON jot.DReportID = daily.DReportID
LEFT JOIN dbo.HJGL_BS_Welder welder ON welder.WED_ID = jot.JOT_FloorWelder
WHERE
daily.JOT_WeldDate >= @StartWeldingDate
AND daily.JOT_WeldDate < DATEADD(DAY, 1, @EndWeldingDate)
AND jot.JOT_Size <> jot.JOT_DoneDin
AND (@WelderCode IS NULL OR welder.WED_Code = @WelderCode)
GROUP BY welder.WED_Code, CONVERT(DATE, daily.JOT_WeldDate)
),
FilterWelder AS (
SELECT DISTINCT WelderCode
FROM DailyDataAll
WHERE DailyWeldingSize > 40
),
DailyData AS (
SELECT a.*
FROM DailyDataAll a
INNER JOIN FilterWelder f ON a.WelderCode = f.WelderCode
)
SELECT
pvt.WelderCode,
' + @ColNameList + '
FROM DailyData
PIVOT (
SUM(DailyWeldingSize)
FOR WeldDay IN (' + @ColList + ')
) pvt
ORDER BY pvt.WelderCode;
'
-- 临时表:只保留焊工号
CREATE TABLE #TempResult
(
WelderCode NVARCHAR(50)
);
DECLARE @AddColSql NVARCHAR(MAX) = ''
;WITH DateCalendar AS (
SELECT CAST(@StartWeldingDate AS DATE) AS WeldDay
UNION ALL
SELECT DATEADD(DAY, 1, WeldDay)
FROM DateCalendar
WHERE WeldDay < CAST(@EndWeldingDate AS DATE)
)
SELECT @AddColSql += 'ALTER TABLE #TempResult ADD [' + CONVERT(VARCHAR, WeldDay, 23) + '] FLOAT DEFAULT 0;'
FROM DateCalendar
ORDER BY WeldDay
EXEC(@AddColSql);
-- 执行动态PIVOT写入临时表
INSERT INTO #TempResult EXEC sp_executesql @Sql,
N'@StartWeldingDate DATETIME,@EndWeldingDate DATETIME,@WelderCode NVARCHAR(20)',
@StartWeldingDate,@EndWeldingDate,@WelderCode;
-- 查询焊工项目名称
CREATE TABLE #WelderProject
(
WelderCode NVARCHAR(50),
ProjectNames NVARCHAR(MAX)
);
INSERT INTO #WelderProject(WelderCode,ProjectNames)
SELECT DISTINCT
welder.WED_Code,
ISNULL(STUFF((
SELECT DISTINCT ',' + proj.ProjectCode
FROM HJGL_PW_JointInfo jot2
LEFT JOIN HJGL_PW_IsoInfo pipe2 ON pipe2.ISO_ID = jot2.ISO_ID
LEFT JOIN dbo.Base_Project proj ON proj.ProjectId = pipe2.ProjectId
LEFT JOIN HJGL_BO_WeldReportMain daily2 ON jot2.DReportID = daily2.DReportID
LEFT JOIN dbo.HJGL_BS_Welder welder2 ON welder2.WED_ID = jot2.JOT_FloorWelder
WHERE welder2.WED_Code = welder.WED_Code
AND daily2.JOT_WeldDate >= @StartWeldingDate
AND daily2.JOT_WeldDate < DATEADD(DAY, 1, @EndWeldingDate)
AND jot2.JOT_Size <> jot2.JOT_DoneDin
FOR XML PATH(''), TYPE
).value('.','NVARCHAR(MAX)'),1,1,''),'') AS ProjectNames
FROM HJGL_PW_JointInfo jot
LEFT JOIN dbo.HJGL_PW_IsoInfo pipe ON pipe.ISO_ID = jot.ISO_ID
LEFT JOIN HJGL_BO_WeldReportMain daily ON jot.DReportID = daily.DReportID
LEFT JOIN dbo.HJGL_BS_Welder welder ON welder.WED_ID = jot.JOT_FloorWelder
WHERE
daily.JOT_WeldDate >= @StartWeldingDate
AND daily.JOT_WeldDate < DATEADD(DAY, 1, @EndWeldingDate)
AND jot.JOT_Size <> jot.JOT_DoneDin
AND (@WelderCode IS NULL OR welder.WED_Code = @WelderCode);
-- 动态拼接最终输出SQL
DECLARE @FinalSql NVARCHAR(MAX) = N'
SELECT
t.WelderCode,
wp.ProjectNames,
' + @FinalDateCols + '
FROM #TempResult t
INNER JOIN #WelderProject wp ON t.WelderCode = wp.WelderCode
ORDER BY t.WelderCode;
'
EXEC(@FinalSql);
-- 清理临时表
DROP TABLE IF EXISTS #TempResult;
DROP TABLE IF EXISTS #WelderProject;
END
GO
@@ -2,7 +2,7 @@
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<UseIISExpress>true</UseIISExpress>
<LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
<LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
<Use64BitIISExpress />
<IISExpressSSLPort />
<IISExpressAnonymousAuthentication />
@@ -1,6 +1,7 @@
using BLL;
using BLL.Common;
using Model;
using NPOI.SS.Formula.Functions;
using System;
using System.Collections.Generic;
using System.Data;
@@ -32,6 +33,32 @@ namespace FineUIPro.Web.HJGL.CheckManage
}
}
private string BatchId
{
get
{
return (string)ViewState["BatchId"];
}
set
{
ViewState["BatchId"] = value;
}
}
private string ISO_ID
{
get
{
return (string)ViewState["ISO_ID"];
}
set
{
ViewState["ISO_ID"] = value;
}
}
/// <summary>
/// 错误集合
/// </summary>
@@ -347,8 +374,8 @@ namespace FineUIPro.Web.HJGL.CheckManage
percent[UserId] = (int)(100 * i / ir);
string errInfo = string.Empty;
string unitId = string.Empty;
string batchId = string.Empty;
string isoId = string.Empty;
//string batchId = string.Empty;
//string isoId = string.Empty;
string jotId = string.Empty;
int filmNum = 0;
int rMatNum = 0;
@@ -385,7 +412,7 @@ namespace FineUIPro.Web.HJGL.CheckManage
}
else
{
batchId = getBatch.BatchId;
this.BatchId = getBatch.BatchId;
}
}
else
@@ -401,8 +428,8 @@ namespace FineUIPro.Web.HJGL.CheckManage
}
else
{
isoId = getIso.ISO_ID;
newQualityRating.ISO_ID = isoId;
this.ISO_ID = getIso.ISO_ID;
newQualityRating.ISO_ID = this.ISO_ID;
}
}
else
@@ -411,7 +438,7 @@ namespace FineUIPro.Web.HJGL.CheckManage
}
if (!string.IsNullOrEmpty(tempData.Value4.Trim()))
{
var getJoint = jointInfos.FirstOrDefault(x => x.ISO_ID == isoId && x.JOT_JointNo == tempData.Value4.Trim());
var getJoint = jointInfos.FirstOrDefault(x => x.ISO_ID == this.ISO_ID && x.JOT_JointNo == tempData.Value4.Trim());
if (getJoint == null)
{
errInfo += "焊口号[" + tempData.Value4.Trim() + "]该管线下不存在;";
@@ -606,7 +633,7 @@ namespace FineUIPro.Web.HJGL.CheckManage
}
trustItem = (from x in db.HJGL_CH_TrustItem
join y in db.HJGL_CH_Trust on x.CH_TrustID equals y.CH_TrustID
where y.BatchId == batchId && x.JOT_ID == jotId && x.States == "1"
where y.BatchId == this.BatchId && x.JOT_ID == jotId && x.States == "1"
&& y.CH_NDTMethod == "20d2cbca-8b3d-434b-b1c1-181796986fa5"
select x).FirstOrDefault();
if (trustItem != null)
@@ -722,8 +749,142 @@ namespace FineUIPro.Web.HJGL.CheckManage
BLL.HJGL_PW_JointInfoService.JointFileNumWriteBack(jotId, qualityRating.Count());
BLL.HJGL_PW_JointInfoService.JointRMaterialWriteBack(jotId, totalRMatNum);
BLL.HJGL_PW_JointInfoService.JointCheckStateWriteBack(jotId, "20d2cbca-8b3d-434b-b1c1-181796986fa5", trustItem.States);
BLL.HJGL_CH_TrustItemService.UpdateTrustItem(trustItem);
BLL.HJGL_CH_TrustItemService.UpdateTrustItem(trustItem);
}
#region
//bool isExitNotOKItem = false; //是否存在不合格项
List<Model.HJGL_BO_QualityRating> qualityRatingLists = new List<Model.HJGL_BO_QualityRating>();
var cH_TrustItemIDs = from x in Funs.DB.HJGL_CH_TrustItem
join y in Funs.DB.HJGL_CH_Trust on x.CH_TrustID equals y.CH_TrustID
join j in Funs.DB.HJGL_PW_JointInfo on x.JOT_ID equals j.JOT_ID
where y.BatchId == this.BatchId && j.ISO_ID == this.ISO_ID
&& y.CH_NDTMethod == "20d2cbca-8b3d-434b-b1c1-181796986fa5"
select x.CH_TrustItemID;
foreach (var CH_TrustItemID in cH_TrustItemIDs)
{
if (!string.IsNullOrEmpty(CH_TrustItemID))
{
var trustItem = BLL.HJGL_CH_TrustItemService.GetTrustItemByID(CH_TrustItemID);
var jot = BLL.HJGL_PW_JointInfoService.GetJointInfoByJotID(trustItem.JOT_ID);
var trust = BLL.HJGL_TrustManageEditService.GetCH_TrustByID(trustItem.CH_TrustID);
Model.HJGL_BS_NDTType ndt = null;
if (trust.CH_NDTMethod != null)
{
ndt = BLL.HJGL_TestingService.GetTestingByTestingId(trust.CH_NDTMethod);
}
string defectNatures = string.Empty;
qualityRatingLists = BLL.HJGL_BO_QualityRatingService.GetQualityRatingByTrustDetailId(CH_TrustItemID);
qualityRatingLists = qualityRatingLists.Where(x => x.IsPass == "不合格").ToList(); // 获取不合格的项
if (qualityRatingLists.Count() > 0)
{
//isExitNotOKItem = true;
foreach (var item in qualityRatingLists)
{
var oldRepairItemRecord = (from x in Funs.DB.HJGL_CH_RepairItemRecord
where x.JOT_ID == item.JOT_ID && x.TrustItemID == item.CH_TrustItemID && x.FilmNum == item.FilmNum
select x).FirstOrDefault();
if (oldRepairItemRecord == null)
{
if (ndt != null && ndt.NDT_Code.Contains("RT"))
{
if (item.RMaterial == true)
{
defectNatures += "R母材,";
}
if (item.Cack == true)
{
defectNatures += "裂纹,";
}
if (item.NotFusion == true)
{
defectNatures += "未熔合,";
}
if (item.NotPenetration == true)
{
defectNatures += "未焊透,";
}
if (item.StripDefects == true)
{
defectNatures += "条状缺陷,";
}
if (item.CircularDefects == true)
{
defectNatures += "圆形缺陷,";
}
if (item.DeepHoleDefects == true)
{
defectNatures += "深孔缺陷,";
}
if (item.RootsConcave == true)
{
defectNatures += "根部内凹,";
}
if (item.RootsBiteEdge == true)
{
defectNatures += "根部咬边,";
}
if (item.PseudoDefects == true)
{
defectNatures += "伪缺陷,";
}
}
else
{
if (!string.IsNullOrEmpty(item.DefectNature))
{
defectNatures = "缺陷性质:" + item.DefectNature + ",";
}
if (item.DefectLocation != null)
{
defectNatures = defectNatures + "缺陷位置:" + item.DefectLocation + ",";
}
if (item.DefectSize != null)
{
defectNatures = defectNatures + "缺陷尺寸:" + item.DefectSize + ",";
}
}
if (!string.IsNullOrEmpty(defectNatures))
{
defectNatures = defectNatures.Substring(0, defectNatures.LastIndexOf(","));
}
Model.HJGL_CH_RepairItemRecord newRepairItemRecord = new Model.HJGL_CH_RepairItemRecord();
newRepairItemRecord.RepairItemRecordId = SQLHelper.GetNewID(typeof(Model.HJGL_CH_RepairItemRecord));
newRepairItemRecord.ProjectId = trust.ProjectId;
newRepairItemRecord.ISO_ID = jot.ISO_ID;
newRepairItemRecord.JOT_ID = trustItem.JOT_ID;
newRepairItemRecord.FilmNum = item.FilmNum;
newRepairItemRecord.DefectNature = defectNatures;
newRepairItemRecord.TrustItemID = trustItem.CH_TrustItemID;
newRepairItemRecord.BatchId = trust.BatchId;
newRepairItemRecord.RepairMark = "R1";
newRepairItemRecord.FeedbackDate = DateTime.Now;
newRepairItemRecord.NDT_ID = trust.CH_NDTMethod;
newRepairItemRecord.SignMan = this.CurrUser.UserName;
newRepairItemRecord.SignDate = DateTime.Now;
BLL.HJGL_CH_RepairItemRecordService.AddCH_RepairItemRecord(newRepairItemRecord);
defectNatures = string.Empty;
}
}
trustItem.ReportNoticeDate = DateTime.Now;
BLL.HJGL_CH_TrustItemService.UpdateTrustItem(trustItem);
}
}
}
//if (isExitNotOKItem)
//{
// Alert.ShowInTop("成功生成返修通知单!", MessageBoxIcon.Success);
//}
//else
//{
// Alert.ShowInTop("无不合格的项,请提交!", MessageBoxIcon.Warning);
// return;
//}
#endregion
}
#endregion
@@ -325,8 +325,9 @@ namespace FineUIPro.Web.HJGL.DataIn
var locationItems = BLL.DropListService.HJGL_JOT_LocationItem();
var welders = from x in db.HJGL_BS_Welder select x;
var weldMethods = from x in db.HJGL_BS_WeldMethod select x;
var weldMats = from x in db.HJGL_BS_WeldMaterial where x.WMT_MatType == "2" select x; //焊条
var weldSilks = from x in db.HJGL_BS_WeldMaterial where x.WMT_MatType == "1" select x; //焊丝
//var weldMats = from x in db.HJGL_BS_WeldMaterial where x.WMT_MatType == "2" select x; //焊条
//var weldSilks = from x in db.HJGL_BS_WeldMaterial where x.WMT_MatType == "1" select x; //焊丝
var weldMaterials = from x in db.View_WeldInfoDropDownLists select x; //焊材
var welderQualifiedProjects = from x in db.HJGL_BS_WelderQualifiedProject select x;
int ir = pds.Rows.Count;
List<string> jots = new List<string>();
@@ -353,8 +354,8 @@ namespace FineUIPro.Web.HJGL.DataIn
var floorWelderMan = welders.FirstOrDefault(x => x.WED_Code == col5);
var locationItem = locationItems.FirstOrDefault(x => x.Text == col8);
var weldMethod = weldMethods.FirstOrDefault(x => x.WME_Name == col12);
var weldMat = weldMats.FirstOrDefault(x => x.WMT_MatCode == col13);
var weldSilk = weldSilks.FirstOrDefault(x => x.WMT_MatCode == col14);
var weldMat = weldMaterials.FirstOrDefault(x => x.WeldTypeName.Contains("焊条") && x.WeldName == col13);
var weldSilk = weldMaterials.FirstOrDefault(x => x.WeldTypeName.Contains("焊丝") && x.WeldName == col14);
if (joint == null)
{
if (string.IsNullOrEmpty(col0) || string.IsNullOrEmpty(col1) || string.IsNullOrEmpty(col2))
@@ -4,114 +4,127 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>焊工单日工作量异常预警</title>
<link href="../../res/css/common.css" rel="stylesheet" type="text/css" />
<style type="text/css">
.color1 {
color: red;
font-weight: bold;
<script type="text/javascript">
function renderWeldNum(value) {
var num = parseFloat(value);
// 完成达因大于40加粗、标红
if (!isNaN(num) && num > 40) {
return '<div style="color:red; font-weight:bold;text-align:center">' + value + '</div>';
} else {
return '<div style="text-align:center">' + value + '</div>';
}
.color2 {
color: yellowgreen;
font-weight: bold;
}
</style>
}
</script>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false"
EnableCollapse="true" runat="server" BoxFlex="1" EnableColumnLines="true"
AllowSorting="true" SortField="WelderCode" OnSort="Grid1_Sort" AllowPaging="true"
IsDatabasePaging="true" PageSize="15" OnPageIndexChange="Grid1_PageIndexChange"
EnableTextSelection="True" OnRowDataBound="Grid1_RowDataBound">
<Toolbars>
<f:Toolbar ID="Toolbar1" Position="Top" runat="server" ToolbarAlign="Left">
<Items>
<f:DropDownList ID="drpProjectId" runat="server" Label="施工号" EnableEdit="true"
LabelAlign="Right" Width="280px">
</f:DropDownList>
<f:DatePicker runat="server" Label="焊接日期" ID="txtWeldingDate" LabelAlign="Right"
LabelWidth="100px" Width="240px">
</f:DatePicker>
<f:TextBox ID="txtWelderCode" runat="server" Label="焊工号" Width="240px" LabelAlign="Right"></f:TextBox>
<f:ToolbarFill ID="ToolbarFill1" runat="server">
</f:ToolbarFill>
<f:Button ID="BtnAnalyse" Text="统计" Icon="ChartPie"
runat="server" OnClick="BtnAnalyse_Click">
</f:Button>
<f:Button ID="btnOut" OnClick="btnOut_Click" runat="server" Text="导出"
Icon="TableGo" EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:TemplateField ColumnID="tfNumber" HeaderText="序号"
Width="60px" HeaderTextAlign="Center" TextAlign="Center">
<ItemTemplate>
<asp:Label ID="labNumber" runat="server" Text=' <%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1%>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField HeaderText="焊工号" ColumnID="WelderCode" DataField="WelderCode"
SortField="WelderCode" FieldType="String" HeaderTextAlign="Center" Width="140px">
</f:RenderField>
<f:RenderField HeaderText="第一天" ColumnID="week1"
DataField="week1" SortField="week1" FieldType="Float" HeaderTextAlign="Center"
Width="100px">
</f:RenderField>
<f:RenderField HeaderText="第二天" ColumnID="week2"
DataField="week2" SortField="week2" FieldType="Float" HeaderTextAlign="Center"
Width="100px">
</f:RenderField>
<f:RenderField HeaderText="第三天" ColumnID="week3"
DataField="week3" SortField="week3" FieldType="Float" HeaderTextAlign="Center"
Width="100px">
</f:RenderField>
<f:RenderField HeaderText="第四天" ColumnID="week4"
DataField="week4" SortField="week4" FieldType="Float" HeaderTextAlign="Center"
Width="100px">
</f:RenderField>
<f:RenderField HeaderText="第五天" ColumnID="week5"
DataField="week5" SortField="week5" FieldType="Float" HeaderTextAlign="Center"
Width="100px">
</f:RenderField>
<f:RenderField HeaderText="第六天" ColumnID="week6"
DataField="week6" SortField="week6" FieldType="Float" HeaderTextAlign="Center"
Width="100px">
</f:RenderField>
<f:RenderField HeaderText="第七天" ColumnID="week7"
DataField="week7" SortField="week2" FieldType="Float" HeaderTextAlign="Center"
Width="100px">
</f:RenderField>
<f:RenderField HeaderText="总寸口量" ColumnID="TotalSize"
DataField="TotalSize" SortField="TotalSize" FieldType="Float" HeaderTextAlign="Center"
Width="100px">
</f:RenderField>
</Columns>
<PageItems>
<f:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
</f:ToolbarSeparator>
<f:ToolbarText ID="ToolbarText1" runat="server" Text="每页记录数:">
</f:ToolbarText>
<f:DropDownList runat="server" ID="ddlPageSize" Width="80px" AutoPostBack="true"
OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged">
<f:ListItem Text="10" Value="10" />
<f:ListItem Text="15" Value="15" />
<f:ListItem Text="20" Value="20" />
<f:ListItem Text="25" Value="25" />
</f:DropDownList>
</PageItems>
</f:Grid>
</Items>
</f:Panel>
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false"
EnableCollapse="true" runat="server" BoxFlex="1" EnableColumnLines="true" AllowPaging="false"
EnableTextSelection="True">
<Toolbars>
<f:Toolbar ID="Toolbar1" Position="Top" runat="server" ToolbarAlign="Left">
<Items>
<f:DatePicker runat="server" Label="焊接日期" ID="txtStartWeldingDate" LabelAlign="Right"
LabelWidth="100px" Width="220px">
</f:DatePicker>
<f:Label runat="server" Text="-"></f:Label>
<f:DatePicker runat="server" ID="txtEndWeldingDate" Width="120px">
</f:DatePicker>
<f:TextBox ID="txtWelderCode" runat="server" Label="焊工号" Width="240px" LabelAlign="Right"></f:TextBox>
<f:ToolbarFill ID="ToolbarFill1" runat="server">
</f:ToolbarFill>
<f:Button ID="BtnAnalyse" Text="统计" Icon="ChartPie"
runat="server" OnClick="BtnAnalyse_Click">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:TemplateField ColumnID="tfNumber" HeaderText="序号"
Width="60px" HeaderTextAlign="Center" TextAlign="Center">
<ItemTemplate>
<asp:Label ID="labNumber" runat="server" Text=' <%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1%>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField HeaderText="焊工号" ColumnID="WelderCode" DataField="WelderCode" FieldType="String" HeaderTextAlign="Center" Width="110px">
</f:RenderField>
<f:RenderField HeaderText="施工号" ColumnID="ProjectNames"
DataField="ProjectNames" FieldType="String" HeaderTextAlign="Center"
Width="150px">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
<f:RenderField FieldType="String" HeaderTextAlign="Center" Width="90px" Hidden="true" RendererFunction="renderWeldNum">
</f:RenderField>
</Columns>
</f:Grid>
</Items>
</f:Panel>
</form>
</body>
</html>
@@ -1,33 +1,28 @@
using System;
using BLL;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using BLL;
using System.Text;
using AspNet = System.Web.UI.WebControls;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;
using System.Data.SqlClient;
using System.Linq;
using System.Web.UI.DataVisualization.Charting;
using FineUIPro.Web.common;
namespace FineUIPro.Web.HJGL.WeldingReport
{
public partial class WelderDailyWorkExceptionWarning : PageBase
{
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString();
this.drpProjectId.DataTextField = "ProjectCode";
this.drpProjectId.DataValueField = "ProjectId";
this.drpProjectId.DataSource = BLL.Base_ProjectService.GetProjectListByUserId(this.CurrUser.UserId, "1");
this.drpProjectId.DataBind();
Funs.FineUIPleaseSelect(this.drpProjectId);
this.drpProjectId.SelectedValue = this.CurrUser.LoginProjectId;
DateTime today = DateTime.Now.Date;
DateTime monthStart = today.AddMonths(-1).AddDays(1);
txtStartWeldingDate.Text = monthStart.ToString("yyyy-MM-dd");
txtEndWeldingDate.Text = today.ToString("yyyy-MM-dd");
}
}
@@ -36,185 +31,57 @@ namespace FineUIPro.Web.HJGL.WeldingReport
/// </summary>
private void BindGrid()
{
List<SqlParameter> listStr = new List<SqlParameter>();
if (!string.IsNullOrEmpty(this.drpProjectId.SelectedValue) && this.drpProjectId.SelectedValue != BLL.Const._Null)
string startDate = txtStartWeldingDate.Text.Trim();
string endDate = txtEndWeldingDate.Text.Trim();
List<SqlParameter> listParams = new List<SqlParameter>
{
listStr.Add(new SqlParameter("@ProjectId", this.drpProjectId.SelectedValue));
}
else
new SqlParameter("@StartWeldingDate", startDate),
new SqlParameter("@EndWeldingDate", endDate)
};
if (!string.IsNullOrEmpty(txtWelderCode.Text.Trim()))
{
Alert.ShowInTop("请选择施工号!", MessageBoxIcon.Warning);
return;
listParams.Add(new SqlParameter("@WelderCode", txtWelderCode.Text.Trim()));
}
if (!string.IsNullOrEmpty(this.txtWeldingDate.Text.Trim()))
DataTable dt = SQLHelper.GetDataTableRunProc("Sp_WeekWelding", listParams.ToArray());
// 取出dt中所有日期字段(排除固定两列)
var dateCols = dt.Columns.Cast<DataColumn>()
.Where(dc => dc.ColumnName != "WelderCode" && dc.ColumnName != "ProjectNames")
.Select(dc => dc.ColumnName)
.ToList();
int dateColIndex = 0;
// 遍历Grid所有列,只修改日期RenderField
foreach (var col in Grid1.Columns)
{
listStr.Add(new SqlParameter("@WeldingDate", this.txtWeldingDate.Text.Trim()));
RenderField rf = col as RenderField;
if (rf == null) continue;
// 跳过基础固定列
if (rf.ColumnID == "WelderCode" || rf.ColumnID == "ProjectNames")
continue;
// 有对应查询日期则更新表头、绑定字段
if (dateColIndex < dateCols.Count)
{
rf.Hidden = false;
string dateStr = dateCols[dateColIndex];
rf.HeaderText = dateStr;
rf.ColumnID = dateStr;
rf.DataField = dateStr;
dateColIndex++;
}
else
{
// 查询区间不足31天,隐藏多余的列
rf.Hidden = true;
}
}
else
{
Alert.ShowInTop("请选择焊接日期!", MessageBoxIcon.Warning);
return;
}
if (!string.IsNullOrEmpty(this.txtWelderCode.Text.Trim()))
{
listStr.Add(new SqlParameter("@WelderCode", this.txtWelderCode.Text.Trim()));
}
else
{
listStr.Add(new SqlParameter("@WelderCode", null));
}
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunProc("Sp_WeekWelding", parameter);
this.Grid1.RecordCount = tb.Rows.Count;
var table = this.GetPagedDataTable(Grid1, tb);
Grid1.DataSource = table;
Grid1.RecordCount = dt.Rows.Count;
Grid1.DataSource = dt;
Grid1.DataBind();
foreach (GridColumn column in Grid1.Columns)
{
if (column.ColumnID == "week1")
{
column.HeaderText = txtWeldingDate.Text;
}
if (column.ColumnID == "week2")
{
column.HeaderText = string.Format("{0:yyyy-MM-dd}", Convert.ToDateTime(txtWeldingDate.Text).AddDays(1));
}
if (column.ColumnID == "week3")
{
column.HeaderText = string.Format("{0:yyyy-MM-dd}", Convert.ToDateTime(txtWeldingDate.Text).AddDays(2));
}
if (column.ColumnID == "week4")
{
column.HeaderText = string.Format("{0:yyyy-MM-dd}", Convert.ToDateTime(txtWeldingDate.Text).AddDays(3));
}
if (column.ColumnID == "week5")
{
column.HeaderText = string.Format("{0:yyyy-MM-dd}", Convert.ToDateTime(txtWeldingDate.Text).AddDays(4));
}
if (column.ColumnID == "week6")
{
column.HeaderText = string.Format("{0:yyyy-MM-dd}", Convert.ToDateTime(txtWeldingDate.Text).AddDays(5));
}
if (column.ColumnID == "week7")
{
column.HeaderText = string.Format("{0:yyyy-MM-dd}", Convert.ToDateTime(txtWeldingDate.Text).AddDays(6));
}
}
}
protected void Grid1_RowDataBound(object sender, GridRowEventArgs e)
{
DataRowView row = e.DataItem as DataRowView;
double week1Num = Convert.ToDouble(row["week1"]);
RenderField week1 = Grid1.FindColumn("week1") as RenderField;
if (week1Num >= 50 && week1Num < 60)
{
e.CellCssClasses[week1.ColumnIndex] = "color2";
}
if (week1Num >= 60)
{
e.CellCssClasses[week1.ColumnIndex] = "color1";
}
double week2Num = Convert.ToDouble(row["week2"]);
RenderField week2 = Grid1.FindColumn("week2") as RenderField;
if (week2Num >= 50 && week2Num < 60)
{
e.CellCssClasses[week2.ColumnIndex] = "color2";
}
if (week2Num >= 60)
{
e.CellCssClasses[week2.ColumnIndex] = "color1";
}
double week3Num = Convert.ToDouble(row["week3"]);
RenderField week3 = Grid1.FindColumn("week3") as RenderField;
if (week3Num >= 50 && week3Num < 60)
{
e.CellCssClasses[week3.ColumnIndex] = "color2";
}
if (week3Num >= 60)
{
e.CellCssClasses[week3.ColumnIndex] = "color1";
}
double week4Num = Convert.ToDouble(row["week4"]);
RenderField week4 = Grid1.FindColumn("week4") as RenderField;
if (week4Num >= 50 && week4Num < 60)
{
e.CellCssClasses[week4.ColumnIndex] = "color2";
}
if (week4Num >= 60)
{
e.CellCssClasses[week4.ColumnIndex] = "color1";
}
double week5Num = Convert.ToDouble(row["week5"]);
RenderField week5 = Grid1.FindColumn("week5") as RenderField;
if (week5Num >= 50 && week5Num < 60)
{
e.CellCssClasses[week5.ColumnIndex] = "color2";
}
if (week5Num >= 60)
{
e.CellCssClasses[week5.ColumnIndex] = "color1";
}
double week6Num = Convert.ToDouble(row["week6"]);
RenderField week6 = Grid1.FindColumn("week6") as RenderField;
if (week6Num >= 50 && week6Num < 60)
{
e.CellCssClasses[week6.ColumnIndex] = "color2";
}
if (week6Num >= 60)
{
e.CellCssClasses[week6.ColumnIndex] = "color1";
}
double week7Num = Convert.ToDouble(row["week7"]);
RenderField week7 = Grid1.FindColumn("week7") as RenderField;
if (week7Num >= 50 && week7Num < 60)
{
e.CellCssClasses[week7.ColumnIndex] = "color2";
}
if (week7Num >= 60)
{
e.CellCssClasses[week7.ColumnIndex] = "color1";
}
}
/// <summary>
/// 改变索引事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
BindGrid();
}
/// <summary>
/// 分页下拉选择事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
BindGrid();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
this.BindGrid();
}
#endregion
#region
/// <summary>
@@ -224,102 +91,26 @@ namespace FineUIPro.Web.HJGL.WeldingReport
/// <param name="e"></param>
protected void BtnAnalyse_Click(object sender, EventArgs e)
{
string startDate = txtStartWeldingDate.Text.Trim();
string endDate = txtEndWeldingDate.Text.Trim();
if (string.IsNullOrEmpty(startDate) || string.IsNullOrEmpty(endDate))
{
Alert.ShowInTop("请选择焊接起止日期", MessageBoxIcon.Warning);
return;
}
if (Convert.ToDateTime(startDate) > Convert.ToDateTime(endDate))
{
Alert.ShowInTop("起始日期不能大于结束日期", MessageBoxIcon.Warning);
return;
}
int dayDiff = (Convert.ToDateTime(endDate) - Convert.ToDateTime(startDate)).Days + 1;
if (dayDiff > 31)
{
Alert.ShowInTop("查询区间不能超过31天,请缩小日期范围", MessageBoxIcon.Warning);
return;
}
BindGrid();
}
#endregion
#region
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("焊工单日工作量异常预警" + filename, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
/// <summary>
/// 导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
private string GetGridTableHtml(Grid grid)
{
StringBuilder sb = new StringBuilder();
grid.PageSize = 10000;
BindGrid();
sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>");
sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
sb.AppendFormat("<td>{0}</td>", column.HeaderText);
}
sb.Append("</tr>");
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
string html = row.Values[column.ColumnIndex].ToString();
if (column.ColumnID == "tfNumber")
{
html = (row.FindControl("labNumber") as AspNet.Label).Text;
}
sb.AppendFormat("<td>{0}</td>", html);
}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
#endregion
#region NPOI私有方法
private XSSFSheet ExcelCreateRow(XSSFSheet ws, XSSFWorkbook hssfworkbook, int sRows, int eRows, ICellStyle style, int cStart, int cEnd, bool istitle = false)
{
for (int i = sRows; i <= eRows; i++)
{
ws.CreateRow(i);
if (istitle)
{
ws.GetRow(i).HeightInPoints =
i == sRows ? 49.75f :
i == (sRows + 1) ? 13.75f :
38f;
}
else
{
ws.GetRow(i).HeightInPoints = 38f;
}
for (int j = cStart; j <= cEnd; j++)
{
ws.GetRow(i).CreateCell(j);
ws.GetRow(i).GetCell(j).CellStyle = style;
}
}
return ws;
}
private ICellStyle SetStyle(XSSFWorkbook ws, BorderStyle top, BorderStyle bottom, BorderStyle left, BorderStyle right)
{
ICellStyle style = ws.CreateCellStyle();
style.BorderLeft = left;
style.BorderRight = right;
style.BorderTop = top;
style.BorderBottom = bottom;
return style;
}
#endregion
}
}
@@ -60,22 +60,22 @@ namespace FineUIPro.Web.HJGL.WeldingReport
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// drpProjectId 控件。
/// txtStartWeldingDate 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpProjectId;
protected global::FineUIPro.DatePicker txtStartWeldingDate;
/// <summary>
/// txtWeldingDate 控件。
/// txtEndWeldingDate 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtWeldingDate;
protected global::FineUIPro.DatePicker txtEndWeldingDate;
/// <summary>
/// txtWelderCode 控件。
@@ -104,15 +104,6 @@ namespace FineUIPro.Web.HJGL.WeldingReport
/// </remarks>
protected global::FineUIPro.Button BtnAnalyse;
/// <summary>
/// btnOut 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// labNumber 控件。
/// </summary>
@@ -121,32 +112,5 @@ namespace FineUIPro.Web.HJGL.WeldingReport
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label labNumber;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
}
}
+2 -2
View File
@@ -11,7 +11,7 @@
<FineUIPro DebugMode="false" Theme="Cupertino"/>
<appSettings>
<!--连接字符串-->
<add key="ConnectionString" value="Server=.\MSSQLSERVER01;Database=HJGLDB_DS;Integrated Security=False;User ID=sa;Password=1111;MultipleActiveResultSets=true;Max Pool Size = 1000;Connect Timeout=1200"/>
<add key="ConnectionString" value="Server=.\SQL2022;Database=HJGLDB_DS;Integrated Security=False;User ID=sa;Password=1111;MultipleActiveResultSets=true;Max Pool Size = 1000;Connect Timeout=1200"/>
<!--系统名称-->
<add key="SystemName" value="诺必达焊接管理系统"/>
<add key="ChartImageHandler" value="storage=file;timeout=20;url=~/Images/;"/>
@@ -67,7 +67,7 @@
<add path="ChartImg.axd" verb="GET,POST,HEAD" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
<add path="FastReport.Export.axd" verb="*" type="FastReport.Web.Handlers.WebExport"/>
</httpHandlers>
<compilation debug="true" targetFramework="4.6.1">
<compilation debug="false" targetFramework="4.6.1">
<assemblies>
<add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
+1 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
<LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
<NameOfLastUsedPublishProfile>FolderProfile</NameOfLastUsedPublishProfile>
<UseIISExpress>true</UseIISExpress>
<Use64BitIISExpress />