// 头物料相同的工单且行数差小于4 放在一起 或者 头物料相同的工单且行数大于40 放在一起
							parent
							
								
									4b544cac3a
								
							
						
					
					
						commit
						947c440423
					
				| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue