From 719494249a67e672e689ab86a44f197743826210 Mon Sep 17 00:00:00 2001 From: FOAM <491460741@qq.com> Date: Mon, 24 Feb 2025 17:41:12 +0800 Subject: [PATCH] =?UTF-8?q?300=E8=A1=8C=E4=BB=A5=E4=B8=8B=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E8=87=AA=E9=80=82=E5=BA=94=E5=BC=80=E5=90=AF=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E7=AB=99=E4=B8=AA=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shipping/pojo/DefaultNewWaveManager.java | 71 +++++++++++++------ 1 file changed, 49 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/dev/swms/server/service/shipping/pojo/DefaultNewWaveManager.java b/src/main/java/com/dev/swms/server/service/shipping/pojo/DefaultNewWaveManager.java index aff6116..fb4e02b 100644 --- a/src/main/java/com/dev/swms/server/service/shipping/pojo/DefaultNewWaveManager.java +++ b/src/main/java/com/dev/swms/server/service/shipping/pojo/DefaultNewWaveManager.java @@ -54,39 +54,60 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements List lx_codes = getGzzCodes(NewWaveFlag.LXQ);// 自动创波工作站 List hj_codes = getGzzCodes(NewWaveFlag.HJQ); List lk_codes = getGzzCodes(NewWaveFlag.LKQ); - Map maps = gzzCount(waveDoc.getCode());// 所有工作站没完成的任务 + Map 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 lx_wwc_list=getTaskList(waveDoc.getCode(), NewWaveFlag.LXQ); + if(lx_wwc_list.size()<=lx_jianHuoXiaoLv*5){//lx_jianHuoXiaoLv*lx_codes.size()/2 + List gzlistGongZuoZhans = new ArrayList(); + 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(); + 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 gzz_codes, int cfhs, int jianHuoXiaoLv, int FenPeiWeiChuLiRenWu, - Map gzz_maps) { + public List 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 list = (List) query.list(); + session.close(); + return list; + } + public void allocateGZZ(List list,List gzz_codes, int cfhs, int jianHuoXiaoLv, int FenPeiWeiChuLiRenWu,Map gzz_maps) { int GongDan_wuLiaoMingXiCout = list.size(); - List list_fenpei = new ArrayList(); List list_fenpei_wgzz = new ArrayList();// 无需分配工作站数据 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;