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 ;
namespace FactorySystemBll
{
public class MaterialTaskBll
{
/// <summary>
/// 获取任务列表
/// </summary>
public List < MaterialTaskRow > GetList ( MaterialTaskQuery mtq , out int totalNumber )
{
totalNumber = 0 ;
var db = AppSettingsHelper . GetSqlSugar ( ) ;
return db . Queryable < TFS_FMaterialTask , TFS_FMaterialTeamwork , TUser > ( ( a , b , c ) = > new JoinQueryInfos ( JoinType . Inner , a . FMaterialTeamID = = b . FID , JoinType . Left , a . FAddUser = = c . FID ) )
// 事项状态
. WhereIF ( mtq . FState > 0 & & mtq . FState ! = 99 , ( a , b ) = > a . FState = = mtq . FState )
// 物料号
. WhereIF ( ! string . IsNullOrEmpty ( mtq . FMaterialCode ) , ( a , b ) = > b . FMaterialCode . Equals ( mtq . FMaterialCode ) )
// 类型
. WhereIF ( mtq . FTeamworkType > 0 , ( a , b ) = > b . FTeamworkType = = mtq . FTeamworkType )
// 发起时间
. WhereIF ( mtq . FDateRange ! = null & & mtq . FDateRange [ 0 ] ! = "" , ( a , b ) = > a . FAddDate > = DateTime . Parse ( mtq . FDateRange [ 0 ] ) )
. WhereIF ( mtq . FDateRange ! = null & & mtq . FDateRange [ 1 ] ! = "" , ( a , b ) = > a . FAddDate < = DateTime . Parse ( mtq . FDateRange [ 1 ] ) )
// 责任人
//.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 < MaterialTaskRow > ( "a.*,b.FMaterialName,b.FMaterialCode,b.FTestCode,b.FMaterialType, c.FName as FAddUserName" ) . OrderBy ( ( a ) = > a . FID , OrderByType . Desc )
. ToPageList ( mtq . FPageIndex , mtq . FPageSize , ref totalNumber ) ;
}
public List < TFS_FMaterialTask > GetMaterialTasks ( int teamId )
{
var db = AppSettingsHelper . GetSqlSugar ( ) ;
List < TFS_FMaterialTask > tasks = db . Queryable < TFS_FMaterialTask > ( ) . Where ( t = > t . FMaterialTeamID = = teamId ) . ToList ( ) ;
return tasks ;
}
/// <summary>
/// 创建物料新增事项
/// </summary>
public int CreateMaterialTask ( int teamId , int teamworkType , int userId , int type , int factoryId )
{
SqlSugarClient db = AppSettingsHelper . GetSqlSugar ( ) ;
int funcType = ( int ) Constant . RoleType . 物 料 视 图 编 辑 ;
string tType = type = = 0 ? "10" : "11" ;
int taskId = - 1 ;
try
{
List < string > funcVal = db . Queryable < TBasicCode > ( ) . Where ( s = > s . FType = = ( int ) Constant . BasicCode . 物 料 视 图 编 辑 & & s . F1 = = tType & & s . FState = = 1 ) . Select ( s = > s . FValue ) . ToList ( ) ;
List < TUser > users = db . Queryable < TUser , TRole_Right > ( ( a , b ) = > new JoinQueryInfos ( JoinType . Left , a . FRoleID = = b . FRoleID ) )
. Where ( ( a , b ) = > a . FState = = 1 & & a . FDeleted ! = 1 & & b . FType = = funcType & & funcVal . Contains ( b . FFunctionID . ToString ( ) ) )
. Where ( string . Format ( "a.FFactoryID in({0})" , factoryId ) )
. GroupBy ( "a.FID,a.FFactoryID,a.FName,a.FUser" ) . Select < TUser > ( "a.FID,a.FFactoryID,a.FName,a.FUser" ) . ToList ( ) ;
if ( users . Count > 0 )
{
TFS_FMaterialTask materialTask = new TFS_FMaterialTask ( ) ;
materialTask . FMaterialTeamID = teamId ;
materialTask . FType = type ;
materialTask . FFactoryID = factoryId ;
materialTask . FCanEdit = 1 ;
materialTask . FAddUser = userId ;
materialTask . FAddDate = DateTime . Now ;
materialTask . FState = 1 ;
materialTask . FTeamworkType = teamworkType ;
if ( type = = 0 )
{
materialTask . FName = "物料分类" ;
materialTask . FDesc = "物料分类选择" ;
}
else if ( type = = 1 )
{
materialTask . FName = "物料视图" ;
materialTask . FDesc = "物料视图编辑" ;
}
else
{
materialTask . FName = "确认视图" ;
materialTask . FDesc = "物料视图确认" ;
}
materialTask . FUserID = string . Join ( "," , users . GroupBy ( ss = > ss . FID ) . Select ( sss = > sss . Key ) ) ;
materialTask . FUserName = string . Join ( "、" , users . GroupBy ( ss = > ss . FName ) . Select ( sss = > sss . Key ) ) ;
taskId = db . Insertable ( materialTask ) . IgnoreColumns ( true ) . ExecuteReturnIdentity ( ) ;
}
}
catch ( Exception ex )
{
taskId = - 1 ;
}
return taskId ;
}
public int CloseMaterialTask ( int teamId , int userId , int type )
{
SqlSugarClient db = AppSettingsHelper . GetSqlSugar ( ) ;
List < TFS_FMaterialTask > taskList = db . Queryable < TFS_FMaterialTask > ( ) . Where ( s = > s . FType = = type & & s . FMaterialTeamID = = teamId & & s . FState = = 1 ) . ToList ( ) ;
int result = 0 ;
if ( taskList ! = null & & taskList . Count > 0 )
{
TFS_FMaterialTask fmt = taskList [ 0 ] ;
fmt . FCanEdit = 2 ;
fmt . FState = 2 ;
fmt . FEditUser = userId ;
fmt . FEditDate = DateTime . Now ;
result = db . Updateable ( fmt ) . IgnoreColumns ( true ) . WhereColumns ( "FID" ) . ExecuteCommand ( ) ;
}
return result ;
}
}
}