1.增加终止排产,当bom无法上料时终止并进行提醒

master
董哲奇 2 years ago
parent ab4fab389f
commit 603ea180df

@ -41,6 +41,13 @@ public class 三月滚动排产控制器 {
排产.execute(from,to); 排产.execute(from,to);
} catch (InterruptedException e) { } catch (InterruptedException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} catch (RuntimeException e) {
e.printStackTrace();
ResultBean<?> resultBean = new ResultBean<>();
resultBean.setStatus(10000);
resultBean.setSuccess(false);
resultBean.setMessage(e.getMessage());
return resultBean;
} finally { } finally {
semaphore.release(); semaphore.release();
} }

@ -30,6 +30,7 @@ import java.io.OutputStream;
import java.util.*; import java.util.*;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -48,11 +49,12 @@ public class DataFactory {
CountDownLatch latch = new CountDownLatch(钢料需求.getBomList().size()); CountDownLatch latch = new CountDownLatch(钢料需求.getBomList().size());
钢料需求.getBomList().forEach(bom -> { 钢料需求.getBomList().forEach(bom -> {
套料图工序 _套料图工序 = 套料图工序工厂(bom); 套料图工序 _套料图工序 = 套料图工序工厂(bom);
AtomicBoolean atomicBoolean = new AtomicBoolean(false);
if (_套料图工序!=null){ if (_套料图工序!=null){
_套料图工序.set需求日期(钢料需求.getXzglxq()); _套料图工序.set需求日期(钢料需求.getXzglxq());
es.execute(() -> { es.execute(() -> {
try{ try{
_套料图工序.run(); _套料图工序.run(atomicBoolean);
}finally { }finally {
latch.countDown(); latch.countDown();
} }
@ -60,6 +62,12 @@ public class DataFactory {
}else { }else {
latch.countDown(); latch.countDown();
} }
if(atomicBoolean.get()){
String errText = StrUtil.format("船号:{},批量:{},图号:{},需求日期:{},不满足上料需求",
bom.getDcch(), bom.getPl(), bom.getTzbh(), bom.getXzglxq());
清理冗余数据(list);
throw new RuntimeException(errText);
}
}); });
try { try {
latch.await(10, TimeUnit.SECONDS);// 指定超时时间 latch.await(10, TimeUnit.SECONDS);// 指定超时时间
@ -68,7 +76,10 @@ public class DataFactory {
} }
}); });
System.out.println(Manager.排产结果.size()); System.out.println(Manager.排产结果.size());
//清理冗余数据 清理冗余数据(list);
}
private static void 清理冗余数据(List<钢料需求> list){
list.forEach(钢料需求->{ list.forEach(钢料需求->{
钢料需求.getBomList().forEach(bom -> { 钢料需求.getBomList().forEach(bom -> {
if (bom.get所在设备()!=null){ if (bom.get所在设备()!=null){

@ -33,8 +33,7 @@ public abstract class 套料图工序 implements 套料图工序接口 {
protected Date _需求日期; protected Date _需求日期;
protected List<Constant.工序> 工序; protected List<Constant.工序> 工序;
@Override public void run(AtomicBoolean atomicBoolean) {
public void run() {
if (ObjUtil.isEmpty(this.bom)||StrUtil.isEmpty(this.bom.getTzbh())){ if (ObjUtil.isEmpty(this.bom)||StrUtil.isEmpty(this.bom.getTzbh())){
return; return;
} }
@ -56,11 +55,9 @@ public abstract class 套料图工序 implements 套料图工序接口 {
} }
} }
if (bom.get已排工序().size()==0||bom.get已排工序().get(0) != _工序) { if (bom.get已排工序().size()==0||bom.get已排工序().get(0) != Constant.工序.上料) {
if (_工序 == Constant.工序.上料){ Manager.排产结果.add(this.bom);
Manager.排产结果.add(this.bom); atomicBoolean.set(true);
System.out.println(this.bom.toString());
}
} }
} }
}); });

@ -17,17 +17,15 @@ public class 排产 {
List<排产结果> list; List<排产结果> list;
public static void execute(@NotNull String from, @NotNull String to) { public static void execute(@NotNull String from, @NotNull String to) {
排产 _排产=null; 排产 _排产 = 排产.of(from, to);
try { Manager.排产 = _排产;
_排产 = 排产.of(from,to); Manager.from = from;
DataFactory.排产2(); Manager.to = to;
}catch (Exception e){ DataFactory.加载工厂日历();
e.printStackTrace(); DataFactory.加载套料图工序对应关系();
}finally { DataFactory.加载设备信息();
if (_排产!=null){ DataFactory.创建产能资源池();
_排产.complete = true; DataFactory.排产2();
}
}
} }
private static 排产 of(@NotNull String from, @NotNull String to){ private static 排产 of(@NotNull String from, @NotNull String to){
@ -36,13 +34,6 @@ public class 排产 {
排产.to = to; 排产.to = to;
排产.complete = false; 排产.complete = false;
排产.list = new ArrayList<>(); 排产.list = new ArrayList<>();
Manager.排产 = 排产;
Manager.from = from;
Manager.to = to;
DataFactory.加载工厂日历();
DataFactory.加载套料图工序对应关系();
DataFactory.加载设备信息();
DataFactory.创建产能资源池();
return Manager.排产; return Manager.排产;
} }

@ -153,8 +153,8 @@ public class SYService {
* @param bmm 编码名称 * @param bmm 编码名称
* @return 最大单据号(流水号) * @return 最大单据号(流水号)
*/ */
@Transactional(propagation = Propagation.REQUIRES_NEW,rollbackFor = Exception.class) // @Transactional(propagation = Propagation.REQUIRES_NEW,rollbackFor = Exception.class)
// @Transactional @Transactional
public String f_getpjh(String zxt,String jg,String bmm){ public String f_getpjh(String zxt,String jg,String bmm){
entityManager.clear(); // 清除缓存 entityManager.clear(); // 清除缓存
QDmBhdyp bhdy=QDmBhdyp.dmBhdyp; QDmBhdyp bhdy=QDmBhdyp.dmBhdyp;

Loading…
Cancel
Save