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