|
@@ -669,6 +669,9 @@ public class ApsConstraintProvider implements ConstraintProvider {
|
|
|
}
|
|
|
// 周期立板剩余时间
|
|
|
BigDecimal syLb = standingyieldbig.subtract(zqlb);
|
|
|
+ if(syLb.compareTo(new BigDecimal("10"))<0){
|
|
|
+ syLb = new BigDecimal("10");
|
|
|
+ }
|
|
|
Integer syLbTime = (syLb.multiply(new BigDecimal(hasStartTimeProcess.get(i).getProduceTime()).divide(hasStartTimeProcess.get(i).getSinglerollweight(), 2, RoundingMode.HALF_UP)).intValue()+1);
|
|
|
// 铸轧立板是否连续
|
|
|
boolean lbserice = true;
|
|
@@ -2010,38 +2013,43 @@ public class ApsConstraintProvider implements ConstraintProvider {
|
|
|
String afhj = sersafter[0];
|
|
|
// 获取产品类型二级
|
|
|
String afcplx = sersafter[1].split("-")[0];
|
|
|
- // 铸轧合金兼容配置
|
|
|
- if(apsNochangeRollerDos != null && apsNochangeRollerDos.size()>0){
|
|
|
- for (ApsNochangeRollerDo apsNochangeRollerDo : apsNochangeRollerDos) {
|
|
|
- // 判断合金是否都包含,且相同
|
|
|
- if(bfhj.equals(afhj)){
|
|
|
- if(StrUtil.isNotBlank(apsNochangeRollerDo.getWorkingalloy())){
|
|
|
- if(apsNochangeRollerDo.getWorkingalloy().contains(bfhj) && apsNochangeRollerDo.getWorkingalloy().contains(afhj)){
|
|
|
- // 判断产品类型是包含还是不包含的关系
|
|
|
- if("包含".equals(apsNochangeRollerDo.getCompatibilityrules())){
|
|
|
- // 产品类型不为空
|
|
|
- if(StrUtil.isNotBlank(apsNochangeRollerDo.getJobproducttype())){
|
|
|
- if(apsNochangeRollerDo.getJobproducttype().contains(bfcplx) && apsNochangeRollerDo.getJobproducttype().contains(afcplx)){
|
|
|
- ifJr = true;
|
|
|
- break;
|
|
|
+ // 合金和二级产品类型一样的无需换辊
|
|
|
+ if(bfhj.equals(afhj) && bfcplx.equals(afcplx)){
|
|
|
+ ifJr = true;
|
|
|
+ }else{
|
|
|
+ // 铸轧合金兼容配置
|
|
|
+ if(apsNochangeRollerDos != null && apsNochangeRollerDos.size()>0){
|
|
|
+ for (ApsNochangeRollerDo apsNochangeRollerDo : apsNochangeRollerDos) {
|
|
|
+ // 判断合金是否都包含,且相同
|
|
|
+ if(bfhj.equals(afhj)){
|
|
|
+ if(StrUtil.isNotBlank(apsNochangeRollerDo.getWorkingalloy())){
|
|
|
+ if(apsNochangeRollerDo.getWorkingalloy().contains(bfhj) && apsNochangeRollerDo.getWorkingalloy().contains(afhj)){
|
|
|
+ // 判断产品类型是包含还是不包含的关系
|
|
|
+ if("包含".equals(apsNochangeRollerDo.getCompatibilityrules())){
|
|
|
+ // 产品类型不为空
|
|
|
+ if(StrUtil.isNotBlank(apsNochangeRollerDo.getJobproducttype())){
|
|
|
+ if(apsNochangeRollerDo.getJobproducttype().contains(bfcplx) && apsNochangeRollerDo.getJobproducttype().contains(afcplx)){
|
|
|
+ ifJr = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- // 产品类型为空
|
|
|
- else{
|
|
|
- ifJr = true;
|
|
|
- break;
|
|
|
- }
|
|
|
- } else if ("不包含".equals(apsNochangeRollerDo.getCompatibilityrules())) {
|
|
|
- // 产品类型不为空
|
|
|
- if(StrUtil.isNotBlank(apsNochangeRollerDo.getJobproducttype())){
|
|
|
- if(!apsNochangeRollerDo.getJobproducttype().contains(bfcplx) && !apsNochangeRollerDo.getJobproducttype().contains(afcplx)){
|
|
|
+ // 产品类型为空
|
|
|
+ else{
|
|
|
ifJr = true;
|
|
|
break;
|
|
|
}
|
|
|
- }
|
|
|
- // 产品类型为空
|
|
|
- else{
|
|
|
- continue;
|
|
|
+ } else if ("不包含".equals(apsNochangeRollerDo.getCompatibilityrules())) {
|
|
|
+ // 产品类型不为空
|
|
|
+ if(StrUtil.isNotBlank(apsNochangeRollerDo.getJobproducttype())){
|
|
|
+ if(!apsNochangeRollerDo.getJobproducttype().contains(bfcplx) && !apsNochangeRollerDo.getJobproducttype().contains(afcplx)){
|
|
|
+ ifJr = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 产品类型为空
|
|
|
+ else{
|
|
|
+ continue;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -2050,7 +2058,6 @@ public class ApsConstraintProvider implements ConstraintProvider {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
return ifJr;
|
|
|
}
|
|
|
|