300行以下订单自适应开启工作站个数

main
FOAM 2025-02-24 17:41:12 +08:00
parent 52ab113fb8
commit 719494249a
1 changed files with 49 additions and 22 deletions

View File

@ -54,39 +54,60 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
List<String> lx_codes = getGzzCodes(NewWaveFlag.LXQ);// 自动创波工作站
List<String> hj_codes = getGzzCodes(NewWaveFlag.HJQ);
List<String> lk_codes = getGzzCodes(NewWaveFlag.LKQ);
Map<String, Integer> maps = gzzCount(waveDoc.getCode());// 所有工作站没完成的任务
Map<String, Integer> gzz_maps = gzzCount(waveDoc.getCode());// 所有工作站没完成的任务
int lxCount = 0;// 工作站任务未处理任务数
int hjCount = 0;
int lkCount = 0;
for (String code : lx_codes) {
lxCount += maps.get(code) == null ? 0 : maps.get(code);
lxCount += gzz_maps.get(code) == null ? 0 : gzz_maps.get(code);
}
//定义工作站最小能效数,自适应开启工作站数
//自适应合理开启工作站数gzz_codes每个工作站暂定60
int lx_jianHuoXiaoLv=getValueGzzNumber(lx_sx);
List<Object[]> lx_wwc_list=getTaskList(waveDoc.getCode(), NewWaveFlag.LXQ);
if(lx_wwc_list.size()<=lx_jianHuoXiaoLv*5){//lx_jianHuoXiaoLv*lx_codes.size()/2
List<GongZuoZhan> gzlistGongZuoZhans = new ArrayList<DefaultNewWaveManager.GongZuoZhan>();
for (String gongzuozhancode : lx_codes) {
int notFinished = (gzz_maps.get(gongzuozhancode) == null ? 0
: gzz_maps.get(gongzuozhancode));
GongZuoZhan gongZuoZhan = new GongZuoZhan(gongzuozhancode,
notFinished, 0, true);
gzlistGongZuoZhans.add(gongZuoZhan);
}
Collections.sort(gzlistGongZuoZhans);
lx_codes=new ArrayList<String>();
int wcc_count=0;
for(GongZuoZhan gzz:gzlistGongZuoZhans){
wcc_count+=lx_jianHuoXiaoLv-gzz.notFinished;
lx_codes.add(gzz.code);
logger.info("开启工作站========="+gzz.code+"====剩余未完成任务数==========="+gzz.notFinished);
if(wcc_count>=lx_wwc_list.size()){
break;
}
}
}
for (String code : hj_codes) {
hjCount += maps.get(code) == null ? 0 : maps.get(code);
}
hjCount += gzz_maps.get(code) == null ? 0 : gzz_maps.get(code);
}
for (String code : lk_codes) {
lkCount += maps.get(code) == null ? 0 : maps.get(code);
lkCount += gzz_maps.get(code) == null ? 0 : gzz_maps.get(code);
}
allocateGZZ(waveDoc.getCode(), NewWaveFlag.LXQ, lx_codes,
(int) lx_sx.getTaskD(), getValueGzzNumber(lx_sx), lxCount,
maps);
allocateGZZ(waveDoc.getCode(), NewWaveFlag.HJQ, hj_codes,
allocateGZZ(lx_wwc_list, lx_codes,
(int) lx_sx.getTaskD(), lx_jianHuoXiaoLv, lxCount,
gzz_maps);
allocateGZZ(getTaskList(waveDoc.getCode(), NewWaveFlag.HJQ), hj_codes,
(int) hj_sx.getTaskD(), getValueGzzNumber(hj_sx), hjCount,
maps);
allocateGZZ(waveDoc.getCode(), NewWaveFlag.LKQ, lk_codes,
gzz_maps);
allocateGZZ(getTaskList(waveDoc.getCode(), NewWaveFlag.LKQ), lk_codes,
(int) lk_sx.getTaskD(), getValueGzzNumber(lk_sx), lkCount,
maps);
gzz_maps);
}
}
public void allocateGZZ(String waveDocCode, Long zone_id,
List<String> gzz_codes, int cfhs, int jianHuoXiaoLv, int FenPeiWeiChuLiRenWu,
Map<String, Integer> gzz_maps) {
public List<Object[]> getTaskList(String waveDocCode, Long zone_id){
Session session = ((HibernateDaoSupport) this.commonDao)
.getSessionFactory().openSession();
/* try { */
@ -123,9 +144,9 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
+ "left join STOCK s1 on s1.id=loc.stock "
+ "left join WAVE_DOC wd on wd.id=t.WAVE_DOC_ID "
+ "where 1=1 and pt.BILL_TYPE_ID=1094 "
// + "and t.agv_status in (0,-1) "
+ "and wd.code='" + waveDocCode
+ "' and t.WAVE_DOC_ID is not null";
// + "and t.agv_status in (0,-1) "
+ "and wd.code='" + waveDocCode+ "' "
+ "and t.WAVE_DOC_ID is not null";
if (zone_id != null) {
sql += " and z.id=" + zone_id;
}
@ -136,8 +157,11 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
Query query = session.createSQLQuery(sql);
List<Object[]> list = (List<Object[]>) query.list();
session.close();
return list;
}
public void allocateGZZ(List<Object[]> list,List<String> gzz_codes, int cfhs, int jianHuoXiaoLv, int FenPeiWeiChuLiRenWu,Map<String, Integer> gzz_maps) {
int GongDan_wuLiaoMingXiCout = list.size();
List<FenPei> list_fenpei = new ArrayList<FenPei>();
List<FenPei> list_fenpei_wgzz = new ArrayList<FenPei>();// 无需分配工作站数据
for (int i = 0; i < list.size(); i++) {
@ -351,6 +375,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
gzlistGongZuoZhans.add(gongZuoZhan);
}
Collections.sort(gzlistGongZuoZhans);
int count_all = FenPeiWeiChuLiRenWu + list_fenpei.size();// 所有未处理的数据
int gzz_nx_avg = count_all / gzz_codes.size();// 得到工作站的平均能效,
@ -585,6 +610,8 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
log_GongZuoZhanFenPeiJieGuo,
"↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
}
Session session = ((HibernateDaoSupport) this.commonDao)
.getSessionFactory().openSession();
for (String gdhkey: gdNextMax_ALL.keySet()) {
Sequence s = gdNextMaps.get(gdhkey);
int maxB=0;