@ -1,10 +1,13 @@
using FactorySystemCommon ;
using FactorySystemModel.EnumModel ;
using FactorySystemModel.RequestModel ;
using FactorySystemModel.ResponseModel ;
using FactorySystemModel.SqlSugarModel ;
using SqlSugar ;
using System ;
using System.Collections.Generic ;
using System.Linq ;
using static FactorySystemModel . EnumModel . Constant ;
namespace FactorySystemBll
{
@ -13,11 +16,11 @@ namespace FactorySystemBll
/// <summary>
/// 获取路线列表
/// </summary>
public List < TFS_F MaterialTeamwork> GetList ( MaterialTeamworkQuery mtq , out int totalNumber )
public List < MaterialTeamworkRow > GetList ( MaterialTeamworkQuery mtq , out int totalNumber )
{
totalNumber = 0 ;
var db = AppSettingsHelper . GetSqlSugar ( ) ;
return db . Queryable < TFS_FMaterialTeamwork >( )
return db . Queryable < TFS_FMaterialTeamwork , TUser >( ( a , b ) = > new JoinQueryInfos ( JoinType . Left , a . FAddUser = = b . FID ) )
// 事项状态
. WhereIF ( mtq . FState > 0 & & mtq . FState ! = 99 , a = > a . FState = = mtq . FState )
// 物料号
@ -31,8 +34,270 @@ namespace FactorySystemBll
//.WhereIF(mtq.FUserID != null, (a, b) => (',' + a.FUserID + ',').Contains(',' + mtq.FUserID + ',') || a.FAddUser.Equals(mtq.FUserID))
//// 协同
//.WhereIF(mtq.FMaterialTeamID > 0, (a, b) => a.FMaterialTeamID == mtq.FMaterialTeamID).OrderBy((a, b) => a.FID, OrderByType.Desc)
. Select < TFS_F MaterialTeamwork> ( )
. Select < MaterialTeamworkRow > ( "a.* ,b.FName as FAddUserName" ) . OrderBy ( ( a ) = > a . FID , OrderByType . Desc )
. ToPageList ( mtq . FPageIndex , mtq . FPageSize , ref totalNumber ) ;
}
/// <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>
public List < Dictionary < string , object > > GetMaterialViewsByTeamId ( int teamId , int teamType , int currUserId , out List < int > materialId , bool byFactory = true )
{
TUser currUser = null ;
if ( byFactory = = true ) currUser = BaseBll . GetTempModel < TUser > ( currUserId , "FFactoryID" ) ;
var db = AppSettingsHelper . GetSqlSugar ( ) ;
List < Dictionary < string , object > > viewList = new 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 )
. 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 ( ) ;
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 , 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 ,
FMaterialGroup = temp . FMaterialGroup ,
FMaterialType = temp . FMaterialType
} ;
db . Insertable ( info ) . IgnoreColumns ( true ) . ExecuteCommand ( ) ;
infoList . Add ( info ) ;
}
}
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 ( ) ;
}
public int InsertMaterialView ( TFS_ViewMaterial view )
{
SqlSugarClient db = AppSettingsHelper . GetSqlSugar ( ) ;
return db . Insertable ( view ) . IgnoreColumns ( true ) . ExecuteReturnIdentity ( ) ;
}
public int InsertMaterial ( TFS_Material material )
{
SqlSugarClient db = AppSettingsHelper . GetSqlSugar ( ) ;
return db . Insertable ( material ) . IgnoreColumns ( true ) . ExecuteReturnIdentity ( ) ;
}
public int UpdateMaterial ( TFS_Material material )
{
SqlSugarClient db = AppSettingsHelper . GetSqlSugar ( ) ;
return db . Updateable ( material ) . IgnoreColumns ( true ) . Where ( "FID" ) . ExecuteCommand ( ) ;
}
public int UpdateMaterialViewById ( List < Dictionary < string , object > > viewList , int userId , int teamId )
{
int result = 0 ;
SqlSugarClient db = AppSettingsHelper . GetSqlSugar ( ) ;
if ( viewList ! = null & & viewList . Count > 0 )
{
for ( int i = 0 ; i < viewList . Count ; i + + )
{
viewList [ i ] [ "FEditUser" ] = userId ;
viewList [ i ] [ "FEditDate" ] = DateTime . Now ;
}
// 更新视图
string sqlWhere = string . Format ( "FViewType={0} and FTeamID={1} and FTeamType={2}" , 0 , teamId , 1 ) ;
result + = db . Updateable ( viewList ) . AS ( "TFS_ViewMaterial" ) . WhereColumns ( "FMaterialID" ) . Where ( sqlWhere ) . ExecuteCommand ( ) ;
result + = UnionModifyData ( viewList , "TFS_ViewMaterial" , teamId , db , "FMaterialID" ) ;
}
return result ;
}
public int UpdateMaterialById ( List < Dictionary < string , object > > materialList , int userId , int teamId )
{
int result = 0 ;
SqlSugarClient db = AppSettingsHelper . GetSqlSugar ( ) ;
if ( materialList ! = null & & materialList . Count > 0 )
{
for ( int i = 0 ; i < materialList . Count ; i + + )
{
materialList [ i ] [ "FID" ] = materialList [ i ] [ "FMaterialID" ] ;
materialList [ i ] [ "FEditUser" ] = userId ;
materialList [ i ] [ "FEditDate" ] = DateTime . Now ;
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 ) ;
}
return result ;
}
public int UpdateMaterialInfoById ( List < Dictionary < string , object > > infoList , int userId , int teamId )
{
int result = 0 ;
SqlSugarClient db = AppSettingsHelper . GetSqlSugar ( ) ;
if ( infoList ! = null & & infoList . Count > 0 )
{
for ( int i = 0 ; i < infoList . Count ; i + + )
{
infoList [ i ] [ "FDataID" ] = infoList [ i ] [ "FMaterialID" ] ;
infoList [ i ] [ "FEditUser" ] = userId ;
infoList [ i ] [ "FEditDate" ] = DateTime . Now ;
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 ;
}
public int UpdateMaterialView ( TFS_ViewMaterial view )
{
SqlSugarClient db = AppSettingsHelper . GetSqlSugar ( ) ;
return db . Updateable ( view ) . IgnoreColumns ( true ) . Where ( "FID" ) . ExecuteCommand ( ) ;
}
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 ;
}
public int CloseMaterialTeamwork ( int teamId , int userId )
{
SqlSugarClient db = AppSettingsHelper . GetSqlSugar ( ) ;
List < TFS_FMaterialTeamwork > teamworkList = db . Queryable < TFS_FMaterialTeamwork > ( ) . Where ( s = > s . FID = = teamId & & s . FState = = 1 ) . ToList ( ) ;
int result = 0 ;
if ( teamworkList ! = null & & teamworkList . Count > 0 )
{
TFS_FMaterialTeamwork fmt = teamworkList [ 0 ] ;
fmt . FState = 2 ;
fmt . FEditUser = userId ;
fmt . FEditDate = DateTime . Now ;
result = db . Updateable ( fmt ) . IgnoreColumns ( true ) . WhereColumns ( "FID" ) . ExecuteCommand ( ) ;
}
return result ;
}
}
}