工作中心匹配
parent
2d754b1ef8
commit
c930e431ca
|
|
@ -93,7 +93,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
// " and b.PLAN_QUANTITY_MU-b.MOVED_QUANTITY_MU>0 "+
|
// " and b.PLAN_QUANTITY_MU-b.MOVED_QUANTITY_MU>0 "+
|
||||||
+ " for xml Path('')),1,1,'') as taskId,"
|
+ " for xml Path('')),1,1,'') as taskId,"
|
||||||
+ "item.code as liaohao ,"
|
+ "item.code as liaohao ,"
|
||||||
+ "max(z.id) as kuqu,"j
|
+ "max(z.id) as kuqu,"
|
||||||
+ "max(t.END_REGION) as gzz,"
|
+ "max(t.END_REGION) as gzz,"
|
||||||
+ "sum(t.PLAN_QUANTITY_MU-t.MOVED_QUANTITY_MU) as jhsl,"
|
+ "sum(t.PLAN_QUANTITY_MU-t.MOVED_QUANTITY_MU) as jhsl,"
|
||||||
+ "MAX(s2.LP) as rqh ,"
|
+ "MAX(s2.LP) as rqh ,"
|
||||||
|
|
@ -418,6 +418,20 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
List<GongDanMingXi> list_show = twlFenZu.gdPaiXus; //当前头物料所有的工单组合,以及每个工单的物料明细
|
List<GongDanMingXi> list_show = twlFenZu.gdPaiXus; //当前头物料所有的工单组合,以及每个工单的物料明细
|
||||||
int this_fenzuCount=twlFenZu.wl_count; //当前分组总物料行数
|
int this_fenzuCount=twlFenZu.wl_count; //当前分组总物料行数
|
||||||
List<GongZuoZhan>listGzz= FaiXuGzz(gzzMap); //工作站根据可分配数量进行排序
|
List<GongZuoZhan>listGzz= FaiXuGzz(gzzMap); //工作站根据可分配数量进行排序
|
||||||
|
|
||||||
|
if(list_show.size()==1){
|
||||||
|
GongDanMingXi gongDanMingXi=list_show.get(0);
|
||||||
|
GongZuoZhan curr_gzz=PiPeiGongZuoZhanForGzzxAndRqh(listGzz,gongDanMingXi,cfhs);
|
||||||
|
List<FenPei> list_wList=gongDanMingXi.list;
|
||||||
|
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; //当前分配工作站的排序下标
|
int gzz_index=0; //当前分配工作站的排序下标
|
||||||
GongZuoZhan curr_gzz=listGzz.get(0);
|
GongZuoZhan curr_gzz=listGzz.get(0);
|
||||||
for (int index=0;index<list_show.size();index++) {
|
for (int index=0;index<list_show.size();index++) {
|
||||||
|
|
@ -431,6 +445,8 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
//如果当前待分配+此工作站未完成+已分配任务数 小于最大任务数 //将当前任务分配到此工作站
|
//如果当前待分配+此工作站未完成+已分配任务数 小于最大任务数 //将当前任务分配到此工作站
|
||||||
for (FenPei fenPei : list_wList) {
|
for (FenPei fenPei : list_wList) {
|
||||||
curr_gzz.renWuList.add(fenPei);
|
curr_gzz.renWuList.add(fenPei);
|
||||||
|
curr_gzz.RongQIHaoMap.put(fenPei.rqh,"");
|
||||||
|
curr_gzz.GongZuoZhongXinMap.put(fenPei.gzzx,"");
|
||||||
}
|
}
|
||||||
if(index==list_show.size()-1){
|
if(index==list_show.size()-1){
|
||||||
//最后一个工单
|
//最后一个工单
|
||||||
|
|
@ -444,6 +460,8 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
curr_gzz=listGzz.get(gzz_index);
|
curr_gzz=listGzz.get(gzz_index);
|
||||||
for (FenPei fenPei : list_wList) {
|
for (FenPei fenPei : list_wList) {
|
||||||
curr_gzz.renWuList.add(fenPei);
|
curr_gzz.renWuList.add(fenPei);
|
||||||
|
curr_gzz.RongQIHaoMap.put(fenPei.rqh,"");
|
||||||
|
curr_gzz.GongZuoZhongXinMap.put(fenPei.gzzx,"");
|
||||||
}
|
}
|
||||||
if(index==list_show.size()-1){
|
if(index==list_show.size()-1){
|
||||||
//最后一个工单
|
//最后一个工单
|
||||||
|
|
@ -453,6 +471,9 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
int fenPeiCount=0;
|
int fenPeiCount=0;
|
||||||
for (String key : gzzMap.keySet()) {
|
for (String key : gzzMap.keySet()) {
|
||||||
GongZuoZhan gongZuoZhan=gzzMap.get(key);
|
GongZuoZhan gongZuoZhan=gzzMap.get(key);
|
||||||
|
|
@ -471,7 +492,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
}
|
}
|
||||||
task.setBillCode(fenPei.gdh+"-"+lx+"-"+fenPei.chf_fz);
|
task.setBillCode(fenPei.gdh+"-"+lx+"-"+fenPei.chf_fz);
|
||||||
task.setEndRegion(gongZuoZhan.code);
|
task.setEndRegion(gongZuoZhan.code);
|
||||||
task.setAgvStatus(1);//下发
|
//task.setAgvStatus(1);//下发
|
||||||
this.commonDao.store(task);
|
this.commonDao.store(task);
|
||||||
logger.info("one:"+task.getBillCode()+"---"+task.getEndRegion()+"--two:-"+task.getOldGzz()+"---"+task.getOldZrw()+"--three:-"+fenPei.gdh+"-"+fenPei.chf_fz+"-----"+gongZuoZhan.code);
|
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();
|
session.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public GongZuoZhan PiPeiGongZuoZhanForGzzxAndRqh(List<GongZuoZhan>listGzz,GongDanMingXi gongDanMingXi,int cfhs){
|
||||||
|
List<FenPei> 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<GongZuoZhan> FaiXuGzz(Map<String, GongZuoZhan> gzzMap){
|
public List<GongZuoZhan> FaiXuGzz(Map<String, GongZuoZhan> gzzMap){
|
||||||
List<GongZuoZhan> list =new ArrayList<DefaultNewWaveManager.GongZuoZhan>();
|
List<GongZuoZhan> list =new ArrayList<DefaultNewWaveManager.GongZuoZhan>();
|
||||||
|
|
@ -515,6 +593,9 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
public int maxRenWu;
|
public int maxRenWu;
|
||||||
public int notFinished =0;
|
public int notFinished =0;
|
||||||
public List<FenPei> renWuList=new ArrayList<DefaultNewWaveManager.FenPei>();
|
public List<FenPei> renWuList=new ArrayList<DefaultNewWaveManager.FenPei>();
|
||||||
|
|
||||||
|
Map<String, String> GongZuoZhongXinMap = new HashMap<>();
|
||||||
|
Map<String, String> RongQIHaoMap = new HashMap<>();
|
||||||
@Override
|
@Override
|
||||||
public int compareTo(GongZuoZhan other) {
|
public int compareTo(GongZuoZhan other) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue