using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Media ;
using System.Reflection ;
using System.Web.UI.WebControls ;
using FactorySystemCommon ;
using FactorySystemModel.EnumModel ;
using FactorySystemModel.SqlSugarModel ;
using SqlSugar ;
namespace FactorySystemBll
{
public class ViewBll
{
/// <summary>
/// 根据协同ID获取物料视图
/// </summary>
public List < Dictionary < string , object > > GetListByTeamId ( int teamId , int viewType , int currUserId , out List < int > materialId , out string FGuaranteePeriod , out string FStorageConditions , bool byFactory = true )
{
TUser currUser = null ;
FGuaranteePeriod = "" ;
FStorageConditions = "" ;
if ( byFactory = = true ) currUser = BaseBll . GetTempModel < TUser > ( currUserId , "FFactoryID" ) ;
var db = AppSettingsHelper . GetSqlSugar ( ) ;
/ * *
* 20230414 需 求 变 更
* 新 增 物 料 分 类 视 图 获 取 逻 辑
* 物 料 分 类 的 viewType = 10 , 此 时 , 取 所 有 下 载 的 bomList 中 的 视 图 , a . FViewType in ( 2 , 3 , 4 , 5 )
* 分 别 对 应 半 成 品 视 图 、 中 间 品 视 图 、 香 基 视 图 、 原 料 视 图
* 此 处 的 viewType 来 自 TBasicCode 中 FType = 33 时 , 的 FRemark 字 段
* * * /
List < Dictionary < string , object > > viewList = new List < Dictionary < string , object > > ( ) ;
List < int > viewTypes = new List < int > { 2 , 3 , 4 , 5 } ;
if ( viewTypes . Contains ( viewType ) )
{
viewList = db . Queryable < TFS_ViewMaterial , TFS_Material > ( ( a , b ) = >
new JoinQueryInfos ( JoinType . Inner , a . FMaterialID = = b . FID ) )
. Where ( ( a , b ) = > a . FTeamID = = teamId )
//.WhereIF(currUser != null, (a, b) => a.FFactoryID == currUser.FFactoryID)
. WhereIF ( viewType > 0 , ( a , b ) = > a . FViewType = = viewType )
. Select < object > ( "distinct a.*,b.FTypeID1,b.FTypeID2,b.FK3Code,b.FK3Name,b.FK3ShortCode,b.FTestCode,b.FRelationCode,b.FRelationName,b.FSAPCode,b.FSAPDescription,b.FMaterialGroup,b.FMaterialType,b.FCustomerCode,b.FStoreHouse," +
"b.FBomEntry,b.FLineHouse,b.FProductDesc,b.FWorkCenter,b.FCraftExplain,b.FIidentifier,b.FGuaranteePeriod,b.FBStorageConditions,b.FSafetyStock,b.FTriggerRatio,b.FMinAmount,b.FMaxAmount,b.FYield,b.FFixedLoss,b.FTheoryYield," +
"b.FQualityTest1,b.FQualityTest2" ) . ToDictionaryList ( ) ;
}
else if ( viewType = = 10 )
{
viewList = db . Queryable < TFS_ViewMaterial , TFS_Material > ( ( a , b ) = >
new JoinQueryInfos ( JoinType . Inner , a . FMaterialID = = b . FID ) )
. Where ( ( a , b ) = > a . FTeamID = = teamId )
//.WhereIF(currUser != null, (a, b) => a.FFactoryID == currUser.FFactoryID)
. Select < object > ( "distinct a.*,b.FTypeID1,b.FTypeID2,b.FK3Code,b.FK3Name,b.FK3ShortCode,b.FTestCode,b.FRelationCode,b.FRelationName,b.FSAPCode,b.FSAPDescription,b.FMaterialGroup,b.FMaterialType,b.FCustomerCode,b.FStoreHouse," +
"b.FBomEntry,b.FLineHouse,b.FProductDesc,b.FWorkCenter,b.FCraftExplain,b.FIidentifier,b.FGuaranteePeriod,b.FBStorageConditions,b.FSafetyStock,b.FTriggerRatio,b.FMinAmount,b.FMaxAmount,b.FYield,b.FFixedLoss,b.FTheoryYield," +
"b.FQualityTest1,b.FQualityTest2" ) . ToDictionaryList ( ) ;
TFS_FTeamwork teamWork = db . Queryable < TFS_FTeamwork > ( ) . Where ( s = > s . FID = = teamId ) . First ( ) ;
TFS_PackageMain packAge = db . Queryable < TFS_PackageMain > ( ) . Where ( s = > s . FCode = = teamWork . FPackCode ) . First ( ) ;
if ( packAge ! = null )
{
viewList [ 0 ] . Remove ( "FBaseGrossWeight" ) ;
viewList [ 0 ] . Add ( "FBaseGrossWeight" , packAge . FGrossWeight ) ;
viewList [ 0 ] . Remove ( "FBaseNetWeight" ) ;
viewList [ 0 ] . Add ( "FBaseNetWeight" , packAge . FNetWeight ) ;
viewList [ 0 ] . Remove ( "FBaseSpecification" ) ;
viewList [ 0 ] . Add ( "FBaseSpecification" , packAge . FSpecs ) ;
viewList [ 0 ] . Add ( "HalfCode" , teamWork . FMaterialHalfIDs ) ;
}
var FBaseMaterialDesc = viewList . GroupBy ( s = > s [ "FBaseMaterialDesc" ] ) . Select ( s = > s . Key ) . ToList ( ) ;
if ( FBaseMaterialDesc . Count > 0 )
{
viewList [ 0 ] . Add ( "HalfDesc" , FBaseMaterialDesc [ 0 ] ) ;
}
}
if ( viewType = = 1 )
{
viewList = db . Queryable < TFS_ViewMaterial , TFS_Material > ( ( a , b ) = >
new JoinQueryInfos ( JoinType . Inner , a . FMaterialID = = b . FID ) )
. Where ( ( a , b ) = > a . FTeamID = = teamId )
//.WhereIF(currUser != null, (a, b) => a.FFactoryID == currUser.FFactoryID)
. WhereIF ( viewType > 0 , ( a , b ) = > a . FViewType = = 1 )
. Select < object > ( "distinct a.*,b.FTypeID1,b.FTypeID2,b.FK3Code,b.FK3Name,b.FK3ShortCode,b.FTestCode,b.FRelationCode,b.FRelationName,b.FSAPCode,b.FSAPDescription,b.FMaterialGroup,b.FMaterialType,b.FCustomerCode,b.FStoreHouse," +
"b.FBomEntry,b.FLineHouse,b.FProductDesc,b.FWorkCenter,b.FCraftExplain,b.FIidentifier,b.FGuaranteePeriod,b.FBStorageConditions,b.FSafetyStock,b.FTriggerRatio,b.FMinAmount,b.FMaxAmount,b.FYield,b.FFixedLoss,b.FTheoryYield," +
"b.FQualityTest1,b.FQualityTest2" ) . ToDictionaryList ( ) ;
List < TFS_MaterialInfo > Minfo = GetMaterialInfoList ( viewList . GroupBy ( s = > s [ "FMaterialID" ] ) . Select ( s = > int . Parse ( s . Key . ToString ( ) ) ) . ToList ( ) , "" , "" , currUserId ) ;
if ( Minfo . Count > 0 )
{
FGuaranteePeriod = Minfo [ 0 ] . FGuaranteePeriod ;
FStorageConditions = Minfo [ 0 ] . FStorageConditions ;
}
TFS_FTeamwork teamWork = db . Queryable < TFS_FTeamwork > ( ) . Where ( s = > s . FID = = teamId ) . First ( ) ;
TFS_PackageMain packAge = db . Queryable < TFS_PackageMain > ( ) . Where ( s = > s . FCode = = teamWork . FPackCode ) . First ( ) ;
if ( packAge ! = null )
{
viewList [ 0 ] . Remove ( "FBaseGrossWeight" ) ;
viewList [ 0 ] . Add ( "FBaseGrossWeight" , packAge . FGrossWeight ) ;
viewList [ 0 ] . Remove ( "FBaseNetWeight" ) ;
viewList [ 0 ] . Add ( "FBaseNetWeight" , packAge . FNetWeight ) ;
viewList [ 0 ] . Remove ( "FBaseSpecification" ) ;
viewList [ 0 ] . Add ( "FBaseSpecification" , packAge . FSpecs ) ;
viewList [ 0 ] . Add ( "HalfCode" , teamWork . FMaterialHalfIDs ) ;
}
var FBaseMaterialDesc = viewList . GroupBy ( s = > s [ "FBaseMaterialDesc" ] ) . Select ( s = > s . Key ) . ToList ( ) ;
if ( FBaseMaterialDesc . Count > 0 )
{
viewList [ 0 ] . Add ( "HalfDesc" , FBaseMaterialDesc [ 0 ] ) ;
}
}
materialId = viewList . GroupBy ( s = > s [ "FMaterialID" ] ) . Select ( s = > int . Parse ( s . Key . ToString ( ) ) ) . ToList ( ) ;
return viewList ;
}
/// <summary>
/// 根据协同ID获取物料视图
/// </summary>
public List < Dictionary < string , object > > GetHalfMaterialListByTeamId ( int teamId , int viewType , int currUserId , out List < int > materialId , out string FGuaranteePeriod , out string FStorageConditions , bool byFactory = true )
{
TUser currUser = null ;
FGuaranteePeriod = "" ;
FStorageConditions = "" ;
if ( byFactory = = true ) currUser = BaseBll . GetTempModel < TUser > ( currUserId , "FFactoryID" ) ;
var db = AppSettingsHelper . GetSqlSugar ( ) ;
/ * *
* 20230414 需 求 变 更
* 新 增 物 料 分 类 视 图 获 取 逻 辑
* 物 料 分 类 的 viewType = 10 , 此 时 , 取 所 有 下 载 的 bomList 中 的 视 图 , a . FViewType in ( 2 , 3 , 4 , 5 )
* 分 别 对 应 半 成 品 视 图 、 中 间 品 视 图 、 香 基 视 图 、 原 料 视 图
* 此 处 的 viewType 来 自 TBasicCode 中 FType = 33 时 , 的 FRemark 字 段
* * * /
List < Dictionary < string , object > > viewList = new List < Dictionary < string , object > > ( ) ;
List < int > viewTypes = new List < int > { 2 , 3 , 4 , 5 } ;
if ( viewTypes . Contains ( viewType ) )
{
viewList = db . Queryable < TFS_ViewMaterial , TFS_Material > ( ( a , b ) = >
new JoinQueryInfos ( JoinType . Inner , a . FMaterialID = = b . FID ) )
. Where ( ( a , b ) = > a . FHalfMaterialTeamID = = teamId )
. WhereIF ( currUser ! = null , ( a , b ) = > a . FFactoryID = = currUser . FFactoryID )
. WhereIF ( viewType > 0 , ( a , b ) = > a . FViewType = = viewType )
. Select < object > ( "distinct a.*,b.FTypeID1,b.FTypeID2,b.FK3Code,b.FK3Name,b.FK3ShortCode,b.FTestCode,b.FRelationCode,b.FRelationName,b.FSAPCode,b.FSAPDescription,b.FMaterialGroup,b.FMaterialType,b.FCustomerCode,b.FStoreHouse," +
"b.FBomEntry,b.FLineHouse,b.FProductDesc,b.FWorkCenter,b.FCraftExplain,b.FIidentifier,b.FGuaranteePeriod,b.FBStorageConditions,b.FSafetyStock,b.FTriggerRatio,b.FMinAmount,b.FMaxAmount,b.FYield,b.FFixedLoss,b.FTheoryYield," +
"b.FQualityTest1,b.FQualityTest2" ) . ToDictionaryList ( ) ;
}
else if ( viewType = = 10 )
{
viewList = db . Queryable < TFS_ViewMaterial , TFS_Material > ( ( a , b ) = >
new JoinQueryInfos ( JoinType . Inner , a . FMaterialID = = b . FID ) )
. Where ( ( a , b ) = > a . FTeamID = = teamId )
. WhereIF ( currUser ! = null , ( a , b ) = > a . FFactoryID = = currUser . FFactoryID )
. Select < object > ( "distinct a.*,b.FTypeID1,b.FTypeID2,b.FK3Code,b.FK3Name,b.FK3ShortCode,b.FTestCode,b.FRelationCode,b.FRelationName,b.FSAPCode,b.FSAPDescription,b.FMaterialGroup,b.FMaterialType,b.FCustomerCode,b.FStoreHouse," +
"b.FBomEntry,b.FLineHouse,b.FProductDesc,b.FWorkCenter,b.FCraftExplain,b.FIidentifier,b.FGuaranteePeriod,b.FBStorageConditions,b.FSafetyStock,b.FTriggerRatio,b.FMinAmount,b.FMaxAmount,b.FYield,b.FFixedLoss,b.FTheoryYield," +
"b.FQualityTest1,b.FQualityTest2" ) . ToDictionaryList ( ) ;
TFS_HalfMaterialFTeamwork teamWork = db . Queryable < TFS_HalfMaterialFTeamwork > ( ) . Where ( s = > s . FID = = teamId ) . First ( ) ;
TFS_PackageMain packAge = db . Queryable < TFS_PackageMain > ( ) . Where ( s = > s . FCode = = teamWork . FPackCode ) . First ( ) ;
if ( packAge ! = null )
{
viewList [ 0 ] . Remove ( "FBaseGrossWeight" ) ;
viewList [ 0 ] . Add ( "FBaseGrossWeight" , packAge . FGrossWeight ) ;
viewList [ 0 ] . Remove ( "FBaseNetWeight" ) ;
viewList [ 0 ] . Add ( "FBaseNetWeight" , packAge . FNetWeight ) ;
viewList [ 0 ] . Remove ( "FBaseSpecification" ) ;
viewList [ 0 ] . Add ( "FBaseSpecification" , packAge . FSpecs ) ;
viewList [ 0 ] . Add ( "HalfCode" , teamWork . FMaterialHalfIDs ) ;
}
var FBaseMaterialDesc = viewList . GroupBy ( s = > s [ "FBaseMaterialDesc" ] ) . Select ( s = > s . Key ) . ToList ( ) ;
if ( FBaseMaterialDesc . Count > 0 )
{
viewList [ 0 ] . Add ( "HalfDesc" , FBaseMaterialDesc [ 0 ] ) ;
}
}
if ( viewType = = 1 )
{
viewList = db . Queryable < TFS_ViewMaterial , TFS_Material > ( ( a , b ) = >
new JoinQueryInfos ( JoinType . Inner , a . FMaterialID = = b . FID ) )
. Where ( ( a , b ) = > a . FHalfMaterialTeamID = = teamId )
. WhereIF ( currUser ! = null , ( a , b ) = > a . FFactoryID = = currUser . FFactoryID )
. WhereIF ( viewType > 0 , ( a , b ) = > a . FViewType = = 2 )
. Select < object > ( "distinct a.*,b.FTypeID1,b.FTypeID2,b.FK3Code,b.FK3Name,b.FK3ShortCode,b.FTestCode,b.FRelationCode,b.FRelationName,b.FSAPCode,b.FSAPDescription,b.FMaterialGroup,b.FMaterialType,b.FCustomerCode,b.FStoreHouse," +
"b.FBomEntry,b.FLineHouse,b.FProductDesc,b.FWorkCenter,b.FCraftExplain,b.FIidentifier,b.FGuaranteePeriod,b.FBStorageConditions,b.FSafetyStock,b.FTriggerRatio,b.FMinAmount,b.FMaxAmount,b.FYield,b.FFixedLoss,b.FTheoryYield," +
"b.FQualityTest1,b.FQualityTest2" ) . ToDictionaryList ( ) ;
List < TFS_MaterialInfo > Minfo = GetMaterialInfoList ( viewList . GroupBy ( s = > s [ "FMaterialID" ] ) . Select ( s = > int . Parse ( s . Key . ToString ( ) ) ) . ToList ( ) , "" , "" , currUserId ) ;
if ( Minfo . Count > 0 )
{
FGuaranteePeriod = Minfo [ 0 ] . FGuaranteePeriod ;
FStorageConditions = Minfo [ 0 ] . FStorageConditions ;
}
TFS_HalfMaterialFTeamwork teamWork = db . Queryable < TFS_HalfMaterialFTeamwork > ( ) . Where ( s = > s . FID = = teamId ) . First ( ) ;
TFS_PackageMain packAge = db . Queryable < TFS_PackageMain > ( ) . Where ( s = > s . FCode = = teamWork . FPackCode ) . First ( ) ;
if ( packAge ! = null )
{
viewList [ 0 ] . Remove ( "FBaseGrossWeight" ) ;
viewList [ 0 ] . Add ( "FBaseGrossWeight" , packAge . FGrossWeight ) ;
viewList [ 0 ] . Remove ( "FBaseNetWeight" ) ;
viewList [ 0 ] . Add ( "FBaseNetWeight" , packAge . FNetWeight ) ;
viewList [ 0 ] . Remove ( "FBaseSpecification" ) ;
viewList [ 0 ] . Add ( "FBaseSpecification" , packAge . FSpecs ) ;
viewList [ 0 ] . Add ( "HalfCode" , teamWork . FMaterialHalfIDs ) ;
}
var FBaseMaterialDesc = viewList . GroupBy ( s = > s [ "FBaseMaterialDesc" ] ) . Select ( s = > s . Key ) . ToList ( ) ;
if ( FBaseMaterialDesc . Count > 0 )
{
viewList [ 0 ] . Add ( "HalfDesc" , FBaseMaterialDesc [ 0 ] ) ;
}
}
materialId = viewList . GroupBy ( s = > s [ "FMaterialID" ] ) . Select ( s = > int . Parse ( s . Key . ToString ( ) ) ) . ToList ( ) ;
return viewList ;
}
/// <summary>
/// 根据协同ID获取物料视图
/// </summary>
public List < Dictionary < string , object > > GetMaterialViewsByTeamId ( int teamId , int viewType , int teamType , int currUserId , out List < int > materialId , out string FGuaranteePeriod , out string FStorageConditions , bool byFactory = true )
{
TUser currUser = null ;
FGuaranteePeriod = "" ;
FStorageConditions = "" ;
if ( byFactory = = true ) currUser = BaseBll . GetTempModel < TUser > ( currUserId , "FFactoryID" ) ;
var db = AppSettingsHelper . GetSqlSugar ( ) ;
List < Dictionary < string , object > > viewList = new List < Dictionary < string , object > > ( ) ;
if ( viewType = = 10 )
{
viewList = db . Queryable < TFS_ViewMaterial , TFS_Material > ( ( a , b ) = >
new JoinQueryInfos ( JoinType . Inner , a . FMaterialID = = b . FID ) )
. Where ( ( a , b ) = > a . FTeamID = = teamId )
. Where ( ( a , b ) = > a . FTeamType = = teamType )
. WhereIF ( currUser ! = null , ( a , b ) = > a . FFactoryID = = currUser . FFactoryID )
. Select < object > ( "distinct a.*,b.FTypeID1,b.FTypeID2,b.FK3Code,b.FK3Name,b.FK3ShortCode,b.FTestCode,b.FRelationCode,b.FRelationName,b.FSAPCode,b.FSAPDescription,b.FMaterialGroup,b.FMaterialType,b.FCustomerCode,b.FStoreHouse," +
"b.FBomEntry,b.FLineHouse,b.FProductDesc,b.FWorkCenter,b.FCraftExplain,b.FIidentifier,b.FGuaranteePeriod,b.FBStorageConditions,b.FSafetyStock,b.FTriggerRatio,b.FMinAmount,b.FMaxAmount,b.FYield,b.FFixedLoss,b.FTheoryYield," +
"b.FQualityTest1,b.FQualityTest2" ) . ToDictionaryList ( ) ;
}
else
{
viewList = db . Queryable < TFS_ViewMaterial , TFS_Material > ( ( a , b ) = >
new JoinQueryInfos ( JoinType . Inner , a . FMaterialID = = b . FID ) )
. Where ( ( a , b ) = > a . FTeamID = = teamId )
. Where ( ( a , b ) = > a . FTeamType = = teamType )
. WhereIF ( currUser ! = null , ( a , b ) = > a . FFactoryID = = currUser . FFactoryID )
. WhereIF ( viewType > 0 , ( a , b ) = > a . FViewType = = viewType )
. Select < object > ( "distinct a.*,b.FTypeID1,b.FTypeID2,b.FK3Code,b.FK3Name,b.FK3ShortCode,b.FTestCode,b.FRelationCode,b.FRelationName,b.FSAPCode,b.FSAPDescription,b.FMaterialGroup,b.FMaterialType,b.FCustomerCode,b.FStoreHouse," +
"b.FBomEntry,b.FLineHouse,b.FProductDesc,b.FWorkCenter,b.FCraftExplain,b.FIidentifier,b.FGuaranteePeriod,b.FBStorageConditions,b.FSafetyStock,b.FTriggerRatio,b.FMinAmount,b.FMaxAmount,b.FYield,b.FFixedLoss,b.FTheoryYield," +
"b.FQualityTest1,b.FQualityTest2" ) . ToDictionaryList ( ) ;
}
materialId = viewList . GroupBy ( s = > s [ "FMaterialID" ] ) . Select ( s = > int . Parse ( s . Key . ToString ( ) ) ) . ToList ( ) ;
return viewList ;
}
/// <summary>
/// 根据协同ID获取物料视图
/// </summary>
public List < Dictionary < string , object > > GetListByTeamId2 ( int teamId , int currUserId , out List < int > materialId , out string FGuaranteePeriod , out string FStorageConditions , bool byFactory = true )
{
TUser currUser = null ;
FGuaranteePeriod = "" ;
FStorageConditions = "" ;
//if (byFactory == true) currUser = BaseBll.GetTempModel<TUser>(currUserId, "FFactoryID");
var db = AppSettingsHelper . GetSqlSugar ( ) ;
List < Dictionary < string , object > > viewList = db . Queryable < TFS_ViewMaterial , TFS_Material > ( ( a , b ) = >
new JoinQueryInfos ( JoinType . Inner , a . FMaterialID = = b . FID ) )
. Where ( ( a , b ) = > a . FTeamID = = teamId )
//.WhereIF(currUser != null, (a, b) => a.FFactoryID == currUser.FFactoryID)
. Select < object > ( "distinct a.*,b.FTypeID1,b.FTypeID2,b.FK3Code,b.FK3Name,b.FK3ShortCode" ) . ToDictionaryList ( ) ;
foreach ( var item in viewList )
{
if ( item [ "FViewType" ] . ToString ( ) = = "1" )
{
int viewType = int . Parse ( item [ "FViewType" ] . ToString ( ) ) ;
if ( viewType = = 1 )
{
List < Dictionary < string , object > > viewList1 = db . Queryable < TFS_ViewMaterial , TFS_Material > ( ( a , b ) = >
new JoinQueryInfos ( JoinType . Inner , a . FMaterialID = = b . FID ) )
. Where ( ( a , b ) = > a . FTeamID = = teamId )
. WhereIF ( currUser ! = null , ( a , b ) = > a . FFactoryID = = currUser . FFactoryID )
. WhereIF ( viewType > 0 , ( a , b ) = > a . FViewType = = 2 )
. Select < object > ( "distinct a.*,b.FTypeID1,b.FTypeID2,b.FK3Code,b.FK3Name,b.FK3ShortCode" ) . ToDictionaryList ( ) ;
List < TFS_MaterialInfo > Minfo = GetMaterialInfoList ( viewList1 . GroupBy ( s = > s [ "FMaterialID" ] ) . Select ( s = > int . Parse ( s . Key . ToString ( ) ) ) . ToList ( ) , "" , "" , currUserId ) ;
if ( Minfo . Count > 0 )
{
FGuaranteePeriod = Minfo [ 0 ] . FGuaranteePeriod ;
FStorageConditions = Minfo [ 0 ] . FStorageConditions ;
}
TFS_FTeamwork teamWork = db . Queryable < TFS_FTeamwork > ( ) . Where ( s = > s . FID = = teamId ) . First ( ) ;
TFS_PackageMain packAge = db . Queryable < TFS_PackageMain > ( ) . Where ( s = > s . FCode = = teamWork . FPackCode ) . First ( ) ;
if ( packAge ! = null )
{
item . Remove ( "FBaseGrossWeight" ) ;
item . Add ( "FBaseGrossWeight" , packAge . FGrossWeight ) ;
item . Remove ( "FBaseNetWeight" ) ;
item . Add ( "FBaseNetWeight" , packAge . FNetWeight ) ;
item . Remove ( "FBaseSpecification" ) ;
item . Add ( "FBaseSpecification" , packAge . FSpecs ) ;
item . Add ( "HalfCode" , teamWork . FMaterialHalfIDs ) ;
}
var FBaseMaterialDesc = viewList1 . GroupBy ( s = > s [ "FBaseMaterialDesc" ] ) . Select ( s = > s . Key ) . ToList ( ) ;
if ( FBaseMaterialDesc . Count > 0 )
{
viewList [ 0 ] . Add ( "HalfDesc" , FBaseMaterialDesc [ 0 ] ) ;
}
}
}
}
materialId = viewList . GroupBy ( s = > s [ "FMaterialID" ] ) . Select ( s = > int . Parse ( s . Key . ToString ( ) ) ) . ToList ( ) ;
return viewList ;
}
/// <summary>
/// 根据替换物料TeamID获取物料视图
/// </summary>
public List < Dictionary < string , object > > GetListByHalfMaterialTeamId ( int teamId , int currUserId , out List < int > materialId , out string FGuaranteePeriod , out string FStorageConditions , bool byFactory = true )
{
TUser currUser = null ;
FGuaranteePeriod = "" ;
FStorageConditions = "" ;
//if (byFactory == true) currUser = BaseBll.GetTempModel<TUser>(currUserId, "FFactoryID");
var db = AppSettingsHelper . GetSqlSugar ( ) ;
List < Dictionary < string , object > > viewList = db . Queryable < TFS_ViewMaterial , TFS_Material > ( ( a , b ) = >
new JoinQueryInfos ( JoinType . Inner , a . FMaterialID = = b . FID ) )
. Where ( ( a , b ) = > a . FHalfMaterialTeamID = = teamId )
//.WhereIF(currUser != null, (a, b) => a.FFactoryID == currUser.FFactoryID)
. Select < object > ( "distinct a.*,b.FTypeID1,b.FTypeID2,b.FK3Code,b.FK3Name,b.FK3ShortCode" ) . ToDictionaryList ( ) ;
foreach ( var item in viewList )
{
if ( item [ "FViewType" ] . ToString ( ) = = "1" )
{
int viewType = int . Parse ( item [ "FViewType" ] . ToString ( ) ) ;
if ( viewType = = 1 )
{
List < Dictionary < string , object > > viewList1 = db . Queryable < TFS_ViewMaterial , TFS_Material > ( ( a , b ) = >
new JoinQueryInfos ( JoinType . Inner , a . FMaterialID = = b . FID ) )
. Where ( ( a , b ) = > a . FTeamID = = teamId )
. WhereIF ( currUser ! = null , ( a , b ) = > a . FFactoryID = = currUser . FFactoryID )
. WhereIF ( viewType > 0 , ( a , b ) = > a . FViewType = = 2 )
. Select < object > ( "distinct a.*,b.FTypeID1,b.FTypeID2,b.FK3Code,b.FK3Name,b.FK3ShortCode" ) . ToDictionaryList ( ) ;
List < TFS_MaterialInfo > Minfo = GetMaterialInfoList ( viewList1 . GroupBy ( s = > s [ "FMaterialID" ] ) . Select ( s = > int . Parse ( s . Key . ToString ( ) ) ) . ToList ( ) , "" , "" , currUserId ) ;
if ( Minfo . Count > 0 )
{
FGuaranteePeriod = Minfo [ 0 ] . FGuaranteePeriod ;
FStorageConditions = Minfo [ 0 ] . FStorageConditions ;
}
TFS_HalfMaterialFTeamwork teamWork = db . Queryable < TFS_HalfMaterialFTeamwork > ( ) . Where ( s = > s . FID = = teamId ) . First ( ) ;
TFS_PackageMain packAge = db . Queryable < TFS_PackageMain > ( ) . Where ( s = > s . FCode = = teamWork . FPackCode ) . First ( ) ;
if ( packAge ! = null )
{
item . Remove ( "FBaseGrossWeight" ) ;
item . Add ( "FBaseGrossWeight" , packAge . FGrossWeight ) ;
item . Remove ( "FBaseNetWeight" ) ;
item . Add ( "FBaseNetWeight" , packAge . FNetWeight ) ;
item . Remove ( "FBaseSpecification" ) ;
item . Add ( "FBaseSpecification" , packAge . FSpecs ) ;
item . Add ( "HalfCode" , teamWork . FMaterialHalfIDs ) ;
}
var FBaseMaterialDesc = viewList1 . GroupBy ( s = > s [ "FBaseMaterialDesc" ] ) . Select ( s = > s . Key ) . ToList ( ) ;
if ( FBaseMaterialDesc . Count > 0 )
{
viewList [ 0 ] . Add ( "HalfDesc" , FBaseMaterialDesc [ 0 ] ) ;
}
}
}
}
materialId = viewList . GroupBy ( s = > s [ "FMaterialID" ] ) . Select ( s = > int . Parse ( s . Key . ToString ( ) ) ) . ToList ( ) ;
return viewList ;
}
/// <summary>
/// 根据物料获取基本信息
/// </summary>
public List < TFS_MaterialInfo > GetMaterialInfoList ( List < int > materialIds , string FGuaranteePeriod , string FStorageConditions , int userId )
{
SqlSugarClient db = AppSettingsHelper . GetSqlSugar ( ) ;
List < TFS_MaterialInfo > infoList = db . Queryable < TFS_MaterialInfo > ( ) . Where ( s = > materialIds . Contains ( s . FDataID ) & & s . FType = = 2 ) . ToList ( ) ;
if ( infoList . Count ! = materialIds . Count )
{
materialIds = materialIds . Where ( s = > infoList . Find ( f = > f . FDataID = = s ) = = null ) . ToList ( ) ;
foreach ( int materialId in materialIds )
{
TFS_Material temp = db . Queryable < TFS_Material > ( ) . Where ( s = > s . FID = = materialId ) . First ( ) ;
TFS_MaterialInfo info = new TFS_MaterialInfo ( )
{
FType = 2 ,
FDataID = materialId ,
FAddUser = userId ,
FType2 = temp . FTypeID2 ,
FMaterialGroup = temp . FMaterialGroup ,
FMaterialType = temp . FMaterialType
} ;
db . Insertable ( info ) . IgnoreColumns ( true ) . ExecuteCommand ( ) ;
}
}
if ( ! FGuaranteePeriod . Equals ( "" ) )
{
infoList [ 0 ] . FGuaranteePeriod = FGuaranteePeriod ;
}
if ( ! FStorageConditions . Equals ( "" ) )
{
infoList [ 0 ] . FStorageConditions = FStorageConditions ;
}
return infoList ;
}
/// <summary>
/// 根据物料分类集合信息
/// </summary>
public object GetMaterialTypeList ( )
{
return AppSettingsHelper . GetSqlSugar ( ) . Queryable < TFS_MaterialType > ( ) . Where ( s = > s . FDeleted ! = 1 & & s . FState = = 1 )
. OrderBy ( "FDepth,FID" ) . Select < dynamic > ( "FID,FName,FID FValue,FDepth,FParentID" ) . ToList ( ) ;
}
/// <summary>
/// 获取视图编辑列
/// </summary>
public List < Dictionary < string , object > > GetColumns ( )
{
List < TFS_ViewFieldInfo > fieldList = AppSettingsHelper . GetSqlSugar ( ) . Queryable < TFS_ViewFieldInfo > ( )
. Where ( it = > it . FType = = ( int ) Constant . ViewType . 成 品 视 图 | | it . FType = = ( int ) Constant . ViewType . 物 料 主 表 )
. OrderBy ( it = > it . FType , OrderByType . Desc )
. OrderBy ( it = > it . FOrder )
. ToList ( ) ;
List < Dictionary < string , object > > dicList = new List < Dictionary < string , object > > ( ) ;
foreach ( var field in fieldList )
{
Dictionary < string , object > dic = new Dictionary < string , object > { { "id" , field . FID } } ;
string [ ] fArr = field . FField . Split ( '.' ) ;
dic . Add ( "key" , fArr . Last ( ) ) ;
dic . Add ( "table" , fArr . First ( ) ) ;
string [ ] nArr = field . FName . Split ( '.' ) ;
dic . Add ( "title" , nArr . Last ( ) ) ;
dic . Add ( "category" , nArr . First ( ) ) ;
dic . Add ( "width" , field . FWidth ) ;
dic . Add ( "align" , field . FAlign ) ;
dic . Add ( "dataType" , field . FDataType ) ;
if ( field . FName . Equals ( "基本视图.大小/量纲(规格)" ) | | field . FName . Equals ( "基本视图.毛重" ) | | field . FName . Equals ( "基本视图.净重" ) )
{
dic . Add ( "fieldType" , 7 ) ;
}
else
{
dic . Add ( "fieldType" , field . FType ) ;
}
dicList . Add ( dic ) ;
}
return dicList ;
}
/// <summary>
/// 保存视图编辑内容
/// </summary>
/// <param name="rows"></param>
public int UpdateBatchById ( List < Dictionary < string , object > > rows , int userId )
{
SqlSugarClient db = AppSettingsHelper . GetSqlSugar ( ) ;
foreach ( var row in rows )
{
db . Updateable ( row ) . AS ( "TFS_ViewMaterial" ) . WhereColumns ( "FMaterialID" , "FTeamID" , "FViewType" ) . AddQueue ( ) ;
}
int result = db . SaveQueues ( ) ;
if ( ! rows [ 0 ] . ContainsKey ( "FTeamID" ) | | ! int . TryParse ( rows [ 0 ] [ "FTeamID" ] . ToString ( ) , out int teamId ) ) teamId = - 1 ;
if ( ! rows [ 0 ] . ContainsKey ( "FViewType" ) | | ! int . TryParse ( rows [ 0 ] [ "FViewType" ] . ToString ( ) , out int taskType ) ) taskType = - 1 ;
if ( teamId > 0 & & taskType > 0 ) result + = CheckTaskComplete ( db , teamId , taskType , userId ) ;
return result ;
}
/// <summary>
/// 保存视图编辑内容2
/// </summary>
public int UpdateBatchById2 ( List < Dictionary < string , object > > viewList , List < Dictionary < string , object > > materialList ,
List < Dictionary < string , object > > infoList , int teamId , int viewType , int userId )
{
int result = 0 ;
SqlSugarClient db = AppSettingsHelper . GetSqlSugar ( ) ;
MaterialTypeBll materialTypeBll = new MaterialTypeBll ( ) ;
if ( viewList ! = null & & viewList . Count > 0 )
{
string sqlWhere = string . Format ( "FViewType={0} and FTeamID={1}" , viewType , teamId ) ;
if ( viewType = = 10 )
{
sqlWhere = string . Format ( "FViewType in (2, 3, 4, 5) and FTeamID={1}" , viewType , teamId ) ;
}
for ( int i = 0 ; i < viewList . Count ; i + + )
{
//判断是否等于中间品
if ( viewList [ i ] [ "FMRP1ProductType" ] . ToString ( ) = = "30" )
{
TFS_MaterialType materialType = materialTypeBll . GetMaterialTypeByID ( int . Parse ( viewList [ i ] [ "FTypeID2" ] . ToString ( ) ) ) . LastOrDefault ( ) ;
if ( materialType . FName . Contains ( "香基" ) )
{
if ( viewList [ i ] . ContainsKey ( "FViewType" ) )
{
viewList [ i ] [ "FViewType" ] = ( int ) Constant . ViewType . 香 基 视 图 ;
}
else
{
viewList [ i ] . Add ( "FViewType" , ( int ) Constant . ViewType . 香 基 视 图 ) ;
}
}
else
{
if ( viewList [ i ] . ContainsKey ( "FViewType" ) )
{
viewList [ i ] [ "FViewType" ] = ( int ) Constant . ViewType . 中 间 品 视 图 ;
}
else
{
viewList [ i ] . Add ( "FViewType" , ( int ) Constant . ViewType . 中 间 品 视 图 ) ;
}
}
}
result + = db . Updateable ( viewList [ i ] ) . AS ( "TFS_ViewMaterial" ) . WhereColumns ( "FMaterialID" ) . Where ( sqlWhere ) . ExecuteCommand ( ) ;
}
result + = UnionModifyData ( viewList , "TFS_ViewMaterial" , teamId , db , "FMaterialID" ) ;
}
if ( materialList ! = null & & materialList . Count > 0 )
{
for ( int i = 0 ; i < materialList . Count ; i + + )
{
materialList [ i ] [ "FID" ] = materialList [ i ] [ "FMaterialID" ] ;
materialList [ i ] . Remove ( "FMaterialID" ) ;
if ( materialList [ i ] . TryGetValue ( "FK3Code" , out object k3Code ) )
{
if ( materialList [ i ] . ContainsKey ( "FK3ShortCode" ) )
{
materialList [ i ] [ "FK3ShortCode" ] = k3Code . ToString ( ) . Split ( '.' ) . Last ( ) ;
}
else
{
materialList [ i ] . Add ( "FK3ShortCode" , k3Code . ToString ( ) . Split ( '.' ) . Last ( ) ) ;
}
}
result + = db . Updateable ( materialList [ i ] ) . AS ( "TFS_Material" ) . WhereColumns ( "FID" ) . ExecuteCommand ( ) ;
}
result + = UnionModifyData ( materialList , "TFS_Material" , teamId , db ) ;
}
if ( infoList ! = null & & infoList . Count > 0 )
{
for ( int i = 0 ; i < infoList . Count ; i + + )
{
infoList [ i ] [ "FDataID" ] = infoList [ i ] [ "FMaterialID" ] ;
infoList [ i ] . Remove ( "FMaterialID" ) ;
infoList [ i ] . Add ( "FType" , 2 ) ;
result + = db . Updateable ( infoList [ i ] ) . AS ( "TFS_MaterialInfo" ) . WhereColumns ( "FType" , "FDataID" ) . ExecuteCommand ( ) ;
}
result + = UnionModifyData ( infoList , "TFS_MaterialInfo" , teamId , db , "FDataID" ) ;
}
result + = CheckTaskComplete ( db , teamId , viewType , userId ) ;
return result ;
}
public int UpdateMaterialViewById ( List < Dictionary < string , object > > viewList , List < Dictionary < string , object > > materialList ,
List < Dictionary < string , object > > infoList , int teamId , int viewType , int userId )
{
int result = 0 ;
SqlSugarClient db = AppSettingsHelper . GetSqlSugar ( ) ;
if ( viewList ! = null & & viewList . Count > 0 )
{
string sqlWhere = string . Format ( "FViewType={0} and FTeamID={1}" , viewType , teamId ) ;
result + = db . Updateable ( viewList ) . AS ( "TFS_ViewMaterial" ) . WhereColumns ( "FMaterialID" ) . Where ( sqlWhere ) . ExecuteCommand ( ) ;
result + = UnionModifyData ( viewList , "TFS_ViewMaterial" , teamId , db , "FMaterialID" ) ;
}
if ( materialList ! = null & & materialList . Count > 0 )
{
for ( int i = 0 ; i < materialList . Count ; i + + )
{
materialList [ i ] [ "FID" ] = materialList [ i ] [ "FMaterialID" ] ;
materialList [ i ] . Remove ( "FMaterialID" ) ;
if ( materialList [ i ] . TryGetValue ( "FK3Code" , out object k3Code ) )
{
if ( materialList [ i ] . ContainsKey ( "FK3ShortCode" ) )
{
materialList [ i ] [ "FK3ShortCode" ] = k3Code . ToString ( ) . Split ( '.' ) . Last ( ) ;
}
else
{
materialList [ i ] . Add ( "FK3ShortCode" , k3Code . ToString ( ) . Split ( '.' ) . Last ( ) ) ;
}
}
}
result + = db . Updateable ( materialList ) . AS ( "TFS_Material" ) . WhereColumns ( "FID" ) . ExecuteCommand ( ) ;
result + = UnionModifyData ( materialList , "TFS_Material" , teamId , db ) ;
}
if ( infoList ! = null & & infoList . Count > 0 )
{
for ( int i = 0 ; i < infoList . Count ; i + + )
{
infoList [ i ] [ "FDataID" ] = infoList [ i ] [ "FMaterialID" ] ;
infoList [ i ] . Remove ( "FMaterialID" ) ;
infoList [ i ] . Add ( "FType" , 2 ) ;
}
result + = db . Updateable ( infoList ) . AS ( "TFS_MaterialInfo" ) . WhereColumns ( "FType" , "FDataID" ) . ExecuteCommand ( ) ;
result + = UnionModifyData ( infoList , "TFS_MaterialInfo" , teamId , db , "FDataID" ) ;
}
return result ;
}
private int CheckTaskComplete ( SqlSugarClient db , int teamId , int taskType , int userId )
{
int result = 0 ;
//List<string> fields = db.Queryable<TBasicCode, TFS_ViewFieldInfo>((a, b) => new JoinQueryInfos(JoinType.Left, a.F2 == b.FID.ToString()))
// .Where((a, b) => a.FType == 40 && b.FType == 1 && a.F1 == taskType.ToString()).Select((a, b) => b.FField).ToList();
//string okSql = string.Format("select count(1) from TFS_ViewMaterial where FTeamID={0} and FViewType={1} and(", teamId, taskType);
//okSql += string.Join("='' or ", fields).Replace("TFS_ViewMaterial.", "") + "='')";
//string okResult = db.Ado.GetString(okSql);
string okResult = "" ;
if ( string . IsNullOrEmpty ( okResult ) | | okResult = = "0" )
{
if ( taskType ! = 10 )
{
//视图类型+2是事项, 除了包材
taskType + = 2 ;
if ( taskType > = ( int ) Constant . TaskType . 组 编 号 申 请 ) taskType = ( int ) Constant . TaskType . 新 包 材 视 图 ;
}
else
{
taskType = 15 ;
}
string taskSql = "" ;
int proType = - 2 ; string appSql = " and(select count(1) from TFS_Task t where t.FTeamID=a.FTeamID and t.FType in({0}) and t.FState!=2)=0" ;
switch ( taskType )
{
case 3 : //成品视图事项:3→成品视图: 2
proType = 2 ;
break ;
case 4 : //新半成品视图:4
case 5 : //新中间品视图:5
case 6 : //新香基视图:6→新半成品/中间品/香基: 3
proType = 3 ;
appSql = string . Format ( appSql , "4,5,6" ) ;
break ;
case 7 : //新原料视图:7→新原料视图:4
proType = 4 ;
break ;
case 15 : //物料分类视图:15→物料分类视图:0
proType = 0 ;
break ;
case 11 : //新包材视图:7→新原料视图:8
proType = 8 ;
break ;
}
if ( taskType = = 15 | | proType > 0 ) taskSql = BaseBll . GetProcessSql ( teamId , proType , "F3" , 2 , string . Format ( appSql , taskType ) ) ;
taskSql = BaseBll . GetTaskSql ( - 1 , 2 , teamId , taskType , - 1 , string . Format ( "','+a.FUserID+',' like ',%{0}%,'" , userId ) ) + taskSql ;
result + = db . Ado . ExecuteCommand ( taskSql ) ;
TeamworkBll . ChangeTeamProcess ( teamId ) ;
}
return result ;
}
/// <summary>
/// 试验号变更-保存视图编辑内容3
/// </summary>
public int UpdateBatchById3 ( List < Dictionary < string , object > > viewList , List < Dictionary < string , object > > materialList ,
List < Dictionary < string , object > > infoList , int teamId , int viewType , int userId )
{
int result = 0 ;
SqlSugarClient db = AppSettingsHelper . GetSqlSugar ( ) ;
MaterialBll materialBll = new MaterialBll ( ) ;
MaterialTypeBll materialTypeBll = new MaterialTypeBll ( ) ;
if ( viewList ! = null & & viewList . Count > 0 )
{
string sqlWhere = string . Format ( " FHalfMaterialTeamID={1}" , viewType , teamId ) ;
//if (viewType == 10)
//{
// sqlWhere = string.Format("FViewType in (2, 3, 4, 5) and FHalfMaterialTeamID={1}", viewType, teamId);
//}
for ( int i = 0 ; i < viewList . Count ; i + + )
{
//判断是否等于中间品
if ( viewList [ i ] . ContainsKey ( "FMRP1ProductType" ) & & viewList [ i ] [ "FMRP1ProductType" ] . ToString ( ) = = "30" )
{
TFS_MaterialType materialType = materialTypeBll . GetMaterialTypeByID ( int . Parse ( materialList [ i ] [ "FTypeID2" ] . ToString ( ) ) ) . LastOrDefault ( ) ;
if ( materialType . FName . Contains ( "香基" ) )
{
if ( viewList [ i ] . ContainsKey ( "FViewType" ) )
{
viewList [ i ] [ "FViewType" ] = ( int ) Constant . ViewType . 香 基 视 图 ;
}
else
{
viewList [ i ] . Add ( "FViewType" , ( int ) Constant . ViewType . 香 基 视 图 ) ;
}
}
else
{
if ( viewList [ i ] . ContainsKey ( "FViewType" ) )
{
viewList [ i ] [ "FViewType" ] = ( int ) Constant . ViewType . 中 间 品 视 图 ;
}
else
{
viewList [ i ] . Add ( "FViewType" , ( int ) Constant . ViewType . 中 间 品 视 图 ) ;
}
}
}
else
{
switch ( viewList [ i ] [ "FMRP1ProductType" ] . ToString ( ) )
{
case "10" :
if ( viewList [ i ] . ContainsKey ( "FViewType" ) )
{
viewList [ i ] [ "FViewType" ] = ( int ) Constant . ViewType . 成 品 视 图 ;
}
else
{
viewList [ i ] . Add ( "FViewType" , ( int ) Constant . ViewType . 成 品 视 图 ) ;
}
break ;
case "20" :
if ( viewList [ i ] . ContainsKey ( "FViewType" ) )
{
viewList [ i ] [ "FViewType" ] = ( int ) Constant . ViewType . 半 成 品 视 图 ;
}
else
{
viewList [ i ] . Add ( "FViewType" , ( int ) Constant . ViewType . 半 成 品 视 图 ) ;
}
break ;
case "40" :
if ( viewList [ i ] . ContainsKey ( "FViewType" ) )
{
viewList [ i ] [ "FViewType" ] = ( int ) Constant . ViewType . 原 料 视 图 ;
}
else
{
viewList [ i ] . Add ( "FViewType" , ( int ) Constant . ViewType . 原 料 视 图 ) ;
}
break ;
default :
if ( viewList [ i ] . ContainsKey ( "FViewType" ) )
{
viewList [ i ] [ "FViewType" ] = - 1 ;
}
else
{
viewList [ i ] . Add ( "FViewType" , - 1 ) ;
}
break ;
}
}
}
result + = db . Updateable ( viewList ) . AS ( "TFS_ViewMaterial" ) . WhereColumns ( "FMaterialID" ) . Where ( sqlWhere ) . ExecuteCommand ( ) ;
result + = HalfMaterialUnionModifyData ( viewList , "TFS_ViewMaterial" , teamId , db , "FMaterialID" ) ;
}
if ( materialList ! = null & & materialList . Count > 0 )
{
for ( int i = 0 ; i < materialList . Count ; i + + )
{
materialList [ i ] [ "FID" ] = materialList [ i ] [ "FMaterialID" ] ;
materialList [ i ] . Remove ( "FMaterialID" ) ;
if ( materialList [ i ] . TryGetValue ( "FK3Code" , out object k3Code ) )
{
if ( materialList [ i ] . ContainsKey ( "FK3ShortCode" ) )
{
materialList [ i ] [ "FK3ShortCode" ] = k3Code . ToString ( ) . Split ( '.' ) . Last ( ) ;
}
else
{
materialList [ i ] . Add ( "FK3ShortCode" , k3Code . ToString ( ) . Split ( '.' ) . Last ( ) ) ;
}
}
result + = db . Updateable ( materialList [ i ] ) . AS ( "TFS_Material" ) . WhereColumns ( "FID" ) . ExecuteCommand ( ) ;
}
result + = HalfMaterialUnionModifyData ( materialList , "TFS_Material" , teamId , db ) ;
}
if ( infoList ! = null & & infoList . Count > 0 )
{
for ( int i = 0 ; i < infoList . Count ; i + + )
{
infoList [ i ] [ "FDataID" ] = infoList [ i ] [ "FMaterialID" ] ;
infoList [ i ] . Remove ( "FMaterialID" ) ;
infoList [ i ] . Add ( "FType" , 2 ) ;
infoList [ i ] . Add ( "FType2" , int . Parse ( materialList [ i ] [ "FTypeID2" ] . ToString ( ) ) ) ;
result + = db . Updateable ( infoList [ i ] ) . AS ( "TFS_MaterialInfo" ) . WhereColumns ( "FType" , "FDataID" ) . ExecuteCommand ( ) ;
}
result + = UnionModifyData ( infoList , "TFS_MaterialInfo" , teamId , db , "FDataID" ) ;
}
//result += CheckTaskComplete2(db, teamId, viewType, userId);
return result ;
}
/// <summary>
/// 试验号变更-
/// </summary>
/// <param name="db"></param>
/// <param name="teamId"></param>
/// <param name="taskType"></param>
/// <param name="userId"></param>
/// <returns></returns>
private int CheckTaskComplete2 ( SqlSugarClient db , int teamId , int taskType , int userId )
{
int result = 0 ;
//List<string> fields = db.Queryable<TBasicCode, TFS_ViewFieldInfo>((a, b) => new JoinQueryInfos(JoinType.Left, a.F2 == b.FID.ToString()))
// .Where((a, b) => a.FType == 40 && b.FType == 1 && a.F1 == taskType.ToString()).Select((a, b) => b.FField).ToList();
//string okSql = string.Format("select count(1) from TFS_ViewMaterial where FTeamID={0} and FViewType={1} and(", teamId, taskType);
//okSql += string.Join("='' or ", fields).Replace("TFS_ViewMaterial.", "") + "='')";
//string okResult = db.Ado.GetString(okSql);
string okResult = "" ;
if ( string . IsNullOrEmpty ( okResult ) | | okResult = = "0" )
{
if ( taskType ! = 10 )
{
//视图类型+2是事项, 除了包材
taskType + = 2 ;
if ( taskType > = ( int ) Constant . TaskType . 组 编 号 申 请 ) taskType = ( int ) Constant . TaskType . 新 包 材 视 图 ;
}
else
{
taskType = 15 ;
}
string taskSql = "" ;
int proType = - 2 ; string appSql = " and(select count(1) from TFS_HalfMaterialTask t where t.FTeamID=a.FTeamID and t.FType in({0}) and t.FState!=2)=0" ;
switch ( taskType )
{
case 3 : //成品视图事项:3→成品视图: 2
proType = 2 ;
break ;
case 4 : //新半成品视图:4
case 5 : //新中间品视图:5
case 6 : //新香基视图:6→新半成品/中间品/香基: 3
proType = 3 ;
appSql = string . Format ( appSql , "4,5,6" ) ;
break ;
case 7 : //新原料视图:7→新原料视图:4
proType = 4 ;
break ;
case 15 : //物料分类视图:15→物料分类视图:0
proType = 0 ;
break ;
case 11 : //新包材视图:7→新原料视图:8
proType = 8 ;
break ;
}
if ( taskType = = 15 | | proType > 0 ) taskSql = BaseBll . GetProcessSql2 ( teamId , proType , "F3" , 2 , string . Format ( appSql , taskType ) ) ;
taskSql = BaseBll . GetTaskSql2 ( - 1 , 2 , teamId , taskType , - 1 , string . Format ( "','+a.FUserID+',' like ',%{0}%,'" , userId ) ) + taskSql ;
result + = db . Ado . ExecuteCommand ( taskSql ) ;
HalfMaterialTeamworkBll . ChangeTeamProcess ( teamId ) ;
}
return result ;
}
/// <summary>
/// 联合修改
/// </summary>
private int UnionModifyData ( List < Dictionary < string , object > > dataList , string srcTable , int teamId , SqlSugarClient db = null , string colName = "FID" )
{
int result = 0 ;
if ( dataList ! = null & & dataList . Count > 0 )
{
if ( db = = null ) db = AppSettingsHelper . GetSqlSugar ( ) ;
List < TFS_UnionModify > unionList = db . Queryable < TFS_UnionModify > ( ) . Where ( s = > s . FDeleted ! = 1 & & s . FTableOriginal = = srcTable ) . ToList ( ) ;
if ( unionList . Count > 0 )
{
List < string > sqlList = new List < string > ( ) { "update {0} set {0}.{1}={2}.{3} from {0} left join {2} on {4} where {2}.{5}='{6}' {7}" } ;
foreach ( Dictionary < string , object > data in dataList )
{
foreach ( TFS_UnionModify union in unionList )
{
if ( data . TryGetValue ( union . FColumnOriginal , out object srcVal ) )
{
string sqlWhere = "" ;
if ( union . FTableTarget = = "TFS_ViewMaterial" | | union . FTableOriginal = = "TFS_ViewMaterial" )
{
sqlWhere = " and TFS_ViewMaterial.FTeamID=" + teamId ;
}
sqlList . Add ( string . Format ( sqlList [ 0 ] , union . FTableTarget , union . FColumnTarget ,
union . FTableOriginal , union . FColumnOriginal , union . FUnionCondition , colName ,
data [ colName ] , sqlWhere ) ) ;
}
}
}
sqlList . RemoveAt ( 0 ) ;
if ( sqlList . Count > 0 )
{
string updateSql = string . Join ( ";" , sqlList ) ;
try { result = db . Ado . ExecuteCommand ( updateSql ) ; }
catch ( Exception ) { }
}
}
}
return result ;
}
private int HalfMaterialUnionModifyData ( List < Dictionary < string , object > > dataList , string srcTable , int teamId , SqlSugarClient db = null , string colName = "FID" )
{
int result = 0 ;
if ( dataList ! = null & & dataList . Count > 0 )
{
if ( db = = null ) db = AppSettingsHelper . GetSqlSugar ( ) ;
List < TFS_UnionModify > unionList = db . Queryable < TFS_UnionModify > ( ) . Where ( s = > s . FDeleted ! = 1 & & s . FTableOriginal = = srcTable ) . ToList ( ) ;
if ( unionList . Count > 0 )
{
List < string > sqlList = new List < string > ( ) { "update {0} set {0}.{1}={2}.{3} from {0} left join {2} on {4} where {2}.{5}='{6}' {7}" } ;
foreach ( Dictionary < string , object > data in dataList )
{
foreach ( TFS_UnionModify union in unionList )
{
if ( data . TryGetValue ( union . FColumnOriginal , out object srcVal ) )
{
string sqlWhere = "" ;
if ( union . FTableTarget = = "TFS_ViewMaterial" | | union . FTableOriginal = = "TFS_ViewMaterial" )
{
sqlWhere = " and TFS_ViewMaterial.FHalfMaterialTeamID=" + teamId ;
}
sqlList . Add ( string . Format ( sqlList [ 0 ] , union . FTableTarget , union . FColumnTarget ,
union . FTableOriginal , union . FColumnOriginal , union . FUnionCondition , colName ,
data [ colName ] , sqlWhere ) ) ;
}
}
}
sqlList . RemoveAt ( 0 ) ;
if ( sqlList . Count > 0 )
{
string updateSql = string . Join ( ";" , sqlList ) ;
try { result = db . Ado . ExecuteCommand ( updateSql ) ; }
catch ( Exception ) { }
}
}
}
return result ;
}
public object EexcSql ( int tempId = 0 )
{
string sql = "" ;
SqlSugarClient db = AppSettingsHelper . GetSqlSugar ( ) ;
if ( tempId > 0 )
{
sql = string . Format ( "SELECT FMaterialFormulaIDs FROM TFS_FTeamwork WHERE FID='{0}'" , tempId ) ;
var result = db . Ado . SqlQuery < string > ( sql ) ;
if ( string . IsNullOrWhiteSpace ( result [ 0 ] ) )
{
return null ;
}
sql = string . Format ( @ "SELECT
DISTINCT
a . * ,
c . FName AS ' FUserName '
FROM
TFS_Material AS a
LEFT JOIN TUser AS c ON a . FEditUser = c . FID
WHERE
a . FID IN ( { 0 } ) ; ", result[0]);
}
else
{
sql = string . Format ( @"SELECT DISTINCT b.*,c.FName AS 'FUserName' FROM TFS_ViewMaterial AS a LEFT JOIN TFS_Material AS b ON a.FMaterialID=b.FID LEFT JOIN TUser AS c ON b.FEditUser=c.FID " ) ;
}
return db . Ado . SqlQuery < object > ( sql ) ;
}
public int InsertMaterialView ( TFS_ViewMaterial view )
{
SqlSugarClient db = AppSettingsHelper . GetSqlSugar ( ) ;
return db . Insertable ( view ) . IgnoreColumns ( true ) . ExecuteReturnIdentity ( ) ;
}
}
}