// 头物料相同的工单且行数差小于4 放在一起 或者 头物料相同的工单且行数大于40 放在一起

main
霸王龙 2025-02-27 15:58:28 +08:00
parent 4b544cac3a
commit 947c440423
1 changed files with 26 additions and 32 deletions

View File

@ -428,12 +428,17 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
LogPrint(
log_GongZuoZhanMinXi,
"---------------------------------------------------工作站详情-----------------------------------------------------------------------------------------------");
LogPrint(
log_GongZuoZhanMinXi,
"---------------------------------------------------开始分配-----------------------------------------------------------------------------------------------");
for (TwlFenZu twlFenZu : twlFenZuList) {
List<GongDanMingXi> gongDanList = twlFenZu.gdPaiXus; // 当前头物料所有的工单组合,以及每个工单的物料明细
int this_fenzuCount = twlFenZu.wl_count; // 当前分组总物料行数
int this_notFenPei=this_fenzuCount;
List<GongZuoZhan> listGzz = FaiXuGzz(gzzMap); // 工作站根据可分配数量进行排序
LogPrint( true,"当前头物料:"+twlFenZu.gdPaiXus.get(0).twl+"总数量为:"+twlFenZu.wl_count +"工单数为:"+twlFenZu.gdPaiXus.size());
if (gongDanList.size() == 1) {
GongDanMingXi gongDanMingXi = gongDanList.get(0);
GongZuoZhan curr_gzz = PiPeiGongZuoZhanForGzzxAndRqh(listGzz,
@ -449,6 +454,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
gzzMap.put(curr_gzz.code, curr_gzz);
}else if(this_fenzuCount<cfhs &&gongDanList.size() >1) {
// 多个工单匹配进行
List<FenPei> list_wL_rq=new ArrayList<>();
String GDH="";
for (int index = 0; index < gongDanList.size(); index++) {
@ -467,7 +473,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
}
}
}else{
// 多个工单匹配进行
int gzz_index = 0; // 当前分配工作站的排序下标
GongZuoZhan curr_gzz = listGzz.get(0);
for (int index = 0; index < gongDanList.size(); index++) {
@ -475,7 +481,10 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
// 当前工单的物料
List<FenPei> list_wList = gongDanMingXi.list;
LogPrint( true,"当前工作站:"+curr_gzz.code+"notFinished"+ curr_gzz.notFinished +"renWuList.size()"+curr_gzz.renWuList.size()+"maxRenWu:"+curr_gzz.maxRenWu);
int GzzRenwuOver = (list_wList.size() + curr_gzz.notFinished + curr_gzz.renWuList.size()) - curr_gzz.maxRenWu;
LogPrint( true,"list_wList"+list_wList.size() +"GzzRenwuOver"+ GzzRenwuOver+"this_notFenPei:"+this_notFenPei+"cfhs:"+cfhs+"index---"+index+"---"+( gongDanList.size() - 1));
// LogPrint(listGzz.size());
//如果当前任务分配进此工作站不超过最大任务数,或者 当前任务在内 剩余数量不超过 拆分行数或者 当前工单是最后一个工单
if (GzzRenwuOver <= 0 || (this_notFenPei<=cfhs||index == gongDanList.size() - 1)) {
@ -663,8 +672,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
"------------------------匹配容器号和工作中心-----------------------------------------------");
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,
"↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "当前工单号:"
+ gongDanMingXi.gdh);
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "当前工单号:"+ gongDanMingXi.gdh);
for (GongZuoZhan gzz : listGzz) {
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "当前工作站:" + gzz.code);
List<FenPei> list = gzz.renWuList;
@ -680,8 +688,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
//2025/02/24 if (chao > cfhs) { 修改为 chao > 0 散单不追加到 大工单内
if (chao > 0) {
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "工作站:" + gzz.code
+ "超出:" + chao + "无法分配,跳过此工作站");
//LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "工作站:" + gzz.code+ "超出:" + chao + "无法分配,跳过此工作站");
continue;
}
StringBuffer sb_pipei = new StringBuffer();
@ -696,12 +703,10 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
sb_pipei.append(fenPei.rqh);
}
}
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "工作站:" + gzz.code
+ " gzzx" + gzzx + " rqh_count" + rqh_count);
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, sb_gzzx.toString());
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, sb_rqh.toString());
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,
"匹配上的容器号: " + sb_pipei.toString());
//LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "工作站:" + gzz.code+ " gzzx" + gzzx + " rqh_count" + rqh_count);
//LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, sb_gzzx.toString());
//LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, sb_rqh.toString());
//LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"匹配上的容器号: " + sb_pipei.toString());
Boolean isPiPeiGzzx = false;// true 优先按照工作中心匹配再按照容器号。false直接按照容器号匹配散单
if (isPiPeiGzzx) {
if (max_gzzx == 0 && gzzx == 0 && rqh_count > max_rqh_count) {
@ -745,9 +750,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
+ " 工作站:" + check.code);
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,
"↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
LogPrint(
log_GongZuoZhanPiPeiForRqhAndGzzx,
"------------------------匹配容器号和工作中心-----------------------------------------------");
return check;
}
@ -761,11 +764,10 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
LogPrint(
log_GongZuoZhanPiPeiForRqhAndGzzx,
"------------------------匹配容器号和工作中心DuoHang-----------------------------------------------");
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,
"↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "当前头物料:"+ GDH);
for (GongZuoZhan gzz : listGzz) {
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "当前工作站:" + gzz.code);
//LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "当前工作站:" + gzz.code);
List<FenPei> list = gzz.renWuList;
StringBuffer sb_gzzx = new StringBuffer();
StringBuffer sb_rqh = new StringBuffer();
@ -779,8 +781,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
//2025/02/24 if (chao > cfhs) { 修改为 chao > 0 散单不追加到 大工单内
if (chao > 0) {
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "工作站:" + gzz.code
+ "超出:" + chao + "无法分配,跳过此工作站");
//LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "工作站:" + gzz.code+ "超出:" + chao + "无法分配,跳过此工作站");
continue;
}
StringBuffer sb_pipei = new StringBuffer();
@ -795,12 +796,10 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
sb_pipei.append(fenPei.rqh);
}
}
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "工作站:" + gzz.code
+ " gzzx" + gzzx + " rqh_count" + rqh_count);
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, sb_gzzx.toString());
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, sb_rqh.toString());
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,
"匹配上的容器号: " + sb_pipei.toString());
//LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "工作站:" + gzz.code+ " gzzx" + gzzx + " rqh_count" + rqh_count);
//LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, sb_gzzx.toString());
//LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, sb_rqh.toString());
//LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"匹配上的容器号: " + sb_pipei.toString());
Boolean isPiPeiGzzx = false;// true 优先按照工作中心匹配再按照容器号。false直接按照容器号匹配散单
if (isPiPeiGzzx) {
if (max_gzzx == 0 && gzzx == 0 && rqh_count > max_rqh_count) {
@ -844,9 +843,6 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
+ " 工作站:" + check.code);
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,
"↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
LogPrint(
log_GongZuoZhanPiPeiForRqhAndGzzx,
"------------------------匹配容器号和工作中心-----------------------------------------------");
return check;
}
@ -935,11 +931,9 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
int currCount = gdPaiXu.hangshu;
boolean isFind = false;
for (String twlKey : touwuliao_map.keySet()) {
String twl_in = touwuliao_map.get(twlKey).get(0).twl + "_"
+ touwuliao_map.get(twlKey).get(0).list.get(0).wllx;
String twl_in = touwuliao_map.get(twlKey).get(0).twl + "_"+ touwuliao_map.get(twlKey).get(0).list.get(0).wllx;
int currCount_in = touwuliao_map.get(twlKey).get(0).hangshu;
if (twl_in.equals(fenzu)
&& Math.abs(currCount - currCount_in) <= 4||Math.abs(currCount - currCount_in) >40) {
if ((twl_in.equals(fenzu)&& Math.abs(currCount - currCount_in) <= 4)||(twl_in.equals(fenzu)&&currCount>40&&currCount_in>40)) {
// 在分配好的数据中找到了相同的头物料 且 数量差小于4 头物料分组规则
List<GongDanMingXi> old = touwuliao_map.get(twlKey);
old.add(gdPaiXu);