@ -179,6 +179,8 @@ namespace ibk.IPD
private static IList < PDI_SMP_NO > ipdi = new List < PDI_SMP_NO > ( ) ;
private static IList < PDI_SMP_NO_M > ipdBH = new List < PDI_SMP_NO_M > ( ) ;
//获取手动确认并样信息
public static IList < CONFIRMSMPNO > gCONFIRMSMPNO = new List < CONFIRMSMPNO > ( ) ;
@ -190,6 +192,8 @@ namespace ibk.IPD
public static IList < QP_SMP_SEND_PWHT > gQP_SMP_SEND_PWHT = new List < QP_SMP_SEND_PWHT > ( ) ;
public static IList < QP_SMP_SEND_PWHT > gChkQP_SMP_SEND_PWHT = new List < QP_SMP_SEND_PWHT > ( ) ;
private static decimal DecPICER_NI_5 = 7700 ;
private static decimal DecPICER_NI_9 = 13100 ;
private static decimal DecGENUINE_PRICE = 4200 ;
@ -579,8 +583,8 @@ namespace ibk.IPD
Task . WaitAll ( tasks1 ) ;
logger . Info ( "【多线程获取数据结束】" ) ;
#region 更新价格
//pdismp = surMatSubService.GetPDI_SMP();
//logger.Info("【2_02并样履历】: " + pdismp.Count);
@ -618,7 +622,8 @@ namespace ibk.IPD
# endregion
#region 并样
//并样
foreach ( GP_PLATE plate in gP_PLATEs )
{
try
@ -650,9 +655,9 @@ namespace ibk.IPD
continue ;
}
//不保性能并且也不存在质量设计内容不需要取样
if ( ORD_save . MATR_FL ! = null & & ORD_save . MATR_FL ! = "Y" )
if ( ORD_save . MATR_FL ! = null & & ORD_save . MATR_FL ! = "Y" )
{
if ( string . IsNullOrEmpty ( plate . TEST_FL ) | | plate . TEST_FL ! = "Y" )
if ( string . IsNullOrEmpty ( plate . TEST_FL ) | | plate . TEST_FL ! = "Y" )
{
continue ;
}
@ -693,8 +698,15 @@ namespace ibk.IPD
}
List < QP_TEST_PLATE > plateList = gQP_TEST_PLATE . Where ( p = > p . SMP_NO = = smpno . SMP_NO ) . ToList ( ) ;
plateList . Add ( new QP_TEST_PLATE { PLATE_NO = plate . PLATE_NO , MILL_END_DATE = plate . MILL_END_DATE , THK = plate . THK ,
PLT = plate . PLT , APLY_STDSPEC = plate . APLY_STDSPEC , ACT_SMP_FL = plate . SMP_NO = = plate . PLATE_NO ? "Y" : "N" } ) ;
plateList . Add ( new QP_TEST_PLATE
{
PLATE_NO = plate . PLATE_NO ,
MILL_END_DATE = plate . MILL_END_DATE ,
THK = plate . THK ,
PLT = plate . PLT ,
APLY_STDSPEC = plate . APLY_STDSPEC ,
ACT_SMP_FL = plate . SMP_NO = = plate . PLATE_NO ? "Y" : "N"
} ) ;
//不同工厂
if ( plateList . GroupBy ( p = > p . PLT ) . Count ( ) > 1 )
{
@ -707,7 +719,7 @@ namespace ibk.IPD
decimal MaxThk = ConverDataToDecimal ( plateList . Where ( p = > ! string . IsNullOrEmpty ( p . ACT_SMP_FL ) ) . Max ( p = > p . THK ) ) ;
decimal MinThk = ConverDataToDecimal ( plateList . Where ( p = > ! string . IsNullOrEmpty ( p . ACT_SMP_FL ) ) . Min ( p = > p . THK ) ) ;
decimal ACT_SMP_THK = 0 ;
if ( plateList . Where ( p = > p . ACT_SMP_FL = = "Y" | | p . ACT_SMP_FL = = "P" ) . Count ( ) > 0 )
if ( plateList . Where ( p = > p . ACT_SMP_FL = = "Y" | | p . ACT_SMP_FL = = "P" ) . Count ( ) > 0 )
{
ACT_SMP_THK = ConverDataToDecimal ( plateList . Where ( p = > p . ACT_SMP_FL = = "Y" | | p . ACT_SMP_FL = = "P" ) . Max ( p = > p . THK ) ) ;
}
@ -716,7 +728,7 @@ namespace ibk.IPD
ACT_SMP_THK = 0 ;
}
//原
//decimal ACT_SMP_THK = ConverDataToDecimal(plateList.Where(p => p.ACT_SMP_FL == "Y" || p.ACT_SMP_FL == "P" ).Max(p => p.THK));
//decimal ACT_SMP_THK = ConverDataToDecimal(plateList.Where(p => p.ACT_SMP_FL == "Y" || p.ACT_SMP_FL == "P" ).Max(p => p.THK));
//厚度不同
if ( plateList . GroupBy ( p = > p . THK ) . Count ( ) > 1 )
{
@ -779,7 +791,7 @@ namespace ibk.IPD
}
else
{
if ( MaxThk ! = MinThk )
if ( MaxThk ! = MinThk )
{
continue ;
}
@ -807,7 +819,7 @@ namespace ibk.IPD
continue ;
}
//不可以将非流通钢板挂在流通钢板的试样下( 1_1.50) GB/T1591-Q355B-YC
if ( ( ! plate . APLY_STDSPEC . Contains ( "-NJ" ) & & smpno . STDSPEC . Contains ( "-NJ" ) ) | | ( plate . APLY_STDSPEC ! = "GB/T1591-Q355B-YC" & & smpno . STDSPEC = = "GB/T1591-Q355B-YC" ) )
if ( ( ! plate . APLY_STDSPEC . Contains ( "-NJ" ) & & smpno . STDSPEC . Contains ( "-NJ" ) ) | | ( plate . APLY_STDSPEC ! = "GB/T1591-Q355B-YC" & & smpno . STDSPEC = = "GB/T1591-Q355B-YC" ) )
{
continue ;
}
@ -955,7 +967,7 @@ namespace ibk.IPD
}
}
//船板同一试样号不能有多个交货状态检查
List < string > DELIVERY_STATUSlist = gQP_TEST_PLATE . Where ( p = > p . SMP_NO = = smpno . SMP_NO & & p . ORD_NO ! = null & & p . ORD_NO . Substring ( 0 , 2 ) ! = "OF" & & ! string . IsNullOrEmpty ( p . ACT_SMP_FL ) & & ! string . IsNullOrEmpty ( p . DELIVERY_STATUS ) & & p . PROD_CD = = "PP" ) . GroupBy ( p = > p . DELIVERY_STATUS ) . Select ( q = > q . Key ) . ToList ( ) ;
List < string > DELIVERY_STATUSlist = gQP_TEST_PLATE . Where ( p = > p . SMP_NO = = smpno . SMP_NO & & p . ORD_NO ! = null & & p . ORD_NO . Substring ( 0 , 2 ) ! = "OF" & & ! string . IsNullOrEmpty ( p . ACT_SMP_FL ) & & ! string . IsNullOrEmpty ( p . DELIVERY_STATUS ) & & p . PROD_CD = = "PP" ) . GroupBy ( p = > p . DELIVERY_STATUS ) . Select ( q = > q . Key ) . ToList ( ) ;
if ( DELIVERY_STATUSlist . Count > 1 )
{
continue ;
@ -1038,17 +1050,567 @@ namespace ibk.IPD
if ( ipdi . Count > 0 )
{
logger . InfoFormat ( "*******开始存储数据,共:{0}条*******" , ipdi . Count ) ;
logger . InfoFormat ( "*******开始存储数据,共:{0}条*******" , ipdi . Count ) ;
//保存结果数据
SurMatSubService surMatSubService = new SurMatSubService ( ) ;
surMatSubService . SaveQABSMP ( ipdi ) ; //自动确认,存储PDO发给MES
//surMatSubService.SaveQABSMP(ipdi); //自动确认,存储PDO发给MES
//测试test
//surMatSubService.SavePlateSmpno(ipdi); //手动确认
logger . InfoFormat ( "*******结束存储数据*******" ) ;
}
# endregion
#region 并号
foreach ( GP_PLATE plate in gP_PLATEs )
{
try
{
//并样存在不做并号
if ( ipdi . Where ( p = > p . PLATE_NO = = plate . PLATE_NO ) . Count ( ) > 0 )
{
continue ;
}
if ( ! ( plate . APLY_STDSPEC . Contains ( "ABS" ) | |
plate . APLY_STDSPEC . Contains ( "CCS" ) | |
plate . APLY_STDSPEC . Contains ( "DNV" ) | |
plate . APLY_STDSPEC . Contains ( "LR" ) | |
plate . APLY_STDSPEC . Contains ( "GL" ) | |
plate . APLY_STDSPEC . Contains ( "BV" ) ) )
{
continue ;
}
//镍系直接取样
if ( gNI . Where ( p = > p . STLGRD = = plate . STLGRD ) . ToList ( ) . Count > 0 )
{
continue ;
}
if ( string . IsNullOrEmpty ( plate . BOB_ORD_NO ) | | string . IsNullOrEmpty ( plate . BOB_ORD_ITEM ) )
{
// logger.InfoFormat(plate.PLATE_NO, "无原始订单直接取样");
continue ;
}
//式样号被复用不能再使用
if ( gQP_SMP_SEND_PWHT . Where ( p = > p . SMP_NO = = plate . SMP_NO & & ( ConverDataToString ( p . TEXT ) . Contains ( "并号" ) | | ConverDataToString ( p . TEXT ) . Contains ( "合并不取样" ) ) ) . Count ( ) > 0 )
{
logger . InfoFormat ( "**{0}** 并号或者合并不取样,不能复用。" , plate . SMP_NO ) ;
continue ;
}
BP_ORDER_ITEM ORD_save = gltOrder . Where ( p = > p . ORD_NO = = plate . BOB_ORD_NO & & p . ORD_ITEM = = plate . BOB_ORD_ITEM ) . FirstOrDefault ( ) ; //确认的订单信息
if ( ORD_save = = null )
{
logger . InfoFormat ( plate . PLATE_NO , "未取到原始订单信息" ) ;
continue ;
}
//A按吨位取样, B按轧制批次取样, 按钢板数量取样, d按板坯数量取样
if ( plate . SMP_LOT_UNIT = = "C" )
{
//logger.InfoFormat(plate.PLATE_NO, "按钢板数量取样直接取样");
continue ;
}
//不保性能并且也不存在质量设计内容不需要取样
if ( ORD_save . MATR_FL ! = null & & ORD_save . MATR_FL ! = "Y" )
{
if ( string . IsNullOrEmpty ( plate . TEST_FL ) | | plate . TEST_FL ! = "Y" )
{
continue ;
}
}
//化学成分检验
if ( ! ChkChemCom ( plate , ORD_save ) )
{
continue ;
}
//2、不同炉不允许并样√
List < QP_TEST_HEAD > smpnoList = gQP_TEST_HEAD_SMP . Where ( p = > p . HEAT_NO = = plate . PLATE_NO . Substring ( 0 , 8 ) ) . ToList ( ) ;
//按板坯取样,有轧制异常////1、异常坯管控: 坯料有轧制异常, 不允许和其他板坯共样√
if ( plate . SMP_LOT_UNIT = = "D" | | plate . FLG_AQC = = "1" )
{
smpnoList = gQP_TEST_HEAD_SMP . Where ( p = > p . SLAB_NO = = plate . SLAB_NO ) . ToList ( ) ;
}
if ( smpnoList . Count > 0 )
{
//记录原试样号
string BooSmp = plate . SMP_NO ;
foreach ( var smpno in smpnoList )
{
#region 并样判断
//相同标准不能并号并样的时候应该满足条件
if ( plate . APLY_STDSPEC = = smpno . STDSPEC )
{
continue ;
}
if ( smpno . ORD_THK ! = plate . THK )
{
continue ;
}
if ( smpno . SMP_LOT_UNIT = = "C" )
{
continue ;
}
if ( smpno . SMP_LOT_UNIT = = "D" & & smpno . SLAB_NO ! = plate . SLAB_NO )
{
continue ;
}
plate . SMP_NO = smpno . SMP_NO ;
List < QP_TEST_PLATE > plateList = gQP_TEST_PLATE . Where ( p = > p . SMP_NO = = smpno . SMP_NO ) . ToList ( ) ;
plateList . Add ( new QP_TEST_PLATE
{
PLATE_NO = plate . PLATE_NO ,
MILL_END_DATE = plate . MILL_END_DATE ,
THK = plate . THK ,
PLT = plate . PLT ,
APLY_STDSPEC = plate . APLY_STDSPEC ,
ACT_SMP_FL = plate . SMP_NO = = plate . PLATE_NO ? "Y" : "N"
} ) ;
//不同工厂
if ( plateList . GroupBy ( p = > p . PLT ) . Count ( ) > 1 )
{
continue ;
}
#region 并号条件判断
//1、母试样号已经是合并的试样号, 不能合并
//2、试样号和母试样号不是同炉的不允许并号
//3、母试样号和试样号必须是船板
//4、试样号必须是ABS / CCS / DNV GL / LR / GL / DNV / BV
//船板标准符合并号,否则直接取样
if ( ! ( plate . APLY_STDSPEC . Contains ( "ABS" ) | |
plate . APLY_STDSPEC . Contains ( "CCS" ) | |
plate . APLY_STDSPEC . Contains ( "DNV" ) | |
plate . APLY_STDSPEC . Contains ( "LR" ) | |
plate . APLY_STDSPEC . Contains ( "GL" ) | |
plate . APLY_STDSPEC . Contains ( "BV" ) ) )
{
continue ;
}
if ( ! ( smpno . STDSPEC . Contains ( "ABS" ) | |
smpno . STDSPEC . Contains ( "CCS" ) | |
smpno . STDSPEC . Contains ( "DNV" ) | |
smpno . STDSPEC . Contains ( "LR" ) | |
smpno . STDSPEC . Contains ( "GL" ) | |
smpno . STDSPEC . Contains ( "BV" ) ) )
{
continue ;
}
//排除船级社 标准相同
if ( plate . APLY_STDSPEC . Replace ( "ABS" , "" ) . Replace ( "CCS" , "" ) . Replace ( "DNV" , "" ) . Replace ( "LR" , "" ) . Replace ( "GL" , "" ) . Replace ( "BV" , "" )
! = smpno . STDSPEC . Replace ( "ABS" , "" ) . Replace ( "CCS" , "" ) . Replace ( "DNV" , "" ) . Replace ( "LR" , "" ) . Replace ( "GL" , "" ) . Replace ( "BV" , "" ) )
{
continue ;
}
if ( smpno . STDSPEC . Contains ( "CCS" ) )
{
if ( plate . APLY_STDSPEC . Contains ( "LR" ) )
{
continue ;
}
}
//5、同船级社试样号并号, 2个试样日期必须大于7天
//6、试样号是LR不允许并到母试样号是CCS上
//7、母试样号状态必须是钢轧站判定结束
//8、试样号和母试样号必须是同炉号
//9、试样号和母试样号订单厚度必须一致
//10、母试样号不允许是复样
//11、试样号和母试样号订单要求必须是母试样号质量设计要求包含试样质量设计要求( 包括拉伸、弯曲、冲击、夹杂、金相、成分等等的各个子项)
# endregion
//QP_STD_SMP_MERGE qP_STD = gQP_STD_SMP_MERGE.Where(p => p.PLT == plate.PLT && p.STDSPEC == plate.APLY_STDSPEC
// && p.THK_MAX >= ConverDataToDecimal(plate.THK) && p.THK_MIN <= ConverDataToDecimal(plate.THK)).FirstOrDefault();
////p.THK改为decimal类型, 如果为string类型取值有问题
//decimal MaxThk = ConverDataToDecimal(plateList.Where(p => !string.IsNullOrEmpty(p.ACT_SMP_FL)).Max(p => p.THK));
//decimal MinThk = ConverDataToDecimal(plateList.Where(p => !string.IsNullOrEmpty(p.ACT_SMP_FL)).Min(p => p.THK));
//decimal ACT_SMP_THK = 0;
//if (plateList.Where(p => p.ACT_SMP_FL == "Y" || p.ACT_SMP_FL == "P").Count() > 0)
//{
// ACT_SMP_THK = ConverDataToDecimal(plateList.Where(p => p.ACT_SMP_FL == "Y" || p.ACT_SMP_FL == "P").Max(p => p.THK));
//}
//else
//{
// ACT_SMP_THK = 0;
//}
////原
////decimal ACT_SMP_THK = ConverDataToDecimal(plateList.Where(p => p.ACT_SMP_FL == "Y" || p.ACT_SMP_FL == "P" ).Max(p => p.THK));
////厚度不同
//if (plateList.GroupBy(p => p.THK).Count() > 1)
//{
// if (plateList.GroupBy(p => new { V = p.PLATE_NO.Substring(0, 10), p.APLY_STDSPEC }).Count() > 1)
// {
// }
// else
// {
// if (ACT_SMP_THK == 0 || ACT_SMP_THK < MaxThk)
// {
// continue;
// }
// }
// if (qP_STD == null)
// {
// continue;
// }
//}
//if (qP_STD != null)
//{
// if (!string.IsNullOrEmpty(qP_STD.SEQ.ToString()) && plate.BOB_ORD_KND == "A")
// {
// if (MinThk < qP_STD.THK_MIN || MaxThk > qP_STD.THK_MAX)
// {
// continue;
// }
// if (MaxThk - MinThk > qP_STD.THK_DIFF)
// {
// continue;
// }
// if (ACT_SMP_THK == 0 || ACT_SMP_THK < MaxThk)
// {
// continue;
// }
// DateTime Mindate = DateTime.Parse(plateList.Min(p => p.MILL_END_DATE));
// DateTime MAXdate = DateTime.Parse(plateList.Max(p => p.MILL_END_DATE));
// TimeSpan Mill_Span = TimeSpan.FromTicks(Math.Abs((MAXdate - Mindate).Ticks));
// if (plate.PLT == "C1")
// {
// if (Mill_Span.TotalHours > 60)
// {
// continue;
// }
// }
// else
// {
// if (Mill_Span.TotalHours > 24)
// {
// continue;
// }
// }
// }
// else
// {
// if (MaxThk != MinThk)
// {
// continue;
// }
// }
//}
//else
//{
// if (MaxThk != MinThk)
// {
// continue;
// }
//}
////钢板有客户特殊要求号,且与试样订单不一致';
//if (smpno.CUST_SPEC_NO != plate.PCUST_SPEC_NO)
//{
// continue;
//}
//试样炉有异常////1、异常坯管控: 坯料有轧制异常, 不允许和其他板坯共样√
if ( smpno . FLG_AQC = = "1" & & smpno . SLAB_NO ! = plate . SLAB_NO )
{
continue ;
}
////证书是否被清理 清理了需要取样,没清理可以并样
//if (gtQP_CERT_SMP.Where(p => p.SMP_NO == smpno.SMP_NO).ToList().Count > 0)
//{
// continue;
//}
////不同的材质修约标准不可以共样 ( 2_0.30)
//if (plate.ROUNDSTD == "A" && smpno.ROUNDSTD == "C")
//{
// continue;
//}
//不可以将非流通钢板挂在流通钢板的试样下( 1_1.50) GB/T1591-Q355B-YC
if ( ( ! plate . APLY_STDSPEC . Contains ( "-NJ" ) & & smpno . STDSPEC . Contains ( "-NJ" ) ) | | ( plate . APLY_STDSPEC ! = "GB/T1591-Q355B-YC" & & smpno . STDSPEC = = "GB/T1591-Q355B-YC" ) )
{
continue ;
}
plate . SUB_LACK_CON = "" ;
//物理性能检验
if ( ! ChkPhyCom ( plate , ORD_save ) )
{
continue ;
}
//钢板订单试样订单对比
if ( ! ChkPhyCom ( smpno , ORD_save ) )
{
continue ;
}
if ( ! string . IsNullOrEmpty ( plate . SUB_LACK_CON ) )
{
continue ;
}
/////第三方见证机关检查,试样号下钢板见证机关要求一致(4_2.30)
//if (plate.PLATE_NO != smpno.SMP_NO)
//{
// if (!string.IsNullOrEmpty(plate.INSP_CD) || !string.IsNullOrEmpty(plate.INSPECT_ORGAN))
// {
// string INSP_CD = plate.INSP_CD;
// string INSP_CD1 = plate.INSP_CD;
// string INSPECT_ORGAN = plate.INSPECT_ORGAN;
// if (string.IsNullOrEmpty(INSP_CD))
// {
// INSP_CD = gQP_TEST_PLATE.Where(p => p.SMP_NO == plate.SMP_NO).FirstOrDefault().INSP_CD;
// }
// if (string.IsNullOrEmpty(INSPECT_ORGAN))
// {
// INSPECT_ORGAN = gQP_TEST_PLATE.Where(p => p.SMP_NO == plate.SMP_NO).FirstOrDefault().INSPECT_ORGAN;
// }
// //plate.INSP_CD空值转为空字符串
// if (INSP_CD1 != INSP_CD || plate.INSPECT_ORGAN != INSPECT_ORGAN)
// {
// continue;
// }
// //if (plate.INSP_CD != INSP_CD || plate.INSPECT_ORGAN != INSPECT_ORGAN)
// //{
// // continue;
// //}
// }
//}
if ( plate . SMP_LOT_UNIT = = "A" )
{
if ( gQP_TEST_PLATE . Where ( p = > p . SMP_NO = = smpno . SMP_NO & & ! string . IsNullOrEmpty ( p . ACT_SMP_FL ) & & p . APLY_STDSPEC = = smpno . STDSPEC & & p . END_RES ! = "3" ) . Sum ( p = > ConverDataToDecimal ( p . WGT ) ) + ConverDataToDecimal ( plate . WGT ) > plate . SMP_STD_WGT )
{
continue ;
}
}
if ( gQP_STD_HEAD . Where ( p = > p . STDSPEC = = plate . APLY_STDSPEC & & p . CERT_TYPE = = "S" ) . ToList ( ) . Count > 0 ) //是否船板
{
////质保书管控
//if (smpno.CERT_RPT_FL == "Y")
//{
// //船板质保书已经产制,不允许增加钢板
// if (gQP_CERT_DETAIL.Where(p => p.SMP_NO == BooSmp && p.PROD_NO_TEXT.Contains(plate.PLATE_NO) && string.Format(plate.LEN + "*" + plate.WID + "*" + plate.THK) == p.PROD_SIZE).Count() > 0)
// {
// if (string.IsNullOrEmpty(smpno.STDSPEC) && plate.APLY_STDSPEC == smpno.STDSPEC)
// {
// }
// else
// {
// continue;
// }
// }
// else
// {
// continue;
// }
//}
//船板50吨
if ( gQP_TEST_PLATE . Where ( p = > p . SMP_NO = = smpno . SMP_NO & & ! string . IsNullOrEmpty ( p . ACT_SMP_FL ) & & p . APLY_STDSPEC = = smpno . STDSPEC & & p . END_RES ! = "3" ) . Sum ( p = > ConverDataToDecimal ( p . WGT ) ) + ConverDataToDecimal ( plate . WGT ) > 50 )
{
continue ;
}
////6、船板不同标准号不允许并样
//if (plate.APLY_STDSPEC != smpno.STDSPEC)
//{
// continue;
//}
//3、船板样最多只允许带42块钢板 改为43块√
if ( smpno . PlateCount > = 42 )
{
continue ;
}
////海工板非海工板不可共用试样号
//if (plate.MARINEBOARD != smpno.MARINEBOARD)
//{
// continue;
//}
//8、多船级社订单试样订单需要满足钢板订单多船级社要求
//if (!string.IsNullOrEmpty(plate.ISSHIPORDER) && plate.ISSHIPORDER == "Y")
//{
// if (!string.IsNullOrEmpty(smpno.ISSHIPORDER) && plate.ISSHIPORDER == "Y")
// {
// List<string> Plist = new List<string>();
// if (!string.IsNullOrEmpty(plate.INSPUNITCODE))
// {
// Plist.Add(plate.INSPUNITCODE);
// }
// if (!string.IsNullOrEmpty(plate.INSPUNITCODEA))
// {
// Plist.Add(plate.INSPUNITCODEA);
// }
// if (!string.IsNullOrEmpty(plate.INSPUNITCODEB))
// {
// Plist.Add(plate.INSPUNITCODEB);
// }
// if (!string.IsNullOrEmpty(plate.INSPUNITCODEC))
// {
// Plist.Add(plate.INSPUNITCODEC);
// }
// List<string> SMPPlist = new List<string>();
// if (!string.IsNullOrEmpty(smpno.INSPUNITCODE))
// {
// SMPPlist.Add(smpno.INSPUNITCODE);
// }
// if (!string.IsNullOrEmpty(smpno.INSPUNITCODEA))
// {
// SMPPlist.Add(smpno.INSPUNITCODEA);
// }
// if (!string.IsNullOrEmpty(smpno.INSPUNITCODEB))
// {
// SMPPlist.Add(smpno.INSPUNITCODEB);
// }
// if (!string.IsNullOrEmpty(smpno.INSPUNITCODEC))
// {
// SMPPlist.Add(smpno.INSPUNITCODEC);
// }
// if (!Plist.OrderBy(p => p).SequenceEqual(SMPPlist.OrderBy(p => p)))
// {
// //logger.InfoFormat(plate.PLATE_NO + "多船级社订单试样订单需要满足钢板订单多船级社要求" + smpno.SMP_NO);
// continue;
// }
// }
// else
// {
// continue;
// }
//}
//船板同一试样号不能有多个交货状态检查
//List<string> DELIVERY_STATUSlist = gQP_TEST_PLATE.Where(p => p.SMP_NO == smpno.SMP_NO && p.ORD_NO != null && p.ORD_NO.Substring(0, 2) != "OF" && !string.IsNullOrEmpty(p.ACT_SMP_FL) && !string.IsNullOrEmpty(p.DELIVERY_STATUS) && p.PROD_CD == "PP").GroupBy(p => p.DELIVERY_STATUS).Select(q => q.Key).ToList();
//if (DELIVERY_STATUSlist.Count > 1)
//{
// continue;
//}
//else
//{
// if (DELIVERY_STATUSlist.Count == 1 && plate.DELIVERY_STATUS != DELIVERY_STATUSlist.FirstOrDefault())
// {
// continue;
// }
//}
}
#endregion 并样判断
if ( smpno . SMP_NO = = null )
{
continue ;
}
//判断是否是并号过的式样号
gChkQP_SMP_SEND_PWHT = surMatSubService . GetChkQP_SMP_SEND_PWHT ( smpno . SMP_NO ) ;
if ( gChkQP_SMP_SEND_PWHT . Count ( ) > 0 )
{
logger . InfoFormat ( "**{0}--{1}** 并号或者合并不取样,不能复用。" , plate . SMP_NO , gChkQP_SMP_SEND_PWHT . FirstOrDefault ( ) . TEXT ) ;
continue ;
}
double price = getExperPrice ( plate , ORD_save ) ;
PDI_SMP_NO_M pdi = new PDI_SMP_NO_M ( ) ;
pdi . TIMESTAMP = GetTimeStamp ( ) ;
pdi . PLATE_NO = plate . PLATE_NO ;
//倒数第二位换成9
pdi . SMP_NO = plate . PLATE_NO . Length > = 2 ? plate . PLATE_NO . Substring ( 0 , plate . PLATE_NO . Length - 2 ) + '9' + plate . PLATE_NO . Substring ( plate . PLATE_NO . Length - 1 ) : plate . PLATE_NO ;
logger . InfoFormat ( "钢板号:{0},订单号-协议号:{1}-{2},可并号,原试样号:{3}=>新试样号:{4}" , plate . PLATE_NO , ORD_save . ORD_NO , ORD_save . ORD_ITEM , smpno . SMP_NO , pdi . SMP_NO ) ;
//式样号 母号
pdi . SMP_NO_M = smpno . SMP_NO ;
pdi . PROD_CD = plate . PROD_CD ;
pdi . SMP_LOC = plate . SMP_LOC ;
pdi . SMP_LEN = plate . SMP_LEN ;
pdi . SMP_FLG = "N" ;
pdi . SYNOPSIS = 1 ;
pdi . RETRIEVAL = "2" ; //2并号 ※
pdi . ORD_NO = plate . ORD_NO ;
pdi . ORD_ITEM = plate . ORD_ITEM ;
pdi . COSTS = price . ToString ( ) ;
pdi . ORG_ORD_NO = plate . ORG_ORD_NO ;
pdi . ORG_ORD_ITEM = plate . ORG_ORD_ITEM ;
pdi . ORD_FL = plate . ORD_FL ;
pdi . CUST_CD = plate . CUST_CD ;
pdi . WOO_RSN = plate . WOO_RSN ;
pdi . THK = plate . THK ;
pdi . WID = plate . WID ;
pdi . LEN = plate . LEN ;
pdi . WGT = plate . WGT ;
pdi . OUT_SHEET_NO = plate . OUT_SHEET_NO ;
pdi . PLT = plate . PLT ;
pdi . PROD_DATE = plate . PROD_DATE ;
pdi . MILL_END_DATE = plate . MILL_END_DATE ;
pdi . ORD_PROD_END_TIME = plate . PROD_DATE ;
pdi . IN_PLT_DATE = plate . IN_PLT_DATE ;
pdi . SHP_TIME = plate . SHP_TIME ;
pdi . APLY_STDSPEC = plate . APLY_STDSPEC ;
pdi . CUR_INV = plate . CUR_INV ;
pdi . LOC = plate . LOC ;
pdi . DEL_TO_DATE = plate . DEL_TO_DATE ;
pdi . INS_DATE = DateTime . Now . ToString ( "yyyyMMddHHmmss" ) ;
//pdi.DISPOSE = "3";
pdi . IS_STATE = "0" ; //存储履历界面需改为1
pdi . SMP_STD_WGT = plate . SMP_STD_WGT ;
pdi . PROC_CD = plate . PROC_CD ;
pdi . PROD_GRD = plate . PROD_GRD ;
pdi . SURF_GRD = plate . SURF_GRD ;
pdi . SMP_STDSPEC = gQP_TEST_HEAD_SMP . Where ( p = > p . SMP_NO = = smpno . SMP_NO ) . Select ( p = > p . STDSPEC ) . FirstOrDefault ( ) ; //试样标准
pdi . ORD_STDSPEC = ORD_save . STDSPEC ;
pdi . CERT_TYPE = gQP_STD_HEAD . Where ( p = > p . STDSPEC = = pdi . APLY_STDSPEC ) . Select ( p = > p . CERT_TYPE ) . FirstOrDefault ( ) ; //质保书类型
pdi . ORD_THK = ORD_save . ORD_THK ;
ipdBH . Add ( pdi ) ;
//logger.InfoFormat("钢板号=>{0},试样号=>{1},工厂:{2},进程状态:{3},质保书:{4}", plate.PLATE_NO, pdi.SMP_NO,pdi.PLT,pdi.PROC_CD,pdi.CERT_TYPE);
//gSmpNoList.Add(plate.PLATE_NO + "+++++++++" + plate.SMP_NO + "+++++++" + plate.PLT);
}
}
else
{
//logger.InfoFormat("钢板号:{0} 同炉没有相同厚度试样号", plate.PLATE_NO);
}
}
catch ( Exception ex )
{
logger . InfoFormat ( "$$钢板号:{0} => 报错: {1}" , plate . PLATE_NO , ex . ToString ( ) ) ;
}
}
if ( ipdBH . Count > 0 )
{
logger . InfoFormat ( "*******开始存储数据,共:{0}条*******" , ipdBH . Count ) ;
//保存结果数据
SurMatSubService surMatSubService = new SurMatSubService ( ) ;
surMatSubService . SaveQABSMP_M ( ipdBH ) ; //自动确认,存储PDO发给MES
//测试test
//surMatSubService.SavePlateSmpno(ipdBH); //手动确认
logger . InfoFormat ( "*******结束存储数据*******" ) ;
}
# endregion
}
# endregion