@ -331,6 +331,13 @@ public class SubController {
public JsonData SubData ( PmSubHis pmSubHis , @PathVariable Long organizationId ) {
SecurityTokenHelper . validTokenIgnoreInsert ( pmSubHis ) ;
String strSlab = pmSubHis . getSlabNo ( ) ;
long subMode = 1 ;
if ( strSlab = = null | | strSlab = = "" ) {
subMode = 2 ;
}
long finalSubMode = subMode ;
SubParams subParams = new SubParams ( ) ;
subParams . setSlabNo ( strSlab ) ;
//测试阶段需要指定板坯号
@ -346,6 +353,10 @@ public class SubController {
logger . info ( "***初次分组数量*** " + gltGrpOrderFir . size ( ) ) ;
//执行日志保存
subService . saveSubLog ( "初次分组数量" , finalSubMode , "成功" , String . valueOf ( gltGrpOrderFir . size ( ) ) , organizationId ) ;
//被使用的订单数据实例化
plistOrdHis = new ArrayList < > ( ) ;
@ -353,34 +364,53 @@ public class SubController {
plistSlab . forEach ( p - > {
logger . info ( "*************板坯开始{}************* " , p . getSlabNo ( ) ) ;
logger . info ( "***板坯信息:{} 厚宽长:{}*{}*{} " , p . getSlabNo ( ) , p . getSlabActThk ( ) , p . getSlabActWid ( ) , p . getSlabActLen ( ) ) ;
//执行日志保存
subService . saveSubLog ( p . getSlabNo ( ) , finalSubMode , "成功" , "板坯信息 厚宽长:" + p . getSlabActThk ( ) + "*" + p . getSlabActWid ( ) + "*" + p . getSlabActLen ( ) , organizationId ) ;
// 判断板坯的长度是否在plistpmAutoSubSettingDO配置的范围内
if ( p . getSlabActLen ( ) . compareTo ( plistpmAutoSubSettingDO . get ( 0 ) . getMatLenMin ( ) ) < 0 & & p . getSlabActLen ( ) . compareTo ( plistpmAutoSubSettingDO . get ( 0 ) . getMatLenMax ( ) ) > 0 ) {
logger . info ( "***板坯信息被排除:{} 长度不在范围内 " , p . getSlabNo ( ) ) ;
//执行日志保存
subService . saveSubLog ( p . getSlabNo ( ) , finalSubMode , "失败" , "板坯信息被排除 原因 长度不在范围内" , organizationId ) ;
return ;
}
// 判断板坯的宽度是否在plistpmAutoSubSettingDO配置的范围内
if ( p . getSlabActWid ( ) . compareTo ( plistpmAutoSubSettingDO . get ( 0 ) . getMatWidthMin ( ) ) < 0 & & p . getSlabActWid ( ) . compareTo ( plistpmAutoSubSettingDO . get ( 0 ) . getMatWidthMax ( ) ) > 0 ) {
logger . info ( "***板坯信息被排除:{} 宽度不在范围内 " , p . getSlabNo ( ) ) ;
//执行日志保存
subService . saveSubLog ( p . getSlabNo ( ) , finalSubMode , "失败" , "板坯信息被排除 原因 宽度不在范围内" , organizationId ) ;
return ;
}
// 判断板坯的厚度是否在plistpmAutoSubSettingDO配置的范围内
if ( p . getSlabActThk ( ) . compareTo ( plistpmAutoSubSettingDO . get ( 0 ) . getMatThickMin ( ) ) < 0 & & p . getSlabActThk ( ) . compareTo ( plistpmAutoSubSettingDO . get ( 0 ) . getMatThickMax ( ) ) > 0 ) {
logger . info ( "***板坯信息被排除:{} 厚度不在范围内 " , p . getSlabNo ( ) ) ;
//执行日志保存
subService . saveSubLog ( p . getSlabNo ( ) , finalSubMode , "失败" , "板坯信息被排除 原因 厚度不在范围内" , organizationId ) ;
return ;
}
//判断plistpmIrsubableSlabDO是否包含P.SlabNO范围内
if ( plistpmIrsubableSlabDO . stream ( ) . anyMatch ( x - > x . getSlabNo ( ) . equals ( p . getSlabNo ( ) ) ) ) {
logger . info ( "***板坯信息被排除:{} 不可组板 " , p . getSlabNo ( ) ) ;
//执行日志保存
subService . saveSubLog ( p . getSlabNo ( ) , finalSubMode , "失败" , "板坯信息被排除 原因 判断plistpmIrsubableSlabDO是否包含P.SlabNO范围内 不可组板" , organizationId ) ;
return ;
}
//判断plistpmRetainStDO是否包含P的钢种, 判断这个板坯的钢种是否可组板
if ( plistpmRetainStDO . stream ( ) . anyMatch ( x - > x . getStNo ( ) . equals ( p . getStNo ( ) ) ) ) {
logger . info ( "***板坯信息被排除:{} 不可组板 " , p . getSlabNo ( ) ) ;
//执行日志保存
subService . saveSubLog ( p . getSlabNo ( ) , finalSubMode , "失败" , "板坯信息被排除 原因 判断plistpmRetainStDO是否包含P的钢种, 判断这个板坯的钢种是否可组板 不可组板" , organizationId ) ;
return ;
}
@ -393,8 +423,13 @@ public class SubController {
SetGrpConBinDataBySlab ( p ) ;
logger . info ( "***二次分组1数量*** " + gltGCalGrp . size ( ) ) ;
//执行日志保存
subService . saveSubLog ( p . getSlabNo ( ) , finalSubMode , "成功" , "二次分组1数量: " + gltGCalGrp . size ( ) , organizationId ) ;
logger . info ( "***二次分组21数量*** " + gltGCal2Grp . size ( ) ) ;
logger . info ( "***二次分组2数量*** " + gltGCal2Grp . size ( ) ) ;
//执行日志保存
subService . saveSubLog ( p . getSlabNo ( ) , finalSubMode , "成功" , "二次分组2数量: " + gltGCal2Grp . size ( ) , organizationId ) ;
gltGCalGrp . addAll ( gltGCal2Grp ) ;
@ -445,32 +480,46 @@ public class SubController {
SetGroupCalRslt ( p ) ;
logger . info ( "所有结果数据板坯号:{};数量:{}" , p . getSlabNo ( ) , gltGGrpCalRslt . size ( ) ) ;
logger . info ( "选择结果数据板坯号:{};数量:{}" , p . getSlabNo ( ) , gltSelGGrpCalRslt . size ( ) ) ;
logger . info ( "结果数据板坯号:{};数量:{}" , p . getSlabNo ( ) , gltGGrpCalRslt . size ( ) ) ;
logger . info ( "结果数据板坯号:{};数量:{}" , p . getSlabNo ( ) , gltSelGGrpCalRslt . size ( ) ) ;
//执行日志保存
subService . saveSubLog ( p . getSlabNo ( ) , finalSubMode , "成功" , "结果数据数量1" + gltGGrpCalRslt . size ( ) , organizationId ) ;
subService . saveSubLog ( p . getSlabNo ( ) , finalSubMode , "成功" , "结果数据数量2" + gltSelGGrpCalRslt . size ( ) , organizationId ) ;
}
if ( gltSelGGrpCalRslt . size ( ) > 0 ) {
now = new Date ( ) ;
//存储数据,组板结果
SaveHisData ( p ) ;
//数据整理
SetSaveDate ( p , organizationId ) ;
//执行日志保存
subService . saveSubLog ( p . getSlabNo ( ) , finalSubMode , "成功" , "数据整理完成" , organizationId ) ;
//开启事务
//TransactionStatus transactionStatus = transactionService.begin();
try {
//保存数据
SaveData ( p , organizationId ) ;
//transactionService.commit(transactionStatus);
} catch ( Exception e ) {
logger . error ( "保存事务回滚:" + p . getSlabNo ( ) , e ) ;
//执行日志保存
subService . saveSubLog ( p . getSlabNo ( ) , finalSubMode , "失败" , "数据保存失败" + e , organizationId ) ;
//回滚事务
//transactionService.rollback(transactionStatus);
}
}
// if (gltSelGGrpCalRslt.size() > 0) {
// now = new Date();
// //存储数据,组板结果
// SaveHisData(p);
// //数据整理
// SetSaveDate(p,organizationId);
// //开启事务
// //TransactionStatus transactionStatus = transactionService.begin();
// try {
// //保存数据
// SaveData(p,organizationId);
// //transactionService.commit(transactionStatus);
// } catch (Exception e) {
// logger.error("保存事务回滚:" + p.getSlabNo(), e);
// //回滚事务
// //transactionService.rollback(transactionStatus);
// }
// }
} catch ( Exception e ) {
logger . error ( "板坯报错:" + p . getSlabNo ( ) , e ) ;
//执行日志保存
subService . saveSubLog ( p . getSlabNo ( ) , finalSubMode , "失败" , "板坯报错" + e , organizationId ) ;
}
logger . info ( "*************板坯结束{}************* " , p . getSlabNo ( ) ) ;
//执行日志保存
subService . saveSubLog ( p . getSlabNo ( ) , finalSubMode , "成功" , "板坯结束" , organizationId ) ;
logger . info ( "" ) ;
}
@ -558,7 +607,6 @@ public class SubController {
public void GetDataInfo ( SubParams subParams ) {
logger . info ( "*****开始获取数据******" ) ;
//region ***多线程获取基础数据***
@ -886,7 +934,6 @@ public class SubController {
//压缩比 Compression ratio
//宽展比 Wide ratio
//GCG.getLtInfoGPreOrder().stream().filter(e->e.)
//最大宽度
@ -900,14 +947,12 @@ public class SubController {
try {
//同钢种判断
if ( ! SInfo . getStNo ( ) . equals ( f . getInfoPmContMscTechDO ( ) . getStNo ( ) ) )
{
if ( ! SInfo . getStNo ( ) . equals ( f . getInfoPmContMscTechDO ( ) . getStNo ( ) ) ) {
return ;
}
//产线相同
if ( ! SInfo . getMscLineNo ( ) . equals ( f . getInfoPmContMscTechDO ( ) . getMscLineNo ( ) ) )
{
if ( ! SInfo . getMscLineNo ( ) . equals ( f . getInfoPmContMscTechDO ( ) . getMscLineNo ( ) ) ) {
return ;
}
@ -995,18 +1040,15 @@ public class SubController {
& & p . getCombinePlateWidthFrom ( ) . compareTo ( BigDecimal . valueOf ( maxWidth . orElse ( 0 ) + maxAddWidth . orElse ( 0 ) ) ) < = 0
& & p . getCombinePlateWidthTo ( ) . compareTo ( BigDecimal . valueOf ( maxWidth . orElse ( 0 ) + maxAddWidth . orElse ( 0 ) ) ) > = 0
) ) {
if ( GCG . getLtInfoGPreOrder ( ) . get ( 0 ) = = null )
{
if ( GCG . getLtInfoGPreOrder ( ) . get ( 0 ) = = null ) {
}
if ( GCG . getLtInfoGPreOrder ( ) . get ( 0 ) . getInfoPmContMscTechDO ( ) = = null )
{
if ( GCG . getLtInfoGPreOrder ( ) . get ( 0 ) . getInfoPmContMscTechDO ( ) = = null ) {
}
if ( GCG . getLtInfoGPreOrder ( ) . get ( 0 ) . getInfoPmContMscTechDO ( ) . getWholeHeatTreatmentType ( ) = = null )
{
if ( GCG . getLtInfoGPreOrder ( ) . get ( 0 ) . getInfoPmContMscTechDO ( ) . getWholeHeatTreatmentType ( ) = = null ) {
}
@ -1047,8 +1089,7 @@ public class SubController {
String strWithSideFlag = "C" ;
if ( GCG . getLtInfoGPreOrder ( ) . get ( 0 ) . getInfoPmProContProdAttrDO ( ) . getProdAMark ( ) = = null
| | GCG . getLtInfoGPreOrder ( ) . get ( 0 ) . getInfoPmProContProdAttrDO ( ) . getProdAMark ( ) . equals ( "" ) )
{
| | GCG . getLtInfoGPreOrder ( ) . get ( 0 ) . getInfoPmProContProdAttrDO ( ) . getProdAMark ( ) . equals ( "" ) ) {
strWithSideFlag = "C" ;
} else {
strWithSideFlag = GCG . getLtInfoGPreOrder ( ) . get ( 0 ) . getInfoPmProContProdAttrDO ( ) . getProdAMark ( ) ;
@ -1125,8 +1166,7 @@ public class SubController {
f . getLtInfoGPreOrder ( ) . forEach ( j - > {
//排己
if ( i . getIDValue ( ) = = j . getIDValue ( ) )
{
if ( i . getIDValue ( ) = = j . getIDValue ( ) ) {
return ;
}
@ -1135,8 +1175,7 @@ public class SubController {
GPreOrder GPO2 = j ;
//组合数据的数量,提升效率,大于二十
if ( ltInfoOrder . stream ( ) . filter ( m - > m . equals ( GPO1 . getOrderNo ( ) + "_" + GPO2 . getOrderNo ( ) ) ) . count ( ) > 20 )
{
if ( ltInfoOrder . stream ( ) . filter ( m - > m . equals ( GPO1 . getOrderNo ( ) + "_" + GPO2 . getOrderNo ( ) ) ) . count ( ) > 20 ) {
return ;
}
@ -1299,18 +1338,15 @@ public class SubController {
& & p . getCombinePlateWidthTo ( ) . compareTo ( BigDecimal . valueOf ( maxWidth + maxAddWidth . orElse ( 0 ) ) ) > = 0
) ) {
if ( GCG . getLtInfoGPreOrder ( ) . get ( 0 ) = = null )
{
if ( GCG . getLtInfoGPreOrder ( ) . get ( 0 ) = = null ) {
}
if ( GCG . getLtInfoGPreOrder ( ) . get ( 0 ) . getInfoPmContMscTechDO ( ) = = null )
{
if ( GCG . getLtInfoGPreOrder ( ) . get ( 0 ) . getInfoPmContMscTechDO ( ) = = null ) {
}
if ( GCG . getLtInfoGPreOrder ( ) . get ( 0 ) . getInfoPmContMscTechDO ( ) . getWholeHeatTreatmentType ( ) = = null )
{
if ( GCG . getLtInfoGPreOrder ( ) . get ( 0 ) . getInfoPmContMscTechDO ( ) . getWholeHeatTreatmentType ( ) = = null ) {
}
@ -2021,8 +2057,7 @@ public class SubController {
if ( plistPmContMscTechDO . stream ( ) . filter ( p - > p . getOrderNo ( ) . equals ( i . getOrderNo ( ) ) ) . count ( ) > 0 ) {
// 可能抛出异常的代码
pcmt = plistPmContMscTechDO . stream ( ) . filter ( p - > p . getOrderNo ( ) . equals ( i . getOrderNo ( ) ) ) . findFirst ( ) . orElseThrow ( ( ) - > new NoSuchElementException ( "No PmContMscTechDO found with name Charlie " + i . getOrderNo ( ) ) ) ;
if ( plistQdToPoOrderDO . stream ( ) . anyMatch ( e - > e . getOrderNo ( ) . equals ( i . getOrderNo ( ) ) ) )
{
if ( plistQdToPoOrderDO . stream ( ) . anyMatch ( e - > e . getOrderNo ( ) . equals ( i . getOrderNo ( ) ) ) ) {
qtpo = plistQdToPoOrderDO . stream ( ) . filter ( e - > e . getOrderNo ( ) . equals ( i . getOrderNo ( ) ) ) . findFirst ( ) . orElseThrow ( ( ) - > new NoSuchElementException ( "No PmContMscTechDO found with name Charlie " + i . getOrderNo ( ) ) ) ;
SetAllOrder ( i , ppcpa , pcmt , qtpo ) ;
@ -2179,8 +2214,7 @@ public class SubController {
try {
//排己
if ( e . getIDValue ( ) = = f . getIDValue ( ) )
{
if ( e . getIDValue ( ) = = f . getIDValue ( ) ) {
return ;
}
//e和f的宽度差绝对值小于500, 宽度合小于4980, 厚度相同
@ -2278,8 +2312,7 @@ public class SubController {
}
//测试代码
if ( e . getOrderNo ( ) = = "52500096071" )
{
if ( e . getOrderNo ( ) = = "52500096071" ) {
}
ltOrder . add ( e . getOrderNo ( ) ) ; //添加订单号
@ -2431,8 +2464,7 @@ public class SubController {
int intTrimWid = 0 ;
String strWithSideFlag = "C" ;
if ( p . getLtInfoGPreOrder ( ) . get ( 0 ) . getInfoPmProContProdAttrDO ( ) . getProdAMark ( ) = = null
| | p . getLtInfoGPreOrder ( ) . get ( 0 ) . getInfoPmProContProdAttrDO ( ) . getProdAMark ( ) . equals ( "" ) )
{
| | p . getLtInfoGPreOrder ( ) . get ( 0 ) . getInfoPmProContProdAttrDO ( ) . getProdAMark ( ) . equals ( "" ) ) {
strWithSideFlag = "C" ;
} else {
strWithSideFlag = p . getLtInfoGPreOrder ( ) . get ( 0 ) . getInfoPmProContProdAttrDO ( ) . getProdAMark ( ) ;
@ -2562,7 +2594,6 @@ public class SubController {
}
BigDecimal slabVolume = SInfo . getSlabActThk ( )
. multiply ( SInfo . getRemWid ( ) )
. multiply ( BigDecimal . valueOf ( p . getVirtualSlab_Len ( ) ) ) ;
@ -2748,11 +2779,9 @@ public class SubController {
AtomicInteger index = new AtomicInteger ( 0 ) ;
AtomicInteger intX = new AtomicInteger ( maxRate . getHead_Len ( ) ) ;
boolean Firstflag = true ;
for ( int m = 0 ; m < maxRate . getLtActInfoGPreOrder ( ) . size ( ) ; m + + )
{
for ( int m = 0 ; m < maxRate . getLtActInfoGPreOrder ( ) . size ( ) ; m + + ) {
GPreOrder gPreOrder = maxRate . getLtActInfoGPreOrder ( ) . get ( m ) ;
if ( gPreOrder . getCombinationFlag ( ) = = 1 )
{
if ( gPreOrder . getCombinationFlag ( ) = = 1 ) {
BigDecimal intY = BigDecimal . valueOf ( 0 ) ;
for ( int i = 0 ; i < gPreOrder . getLtInfoCombGPreOrder ( ) . size ( ) ; i + + ) {
@ -3509,6 +3538,7 @@ public class SubController {
public void SetPmSmallPltPos ( String mscLineNo , Long organizationId ) {
for ( int i = 0 ; i < gltSelGGrpCalRslt . size ( ) ; i + + ) {
GGrpCalRslt ggcr = gltSelGGrpCalRslt . get ( i ) ;
Integer smallPlateNum = 0 ;
for ( int j = 0 ; j < ggcr . getLtActInfoGPreOrder ( ) . size ( ) ; j + + ) {
if ( ggcr . getLtActInfoGPreOrder ( ) . get ( j ) . getCombinationFlag ( ) = = 1 ) {
for ( int k = 0 ; k < ggcr . getLtActInfoGPreOrder ( ) . get ( j ) . getLtInfoCombGPreOrder ( ) . size ( ) ; k + + ) {
@ -3525,7 +3555,7 @@ public class SubController {
if ( resultPmProContProdAttrDO . get ( ) . getTrimCode ( ) . equals ( "0" ) ) {
pmSmallPltPosDO . setSmallPlateDivNo ( "000" ) ;
} else {
pmSmallPltPosDO . setSmallPlateDivNo ( SMALL_PLATE_DIV_NO [ j ] ) ;
pmSmallPltPosDO . setSmallPlateDivNo ( SMALL_PLATE_DIV_NO [ smallPlateNum ] ) ;
}
pmSmallPltPosDO . setPickModeLenDir ( Long . valueOf ( j + 1 ) ) ;
pmSmallPltPosDO . setPickModeWidDir ( Long . valueOf ( k + 1 ) ) ;
@ -3550,6 +3580,7 @@ public class SubController {
SetPmCmdSmallPlt ( pmSmallPltPosDO , resultPmProContProdAttrDO . get ( ) , mscLineNo , organizationId ) ;
pmSmallPltPosDOList . add ( pmSmallPltPosDO ) ;
smallPlateNum + = 1 ;
}
} else {
GPreOrder gpo = ggcr . getLtActInfoGPreOrder ( ) . get ( j ) ;
@ -3566,7 +3597,7 @@ public class SubController {
if ( resultPmProContProdAttrDO . get ( ) . getTrimCode ( ) . equals ( "0" ) ) {
pmSmallPltPosDO . setSmallPlateDivNo ( "000" ) ;
} else {
pmSmallPltPosDO . setSmallPlateDivNo ( SMALL_PLATE_DIV_NO [ j ] ) ;
pmSmallPltPosDO . setSmallPlateDivNo ( SMALL_PLATE_DIV_NO [ smallPlateNum ] ) ;
}
pmSmallPltPosDO . setPickModeLenDir ( Long . valueOf ( j + 1 ) ) ; //TODO 取板方式 长度方向 列数累加
pmSmallPltPosDO . setPickModeWidDir ( 1L ) ; //TODO 取板方式 宽度方向 第一行
@ -3591,6 +3622,7 @@ public class SubController {
SetPmCmdSmallPlt ( pmSmallPltPosDO , resultPmProContProdAttrDO . get ( ) , mscLineNo , organizationId ) ;
pmSmallPltPosDOList . add ( pmSmallPltPosDO ) ;
smallPlateNum + = 1 ;
}
}
}