2022-09-05 16:36:31 +08:00
using FineUIPro ;
2023-11-29 18:02:03 +08:00
2022-09-05 16:36:31 +08:00
using System ;
using System.Collections ;
using System.Collections.Generic ;
using System.Data ;
using System.Data.SqlClient ;
using System.Linq ;
using System.Text ;
namespace BLL
{
2025-05-12 19:05:13 +08:00
/// <summary>
/// 包装管理服务类
/// </summary>
2022-09-05 16:36:31 +08:00
public static class HJGL_PackagingmanageService
{
2022-11-01 17:11:30 +08:00
public class PackagingManageItem
{
public string PackagingManageId { get ; set ; }
public string PackagingCode { get ; set ; }
public string ProjectId { get ; set ; }
public string ProjectName { get ; set ; }
2025-05-08 18:38:55 +08:00
public string DriverName { get ; set ; }
public string DriverPhone { get ; set ; }
public string LicensePlateNumber { get ; set ; }
2022-11-01 17:11:30 +08:00
public string ContactName { get ; set ; }
public string ContactPhone { get ; set ; }
public string StackingPosition { get ; set ; }
public int? State { get ; set ; }
2025-05-12 19:05:13 +08:00
public int? TypeInt { get ; set ; }
public string TypeString { get ; set ; }
2022-11-01 17:11:30 +08:00
public string ReceiveMan { get ; set ; }
public string ReceiveDate { get ; set ; }
public string PlanStartDate { get ; set ; }
2024-01-22 10:35:43 +08:00
public string Code { get ; set ; }
2024-09-28 16:59:44 +08:00
public string TrainNumber { get ; set ; }
2025-05-08 18:38:55 +08:00
public string TrainNumberOld { get ; set ; }
2022-11-01 17:11:30 +08:00
}
2025-01-07 19:00:48 +08:00
2022-09-05 16:36:31 +08:00
/// <summary>
/// 未到场
/// </summary>
public static int state_0 = 0 ;
2025-05-12 19:05:13 +08:00
2022-09-05 16:36:31 +08:00
/// <summary>
/// 已发货
/// </summary>
public static int state_1 = 1 ;
2025-05-12 19:05:13 +08:00
2022-09-05 16:36:31 +08:00
/// <summary>
/// 已到场
/// </summary>
public static int state_2 = 2 ;
2025-05-12 19:05:13 +08:00
2022-09-05 16:36:31 +08:00
public static ListItem [ ] GetState ( )
{
ListItem [ ] list = new ListItem [ 3 ] ;
2023-12-19 09:00:47 +08:00
list [ 0 ] = new ListItem ( "预出库" , state_0 . ToString ( ) ) ;
2022-09-05 16:36:31 +08:00
list [ 1 ] = new ListItem ( "已出库" , state_1 . ToString ( ) ) ;
list [ 2 ] = new ListItem ( "已到场" , state_2 . ToString ( ) ) ;
return list ;
}
2025-05-08 18:38:55 +08:00
public enum TypeInt : int
2022-09-05 16:36:31 +08:00
{
2025-05-08 18:38:55 +08:00
预 制 组 件 = 10 ,
预 制 散 件 = 20 ,
其 他 材 料 = 30 ,
2022-09-05 16:36:31 +08:00
}
2025-05-12 19:05:13 +08:00
2025-05-08 18:38:55 +08:00
public static Dictionary < string , int > TypeIntMap = new Dictionary < string , int >
{
{ "预制组件" , ( int ) TypeInt . 预 制 组 件 } ,
{ "预制散件" , ( int ) TypeInt . 预 制 散 件 } ,
{ "其他材料" , ( int ) TypeInt . 其 他 材 料 } ,
} ;
2025-05-12 19:05:13 +08:00
public static string GetTypeString ( int? TypeInt )
{
return TypeIntMap . FirstOrDefault ( c = > c . Value = = TypeInt ) . Key ;
}
2022-09-05 16:36:31 +08:00
public static Model . HJGL_PackagingManage GetHJGL_PackagingManageById ( string PackagingManageId )
{
2023-10-10 19:13:59 +08:00
using ( Model . SGGLDB db = new Model . SGGLDB ( Funs . ConnString ) )
{
return db . HJGL_PackagingManage . FirstOrDefault ( x = > x . PackagingManageId = = PackagingManageId ) ;
}
2022-09-05 16:36:31 +08:00
}
2025-05-12 19:05:13 +08:00
2022-11-01 17:11:30 +08:00
public static string GetMinPlanStartDate ( string PackagingManageId )
{
string PlanStartDate = "" ;
DataTable tb = BLL . HJGL_PackagingmanageService . GetPackagingDetailById ( PackagingManageId ) ;
2024-10-17 00:01:35 +08:00
if ( tb = = null | | tb . Rows . Count = = 0 )
{
return PlanStartDate ;
}
2022-11-01 17:11:30 +08:00
var dtTable = tb . AsEnumerable ( ) . OrderBy ( o = > o [ "PlanStartDate" ] ) . CopyToDataTable ( ) ;
if ( dtTable . Rows ! = null & & dtTable . Rows . Count > 0 )
{
PlanStartDate = dtTable . Rows [ 0 ] [ "PlanStartDate" ] . ToString ( ) ;
}
return PlanStartDate ;
}
2025-05-12 19:05:13 +08:00
2025-05-08 18:38:55 +08:00
public static ( List < PackagingManageItem > Data , int Total ) GetPackagingManageList ( string projectId , string PackagingCode , int pageIndex = 0 , int pageSize = 20 )
2022-11-01 17:11:30 +08:00
{
using ( Model . SGGLDB db = new Model . SGGLDB ( Funs . ConnString ) )
{
2025-05-08 18:38:55 +08:00
var baseQuery = ( from x in db . HJGL_PackagingManage
2025-05-12 19:05:13 +08:00
join n in db . Base_Project on x . ProjectId equals n . ProjectId
join m in db . Person_Persons on x . ReceiveMan equals m . PersonId into tt
from t in tt . DefaultIfEmpty ( )
2025-05-08 18:38:55 +08:00
join train in db . HJGL_TrainNumberManage on x . TrainNumberId equals train . Id into trains
from train in trains . DefaultIfEmpty ( )
where x . ProjectId = = projectId
2023-11-29 18:02:03 +08:00
& & ( string . IsNullOrEmpty ( PackagingCode ) | | x . PackagingCode . Contains ( PackagingCode ) )
2025-05-12 19:05:13 +08:00
select new PackagingManageItem
{
PackagingManageId = x . PackagingManageId ,
PackagingCode = x . PackagingCode ,
ProjectName = n . ProjectName ,
ContactName = train . ContactName ,
ContactPhone = train . ContactPhone ,
DriverName = train . DriverName ,
DriverPhone = train . DriverPhone ,
LicensePlateNumber = train . LicensePlateNumber ,
StackingPosition = x . StackingPosition ,
State = x . State ,
TypeInt = x . TypeInt ,
TypeString = GetTypeString ( x . TypeInt ) ,
ReceiveMan = t . PersonName ,
ReceiveDate = x . ReceiveDate . HasValue ? string . Format ( "{0:g}" , x . ReceiveDate ) : "" ,
PlanStartDate = GetMinPlanStartDate ( x . PackagingManageId ) ,
TrainNumberOld = x . TrainNumber ,
TrainNumber = train . TrainNumber ,
Code = x . PackagingCode . Substring ( 0 , x . PackagingCode . LastIndexOf ( "-" ) ) . Substring ( x . PackagingCode . Substring ( 0 , x . PackagingCode . LastIndexOf ( "-" ) ) . LastIndexOf ( "-" ) + 1 ) ,
} ) . Distinct ( ) ;
2025-05-08 18:38:55 +08:00
var pagedData = baseQuery
. OrderByDescending ( x = > x . Code )
. Skip ( ( pageIndex ) * pageSize )
. Take ( pageSize )
. ToList ( ) ;
// 获取总记录数(延迟计数优化)
2025-05-12 19:05:13 +08:00
var totalCount = baseQuery . Count ( ) ;
return ( pagedData , totalCount ) ;
2022-11-01 17:11:30 +08:00
}
2025-05-12 19:05:13 +08:00
}
2022-09-05 16:36:31 +08:00
/// <summary>
/// 形成出库单
/// </summary>
/// <param name="PackagingManageId"></param>
public static void PutOutOrder ( string PackagingManageId )
{
2023-11-29 18:02:03 +08:00
var model = GetHJGL_PackagingManageById ( PackagingManageId ) ;
if ( model . State = = state_0 )
2022-09-05 16:36:31 +08:00
{
model . State = state_1 ;
UpdateHJGL_PackagingManage ( model ) ;
}
}
2025-05-12 19:05:13 +08:00
2022-09-05 16:36:31 +08:00
/// <summary>
/// 根据主键获取装箱明细
/// </summary>
/// <param name="PackagingManageId"></param>
/// <returns></returns>
public static DataTable GetPackagingDetailById ( string PackagingManageId )
{
DataTable tb = new DataTable ( ) ;
var model = GetHJGL_PackagingManageById ( PackagingManageId ) ;
2023-11-29 18:02:03 +08:00
if ( ! string . IsNullOrEmpty ( model . PipelineComponentId ) )
2022-09-05 16:36:31 +08:00
{
var PipelineComponentIds = model . PipelineComponentId . Split ( ',' ) ;
2023-12-14 10:35:55 +08:00
string strSql = @"select com.PipelineComponentId, com.PipelineComponentCode,isnull(pipe.PlanStartDate,getdate()) as PlanStartDate,unitwork.UnitWorkName,'1' as num ,'个' as CU
2025-05-12 19:05:13 +08:00
from HJGL_Pipeline_Component com
2022-09-05 16:36:31 +08:00
left join HJGL_Pipeline pipe on com.PipelineId=pipe.PipelineId
left join WBS_UnitWork unitwork on pipe.UnitWorkId=unitwork.UnitWorkId
" ;
List < SqlParameter > listStr = new List < SqlParameter > ( ) ;
strSql + = string . Format ( "where com.PipelineComponentId in ( {0}) " , "'" + string . Join ( "','" , PipelineComponentIds ) + "'" ) ;
2023-12-04 17:27:07 +08:00
strSql + = " order by com.PipelineComponentCode" ;
2022-09-05 16:36:31 +08:00
SqlParameter [ ] parameter = listStr . ToArray ( ) ;
tb = SQLHelper . GetDataTableRunText ( strSql , parameter ) ;
2023-11-29 18:02:03 +08:00
}
2022-09-05 16:36:31 +08:00
return tb ;
}
/// <summary>
/// 根据项目号获取包装编号历史记录
/// </summary>
/// <param name="projectid"></param>
/// <returns></returns>
2023-11-29 18:02:03 +08:00
public static List < string > GetPackagingCode ( string projectid )
2022-09-05 16:36:31 +08:00
{
Model . SGGLDB db = Funs . DB ;
var q = ( from x in db . HJGL_PackagingManage
where x . ProjectId . Contains ( projectid )
select x . PackagingCode ) . Distinct ( ) . ToList ( ) ;
return q ;
}
2025-05-12 19:05:13 +08:00
public static List < Model . HJGL_PackagingManage > GetPackagingManage ( string trainNumberId )
{
Model . SGGLDB db = Funs . DB ;
var q = ( from x in db . HJGL_PackagingManage
where x . TrainNumberId = = trainNumberId
select x ) . Distinct ( ) . ToList ( ) ;
return q ;
}
public static string GetNewPackagingCode ( string projectid )
{
string code = ProjectService . GetProjectCodeByProjectId ( projectid ) + "-" + string . Format ( "{0:yyyyMMdd}" , DateTime . Now ) + "-" ;
var q = GetPackagingManageList ( projectid , code ) ;
if ( q . Total > 0 )
{
code = code + ( q . Total + 1 ) . ToString ( ) . PadLeft ( 3 , '0' ) ;
}
else
{
code = code + "001" ;
}
return code ;
}
2022-09-05 16:36:31 +08:00
/// <summary>
/// 新增实体
/// </summary>
/// <param name="newtable"></param>
public static void AddHJGL_PackagingManage ( Model . HJGL_PackagingManage newtable )
{
Model . HJGL_PackagingManage table = new Model . HJGL_PackagingManage
{
PackagingManageId = newtable . PackagingManageId ,
PackagingCode = newtable . PackagingCode ,
ProjectId = newtable . ProjectId ,
PipelineComponentId = newtable . PipelineComponentId ,
StackingPosition = newtable . StackingPosition ,
State = newtable . State ,
ContactName = newtable . ContactName ,
ContactPhone = newtable . ContactPhone ,
Remark = newtable . Remark ,
2022-10-15 15:40:49 +08:00
ReceiveDate = newtable . ReceiveDate ,
ReceiveMan = newtable . ReceiveMan ,
2025-05-08 18:38:55 +08:00
TrainNumber = newtable . TrainNumber ,
TrainNumberId = newtable . TrainNumberId ,
TypeInt = newtable . TypeInt ,
2022-09-05 16:36:31 +08:00
} ;
2025-01-07 19:00:48 +08:00
var db1 = Funs . DB ;
db1 . HJGL_PackagingManage . InsertOnSubmit ( table ) ;
db1 . SubmitChanges ( ) ;
2022-09-05 16:36:31 +08:00
}
public static void UpdateHJGL_PackagingManage ( Model . HJGL_PackagingManage newtable )
{
2025-01-07 19:00:48 +08:00
var db1 = Funs . DB ;
Model . HJGL_PackagingManage table = db1 . HJGL_PackagingManage . FirstOrDefault ( x = > x . PackagingManageId = = newtable . PackagingManageId ) ;
2022-09-05 16:36:31 +08:00
if ( table ! = null )
{
table . PackagingManageId = newtable . PackagingManageId ;
table . PackagingCode = newtable . PackagingCode ;
table . ProjectId = newtable . ProjectId ;
table . PipelineComponentId = newtable . PipelineComponentId ;
table . StackingPosition = newtable . StackingPosition ;
table . State = newtable . State ;
table . ContactName = newtable . ContactName ;
table . ContactPhone = newtable . ContactPhone ;
table . Remark = newtable . Remark ;
2023-11-29 18:02:03 +08:00
table . ReceiveMan = newtable . ReceiveMan ;
table . ReceiveDate = newtable . ReceiveDate ;
2024-09-28 16:59:44 +08:00
table . TrainNumber = newtable . TrainNumber ;
2025-05-08 18:38:55 +08:00
table . TrainNumberId = newtable . TrainNumberId ;
table . TypeInt = newtable . TypeInt ;
2025-01-07 19:00:48 +08:00
db1 . SubmitChanges ( ) ;
2022-09-05 16:36:31 +08:00
}
}
2025-05-12 19:05:13 +08:00
2022-09-05 16:36:31 +08:00
public static void DeleteHJGL_PackagingManageById ( string PackagingManageId )
{
2025-01-07 19:00:48 +08:00
var db1 = Funs . DB ;
Model . HJGL_PackagingManage table = db1 . HJGL_PackagingManage . FirstOrDefault ( x = > x . PackagingManageId = = PackagingManageId ) ;
2022-09-05 16:36:31 +08:00
if ( table ! = null )
{
2025-01-07 19:00:48 +08:00
db1 . HJGL_PackagingManage . DeleteOnSubmit ( table ) ;
db1 . SubmitChanges ( ) ;
2022-09-05 16:36:31 +08:00
}
}
/// <summary>
/// 管线下拉框
/// </summary>
/// <param name="dropName">下拉框名字</param>
/// <param name="isShowPlease">是否显示请选择</param>
public static void InitPipelineDownList ( FineUIPro . DropDownList dropName , string projectid , bool isShowPlease )
{
dropName . DataValueField = "string" ;
dropName . DataTextField = "string" ;
dropName . DataSource = GetPackagingCode ( projectid ) ;
dropName . DataBind ( ) ;
if ( isShowPlease )
{
Funs . FineUIPleaseSelect ( dropName ) ;
}
}
}
}