Commit bf350b40 authored by DESKTOP-VKRD9QF\Administration's avatar DESKTOP-VKRD9QF\Administration
parents ce8dcf27 ea974f9b
...@@ -117,7 +117,9 @@ public class Entry { ...@@ -117,7 +117,9 @@ public class Entry {
/// <summary> /// <summary>
/// 关联的成品工序ID(核心:明确该半成品服务于哪个成品工序) /// 关联的成品工序ID(核心:明确该半成品服务于哪个成品工序)
/// </summary> /// </summary>
public int TargetFinishedOperationId=0; public List<Integer> TargetFinishedOperationId;
private boolean newCreate = false;
/// <summary> /// <summary>
/// 半成品最晚完工时间(即成品工序开始时间-1天) /// 半成品最晚完工时间(即成品工序开始时间-1天)
......
...@@ -39,7 +39,11 @@ public class Order { ...@@ -39,7 +39,11 @@ public class Order {
private double actualPriority; private double actualPriority;
private String mainId; private String mainId;
/*使用这个半成品的成品工单*/ /*使用这个半成品的成品工单*/
public List<Integer> FinishOrderId ; private List<Integer> FinishOrderId ;
private boolean newCreate = false;
/// <summary>
/// 关联的成品工序ID(核心:明确该半成品服务于哪个成品工序)
/// </summary>
private List<Integer> TargetFinishedOperationId;
private double delayHours;//延迟时间 private double delayHours;//延迟时间
} }
\ No newline at end of file
...@@ -149,7 +149,7 @@ if(routingIds.size()==0) ...@@ -149,7 +149,7 @@ if(routingIds.size()==0)
// 递归展开BOM层级(通过结果对象接收out参数数据) // 递归展开BOM层级(通过结果对象接收out参数数据)
BOMBuildResult result = buildOrderBOM(demand.getRoutingId(),"", demand.getOrderId(), demand.getOrderId(), BOMBuildResult result = buildOrderBOM(demand.getRoutingId(),"", demand.getOrderId(), demand.getOrderId(),
demand.getQuantity(), 0,demand); demand.getQuantity(), 0,demand,0);
allRequirements.addAll(result.getMaterialRequirements()); allRequirements.addAll(result.getMaterialRequirements());
childorders.addAll(result.getChildOrders()); childorders.addAll(result.getChildOrders());
_newEntrys.addAll(result.getNewEntrys()); _newEntrys.addAll(result.getNewEntrys());
...@@ -183,7 +183,7 @@ if(routingIds.size()==0) ...@@ -183,7 +183,7 @@ if(routingIds.size()==0)
* @return 包含物料需求列表和子订单列表的结果对象(替代C#的out参数) * @return 包含物料需求列表和子订单列表的结果对象(替代C#的out参数)
*/ */
public BOMBuildResult buildOrderBOM(int parent, String materialID, String mainorderId, public BOMBuildResult buildOrderBOM(int parent, String materialID, String mainorderId,
String childorderId, double parentQuantity, int level,Order forder) { String childorderId, double parentQuantity, int level,Order forder,int finishOpertionID) {
RoutingHeader routingHeaders= headers.stream() RoutingHeader routingHeaders= headers.stream()
.filter(t->t.getId()==parent|| t.getMaterialId().equals(materialID)) .filter(t->t.getId()==parent|| t.getMaterialId().equals(materialID))
...@@ -211,6 +211,14 @@ if(routingIds.size()==0) ...@@ -211,6 +211,14 @@ if(routingIds.size()==0)
if (Operations != null) { if (Operations != null) {
for (Entry operation : Operations) { for (Entry operation : Operations) {
if(finishOpertionID!=0)
{
if(operation.getTargetFinishedOperationId()==null)
{
operation.setTargetFinishedOperationId(new ArrayList<>());
}
operation.getTargetFinishedOperationId().add(finishOpertionID);
}
// 调用BuildOperationBOM方法(返回结果对象替代out参数) // 调用BuildOperationBOM方法(返回结果对象替代out参数)
BOMBuildResult operationResult = buildOperationBOM(mainorderId, childorderId, BOMBuildResult operationResult = buildOperationBOM(mainorderId, childorderId,
parentQuantity, operation, level,forder); parentQuantity, operation, level,forder);
...@@ -228,7 +236,7 @@ if(routingIds.size()==0) ...@@ -228,7 +236,7 @@ if(routingIds.size()==0)
} }
private Map<Integer, Object> CreateChild(Order order,String materialID) private Map<Integer, Object> CreateChild(Order order,String materialID,int finishOpertionID)
{ {
String sceneId=""; String sceneId="";
Long routingIds=0l; Long routingIds=0l;
...@@ -360,7 +368,7 @@ if(routingIds.size()==0) ...@@ -360,7 +368,7 @@ if(routingIds.size()==0)
List<Order> ProdLaunchOrders=new ArrayList<>(); List<Order> ProdLaunchOrders=new ArrayList<>();
ProdLaunchOrders.add(order); ProdLaunchOrders.add(order);
Map<Integer, Object> list=_routingDataService.CreateEntry( sceneId, ProdEquipmentList, ProdLaunchOrders, routingDiscreteParams, ProdOrderProcesslist, processExecList,_entryRel ); Map<Integer, Object> list=_routingDataService.CreateEntry( sceneId, ProdEquipmentList, ProdLaunchOrders, routingDiscreteParams, ProdOrderProcesslist, processExecList,_entryRel,finishOpertionID );
// List<Machine> machines= _routingDataService.InitCalendarToAllMachines(sceneId,ProdEquipmentList,machineScheduler, globalParam.isIsUseCalendar()); // List<Machine> machines= _routingDataService.InitCalendarToAllMachines(sceneId,ProdEquipmentList,machineScheduler, globalParam.isIsUseCalendar());
...@@ -532,8 +540,11 @@ if(routingIds.size()==0) ...@@ -532,8 +540,11 @@ if(routingIds.size()==0)
for (Order order : orders2) { for (Order order : orders2) {
if (order.getFinishOrderId() == null) { if (order.getFinishOrderId() == null) {
order.setFinishOrderId(new ArrayList<>()); order.setFinishOrderId(new ArrayList<>());
order.setTargetFinishedOperationId(new ArrayList<>());
} }
order.getFinishOrderId().add(forder.getId()); order.getFinishOrderId().add(forder.getId());
order.getTargetFinishedOperationId().add(operation.getId());
orderMaterial.getProductOrderID().add(forder.getId()); orderMaterial.getProductOrderID().add(forder.getId());
double useq = Math.min(needed, order.getSYQuantity()); double useq = Math.min(needed, order.getSYQuantity());
...@@ -546,7 +557,7 @@ if(routingIds.size()==0) ...@@ -546,7 +557,7 @@ if(routingIds.size()==0)
BOMBuildResult childResult = buildOrderBOM(0, material.getId(), BOMBuildResult childResult = buildOrderBOM(0, material.getId(),
orderId, order.getOrderId(), orderId, order.getOrderId(),
order.getQuantity(), l,order); order.getQuantity(), l,order,operation.getId());
materialRequirements.addAll(childResult.getMaterialRequirements()); materialRequirements.addAll(childResult.getMaterialRequirements());
_childorders.addAll(childResult.getChildOrders()); _childorders.addAll(childResult.getChildOrders());
_newEntrys.addAll(childResult.getNewEntrys()); _newEntrys.addAll(childResult.getNewEntrys());
...@@ -576,6 +587,9 @@ if(routingIds.size()==0) ...@@ -576,6 +587,9 @@ if(routingIds.size()==0)
childorder.setQuantity((int) orderMaterial.getQjQty()); childorder.setQuantity((int) orderMaterial.getQjQty());
childorder.setFinishOrderId(new ArrayList<>()); childorder.setFinishOrderId(new ArrayList<>());
childorder.getFinishOrderId().add(forder.getId()); childorder.getFinishOrderId().add(forder.getId());
childorder.setNewCreate(true);
childorder.setTargetFinishedOperationId(new ArrayList<>());
childorder.getTargetFinishedOperationId().add(operation.getId());
childorder.setSerie(forder.getSerie()); childorder.setSerie(forder.getSerie());
childorder.setStartDate(forder.getStartDate()); childorder.setStartDate(forder.getStartDate());
...@@ -584,7 +598,7 @@ if(routingIds.size()==0) ...@@ -584,7 +598,7 @@ if(routingIds.size()==0)
childorder.setActualPriority(forder.getActualPriority()); childorder.setActualPriority(forder.getActualPriority());
Map<Integer, Object> list= CreateChild(childorder,material.getId()); Map<Integer, Object> list= CreateChild(childorder,material.getId(), operation.getId());
if(list==null) if(list==null)
{ {
continue; continue;
...@@ -599,7 +613,7 @@ if(routingIds.size()==0) ...@@ -599,7 +613,7 @@ if(routingIds.size()==0)
int l = level + 1; int l = level + 1;
BOMBuildResult childResult = buildOrderBOM(0, material.getId(), BOMBuildResult childResult = buildOrderBOM(0, material.getId(),
orderId, childorder.getOrderId(), orderId, childorder.getOrderId(),
childorder.getQuantity(), l,childorder); childorder.getQuantity(), l,childorder,0);
materialRequirements.addAll(childResult.getMaterialRequirements()); materialRequirements.addAll(childResult.getMaterialRequirements());
_childorders.addAll(childResult.getChildOrders()); _childorders.addAll(childResult.getChildOrders());
_newEntrys.addAll(childResult.getNewEntrys()); _newEntrys.addAll(childResult.getNewEntrys());
......
...@@ -96,11 +96,11 @@ public class RoutingDataService { ...@@ -96,11 +96,11 @@ public class RoutingDataService {
.eq(ProdOrderProcess::getSceneId,SceneId) .eq(ProdOrderProcess::getSceneId,SceneId)
.list(); .list();
return CreateEntry( SceneId, ProdEquipments, ProdLaunchOrders, routingDiscreteParams, ProdOrderProcesss, ProdProcessExecs,null ); return CreateEntry( SceneId, ProdEquipments, ProdLaunchOrders, routingDiscreteParams, ProdOrderProcesss, ProdProcessExecs,null,0 );
} }
public Map<Integer, Object> CreateEntry(String SceneId, List<ProdEquipment> ProdEquipments, List<Order> ProdLaunchOrders, List<RoutingDiscreteParam> routingDiscreteParams, List<ProdOrderProcess> ProdOrderProcesss, List<ProdProcessExec> ProdProcessExecs, List<GroupResult> existingResults) public Map<Integer, Object> CreateEntry(String SceneId, List<ProdEquipment> ProdEquipments, List<Order> ProdLaunchOrders, List<RoutingDiscreteParam> routingDiscreteParams, List<ProdOrderProcess> ProdOrderProcesss, List<ProdProcessExec> ProdProcessExecs, List<GroupResult> existingResults,int FinishOpertionID)
{ {
Map<Integer, Object> list=new HashMap<>(); Map<Integer, Object> list=new HashMap<>();
List<String> soutceExecId = ProdOrderProcesss.stream() List<String> soutceExecId = ProdOrderProcesss.stream()
...@@ -155,6 +155,11 @@ public class RoutingDataService { ...@@ -155,6 +155,11 @@ public class RoutingDataService {
entry.setGroupId(i + 1); entry.setGroupId(i + 1);
entry.setSequence(nodeInfo.getGroupSerial()); entry.setSequence(nodeInfo.getGroupSerial());
entry.setExecId(nodeInfo.getOriginalId()); entry.setExecId(nodeInfo.getOriginalId());
if(FinishOpertionID!=0) {
entry.setNewCreate(true);
entry.setTargetFinishedOperationId(new ArrayList<>());
entry.getTargetFinishedOperationId().add(FinishOpertionID);
}
ProdProcessExec op= ProdProcessExecs.stream() ProdProcessExec op= ProdProcessExecs.stream()
.filter(t->t.getExecId().equals(entry.getExecId())) .filter(t->t.getExecId().equals(entry.getExecId()))
.findFirst().orElse(null); .findFirst().orElse(null);
......
...@@ -347,6 +347,7 @@ Integer newMachineId1=newMachineId.intValue(); ...@@ -347,6 +347,7 @@ Integer newMachineId1=newMachineId.intValue();
newOp.setId(nodeInfo.getGlobalSerial()); newOp.setId(nodeInfo.getGlobalSerial());
newOp.setSequence(nodeInfo.getGroupSerial()); newOp.setSequence(nodeInfo.getGroupSerial());
newOp.setExecId(nodeInfo.getOriginalId()); newOp.setExecId(nodeInfo.getOriginalId());
newOp.setNewCreate(true);
// newOp.setPrevEntryIds(nodeInfo.getNewParentIds()); // newOp.setPrevEntryIds(nodeInfo.getNewParentIds());
// newOp.setNextEntryIds(nodeInfo.getNewChildIds()); // newOp.setNextEntryIds(nodeInfo.getNewChildIds());
if(nodeInfo.getNewParentIds()!=null) if(nodeInfo.getNewParentIds()!=null)
...@@ -433,6 +434,7 @@ Integer newMachineId1=newMachineId.intValue(); ...@@ -433,6 +434,7 @@ Integer newMachineId1=newMachineId.intValue();
order.setQuantity(splitCounts[i]); order.setQuantity(splitCounts[i]);
} }
neworder.setMainId(order.getOrderId()); neworder.setMainId(order.getOrderId());
neworder.setNewCreate(true);
orders.add(neworder); orders.add(neworder);
for (Entry entry : targetOps) { for (Entry entry : targetOps) {
if(splitCounts[0]!=0&&i==1) {// 数组第一个是0,为复制 if(splitCounts[0]!=0&&i==1) {// 数组第一个是0,为复制
...@@ -445,7 +447,7 @@ Integer newMachineId1=newMachineId.intValue(); ...@@ -445,7 +447,7 @@ Integer newMachineId1=newMachineId.intValue();
newOp.setOrderId(neworder.getOrderId()); newOp.setOrderId(neworder.getOrderId());
newOp.setGroupId(maxorderId); newOp.setGroupId(maxorderId);
newOp.setQuantity(splitCounts[i]); newOp.setQuantity(splitCounts[i]);
newOp.setNewCreate(true);
newEntrys.add(newOp); newEntrys.add(newOp);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment