feat: 完善材料条码与焊接业务功能
This commit is contained in:
@@ -0,0 +1,16 @@
|
|||||||
|
IF COL_LENGTH('dbo.Tw_InputDetailBarCode', 'Quantity') IS NULL
|
||||||
|
BEGIN
|
||||||
|
ALTER TABLE dbo.Tw_InputDetailBarCode
|
||||||
|
ADD Quantity DECIMAL(18, 4) NULL;
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
-- 历史非管材条码每个代表1件;按米计量的管材数量由扫码业务录入,保持为空。
|
||||||
|
UPDATE barCode
|
||||||
|
SET barCode.Quantity = 1
|
||||||
|
FROM dbo.Tw_InputDetailBarCode AS barCode
|
||||||
|
LEFT JOIN dbo.HJGL_MaterialCodeLib AS material
|
||||||
|
ON material.MaterialCode = barCode.MaterialCode
|
||||||
|
WHERE barCode.Quantity IS NULL
|
||||||
|
AND ISNULL(LTRIM(RTRIM(material.MaterialUnit)), N'') <> N'米';
|
||||||
|
GO
|
||||||
@@ -166,7 +166,49 @@ namespace BLL
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 焊接探伤类型,探伤比例
|
#region 焊接方法、焊缝类型、探伤类型、探伤比例
|
||||||
|
/// <summary>
|
||||||
|
/// 获取焊接方法
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static List<Model.BaseInfoItem> GetWeldingMethod()
|
||||||
|
{
|
||||||
|
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
||||||
|
{
|
||||||
|
var getDataLists = (from x in db.Base_WeldingMethod
|
||||||
|
orderby x.WeldingMethodCode
|
||||||
|
select new Model.BaseInfoItem
|
||||||
|
{
|
||||||
|
BaseInfoId = x.WeldingMethodId,
|
||||||
|
BaseInfoCode = x.WeldingMethodCode,
|
||||||
|
BaseInfoName = x.WeldingMethodName
|
||||||
|
}
|
||||||
|
).ToList();
|
||||||
|
return getDataLists;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取焊缝类型
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static List<Model.BaseInfoItem> GetWeldType()
|
||||||
|
{
|
||||||
|
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
||||||
|
{
|
||||||
|
var getDataLists = (from x in db.Base_WeldType
|
||||||
|
orderby x.WeldTypeCode
|
||||||
|
select new Model.BaseInfoItem
|
||||||
|
{
|
||||||
|
BaseInfoId = x.WeldTypeId,
|
||||||
|
BaseInfoCode = x.WeldTypeCode,
|
||||||
|
BaseInfoName = x.WeldTypeName
|
||||||
|
}
|
||||||
|
).ToList();
|
||||||
|
return getDataLists;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取探伤类型
|
/// 获取探伤类型
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -497,6 +497,7 @@ namespace BLL
|
|||||||
x.MaterialCode2,
|
x.MaterialCode2,
|
||||||
x.Number,
|
x.Number,
|
||||||
w.WeldJointId,
|
w.WeldJointId,
|
||||||
|
w.WeldJointCode,
|
||||||
w.Size,
|
w.Size,
|
||||||
w.WeldingDailyId
|
w.WeldingDailyId
|
||||||
}).ToList();
|
}).ToList();
|
||||||
@@ -528,16 +529,22 @@ namespace BLL
|
|||||||
var materialGroups = componentMaterialRows
|
var materialGroups = componentMaterialRows
|
||||||
.Select(x => new
|
.Select(x => new
|
||||||
{
|
{
|
||||||
|
WeldJointId = x.WeldJointId,
|
||||||
|
WeldJointCode = x.WeldJointCode,
|
||||||
|
WeldJointDin = x.Size ?? 0,
|
||||||
MaterialCode = GetExportMaterialCode(x.MaterialCode, x.MaterialCode2, materialCodeLibByMaterialCode),
|
MaterialCode = GetExportMaterialCode(x.MaterialCode, x.MaterialCode2, materialCodeLibByMaterialCode),
|
||||||
Quantity = x.Number ?? 0
|
Quantity = x.Number ?? 0
|
||||||
})
|
})
|
||||||
.Where(x => !string.IsNullOrEmpty(x.MaterialCode))
|
.Where(x => !string.IsNullOrEmpty(x.MaterialCode))
|
||||||
.GroupBy(x => x.MaterialCode)
|
.GroupBy(x => new { x.MaterialCode, x.WeldJointId, x.WeldJointCode, x.WeldJointDin })
|
||||||
.OrderBy(x => x.Key)
|
.OrderBy(x => x.Key.WeldJointCode)
|
||||||
|
.ThenBy(x => x.Key.MaterialCode)
|
||||||
.Select(x => new
|
.Select(x => new
|
||||||
{
|
{
|
||||||
MaterialCode = x.Key,
|
MaterialCode = x.Key.MaterialCode,
|
||||||
Quantity = x.Sum(y => y.Quantity)
|
Quantity = x.Sum(y => y.Quantity),
|
||||||
|
WeldJointCode = x.Key.WeldJointCode,
|
||||||
|
WeldJointDin = x.Key.WeldJointDin
|
||||||
})
|
})
|
||||||
.ToList();
|
.ToList();
|
||||||
return new Tw_PartialWeldedComponentOutput
|
return new Tw_PartialWeldedComponentOutput
|
||||||
@@ -555,6 +562,8 @@ namespace BLL
|
|||||||
UnweldedDin = weldJoints
|
UnweldedDin = weldJoints
|
||||||
.Where(x => string.IsNullOrEmpty(x.WeldingDailyId))
|
.Where(x => string.IsNullOrEmpty(x.WeldingDailyId))
|
||||||
.Sum(x => x.Size ?? 0),
|
.Sum(x => x.Size ?? 0),
|
||||||
|
WeldJointCode = string.Join("\n", materialGroups.Select(x => x.WeldJointCode)),
|
||||||
|
WeldJointDin = string.Join("\n", materialGroups.Select(x => x.WeldJointDin.ToString())),
|
||||||
MaterialCode = string.Join("\n", materialGroups.Select(x => x.MaterialCode)),
|
MaterialCode = string.Join("\n", materialGroups.Select(x => x.MaterialCode)),
|
||||||
MaterialQuantity = string.Join("\n", materialGroups.Select(x => x.Quantity.ToString()))
|
MaterialQuantity = string.Join("\n", materialGroups.Select(x => x.Quantity.ToString()))
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -175,7 +175,6 @@ namespace BLL
|
|||||||
var result = q.Skip(grid1.PageSize * grid1.PageIndex).Take(grid1.PageSize).ToList();
|
var result = q.Skip(grid1.PageSize * grid1.PageIndex).Take(grid1.PageSize).ToList();
|
||||||
// q = SortConditionHelper.SortingAndPaging(q, Grid1.SortField, Grid1.SortDirection, Grid1.PageIndex, Grid1.PageSize);
|
// q = SortConditionHelper.SortingAndPaging(q, Grid1.SortField, Grid1.SortDirection, Grid1.PageIndex, Grid1.PageSize);
|
||||||
return from x in result
|
return from x in result
|
||||||
|
|
||||||
select new Model.Tw_InOutMasterOutput
|
select new Model.Tw_InOutMasterOutput
|
||||||
{
|
{
|
||||||
Id = x.Id,
|
Id = x.Id,
|
||||||
|
|||||||
@@ -3,11 +3,14 @@ using Model;
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System;
|
||||||
|
|
||||||
namespace BLL
|
namespace BLL
|
||||||
{
|
{
|
||||||
public static class TwInputdetailBarCodeService
|
public static class TwInputdetailBarCodeService
|
||||||
{
|
{
|
||||||
|
private static readonly object BarCodeLock = new object();
|
||||||
|
|
||||||
public static int Count
|
public static int Count
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
@@ -52,18 +55,23 @@ namespace BLL
|
|||||||
MaterialDef = mat.MaterialDef,
|
MaterialDef = mat.MaterialDef,
|
||||||
MaterialSpec = mat.MaterialSpec,
|
MaterialSpec = mat.MaterialSpec,
|
||||||
MaterialUnit = mat.MaterialUnit,
|
MaterialUnit = mat.MaterialUnit,
|
||||||
BarCode = x.MaterialCode
|
BarCode = x.BarCode,
|
||||||
|
Quantity = x.Quantity
|
||||||
};
|
};
|
||||||
|
|
||||||
return q.ToList();
|
return q.ToList();
|
||||||
}
|
}
|
||||||
public static List<Tw_InputDetailBarCodeOutput> GetListData(string materialCode)
|
public static List<Tw_InputDetailBarCodeOutput> GetListData(string materialCode)
|
||||||
{
|
{
|
||||||
var q = from mat in Funs.DB.HJGL_MaterialCodeLib
|
var q = from detailBarCode in Funs.DB.Tw_InputDetailBarCode
|
||||||
where
|
join mat in Funs.DB.HJGL_MaterialCodeLib on detailBarCode.MaterialCode equals mat.MaterialCode
|
||||||
mat.MaterialCode == materialCode
|
where detailBarCode.MaterialCode == materialCode
|
||||||
|
orderby detailBarCode.BarCode
|
||||||
select new Tw_InputDetailBarCodeOutput
|
select new Tw_InputDetailBarCodeOutput
|
||||||
{
|
{
|
||||||
|
Id = detailBarCode.Id,
|
||||||
|
InputDetailId = detailBarCode.InputDetailId,
|
||||||
|
InputMasterId = detailBarCode.InputMasterId,
|
||||||
MaterialCode = mat.MaterialCode,
|
MaterialCode = mat.MaterialCode,
|
||||||
Code = mat.Code,
|
Code = mat.Code,
|
||||||
HeatNo = mat.HeatNo,
|
HeatNo = mat.HeatNo,
|
||||||
@@ -72,7 +80,8 @@ namespace BLL
|
|||||||
MaterialDef = mat.MaterialDef,
|
MaterialDef = mat.MaterialDef,
|
||||||
MaterialSpec = mat.MaterialSpec,
|
MaterialSpec = mat.MaterialSpec,
|
||||||
MaterialUnit = mat.MaterialUnit,
|
MaterialUnit = mat.MaterialUnit,
|
||||||
BarCode = mat.MaterialCode
|
BarCode = detailBarCode.BarCode,
|
||||||
|
Quantity = detailBarCode.Quantity
|
||||||
};
|
};
|
||||||
|
|
||||||
return q.ToList();
|
return q.ToList();
|
||||||
@@ -88,17 +97,65 @@ namespace BLL
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
string id = SQLHelper.GetNewID();
|
lock (BarCodeLock)
|
||||||
Tw_InputDetailBarCode table = new Tw_InputDetailBarCode
|
|
||||||
{
|
{
|
||||||
Id = id,
|
if (IsExist(inputDetail.Id))
|
||||||
InputDetailId = inputDetail.Id,
|
{
|
||||||
InputMasterId = inputMaster.Id,
|
return;
|
||||||
MaterialCode = inputDetail.MaterialCode,
|
}
|
||||||
BarCode = BuildBarCode(inputMaster, inputDetail, id)
|
|
||||||
};
|
string id = SQLHelper.GetNewID();
|
||||||
Funs.DB.Tw_InputDetailBarCode.InsertOnSubmit(table);
|
bool isMeter = IsMeterMaterial(inputDetail.MaterialCode);
|
||||||
Funs.DB.SubmitChanges();
|
Tw_InputDetailBarCode table = new Tw_InputDetailBarCode
|
||||||
|
{
|
||||||
|
Id = id,
|
||||||
|
InputDetailId = inputDetail.Id,
|
||||||
|
InputMasterId = inputMaster.Id,
|
||||||
|
MaterialCode = inputDetail.MaterialCode,
|
||||||
|
// 按米计量的管材由扫码后录入实际长度,其他材料每个条码固定代表1件。
|
||||||
|
Quantity = isMeter ? (decimal?)null : 1m,
|
||||||
|
BarCode = isMeter ? BuildNextBarCode(inputDetail.MaterialCode) : inputDetail.MaterialCode
|
||||||
|
};
|
||||||
|
Funs.DB.Tw_InputDetailBarCode.InsertOnSubmit(table);
|
||||||
|
Funs.DB.SubmitChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 为指定管材入库明细生成下一个流水条码。
|
||||||
|
/// </summary>
|
||||||
|
public static string AddNextByInputDetailId(string inputDetailId)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(inputDetailId))
|
||||||
|
{
|
||||||
|
throw new ArgumentException("入库明细不能为空。");
|
||||||
|
}
|
||||||
|
|
||||||
|
lock (BarCodeLock)
|
||||||
|
{
|
||||||
|
var inputDetail = Funs.DB.Tw_InputDetail.FirstOrDefault(x => x.Id == inputDetailId);
|
||||||
|
if (inputDetail == null)
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("未找到入库明细。");
|
||||||
|
}
|
||||||
|
if (!IsMeterMaterial(inputDetail.MaterialCode))
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("只有单位为米的管材可以生成新条码。");
|
||||||
|
}
|
||||||
|
|
||||||
|
string barCode = BuildNextBarCode(inputDetail.MaterialCode);
|
||||||
|
Funs.DB.Tw_InputDetailBarCode.InsertOnSubmit(new Tw_InputDetailBarCode
|
||||||
|
{
|
||||||
|
Id = SQLHelper.GetNewID(),
|
||||||
|
InputDetailId = inputDetail.Id,
|
||||||
|
InputMasterId = inputDetail.InputMasterId,
|
||||||
|
MaterialCode = inputDetail.MaterialCode,
|
||||||
|
BarCode = barCode,
|
||||||
|
Quantity = null
|
||||||
|
});
|
||||||
|
Funs.DB.SubmitChanges();
|
||||||
|
return barCode;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DeleteByInputMasterId(string inputMasterId)
|
public static void DeleteByInputMasterId(string inputMasterId)
|
||||||
@@ -140,7 +197,41 @@ namespace BLL
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static string BuildBarCode(Tw_InputMaster inputMaster, Tw_InputDetail inputDetail, string barCodeDetailId)
|
public static string BuildBarCode(Tw_InputMaster inputMaster, Tw_InputDetail inputDetail, string barCodeDetailId)
|
||||||
{
|
{
|
||||||
return inputDetail == null ? string.Empty : inputDetail.MaterialCode;
|
if (inputDetail == null)
|
||||||
|
{
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
return IsMeterMaterial(inputDetail.MaterialCode)
|
||||||
|
? BuildNextBarCode(inputDetail.MaterialCode)
|
||||||
|
: inputDetail.MaterialCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool IsMeterMaterial(string materialCode)
|
||||||
|
{
|
||||||
|
string materialUnit = Funs.DB.HJGL_MaterialCodeLib
|
||||||
|
.Where(x => x.MaterialCode == materialCode)
|
||||||
|
.Select(x => x.MaterialUnit)
|
||||||
|
.FirstOrDefault();
|
||||||
|
return string.Equals((materialUnit ?? string.Empty).Trim(), "米", StringComparison.Ordinal);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string BuildNextBarCode(string materialCode)
|
||||||
|
{
|
||||||
|
string prefix = materialCode + "-";
|
||||||
|
int maxSequence = 0;
|
||||||
|
var barCodes = Funs.DB.Tw_InputDetailBarCode
|
||||||
|
.Where(x => x.MaterialCode == materialCode && x.BarCode.StartsWith(prefix))
|
||||||
|
.Select(x => x.BarCode)
|
||||||
|
.ToList();
|
||||||
|
foreach (string barCode in barCodes)
|
||||||
|
{
|
||||||
|
int sequence;
|
||||||
|
if (int.TryParse(barCode.Substring(prefix.Length), out sequence) && sequence > maxSequence)
|
||||||
|
{
|
||||||
|
maxSequence = sequence;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return prefix + (maxSequence + 1).ToString("D3");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,6 +48,8 @@ namespace BLL
|
|||||||
PipelineComponentCode = y.PipelineComponentCode,
|
PipelineComponentCode = y.PipelineComponentCode,
|
||||||
MaterialName = mat.MaterialName,
|
MaterialName = mat.MaterialName,
|
||||||
MaterialDef = mat.MaterialDef,
|
MaterialDef = mat.MaterialDef,
|
||||||
|
MaterialUnit = mat.MaterialUnit,
|
||||||
|
BarCodeCount = Funs.DB.Tw_InputDetailBarCode.Count(barCode => barCode.InputDetailId == x.Id),
|
||||||
SortIndex = x.SortIndex
|
SortIndex = x.SortIndex
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
@@ -74,6 +76,16 @@ namespace BLL
|
|||||||
return from x in q
|
return from x in q
|
||||||
select x;
|
select x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取按米计量的管材入库明细。
|
||||||
|
/// </summary>
|
||||||
|
public static List<Model.Tw_InOutDetailOutput> GetPipeListData(Model.Tw_InOutDetailOutput table)
|
||||||
|
{
|
||||||
|
return GetByModle(table)
|
||||||
|
.Where(x => x.MaterialUnit != null && x.MaterialUnit.Trim() == "米")
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public static Model.Tw_InputDetail GetById(string Id)
|
public static Model.Tw_InputDetail GetById(string Id)
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ namespace BLL
|
|||||||
from unit in units.DefaultIfEmpty()
|
from unit in units.DefaultIfEmpty()
|
||||||
join warehouse in Funs.DB.Base_Warehouse on x.WarehouseId equals warehouse.WarehouseId into warehouses
|
join warehouse in Funs.DB.Base_Warehouse on x.WarehouseId equals warehouse.WarehouseId into warehouses
|
||||||
from warehouse in warehouses.DefaultIfEmpty()
|
from warehouse in warehouses.DefaultIfEmpty()
|
||||||
|
orderby x.CreateDate descending
|
||||||
where
|
where
|
||||||
(string.IsNullOrEmpty(table.Id) || x.Id.Contains(table.Id)) &&
|
(string.IsNullOrEmpty(table.Id) || x.Id.Contains(table.Id)) &&
|
||||||
(string.IsNullOrEmpty(table.InOutPlanMasterId) || x.InOutPlanMasterId.Contains(table.InOutPlanMasterId)) &&
|
(string.IsNullOrEmpty(table.InOutPlanMasterId) || x.InOutPlanMasterId.Contains(table.InOutPlanMasterId)) &&
|
||||||
|
|||||||
@@ -16,12 +16,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 根据材料主编码获取条码扫码所需的材料信息。
|
/// 根据入库条码获取扫码所需的材料信息。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Model.MaterialCodeLibBarCodeOutput GetBarCodeMaterialInfo(string materialCode)
|
public static Model.MaterialCodeLibBarCodeOutput GetBarCodeMaterialInfo(string barCode)
|
||||||
{
|
{
|
||||||
return (from x in Funs.DB.HJGL_MaterialCodeLib
|
return (from detailBarCode in Funs.DB.Tw_InputDetailBarCode
|
||||||
where x.MaterialCode == materialCode
|
join x in Funs.DB.HJGL_MaterialCodeLib on detailBarCode.MaterialCode equals x.MaterialCode
|
||||||
|
where detailBarCode.BarCode == barCode
|
||||||
select new Model.MaterialCodeLibBarCodeOutput
|
select new Model.MaterialCodeLibBarCodeOutput
|
||||||
{
|
{
|
||||||
MaterialCode = x.MaterialCode,
|
MaterialCode = x.MaterialCode,
|
||||||
@@ -31,10 +32,36 @@
|
|||||||
MaterialName = x.MaterialName,
|
MaterialName = x.MaterialName,
|
||||||
MaterialDef = x.MaterialDef,
|
MaterialDef = x.MaterialDef,
|
||||||
MaterialSpec = x.MaterialSpec,
|
MaterialSpec = x.MaterialSpec,
|
||||||
MaterialUnit = x.MaterialUnit
|
MaterialUnit = x.MaterialUnit,
|
||||||
|
BarCode = detailBarCode.BarCode,
|
||||||
|
Quantity = detailBarCode.Quantity
|
||||||
}).FirstOrDefault();
|
}).FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 保存指定入库条码的数量,并返回更新后的扫码信息。
|
||||||
|
/// </summary>
|
||||||
|
public static Model.MaterialCodeLibBarCodeOutput SaveBarCodeQuantity(string barCode, decimal quantity)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(barCode))
|
||||||
|
{
|
||||||
|
throw new System.ArgumentException("条码不能为空。");
|
||||||
|
}
|
||||||
|
if (quantity <= 0m)
|
||||||
|
{
|
||||||
|
throw new System.ArgumentException("数量必须大于0。");
|
||||||
|
}
|
||||||
|
|
||||||
|
var detailBarCode = Funs.DB.Tw_InputDetailBarCode.FirstOrDefault(x => x.BarCode == barCode);
|
||||||
|
if (detailBarCode == null)
|
||||||
|
{
|
||||||
|
throw new System.InvalidOperationException("未找到对应的入库条码。");
|
||||||
|
}
|
||||||
|
detailBarCode.Quantity = quantity;
|
||||||
|
Funs.DB.SubmitChanges();
|
||||||
|
return GetBarCodeMaterialInfo(barCode);
|
||||||
|
}
|
||||||
|
|
||||||
public static List<Model.HJGL_MaterialCodeLib> GetMaterialCodeLibList()
|
public static List<Model.HJGL_MaterialCodeLib> GetMaterialCodeLibList()
|
||||||
{
|
{
|
||||||
var q = (from x in Funs.DB.HJGL_MaterialCodeLib select x).ToList();
|
var q = (from x in Funs.DB.HJGL_MaterialCodeLib select x).ToList();
|
||||||
|
|||||||
@@ -129,7 +129,7 @@
|
|||||||
<f:TabStrip ID="TabStrip1" ShowBorder="false" TabPosition="Top"
|
<f:TabStrip ID="TabStrip1" ShowBorder="false" TabPosition="Top"
|
||||||
EnableTabCloseMenu="false" ActiveTabIndex="0" runat="server" AutoPostBack="true" OnTabIndexChanged="TabStrip1_TabIndexChanged">
|
EnableTabCloseMenu="false" ActiveTabIndex="0" runat="server" AutoPostBack="true" OnTabIndexChanged="TabStrip1_TabIndexChanged">
|
||||||
<Tabs>
|
<Tabs>
|
||||||
<f:Tab ID="TabDetail" Title="入库明细表" BodyPadding="1px" Layout="VBox" runat="server" AutoScroll="true">
|
<f:Tab ID="TabDetail" Title="入库明细表(总览)" BodyPadding="1px" Layout="VBox" runat="server" AutoScroll="true">
|
||||||
<Items>
|
<Items>
|
||||||
<f:Grid ID="Grid2" ShowBorder="false" ShowHeader="false" Title="入库申请明细表" EnableCollapse="true"
|
<f:Grid ID="Grid2" ShowBorder="false" ShowHeader="false" Title="入库申请明细表" EnableCollapse="true"
|
||||||
runat="server" BoxFlex="1" DataKeyNames="Id" AllowCellEditing="true"
|
runat="server" BoxFlex="1" DataKeyNames="Id" AllowCellEditing="true"
|
||||||
@@ -171,12 +171,67 @@
|
|||||||
</f:Grid>
|
</f:Grid>
|
||||||
</Items>
|
</Items>
|
||||||
</f:Tab>
|
</f:Tab>
|
||||||
|
<f:Tab ID="TabPipeDetail" Title="入库明细表(管子)" BodyPadding="1px" Layout="VBox" runat="server" AutoScroll="true">
|
||||||
|
<Items>
|
||||||
|
<f:Grid ID="GridPipeDetail" ShowBorder="false" ShowHeader="false" Title="入库明细表(管子)" EnableCollapse="true"
|
||||||
|
runat="server" BoxFlex="1" DataKeyNames="Id" DataIDField="Id" AllowSorting="true"
|
||||||
|
SortField="Id" SortDirection="DESC" EnableColumnLines="true" EnableTextSelection="true"
|
||||||
|
AllowPaging="true" IsDatabasePaging="false" PageSize="10000" OnRowCommand="GridPipeDetail_RowCommand" AllowColumnLocking="true">
|
||||||
|
<Toolbars>
|
||||||
|
<f:Toolbar ID="ToolbarPipeDetail" Position="Top" runat="server" ToolbarAlign="Right">
|
||||||
|
<Items>
|
||||||
|
<f:TextBox ID="txtPipeMaterialCode" runat="server" Label="材料主编码" LabelWidth="100px"
|
||||||
|
LabelAlign="Right" Width="300px" EmptyText="请输入材料主编码"></f:TextBox>
|
||||||
|
<f:Button ID="btnSearchPipeDetail" runat="server" Text="查询" Icon="SystemSearch" OnClick="btnSearchPipeDetail_Click"></f:Button>
|
||||||
|
</Items>
|
||||||
|
</f:Toolbar>
|
||||||
|
</Toolbars>
|
||||||
|
<Columns>
|
||||||
|
<f:TemplateField ColumnID="tfPipeNumber" Width="50px" HeaderText="序号" HeaderTextAlign="Center" TextAlign="Center">
|
||||||
|
<ItemTemplate>
|
||||||
|
<asp:Label ID="LabelPipeNumber" runat="server" Text='<%# GridPipeDetail.PageIndex * GridPipeDetail.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
|
||||||
|
</ItemTemplate>
|
||||||
|
</f:TemplateField>
|
||||||
|
<f:RenderField Width="150px" ColumnID="PipeMaterialCode" DataField="MaterialCode" SortField="MaterialCode"
|
||||||
|
FieldType="String" HeaderText="材料主编码" TextAlign="Left" HeaderTextAlign="Center"></f:RenderField>
|
||||||
|
<f:RenderField Width="150px" ColumnID="PipeCode" DataField="Code" SortField="Code"
|
||||||
|
FieldType="String" HeaderText="材料编码" TextAlign="Left" HeaderTextAlign="Center"></f:RenderField>
|
||||||
|
<f:RenderField Width="150px" ColumnID="PipeHeatNo" DataField="HeatNo" SortField="HeatNo"
|
||||||
|
FieldType="String" HeaderText="炉号" TextAlign="Left" HeaderTextAlign="Center"></f:RenderField>
|
||||||
|
<f:RenderField Width="150px" ColumnID="PipeBatchNo" DataField="BatchNo" SortField="BatchNo"
|
||||||
|
FieldType="String" HeaderText="批号" TextAlign="Left" HeaderTextAlign="Center"></f:RenderField>
|
||||||
|
<f:RenderField Width="150px" ColumnID="PipeMaterialName" DataField="MaterialName" SortField="MaterialName"
|
||||||
|
FieldType="String" HeaderText="材料名称" TextAlign="Left" HeaderTextAlign="Center"></f:RenderField>
|
||||||
|
<f:RenderField Width="300px" ColumnID="PipeMaterialDef" DataField="MaterialDef" SortField="MaterialDef"
|
||||||
|
FieldType="String" HeaderText="材料描述" TextAlign="Left" HeaderTextAlign="Center"></f:RenderField>
|
||||||
|
<f:RenderField Width="100px" ColumnID="PipePlanNum" DataField="PlanNum" SortField="PlanNum"
|
||||||
|
FieldType="String" HeaderText="计划数量" TextAlign="Left" HeaderTextAlign="Center"></f:RenderField>
|
||||||
|
<f:RenderField Width="100px" ColumnID="PipeActNum" DataField="ActNum" SortField="ActNum"
|
||||||
|
FieldType="String" HeaderText="实际数量" TextAlign="Left" HeaderTextAlign="Center"></f:RenderField>
|
||||||
|
<f:RenderField Width="100px" ColumnID="BarCodeCount" DataField="BarCodeCount" SortField="BarCodeCount"
|
||||||
|
FieldType="Int" HeaderText="条码数量" TextAlign="Center" HeaderTextAlign="Center"></f:RenderField>
|
||||||
|
<f:LinkButtonField Width="110px" ColumnID="btnGenerateBarCode" TextAlign="Center" CommandName="btnGenerateBarCode"
|
||||||
|
Text="生成新条码" ConfirmText="确定为该管材生成一个新条码吗?" ConfirmTarget="Top" Locked="true" />
|
||||||
|
</Columns>
|
||||||
|
</f:Grid>
|
||||||
|
</Items>
|
||||||
|
</f:Tab>
|
||||||
<f:Tab ID="TabInputDetailBarCode" Title="入库明细条码表" BodyPadding="1px" Layout="VBox" runat="server" AutoScroll="true">
|
<f:Tab ID="TabInputDetailBarCode" Title="入库明细条码表" BodyPadding="1px" Layout="VBox" runat="server" AutoScroll="true">
|
||||||
<Items>
|
<Items>
|
||||||
<f:Grid ID="Grid3" ShowBorder="false" ShowHeader="false" Title="入库明细条码表" EnableCollapse="true"
|
<f:Grid ID="Grid3" ShowBorder="false" ShowHeader="false" Title="入库明细条码表" EnableCollapse="true"
|
||||||
runat="server" BoxFlex="1" DataKeyNames="Id" DataIDField="Id" AllowSorting="true"
|
runat="server" BoxFlex="1" DataKeyNames="Id" DataIDField="Id" AllowSorting="true"
|
||||||
SortField="Id" SortDirection="DESC" EnableColumnLines="true" EnableTextSelection="true"
|
SortField="Id" SortDirection="DESC" EnableColumnLines="true" EnableTextSelection="true"
|
||||||
AllowPaging="true" IsDatabasePaging="true" PageSize="10000" OnRowCommand="Grid3_RowCommand" AllowColumnLocking="true">
|
AllowPaging="true" IsDatabasePaging="true" PageSize="10000" OnRowCommand="Grid3_RowCommand" AllowColumnLocking="true">
|
||||||
|
<Toolbars>
|
||||||
|
<f:Toolbar ID="ToolbarBarCodeDetail" Position="Top" runat="server" ToolbarAlign="Right">
|
||||||
|
<Items>
|
||||||
|
<f:TextBox ID="txtBarCodeMaterialCode" runat="server" Label="材料主编码" LabelWidth="100px"
|
||||||
|
LabelAlign="Right" Width="300px" EmptyText="请输入材料主编码"></f:TextBox>
|
||||||
|
<f:Button ID="btnSearchBarCodeDetail" runat="server" Text="查询" Icon="SystemSearch"
|
||||||
|
OnClick="btnSearchBarCodeDetail_Click"></f:Button>
|
||||||
|
</Items>
|
||||||
|
</f:Toolbar>
|
||||||
|
</Toolbars>
|
||||||
<Columns>
|
<Columns>
|
||||||
<f:TemplateField ColumnID="tfNumber" Width="50px" HeaderText="序号" HeaderTextAlign="Center"
|
<f:TemplateField ColumnID="tfNumber" Width="50px" HeaderText="序号" HeaderTextAlign="Center"
|
||||||
TextAlign="Center">
|
TextAlign="Center">
|
||||||
@@ -203,7 +258,7 @@
|
|||||||
FieldType="String" HeaderText="材料名称" TextAlign="Left" HeaderTextAlign="Center">
|
FieldType="String" HeaderText="材料名称" TextAlign="Left" HeaderTextAlign="Center">
|
||||||
</f:RenderField>
|
</f:RenderField>
|
||||||
<f:RenderField Width="300px" ColumnID="MaterialDef" DataField="MaterialDef" SortField="MaterialDef"
|
<f:RenderField Width="300px" ColumnID="MaterialDef" DataField="MaterialDef" SortField="MaterialDef"
|
||||||
FieldType="String" HeaderText="材料描述" TextAlign="Left" HeaderTextAlign="Center" >
|
FieldType="String" HeaderText="材料描述" TextAlign="Left" HeaderTextAlign="Center" Hidden="true">
|
||||||
</f:RenderField>
|
</f:RenderField>
|
||||||
<f:RenderField Width="150px" ColumnID="MaterialSpec" DataField="MaterialSpec" SortField="MaterialSpec"
|
<f:RenderField Width="150px" ColumnID="MaterialSpec" DataField="MaterialSpec" SortField="MaterialSpec"
|
||||||
FieldType="String" HeaderText="规格" TextAlign="Left" HeaderTextAlign="Center">
|
FieldType="String" HeaderText="规格" TextAlign="Left" HeaderTextAlign="Center">
|
||||||
@@ -214,6 +269,9 @@
|
|||||||
<f:RenderField Width="360px" ColumnID="BarCode" DataField="BarCode" SortField="BarCode"
|
<f:RenderField Width="360px" ColumnID="BarCode" DataField="BarCode" SortField="BarCode"
|
||||||
FieldType="String" HeaderText="条码内容" TextAlign="Left" HeaderTextAlign="Center">
|
FieldType="String" HeaderText="条码内容" TextAlign="Left" HeaderTextAlign="Center">
|
||||||
</f:RenderField>
|
</f:RenderField>
|
||||||
|
<f:RenderField Width="100px" ColumnID="Quantity" DataField="Quantity" SortField="Quantity"
|
||||||
|
FieldType="String" HeaderText="数量" TextAlign="Right" HeaderTextAlign="Center">
|
||||||
|
</f:RenderField>
|
||||||
<f:LinkButtonField Width="120px" ColumnID="btnBarCodePrint" TextAlign="Center" CommandName="btnBarCodePrint" Text="入库条码打印" Locked="true"/>
|
<f:LinkButtonField Width="120px" ColumnID="btnBarCodePrint" TextAlign="Center" CommandName="btnBarCodePrint" Text="入库条码打印" Locked="true"/>
|
||||||
</Columns>
|
</Columns>
|
||||||
</f:Grid>
|
</f:Grid>
|
||||||
|
|||||||
@@ -66,6 +66,8 @@ namespace FineUIPro.Web.CLGL
|
|||||||
Grid2.DataBind();
|
Grid2.DataBind();
|
||||||
Grid3.DataSource = null;
|
Grid3.DataSource = null;
|
||||||
Grid3.DataBind();
|
Grid3.DataBind();
|
||||||
|
GridPipeDetail.DataSource = null;
|
||||||
|
GridPipeDetail.DataBind();
|
||||||
}
|
}
|
||||||
private void BindDetailGrid(string inputMasterId)
|
private void BindDetailGrid(string inputMasterId)
|
||||||
{
|
{
|
||||||
@@ -100,10 +102,22 @@ namespace FineUIPro.Web.CLGL
|
|||||||
{
|
{
|
||||||
Model.Tw_InputDetailBarCodeOutput table = new Model.Tw_InputDetailBarCodeOutput();
|
Model.Tw_InputDetailBarCodeOutput table = new Model.Tw_InputDetailBarCodeOutput();
|
||||||
table.InputMasterId = inputMasterId;
|
table.InputMasterId = inputMasterId;
|
||||||
|
table.MaterialCode = txtBarCodeMaterialCode.Text.Trim();
|
||||||
var tb = BLL.TwInputdetailBarCodeService.GetListData(table, Grid3);
|
var tb = BLL.TwInputdetailBarCodeService.GetListData(table, Grid3);
|
||||||
Grid3.DataSource = tb;
|
Grid3.DataSource = tb;
|
||||||
Grid3.DataBind();
|
Grid3.DataBind();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void BindPipeDetailGrid(string inputMasterId)
|
||||||
|
{
|
||||||
|
var table = new Model.Tw_InOutDetailOutput
|
||||||
|
{
|
||||||
|
InputMasterId = inputMasterId,
|
||||||
|
MaterialCode = txtPipeMaterialCode.Text.Trim()
|
||||||
|
};
|
||||||
|
GridPipeDetail.DataSource = BLL.TwInputdetailService.GetPipeListData(table);
|
||||||
|
GridPipeDetail.DataBind();
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region GV 数据操作
|
#region GV 数据操作
|
||||||
@@ -146,6 +160,7 @@ namespace FineUIPro.Web.CLGL
|
|||||||
string ID = Grid1.DataKeys[e.RowIndex][0].ToString();
|
string ID = Grid1.DataKeys[e.RowIndex][0].ToString();
|
||||||
BindDetailGrid(ID);
|
BindDetailGrid(ID);
|
||||||
BindBarCodeGrid(ID);
|
BindBarCodeGrid(ID);
|
||||||
|
BindPipeDetailGrid(ID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -350,6 +365,46 @@ namespace FineUIPro.Web.CLGL
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void GridPipeDetail_RowCommand(object sender, GridCommandEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.CommandName != "btnGenerateBarCode")
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string barCode = TwInputdetailBarCodeService.AddNextByInputDetailId(e.RowID);
|
||||||
|
BindPipeDetailGrid(Grid1.SelectedRowID);
|
||||||
|
BindBarCodeGrid(Grid1.SelectedRowID);
|
||||||
|
ShowNotify("新条码已生成:" + barCode, MessageBoxIcon.Success);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ShowNotify(ex.Message, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnSearchPipeDetail_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(Grid1.SelectedRowID))
|
||||||
|
{
|
||||||
|
ShowNotify("请先选择一张入库单。", MessageBoxIcon.Warning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
BindPipeDetailGrid(Grid1.SelectedRowID);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void btnSearchBarCodeDetail_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(Grid1.SelectedRowID))
|
||||||
|
{
|
||||||
|
ShowNotify("请先选择一张入库单。", MessageBoxIcon.Warning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
BindBarCodeGrid(Grid1.SelectedRowID);
|
||||||
|
}
|
||||||
|
|
||||||
protected void TabStrip1_TabIndexChanged(object sender, EventArgs e)
|
protected void TabStrip1_TabIndexChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(Grid1.SelectedRowID))
|
if (!string.IsNullOrEmpty(Grid1.SelectedRowID))
|
||||||
@@ -359,6 +414,10 @@ namespace FineUIPro.Web.CLGL
|
|||||||
BindDetailGrid(Grid1.SelectedRowID);
|
BindDetailGrid(Grid1.SelectedRowID);
|
||||||
}
|
}
|
||||||
else if (TabStrip1.ActiveTabIndex == 1)
|
else if (TabStrip1.ActiveTabIndex == 1)
|
||||||
|
{
|
||||||
|
BindPipeDetailGrid(Grid1.SelectedRowID);
|
||||||
|
}
|
||||||
|
else if (TabStrip1.ActiveTabIndex == 2)
|
||||||
{
|
{
|
||||||
BindBarCodeGrid(Grid1.SelectedRowID);
|
BindBarCodeGrid(Grid1.SelectedRowID);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -194,6 +194,36 @@ namespace FineUIPro.Web.CLGL
|
|||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Label Label1;
|
protected global::System.Web.UI.WebControls.Label Label1;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// TabPipeDetail 控件。
|
||||||
|
/// </summary>
|
||||||
|
protected global::FineUIPro.Tab TabPipeDetail;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// GridPipeDetail 控件。
|
||||||
|
/// </summary>
|
||||||
|
protected global::FineUIPro.Grid GridPipeDetail;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ToolbarPipeDetail 控件。
|
||||||
|
/// </summary>
|
||||||
|
protected global::FineUIPro.Toolbar ToolbarPipeDetail;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtPipeMaterialCode 控件。
|
||||||
|
/// </summary>
|
||||||
|
protected global::FineUIPro.TextBox txtPipeMaterialCode;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnSearchPipeDetail 控件。
|
||||||
|
/// </summary>
|
||||||
|
protected global::FineUIPro.Button btnSearchPipeDetail;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// LabelPipeNumber 控件。
|
||||||
|
/// </summary>
|
||||||
|
protected global::System.Web.UI.WebControls.Label LabelPipeNumber;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// TabInputDetailBarCode 控件。
|
/// TabInputDetailBarCode 控件。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -203,6 +233,21 @@ namespace FineUIPro.Web.CLGL
|
|||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::FineUIPro.Tab TabInputDetailBarCode;
|
protected global::FineUIPro.Tab TabInputDetailBarCode;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ToolbarBarCodeDetail 控件。
|
||||||
|
/// </summary>
|
||||||
|
protected global::FineUIPro.Toolbar ToolbarBarCodeDetail;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtBarCodeMaterialCode 控件。
|
||||||
|
/// </summary>
|
||||||
|
protected global::FineUIPro.TextBox txtBarCodeMaterialCode;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// btnSearchBarCodeDetail 控件。
|
||||||
|
/// </summary>
|
||||||
|
protected global::FineUIPro.Button btnSearchBarCodeDetail;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Grid3 控件。
|
/// Grid3 控件。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -631,6 +631,15 @@ namespace FineUIPro.Web.HJGL.PointTrust
|
|||||||
dt.Columns.Add("CH_NDTMethod", typeof(String));
|
dt.Columns.Add("CH_NDTMethod", typeof(String));
|
||||||
dt.Columns.Add("CH_SlopeType", typeof(String));
|
dt.Columns.Add("CH_SlopeType", typeof(String));
|
||||||
dt.Columns.Add("CH_NDTRate", typeof(String));
|
dt.Columns.Add("CH_NDTRate", typeof(String));
|
||||||
|
dt.Columns.Add("CH_DetectionType", typeof(String));
|
||||||
|
dt.Columns.Add("CH_WorkName", typeof(String));
|
||||||
|
dt.Columns.Add("CH_WorkType", typeof(String));
|
||||||
|
dt.Columns.Add("CH_Material", typeof(String));
|
||||||
|
dt.Columns.Add("CH_MediumGrade", typeof(String));
|
||||||
|
dt.Columns.Add("CH_DetectionTiming", typeof(String));
|
||||||
|
dt.Columns.Add("CH_ProjectPipelineCode", typeof(String));
|
||||||
|
dt.Columns.Add("CH_HeatTreatmentStatus", typeof(String));
|
||||||
|
dt.Columns.Add("CH_ExecutionStandard", typeof(String));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -649,20 +658,39 @@ namespace FineUIPro.Web.HJGL.PointTrust
|
|||||||
Alert.ShowInTop("请选择要打印的委托单!", MessageBoxIcon.Warning);
|
Alert.ShowInTop("请选择要打印的委托单!", MessageBoxIcon.Warning);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var CH_WeldMethod = (from batch in Funs.DB.View_Batch_BatchTrustItem
|
var printDetails = (from batch in Funs.DB.View_Batch_BatchTrustItem
|
||||||
join joint in Funs.DB.View_HJGL_WeldJoint on batch.WeldJointId equals joint.WeldJointId
|
|
||||||
where batch.TrustBatchId == trust.TrustBatchId
|
|
||||||
select joint.WeldingMethodCode).Distinct().ToList();
|
|
||||||
var CH_SlopeType = (from batch in Funs.DB.View_Batch_BatchTrustItem
|
|
||||||
join joint in Funs.DB.View_HJGL_WeldJoint on batch.WeldJointId equals joint.WeldJointId
|
join joint in Funs.DB.View_HJGL_WeldJoint on batch.WeldJointId equals joint.WeldJointId
|
||||||
where batch.TrustBatchId == trust.TrustBatchId
|
where batch.TrustBatchId == trust.TrustBatchId
|
||||||
select joint.GrooveTypeCode).Distinct().ToList();
|
orderby batch.PipelineCode, batch.WeldJointCode
|
||||||
|
select new
|
||||||
|
{
|
||||||
|
batch.PipelineCode,
|
||||||
|
batch.WeldJointCode,
|
||||||
|
batch.WelderCode,
|
||||||
|
joint.Specification,
|
||||||
|
joint.MaterialCode,
|
||||||
|
joint.Remark,
|
||||||
|
joint.WeldingMethodCode,
|
||||||
|
joint.GrooveTypeCode,
|
||||||
|
batch.PipingClassCode
|
||||||
|
}).ToList();
|
||||||
|
var CH_WeldMethod = printDetails.Select(x => x.WeldingMethodCode).Where(x => !string.IsNullOrEmpty(x)).Distinct().ToList();
|
||||||
|
var CH_SlopeType = printDetails.Select(x => x.GrooveTypeCode).Where(x => !string.IsNullOrEmpty(x)).Distinct().ToList();
|
||||||
if (trust != null)
|
if (trust != null)
|
||||||
{
|
{
|
||||||
string varValue = string.Empty;
|
string varValue = string.Empty;
|
||||||
var projectName = BLL.ProjectService.GetProjectNameByProjectId(this.CurrUser.LoginProjectId);
|
var projectName = BLL.ProjectService.GetProjectNameByProjectId(this.CurrUser.LoginProjectId);
|
||||||
|
|
||||||
dr["ProjectName"] = projectName;
|
dr["ProjectName"] = projectName;
|
||||||
|
dr["CH_TrustUnit"] = BLL.UnitService.GetUnitNameByUnitId(this.CurrUser.UnitId);
|
||||||
|
dr["CH_DetectionType"] = "委托检测";
|
||||||
|
dr["CH_WorkName"] = "工艺管道";
|
||||||
|
dr["CH_WorkType"] = "对接焊缝";
|
||||||
|
dr["CH_DetectionTiming"] = "焊后";
|
||||||
|
dr["CH_HeatTreatmentStatus"] = "/";
|
||||||
|
dr["CH_ProjectPipelineCode"] = string.Join(",", printDetails.Select(x => x.PipelineCode).Where(x => !string.IsNullOrEmpty(x)).Distinct());
|
||||||
|
dr["CH_Material"] = string.Join("/", printDetails.Select(x => x.MaterialCode).Where(x => !string.IsNullOrEmpty(x)).Distinct());
|
||||||
|
dr["CH_MediumGrade"] = string.Join(",", printDetails.Select(x => x.PipingClassCode).Where(x => !string.IsNullOrEmpty(x)).Distinct());
|
||||||
if (!string.IsNullOrEmpty(trust.NDEUnit))
|
if (!string.IsNullOrEmpty(trust.NDEUnit))
|
||||||
{
|
{
|
||||||
dr["CH_CheckUnit"] = BLL.UnitService.GetUnitNameByUnitId(trust.NDEUnit).ToString();
|
dr["CH_CheckUnit"] = BLL.UnitService.GetUnitNameByUnitId(trust.NDEUnit).ToString();
|
||||||
@@ -715,6 +743,54 @@ namespace FineUIPro.Web.HJGL.PointTrust
|
|||||||
}
|
}
|
||||||
dt.Rows.Add(dr);
|
dt.Rows.Add(dr);
|
||||||
|
|
||||||
|
DataTable detailTable = new DataTable("Detail");
|
||||||
|
detailTable.Columns.Add("Sequence", typeof(int));
|
||||||
|
detailTable.Columns.Add("PipelineCode", typeof(string));
|
||||||
|
detailTable.Columns.Add("WeldJointCode", typeof(string));
|
||||||
|
detailTable.Columns.Add("Specification", typeof(string));
|
||||||
|
detailTable.Columns.Add("GrooveType", typeof(string));
|
||||||
|
detailTable.Columns.Add("WeldingMethod", typeof(string));
|
||||||
|
detailTable.Columns.Add("WelderCode", typeof(string));
|
||||||
|
detailTable.Columns.Add("MaterialCode", typeof(string));
|
||||||
|
detailTable.Columns.Add("Remark", typeof(string));
|
||||||
|
|
||||||
|
int sequence = 1;
|
||||||
|
foreach (var item in printDetails)
|
||||||
|
{
|
||||||
|
DataRow detailRow = detailTable.NewRow();
|
||||||
|
detailRow["Sequence"] = sequence++;
|
||||||
|
detailRow["PipelineCode"] = item.PipelineCode ?? string.Empty;
|
||||||
|
detailRow["WeldJointCode"] = item.WeldJointCode ?? string.Empty;
|
||||||
|
detailRow["Specification"] = item.Specification ?? string.Empty;
|
||||||
|
detailRow["GrooveType"] = item.GrooveTypeCode ?? string.Empty;
|
||||||
|
detailRow["WeldingMethod"] = item.WeldingMethodCode ?? string.Empty;
|
||||||
|
detailRow["WelderCode"] = item.WelderCode ?? string.Empty;
|
||||||
|
detailRow["MaterialCode"] = item.MaterialCode ?? string.Empty;
|
||||||
|
detailRow["Remark"] = item.Remark ?? string.Empty;
|
||||||
|
detailTable.Rows.Add(detailRow);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool isAttachment6 = (ViewState["TrustPrintTemplate"] as string) == "附件6";
|
||||||
|
DataTable mainDetails = detailTable.Clone();
|
||||||
|
mainDetails.TableName = isAttachment6 ? "Detail6Main" : "Detail4";
|
||||||
|
int mainRowCount = isAttachment6 ? Math.Min(13, detailTable.Rows.Count) : detailTable.Rows.Count;
|
||||||
|
for (int i = 0; i < mainRowCount; i++)
|
||||||
|
{
|
||||||
|
mainDetails.ImportRow(detailTable.Rows[i]);
|
||||||
|
}
|
||||||
|
PadPrintDetailRows(mainDetails, 13);
|
||||||
|
|
||||||
|
DataTable extraDetails = detailTable.Clone();
|
||||||
|
extraDetails.TableName = "Detail6Extra";
|
||||||
|
if (isAttachment6)
|
||||||
|
{
|
||||||
|
for (int i = 13; i < detailTable.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
extraDetails.ImportRow(detailTable.Rows[i]);
|
||||||
|
}
|
||||||
|
PadPrintDetailRows(extraDetails, 15);
|
||||||
|
}
|
||||||
|
|
||||||
Dictionary<string, string> keyValuePairs = new Dictionary<string, string>();
|
Dictionary<string, string> keyValuePairs = new Dictionary<string, string>();
|
||||||
keyValuePairs.Add("TrustBatchId", trust.TrustBatchId);
|
keyValuePairs.Add("TrustBatchId", trust.TrustBatchId);
|
||||||
keyValuePairs.Add("totalUnit", "赛鼎工程有限公司");
|
keyValuePairs.Add("totalUnit", "赛鼎工程有限公司");
|
||||||
@@ -737,13 +813,18 @@ namespace FineUIPro.Web.HJGL.PointTrust
|
|||||||
|
|
||||||
BLL.FastReportService.ResetData();
|
BLL.FastReportService.ResetData();
|
||||||
BLL.FastReportService.AddFastreportTable(dt);
|
BLL.FastReportService.AddFastreportTable(dt);
|
||||||
|
BLL.FastReportService.AddFastreportTable(mainDetails);
|
||||||
|
if (isAttachment6)
|
||||||
|
{
|
||||||
|
BLL.FastReportService.AddFastreportTable(extraDetails);
|
||||||
|
}
|
||||||
BLL.FastReportService.AddFastreportParameter(keyValuePairs);
|
BLL.FastReportService.AddFastreportParameter(keyValuePairs);
|
||||||
|
|
||||||
// Session["Table"] = dt;
|
// Session["Table"] = dt;
|
||||||
// Session["CH_TrustID"] = reportId;
|
// Session["CH_TrustID"] = reportId;
|
||||||
string initTemplatePath = "";
|
string initTemplatePath = "";
|
||||||
string rootPath = Server.MapPath("~/");
|
string rootPath = Server.MapPath("~/");
|
||||||
initTemplatePath = (ViewState["TrustPrintTemplate"] as string) == "附件6"
|
initTemplatePath = isAttachment6
|
||||||
? "File\\Fastreport\\无损检测委托单_附件6.frx"
|
? "File\\Fastreport\\无损检测委托单_附件6.frx"
|
||||||
: "File\\Fastreport\\管道焊口检测委托单_附件4.frx";
|
: "File\\Fastreport\\管道焊口检测委托单_附件4.frx";
|
||||||
|
|
||||||
@@ -1011,6 +1092,21 @@ namespace FineUIPro.Web.HJGL.PointTrust
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 按打印模板的固定行数补空行;附页超过一页时补齐到整页,确保页脚位置不随数据量漂移。
|
||||||
|
/// </summary>
|
||||||
|
private static void PadPrintDetailRows(DataTable table, int pageSize)
|
||||||
|
{
|
||||||
|
int targetRowCount = Math.Max(pageSize, ((table.Rows.Count + pageSize - 1) / pageSize) * pageSize);
|
||||||
|
while (table.Rows.Count < targetRowCount)
|
||||||
|
{
|
||||||
|
DataRow row = table.NewRow();
|
||||||
|
// FastReport 2017 会忽略所有字段均为 DBNull 的记录,设置隐藏序号保证空白表格行正常输出。
|
||||||
|
row["Sequence"] = 0;
|
||||||
|
table.Rows.Add(row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#region 判断是否可删除
|
#region 判断是否可删除
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 判断是否可以删除
|
/// 判断是否可以删除
|
||||||
|
|||||||
@@ -51,16 +51,54 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
rootNode2.Expanded = true;
|
rootNode2.Expanded = true;
|
||||||
this.tvControlItem.Nodes.Add(rootNode2);
|
this.tvControlItem.Nodes.Add(rootNode2);
|
||||||
|
|
||||||
var pUnits = (from x in Funs.DB.Project_ProjectUnit where x.ProjectId == this.CurrUser.LoginProjectId select x).ToList();
|
|
||||||
// 获取当前用户所在单位
|
|
||||||
var currUnit = pUnits.FirstOrDefault(x => x.UnitId == this.CurrUser.UnitId);
|
|
||||||
|
|
||||||
var unitWorkList = (from x in Funs.DB.WBS_UnitWork
|
var unitWorkList = (from x in Funs.DB.WBS_UnitWork
|
||||||
where x.ProjectId == this.CurrUser.LoginProjectId
|
where x.ProjectId == this.CurrUser.LoginProjectId
|
||||||
&& x.SuperUnitWork == null && x.UnitId != null && x.ProjectType != null
|
&& x.SuperUnitWork == null && x.UnitId != null && x.ProjectType != null
|
||||||
orderby x.UnitWorkCode
|
orderby x.UnitWorkCode
|
||||||
select x).ToList();
|
select x).ToList();
|
||||||
|
|
||||||
|
var unitWorkIds = unitWorkList.Select(x => x.UnitWorkId).ToList();
|
||||||
|
var testPackages = (from x in Funs.DB.PTP_TestPackage
|
||||||
|
where x.ProjectId == this.CurrUser.LoginProjectId
|
||||||
|
&& unitWorkIds.Contains(x.UnitWorkId)
|
||||||
|
orderby x.TestPackageNo
|
||||||
|
select x).ToList();
|
||||||
|
var testPackageIds = testPackages.Select(x => x.PTP_ID).ToList();
|
||||||
|
|
||||||
|
// 试压包与管线、焊口存在跨表联动,必须批量统计,避免按单位工程和试压包逐条访问数据库。
|
||||||
|
var pipelineCountByTestPackage = new Dictionary<string, int>();
|
||||||
|
if (testPackageIds.Count > 0)
|
||||||
|
{
|
||||||
|
var pipelineQuery = from x in Funs.DB.HJGL_Pipeline
|
||||||
|
join y in Funs.DB.PTP_PipelineList on x.PipelineId equals y.PipelineId
|
||||||
|
where testPackageIds.Contains(y.PTP_ID)
|
||||||
|
&& x.ProjectId == this.CurrUser.LoginProjectId
|
||||||
|
&& x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim())
|
||||||
|
select new { y.PTP_ID, x.PipelineId };
|
||||||
|
|
||||||
|
if (!cbAllPipeline.Checked)
|
||||||
|
{
|
||||||
|
pipelineQuery = pipelineQuery.Where(x => Funs.DB.HJGL_WeldJoint.Any(y =>
|
||||||
|
y.PipelineId == x.PipelineId && y.IsTwoJoint == true));
|
||||||
|
}
|
||||||
|
|
||||||
|
pipelineCountByTestPackage = pipelineQuery.Distinct()
|
||||||
|
.ToList()
|
||||||
|
.GroupBy(x => x.PTP_ID)
|
||||||
|
.ToDictionary(x => x.Key, x => x.Count());
|
||||||
|
}
|
||||||
|
|
||||||
|
var unitIds = unitWorkList
|
||||||
|
.Where(x => !string.IsNullOrEmpty(x.UnitId))
|
||||||
|
.SelectMany(x => x.UnitId.Split(','))
|
||||||
|
.Where(x => !string.IsNullOrEmpty(x))
|
||||||
|
.Distinct()
|
||||||
|
.ToList();
|
||||||
|
var unitNameById = Funs.DB.Base_Unit
|
||||||
|
.Where(x => unitIds.Contains(x.UnitId))
|
||||||
|
.ToDictionary(x => x.UnitId, x => x.UnitName);
|
||||||
|
var testPackagesByUnitWork = testPackages.ToLookup(x => x.UnitWorkId);
|
||||||
|
|
||||||
List<Model.WBS_UnitWork> unitWork1 = null;
|
List<Model.WBS_UnitWork> unitWork1 = null;
|
||||||
List<Model.WBS_UnitWork> unitWork2 = null;
|
List<Model.WBS_UnitWork> unitWork2 = null;
|
||||||
|
|
||||||
@@ -84,16 +122,9 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
{
|
{
|
||||||
foreach (var q in unitWork1)
|
foreach (var q in unitWork1)
|
||||||
{
|
{
|
||||||
int a = 0;
|
var unitTestPackages = testPackagesByUnitWork[q.UnitWorkId].ToList();
|
||||||
if (cbAllPipeline.Checked)
|
int a = unitTestPackages.Sum(x => GetPipelineCount(pipelineCountByTestPackage, x.PTP_ID));
|
||||||
{
|
var unitNamesUnitIds = GetUnitNames(q.UnitId, unitNameById);
|
||||||
a = GetUnitWorkTestPackagePipelineCount(q.UnitWorkId);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
a = GetUnitWorkTestPackagePipelineCount(q.UnitWorkId);
|
|
||||||
}
|
|
||||||
var unitNamesUnitIds = BLL.UnitService.getUnitNamesUnitIds(q.UnitId);
|
|
||||||
TreeNode tn1 = new TreeNode();
|
TreeNode tn1 = new TreeNode();
|
||||||
tn1.NodeID = q.UnitWorkId;
|
tn1.NodeID = q.UnitWorkId;
|
||||||
tn1.Text = q.UnitWorkName + "【" + a.ToString() + "】" + "管线";
|
tn1.Text = q.UnitWorkName + "【" + a.ToString() + "】" + "管线";
|
||||||
@@ -104,7 +135,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
rootNode1.Nodes.Add(tn1);
|
rootNode1.Nodes.Add(tn1);
|
||||||
if (a > 0)
|
if (a > 0)
|
||||||
{
|
{
|
||||||
BindTestPackageNodes(tn1);
|
BindTestPackageNodes(tn1, unitTestPackages, pipelineCountByTestPackage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -112,16 +143,9 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
{
|
{
|
||||||
foreach (var q in unitWork2)
|
foreach (var q in unitWork2)
|
||||||
{
|
{
|
||||||
int a = 0;
|
var unitTestPackages = testPackagesByUnitWork[q.UnitWorkId].ToList();
|
||||||
if (cbAllPipeline.Checked)
|
int a = unitTestPackages.Sum(x => GetPipelineCount(pipelineCountByTestPackage, x.PTP_ID));
|
||||||
{
|
var unitNamesUnitIds = GetUnitNames(q.UnitId, unitNameById);
|
||||||
a = GetUnitWorkTestPackagePipelineCount(q.UnitWorkId);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
a = GetUnitWorkTestPackagePipelineCount(q.UnitWorkId);
|
|
||||||
}
|
|
||||||
var unitNamesUnitIds = BLL.UnitService.getUnitNamesUnitIds(q.UnitId);
|
|
||||||
TreeNode tn2 = new TreeNode();
|
TreeNode tn2 = new TreeNode();
|
||||||
tn2.NodeID = q.UnitWorkId;
|
tn2.NodeID = q.UnitWorkId;
|
||||||
tn2.Text = q.UnitWorkName + "【" + a.ToString() + "】" + "管线";
|
tn2.Text = q.UnitWorkName + "【" + a.ToString() + "】" + "管线";
|
||||||
@@ -136,11 +160,29 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
rootNode2.Nodes.Add(tn2);
|
rootNode2.Nodes.Add(tn2);
|
||||||
if (a > 0)
|
if (a > 0)
|
||||||
{
|
{
|
||||||
BindTestPackageNodes(tn2);
|
BindTestPackageNodes(tn2, unitTestPackages, pipelineCountByTestPackage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int GetPipelineCount(IDictionary<string, int> pipelineCountByTestPackage, string testPackageId)
|
||||||
|
{
|
||||||
|
int count;
|
||||||
|
return pipelineCountByTestPackage.TryGetValue(testPackageId, out count) ? count : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetUnitNames(string unitIds, IDictionary<string, string> unitNameById)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(unitIds))
|
||||||
|
{
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
return string.Join(",", unitIds.Split(',')
|
||||||
|
.Where(x => unitNameById.ContainsKey(x))
|
||||||
|
.Select(x => unitNameById[x]));
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
private void BindNodes(TreeNode node)
|
private void BindNodes(TreeNode node)
|
||||||
{
|
{
|
||||||
@@ -214,27 +256,14 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int GetUnitWorkTestPackagePipelineCount(string unitWorkId)
|
private void BindTestPackageNodes(
|
||||||
|
TreeNode unitWorkNode,
|
||||||
|
IEnumerable<Model.PTP_TestPackage> testPackages,
|
||||||
|
IDictionary<string, int> pipelineCountByTestPackage)
|
||||||
{
|
{
|
||||||
var testPackages = (from x in Funs.DB.PTP_TestPackage
|
|
||||||
where x.ProjectId == this.CurrUser.LoginProjectId
|
|
||||||
&& x.UnitWorkId == unitWorkId
|
|
||||||
select x.PTP_ID).ToList();
|
|
||||||
|
|
||||||
return testPackages.Select(x => GetTestPackagePipelineList(x).Count()).Sum();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void BindTestPackageNodes(TreeNode unitWorkNode)
|
|
||||||
{
|
|
||||||
var testPackages = (from x in Funs.DB.PTP_TestPackage
|
|
||||||
where x.ProjectId == this.CurrUser.LoginProjectId
|
|
||||||
&& x.UnitWorkId == unitWorkNode.NodeID
|
|
||||||
orderby x.TestPackageNo
|
|
||||||
select x).ToList();
|
|
||||||
|
|
||||||
foreach (var item in testPackages)
|
foreach (var item in testPackages)
|
||||||
{
|
{
|
||||||
int pipelineCount = GetTestPackagePipelineList(item.PTP_ID).Count();
|
int pipelineCount = GetPipelineCount(pipelineCountByTestPackage, item.PTP_ID);
|
||||||
if (pipelineCount == 0)
|
if (pipelineCount == 0)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
@@ -257,20 +286,21 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
|
|
||||||
private List<Model.HJGL_Pipeline> GetTestPackagePipelineList(string ptpId)
|
private List<Model.HJGL_Pipeline> GetTestPackagePipelineList(string ptpId)
|
||||||
{
|
{
|
||||||
var pipeline = (from x in Funs.DB.HJGL_Pipeline
|
var pipelineQuery = (from x in Funs.DB.HJGL_Pipeline
|
||||||
join y in Funs.DB.PTP_PipelineList on x.PipelineId equals y.PipelineId
|
join y in Funs.DB.PTP_PipelineList on x.PipelineId equals y.PipelineId
|
||||||
where y.PTP_ID == ptpId
|
where y.PTP_ID == ptpId
|
||||||
&& x.ProjectId == this.CurrUser.LoginProjectId
|
&& x.ProjectId == this.CurrUser.LoginProjectId
|
||||||
&& x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim())
|
&& x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim())
|
||||||
orderby x.PipelineCode
|
orderby x.PipelineCode
|
||||||
select x).Distinct().ToList();
|
select x).Distinct();
|
||||||
|
|
||||||
if (!cbAllPipeline.Checked)
|
if (!cbAllPipeline.Checked)
|
||||||
{
|
{
|
||||||
pipeline = pipeline.Where(x => (from y in Funs.DB.HJGL_WeldJoint where y.PipelineId == x.PipelineId && y.IsTwoJoint == true select y).Count() > 0).ToList();
|
pipelineQuery = pipelineQuery.Where(x => Funs.DB.HJGL_WeldJoint.Any(y =>
|
||||||
|
y.PipelineId == x.PipelineId && y.IsTwoJoint == true));
|
||||||
}
|
}
|
||||||
|
|
||||||
return pipeline;
|
return pipelineQuery.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 点击TreeView
|
#region 点击TreeView
|
||||||
|
|||||||
@@ -213,12 +213,11 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
private void InitTreeMenu()
|
private void InitTreeMenu()
|
||||||
{
|
{
|
||||||
this.tvControlItem.Nodes.Clear();
|
this.tvControlItem.Nodes.Clear();
|
||||||
int a = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == this.UnitWorkId && x.PipeArea == PipelineService.PipeArea_SHOP && x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim()) select x).Count();
|
int a = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == this.UnitWorkId && x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim()) select x).Count();
|
||||||
int b = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == this.UnitWorkId && x.PipeArea == PipelineService.PipeArea_FIELD && x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim()) select x).Count();
|
|
||||||
|
|
||||||
TreeNode rootNode1 = new TreeNode();
|
TreeNode rootNode1 = new TreeNode();
|
||||||
rootNode1.NodeID = BLL.PipelineService.PipeArea_SHOP;
|
rootNode1.NodeID = "0";
|
||||||
rootNode1.Text = "工厂预制";
|
rootNode1.Text = "管线";
|
||||||
rootNode1.CommandName = 1 + "|" + Funs.GetEndPageNumber(a, pageSize); //页码|总页
|
rootNode1.CommandName = 1 + "|" + Funs.GetEndPageNumber(a, pageSize); //页码|总页
|
||||||
rootNode1.EnableClickEvent = true;
|
rootNode1.EnableClickEvent = true;
|
||||||
rootNode1.EnableExpandEvent = true;
|
rootNode1.EnableExpandEvent = true;
|
||||||
@@ -230,28 +229,13 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
newNode.NodeID = "加载管线...";
|
newNode.NodeID = "加载管线...";
|
||||||
rootNode1.Nodes.Add(newNode);
|
rootNode1.Nodes.Add(newNode);
|
||||||
}
|
}
|
||||||
TreeNode rootNode2 = new TreeNode();
|
|
||||||
rootNode2.NodeID = BLL.PipelineService.PipeArea_FIELD;
|
|
||||||
rootNode2.Text = "现场施工";
|
|
||||||
rootNode2.CommandName = 1 + "|" + Funs.GetEndPageNumber(b, pageSize);
|
|
||||||
rootNode2.EnableClickEvent = true;
|
|
||||||
rootNode2.EnableExpandEvent = true;
|
|
||||||
this.tvControlItem.Nodes.Add(rootNode2);
|
|
||||||
if (b > 0)
|
|
||||||
{
|
|
||||||
TreeNode newNode = new TreeNode();
|
|
||||||
newNode.Text = "加载管线...";
|
|
||||||
newNode.NodeID = "加载管线...";
|
|
||||||
rootNode2.Nodes.Add(newNode);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
void AddTreeNode(string PipeArea, TreeNode node)
|
void AddTreeNode(TreeNode node)
|
||||||
{
|
{
|
||||||
var pipeline = (from x in Funs.DB.HJGL_Pipeline
|
var pipeline = (from x in Funs.DB.HJGL_Pipeline
|
||||||
where x.ProjectId == this.CurrUser.LoginProjectId
|
where x.ProjectId == this.CurrUser.LoginProjectId
|
||||||
&& x.UnitWorkId == this.UnitWorkId
|
&& x.UnitWorkId == this.UnitWorkId
|
||||||
&& x.PipeArea == PipeArea
|
|
||||||
&& x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim())
|
&& x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim())
|
||||||
orderby x.PipelineCode
|
orderby x.PipelineCode
|
||||||
select x).ToList();
|
select x).ToList();
|
||||||
@@ -290,7 +274,6 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
newNode.Text = "加载";
|
newNode.Text = "加载";
|
||||||
newNode.NodeID = SQLHelper.GetNewID();
|
newNode.NodeID = SQLHelper.GetNewID();
|
||||||
newNode.Icon = Icon.ArrowDown;
|
newNode.Icon = Icon.ArrowDown;
|
||||||
newNode.CommandName = PipeArea;
|
|
||||||
newNode.EnableClickEvent = true;
|
newNode.EnableClickEvent = true;
|
||||||
node.Nodes.Add(newNode);
|
node.Nodes.Add(newNode);
|
||||||
}
|
}
|
||||||
@@ -303,16 +286,8 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
if (e.Node.Nodes[0].NodeID == "加载管线...")
|
if (e.Node.Nodes[0].NodeID == "加载管线...")
|
||||||
{
|
{
|
||||||
e.Node.Nodes.Clear();
|
e.Node.Nodes.Clear();
|
||||||
if (e.Node.Text == "工厂预制")
|
AddTreeNode(e.Node);
|
||||||
{
|
|
||||||
AddTreeNode(BLL.PipelineService.PipeArea_SHOP, e.Node);
|
|
||||||
|
|
||||||
}
|
|
||||||
else if (e.Node.Text == "现场施工")
|
|
||||||
{
|
|
||||||
AddTreeNode(BLL.PipelineService.PipeArea_FIELD, e.Node);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -333,16 +308,8 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
TreeNode treeNode = e.Node.ParentNode;
|
TreeNode treeNode = e.Node.ParentNode;
|
||||||
treeNode.Nodes.Remove(e.Node);
|
treeNode.Nodes.Remove(e.Node);
|
||||||
|
|
||||||
if (e.Node.CommandName == "1")
|
AddTreeNode(e.Node.ParentNode);
|
||||||
{
|
|
||||||
AddTreeNode(BLL.PipelineService.PipeArea_SHOP, e.Node.ParentNode);
|
|
||||||
|
|
||||||
}
|
|
||||||
else if (e.Node.CommandName == "2")
|
|
||||||
{
|
|
||||||
AddTreeNode(BLL.PipelineService.PipeArea_FIELD, e.Node.ParentNode);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -57,7 +57,9 @@
|
|||||||
<f:TextBox ID="txtWeldJointCode" Label="焊口号" Readonly="false"
|
<f:TextBox ID="txtWeldJointCode" Label="焊口号" Readonly="false"
|
||||||
runat="server" LabelWidth="100px" LabelAlign="Right">
|
runat="server" LabelWidth="100px" LabelAlign="Right">
|
||||||
</f:TextBox>
|
</f:TextBox>
|
||||||
<f:Label runat="server"></f:Label>
|
<f:TextBox ID="txtFlowingSection" Label="流水段" runat="server"
|
||||||
|
LabelWidth="100px" LabelAlign="Right" MaxLength="100">
|
||||||
|
</f:TextBox>
|
||||||
</Items>
|
</Items>
|
||||||
</f:FormRow>
|
</f:FormRow>
|
||||||
<f:FormRow>
|
<f:FormRow>
|
||||||
|
|||||||
@@ -100,6 +100,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
{
|
{
|
||||||
this.txtWeldJointCode.Text = joint.WeldJointCode;
|
this.txtWeldJointCode.Text = joint.WeldJointCode;
|
||||||
}
|
}
|
||||||
|
this.txtFlowingSection.Text = joint.FlowingSection;
|
||||||
if (!string.IsNullOrEmpty(joint.Material1Id))
|
if (!string.IsNullOrEmpty(joint.Material1Id))
|
||||||
{
|
{
|
||||||
this.drpMaterial1.SelectedValue = joint.Material1Id;
|
this.drpMaterial1.SelectedValue = joint.Material1Id;
|
||||||
@@ -318,8 +319,17 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
Alert.ShowInTop("请完善必填项!", MessageBoxIcon.Warning);
|
Alert.ShowInTop("请完善必填项!", MessageBoxIcon.Warning);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Model.HJGL_WeldJoint joint = new Model.HJGL_WeldJoint();
|
|
||||||
string weldJointId = WeldJointId;
|
string weldJointId = WeldJointId;
|
||||||
|
bool isUpdatingExistingJoint = !string.IsNullOrEmpty(weldJointId) && string.IsNullOrEmpty(Request.Params["Type"]);
|
||||||
|
Model.HJGL_WeldJoint joint = isUpdatingExistingJoint
|
||||||
|
? BLL.WeldJointService.GetWeldJointByWeldJointId(weldJointId)
|
||||||
|
: new Model.HJGL_WeldJoint();
|
||||||
|
if (joint == null)
|
||||||
|
{
|
||||||
|
Alert.ShowInTop("焊口数据不存在或已被删除,请刷新后重试!", MessageBoxIcon.Warning);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
joint.PipelineId = this.PipelineId;
|
joint.PipelineId = this.PipelineId;
|
||||||
joint.PipelineCode = txtPipelineCode.Text.Trim();
|
joint.PipelineCode = txtPipelineCode.Text.Trim();
|
||||||
joint.ProjectId = this.CurrUser.LoginProjectId;
|
joint.ProjectId = this.CurrUser.LoginProjectId;
|
||||||
@@ -418,6 +428,8 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
joint.IsHotProess = Convert.ToBoolean(drpIsHotProess.SelectedValue);
|
joint.IsHotProess = Convert.ToBoolean(drpIsHotProess.SelectedValue);
|
||||||
//joint.DesignIsHotProess = Convert.ToBoolean(drpDesignIsHotProess.SelectedValue);
|
//joint.DesignIsHotProess = Convert.ToBoolean(drpDesignIsHotProess.SelectedValue);
|
||||||
joint.Remark = txtRemark.Text.Trim();
|
joint.Remark = txtRemark.Text.Trim();
|
||||||
|
// 流水段属于焊口自身属性,编辑时直接回写焊口,避免只显示管线流水段而无法修正。
|
||||||
|
joint.FlowingSection = txtFlowingSection.Text.Trim();
|
||||||
joint.SubmitMan = CurrUser.PersonId;
|
joint.SubmitMan = CurrUser.PersonId;
|
||||||
|
|
||||||
if (this.txtWpqId.Text != "")
|
if (this.txtWpqId.Text != "")
|
||||||
@@ -426,7 +438,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(weldJointId))
|
if (!string.IsNullOrEmpty(weldJointId))
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(Request.Params["Type"])) //非插入焊口
|
if (isUpdatingExistingJoint) // 非插入焊口
|
||||||
{
|
{
|
||||||
joint.WeldJointId = weldJointId;
|
joint.WeldJointId = weldJointId;
|
||||||
BLL.WeldJointService.UpdateWeldJoint(joint);
|
BLL.WeldJointService.UpdateWeldJoint(joint);
|
||||||
|
|||||||
@@ -149,6 +149,15 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::FineUIPro.TextBox txtWeldJointCode;
|
protected global::FineUIPro.TextBox txtWeldJointCode;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtFlowingSection 控件。
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 自动生成的字段。
|
||||||
|
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
|
||||||
|
/// </remarks>
|
||||||
|
protected global::FineUIPro.TextBox txtFlowingSection;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// drpMaterial1 控件。
|
/// drpMaterial1 控件。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -757,7 +757,15 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
{
|
{
|
||||||
List<string> materialCodes = SplitExportValues(x.MaterialCode);
|
List<string> materialCodes = SplitExportValues(x.MaterialCode);
|
||||||
List<string> materialQuantities = SplitExportValues(x.MaterialQuantity);
|
List<string> materialQuantities = SplitExportValues(x.MaterialQuantity);
|
||||||
int materialRowCount = Math.Max(materialCodes.Count, materialQuantities.Count);
|
List<string> weldJointCodes = SplitExportValues(x.WeldJointCode);
|
||||||
|
List<string> weldJointDins = SplitExportValues(x.WeldJointDin);
|
||||||
|
int materialRowCount = new[]
|
||||||
|
{
|
||||||
|
materialCodes.Count,
|
||||||
|
materialQuantities.Count,
|
||||||
|
weldJointCodes.Count,
|
||||||
|
weldJointDins.Count
|
||||||
|
}.Max();
|
||||||
if (materialRowCount == 0)
|
if (materialRowCount == 0)
|
||||||
{
|
{
|
||||||
materialRowCount = 1;
|
materialRowCount = 1;
|
||||||
@@ -773,6 +781,8 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
已焊口数 = x.WeldedWeldJointCount,
|
已焊口数 = x.WeldedWeldJointCount,
|
||||||
未焊口数 = x.UnweldedWeldJointCount,
|
未焊口数 = x.UnweldedWeldJointCount,
|
||||||
未焊达因量 = x.UnweldedDin ?? 0,
|
未焊达因量 = x.UnweldedDin ?? 0,
|
||||||
|
焊口号 = index < weldJointCodes.Count ? weldJointCodes[index] : string.Empty,
|
||||||
|
焊口达因 = index < weldJointDins.Count ? weldJointDins[index] : string.Empty,
|
||||||
材料编码 = index < materialCodes.Count ? materialCodes[index] : string.Empty,
|
材料编码 = index < materialCodes.Count ? materialCodes[index] : string.Empty,
|
||||||
数量 = index < materialQuantities.Count ? materialQuantities[index] : string.Empty,
|
数量 = index < materialQuantities.Count ? materialQuantities[index] : string.Empty,
|
||||||
组件匹配率 = x.ComponentMatchRateString,
|
组件匹配率 = x.ComponentMatchRateString,
|
||||||
@@ -814,7 +824,7 @@ namespace FineUIPro.Web.HJGL.WeldingManage
|
|||||||
{
|
{
|
||||||
return string.IsNullOrEmpty(values)
|
return string.IsNullOrEmpty(values)
|
||||||
? new List<string>()
|
? new List<string>()
|
||||||
: values.Split(new[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries)
|
: values.Split(new[] { "\r\n", "\n" }, StringSplitOptions.None)
|
||||||
.Select(x => x.Trim())
|
.Select(x => x.Trim())
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,14 @@ namespace Model
|
|||||||
/// 材料描述
|
/// 材料描述
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string MaterialDef { get; set; }
|
public string MaterialDef { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 材料单位
|
||||||
|
/// </summary>
|
||||||
|
public string MaterialUnit { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 已生成条码数量
|
||||||
|
/// </summary>
|
||||||
|
public int BarCodeCount { get; set; }
|
||||||
public string InputMasterId { get; set; }
|
public string InputMasterId { get; set; }
|
||||||
public string OutputMasterId { get; set; }
|
public string OutputMasterId { get; set; }
|
||||||
public string CusBillCode { get; set; }
|
public string CusBillCode { get; set; }
|
||||||
|
|||||||
@@ -15,5 +15,6 @@ namespace Model
|
|||||||
public string MaterialSpec { get; set; }
|
public string MaterialSpec { get; set; }
|
||||||
public string MaterialUnit { get; set; }
|
public string MaterialUnit { get; set; }
|
||||||
public string BarCode { get; set; }
|
public string BarCode { get; set; }
|
||||||
|
public decimal? Quantity { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,6 +68,10 @@ namespace Model
|
|||||||
public int UnweldedWeldJointCount { get; set; }
|
public int UnweldedWeldJointCount { get; set; }
|
||||||
/// <summary>未焊焊口的达因量。</summary>
|
/// <summary>未焊焊口的达因量。</summary>
|
||||||
public decimal? UnweldedDin { get; set; }
|
public decimal? UnweldedDin { get; set; }
|
||||||
|
/// <summary>组件材料对应的焊口号,多个焊口使用换行分隔。</summary>
|
||||||
|
public string WeldJointCode { get; set; }
|
||||||
|
/// <summary>与焊口号按顺序对应的焊口达因,多个焊口使用换行分隔。</summary>
|
||||||
|
public string WeldJointDin { get; set; }
|
||||||
/// <summary>组件材料编码,多个编码使用换行分隔。</summary>
|
/// <summary>组件材料编码,多个编码使用换行分隔。</summary>
|
||||||
public string MaterialCode { get; set; }
|
public string MaterialCode { get; set; }
|
||||||
/// <summary>与材料编码按顺序对应的组件材料数量。</summary>
|
/// <summary>与材料编码按顺序对应的组件材料数量。</summary>
|
||||||
|
|||||||
@@ -10,5 +10,7 @@ namespace Model
|
|||||||
public string MaterialDef { get; set; }
|
public string MaterialDef { get; set; }
|
||||||
public string MaterialSpec { get; set; }
|
public string MaterialSpec { get; set; }
|
||||||
public string MaterialUnit { get; set; }
|
public string MaterialUnit { get; set; }
|
||||||
|
public string BarCode { get; set; }
|
||||||
|
public decimal? Quantity { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -280323,6 +280323,8 @@ namespace Model
|
|||||||
|
|
||||||
private string _BarCode;
|
private string _BarCode;
|
||||||
|
|
||||||
|
private System.Nullable<decimal> _Quantity;
|
||||||
|
|
||||||
#region 可扩展性方法定义
|
#region 可扩展性方法定义
|
||||||
partial void OnLoaded();
|
partial void OnLoaded();
|
||||||
partial void OnValidate(System.Data.Linq.ChangeAction action);
|
partial void OnValidate(System.Data.Linq.ChangeAction action);
|
||||||
@@ -280337,6 +280339,8 @@ namespace Model
|
|||||||
partial void OnMaterialCodeChanged();
|
partial void OnMaterialCodeChanged();
|
||||||
partial void OnBarCodeChanging(string value);
|
partial void OnBarCodeChanging(string value);
|
||||||
partial void OnBarCodeChanged();
|
partial void OnBarCodeChanged();
|
||||||
|
partial void OnQuantityChanging(System.Nullable<decimal> value);
|
||||||
|
partial void OnQuantityChanged();
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public Tw_InputDetailBarCode()
|
public Tw_InputDetailBarCode()
|
||||||
@@ -280444,6 +280448,26 @@ namespace Model
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Quantity", DbType="Decimal(18,4)")]
|
||||||
|
public System.Nullable<decimal> Quantity
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return this._Quantity;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if ((this._Quantity != value))
|
||||||
|
{
|
||||||
|
this.OnQuantityChanging(value);
|
||||||
|
this.SendPropertyChanging();
|
||||||
|
this._Quantity = value;
|
||||||
|
this.SendPropertyChanged("Quantity");
|
||||||
|
this.OnQuantityChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public event PropertyChangingEventHandler PropertyChanging;
|
public event PropertyChangingEventHandler PropertyChanging;
|
||||||
|
|
||||||
public event PropertyChangedEventHandler PropertyChanged;
|
public event PropertyChangedEventHandler PropertyChanged;
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ namespace WebAPI.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 根据材料主编码获取材料信息
|
/// 根据入库条码获取材料信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="materialCode"></param>
|
/// <param name="materialCode"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
@@ -210,6 +210,65 @@ namespace WebAPI.Controllers
|
|||||||
return responeData;
|
return responeData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 根据入库条码保存数量
|
||||||
|
/// </summary>
|
||||||
|
[HttpPost]
|
||||||
|
public Model.ResponeData SaveMaterialInfoByBarCode(string barCode, decimal quantity)
|
||||||
|
{
|
||||||
|
var responeData = new Model.ResponeData();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
responeData.data = BLL.MaterialCodeLibService.SaveBarCodeQuantity(barCode, quantity);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
responeData.code = 0;
|
||||||
|
responeData.message = ex.Message;
|
||||||
|
}
|
||||||
|
return responeData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取焊接方法
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Model.ResponeData GetWeldingMethod()
|
||||||
|
{
|
||||||
|
var responeData = new Model.ResponeData();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
responeData.data = BLL.APIBaseInfoService.GetWeldingMethod();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
responeData.code = 0;
|
||||||
|
responeData.message = ex.Message;
|
||||||
|
}
|
||||||
|
|
||||||
|
return responeData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取焊缝类型
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Model.ResponeData GetWeldType()
|
||||||
|
{
|
||||||
|
var responeData = new Model.ResponeData();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
responeData.data = BLL.APIBaseInfoService.GetWeldType();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
responeData.code = 0;
|
||||||
|
responeData.message = ex.Message;
|
||||||
|
}
|
||||||
|
|
||||||
|
return responeData;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取探伤类型
|
/// 获取探伤类型
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user