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 24417b5..0990cc7 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 @@ -93,7 +93,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements // " and b.PLAN_QUANTITY_MU-b.MOVED_QUANTITY_MU>0 "+ + " for xml Path('')),1,1,'') as taskId," + "item.code as liaohao ," - + "max(z.id) as kuqu,"j + + "max(z.id) as kuqu," + "max(t.END_REGION) as gzz," + "sum(t.PLAN_QUANTITY_MU-t.MOVED_QUANTITY_MU) as jhsl," + "MAX(s2.LP) as rqh ," @@ -418,40 +418,61 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements List list_show = twlFenZu.gdPaiXus; //当前头物料所有的工单组合,以及每个工单的物料明细 int this_fenzuCount=twlFenZu.wl_count; //当前分组总物料行数 ListlistGzz= FaiXuGzz(gzzMap); //工作站根据可分配数量进行排序 - int gzz_index=0; //当前分配工作站的排序下标 - GongZuoZhan curr_gzz=listGzz.get(0); - for (int index=0;index list_wList=gongDanMingXi.list; - int chao=(list_wList.size()+curr_gzz.notFinished+curr_gzz.renWuList.size())-curr_gzz.maxRenWu; - logger.info(listGzz.size()); - if(chao<=cfhs||index==list_show.size()-1){ - logger.info("11=="+listGzz.get(gzz_index)); - //如果当前待分配+此工作站未完成+已分配任务数 小于最大任务数 //将当前任务分配到此工作站 - for (FenPei fenPei : list_wList) { - curr_gzz.renWuList.add(fenPei); - } - if(index==list_show.size()-1){ - //最后一个工单 - gzzMap.put(curr_gzz.code, curr_gzz); - } - }else{ - logger.info("2=="+listGzz.get(gzz_index)); - gzzMap.put(curr_gzz.code, curr_gzz); - //如果当前待分配+此工作站未完成+已分配任务数 大于最大任务数 //将当前任务分配到下个工作站 - gzz_index=gzz_index+1; - curr_gzz=listGzz.get(gzz_index); - for (FenPei fenPei : list_wList) { - curr_gzz.renWuList.add(fenPei); - } - if(index==list_show.size()-1){ - //最后一个工单 - gzzMap.put(curr_gzz.code, curr_gzz); - } + for (FenPei fenPei : list_wList) { + curr_gzz.renWuList.add(fenPei); + curr_gzz.RongQIHaoMap.put(fenPei.rqh,""); + curr_gzz.GongZuoZhongXinMap.put(fenPei.gzzx,""); + } + gzzMap.put(curr_gzz.code, curr_gzz); + + }else{ + //多个工单匹配进行 + int gzz_index=0; //当前分配工作站的排序下标 + GongZuoZhan curr_gzz=listGzz.get(0); + for (int index=0;index list_wList=gongDanMingXi.list; + int chao=(list_wList.size()+curr_gzz.notFinished+curr_gzz.renWuList.size())-curr_gzz.maxRenWu; + logger.info(listGzz.size()); + if(chao<=cfhs||index==list_show.size()-1){ + logger.info("11=="+listGzz.get(gzz_index)); + //如果当前待分配+此工作站未完成+已分配任务数 小于最大任务数 //将当前任务分配到此工作站 + for (FenPei fenPei : list_wList) { + curr_gzz.renWuList.add(fenPei); + curr_gzz.RongQIHaoMap.put(fenPei.rqh,""); + curr_gzz.GongZuoZhongXinMap.put(fenPei.gzzx,""); + } + if(index==list_show.size()-1){ + //最后一个工单 + gzzMap.put(curr_gzz.code, curr_gzz); + } + }else{ + logger.info("2=="+listGzz.get(gzz_index)); + gzzMap.put(curr_gzz.code, curr_gzz); + //如果当前待分配+此工作站未完成+已分配任务数 大于最大任务数 //将当前任务分配到下个工作站 + gzz_index=gzz_index+1; + curr_gzz=listGzz.get(gzz_index); + for (FenPei fenPei : list_wList) { + curr_gzz.renWuList.add(fenPei); + curr_gzz.RongQIHaoMap.put(fenPei.rqh,""); + curr_gzz.GongZuoZhongXinMap.put(fenPei.gzzx,""); + } + if(index==list_show.size()-1){ + //最后一个工单 + gzzMap.put(curr_gzz.code, curr_gzz); + } + } + } - } + + } int fenPeiCount=0; for (String key : gzzMap.keySet()) { @@ -471,7 +492,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements } task.setBillCode(fenPei.gdh+"-"+lx+"-"+fenPei.chf_fz); task.setEndRegion(gongZuoZhan.code); - task.setAgvStatus(1);//下发 + //task.setAgvStatus(1);//下发 this.commonDao.store(task); logger.info("one:"+task.getBillCode()+"---"+task.getEndRegion()+"--two:-"+task.getOldGzz()+"---"+task.getOldZrw()+"--three:-"+fenPei.gdh+"-"+fenPei.chf_fz+"-----"+gongZuoZhan.code); } @@ -490,6 +511,63 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements session.close(); } + public GongZuoZhan PiPeiGongZuoZhanForGzzxAndRqh(ListlistGzz,GongDanMingXi gongDanMingXi,int cfhs){ + List list_wList=gongDanMingXi.list; + GongZuoZhan check=listGzz.get(0); + int max_rqh_count=0; + int max_gzzx=0; + for (GongZuoZhan gzz : listGzz) { + int chao=(list_wList.size()+gzz.notFinished+gzz.renWuList.size())-gzz.maxRenWu; + logger.info(listGzz.size()); + if(chao>cfhs){ + continue; + } + + int rqh_count=0; + int gzzx=0; + for (FenPei fenPei : list_wList) { + if(gzz.GongZuoZhongXinMap.containsKey(fenPei.gzzx)){ + gzzx=1; + } + if(gzz.RongQIHaoMap.containsKey(fenPei.rqh)){ + rqh_count=rqh_count+1; + } + } + Boolean isPiPeiGzzx=true; + if(isPiPeiGzzx){ + if(max_gzzx==0 && gzzx==0 && rqh_count>max_rqh_count){ + //如果工作中心未匹配过,且本次未匹配到工作中心 容器号 匹配 度大优先 + max_rqh_count=rqh_count; + max_gzzx=gzzx; + check=gzz; + }else if(max_gzzx==0 && gzzx==1 ){ + //如果工作中心未匹配过,本次匹配到工作中心 + max_rqh_count=rqh_count; + max_gzzx=gzzx; + check=gzz; + + }else if(max_gzzx==1 &&gzzx==1 && rqh_count>max_rqh_count){ + //如果匹配过工作中心,且本次匹配到工作中心; 容器号匹配度大优先 + max_rqh_count=rqh_count; + max_gzzx=gzzx; + check=gzz; + + } + }else{ + if(rqh_count>max_rqh_count){ + //如果工作中心未匹配过,且本次未匹配到工作中心 容器号 匹配 度大优先 + max_rqh_count=rqh_count; + max_gzzx=gzzx; + check=gzz; + } + } + } + logger.info("------------------------匹配容器号和工作中心-----------------------------------------------"); + logger.info("容器号匹配次数:"+max_rqh_count+" 工作中心匹配次数:"+max_gzzx+" 工单号:"+gongDanMingXi.gdh+" 工作站:"+check.code); + logger.info("------------------------匹配容器号和工作中心-----------------------------------------------"); + return check; + } + public List FaiXuGzz(Map gzzMap){ List list =new ArrayList(); @@ -515,6 +593,9 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements public int maxRenWu; public int notFinished =0; public List renWuList=new ArrayList(); + + Map GongZuoZhongXinMap = new HashMap<>(); + Map RongQIHaoMap = new HashMap<>(); @Override public int compareTo(GongZuoZhan other) { // TODO Auto-generated method stub