工作站能效

main
FOAM 2025-01-07 17:02:40 +08:00
parent 52603ba6e8
commit b4d3f96e41
1 changed files with 95 additions and 10 deletions

View File

@ -18,6 +18,7 @@ import org.hibernate.Session;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.dev.energy.server.service.pojo.DefaultBaseManager; import com.dev.energy.server.service.pojo.DefaultBaseManager;
import com.dev.swms.server.model.base.ShiXiao;
import com.dev.swms.server.model.inventory.Task; import com.dev.swms.server.model.inventory.Task;
import com.dev.swms.server.model.receiving.LibraryTaskType.classification; import com.dev.swms.server.model.receiving.LibraryTaskType.classification;
import com.dev.swms.server.model.shipping.NewWaveFlag; import com.dev.swms.server.model.shipping.NewWaveFlag;
@ -35,13 +36,33 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
public void allocateGZZ(List<Long> ids) { public void allocateGZZ(List<Long> ids) {
for (Long id : ids) { for (Long id : ids) {
WaveDoc waveDoc = commonDao.get(WaveDoc.class, id); WaveDoc waveDoc = commonDao.get(WaveDoc.class, id);
allocateGZZ(waveDoc.getCode(), getGZZ(NewWaveFlag.LXQ), ShiXiao lx_sx=commonDao.get(ShiXiao.class, NewWaveFlag.LKQ);
getGZZ(NewWaveFlag.HJQ), getGZZ(NewWaveFlag.LKQ)); ShiXiao hj_sx=commonDao.get(ShiXiao.class, NewWaveFlag.LKQ);
ShiXiao lk_sx=commonDao.get(ShiXiao.class, NewWaveFlag.LKQ);
//得到工作站剩余任务行数
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();
int lxCount=0;//工作站任务未处理任务数
int hjCount=0;
int lkCount=0;
for(String code:lx_codes){
lxCount+=maps.get(code);
}
for(String code:hj_codes){
hjCount+=maps.get(code);
}
for(String code:lk_codes){
lkCount+=maps.get(code);
}
allocateGZZ(waveDoc.getCode(),NewWaveFlag.LKQ, lx_codes,(int)lx_sx.getTaskD(),(int)lx_sx.getNumber(),lxCount,maps);
allocateGZZ(waveDoc.getCode(),NewWaveFlag.HJQ, hj_codes,(int)hj_sx.getTaskD(),(int)hj_sx.getNumber(),hjCount,maps);
allocateGZZ(waveDoc.getCode(),NewWaveFlag.LKQ, lk_codes,(int)lk_sx.getTaskD(),(int)lk_sx.getNumber(),lkCount,maps);
} }
} }
public void allocateGZZ(String waveDocCode, List<Long> lx_gzz_ids, public void allocateGZZ(String waveDocCode, Long zone_id,List<String> gzz_codes,int cfhs,int jhxl,int syhs,Map<String, Integer> gzz_maps) {
List<Long> hj_gzz_ids, List<Long> lk_gzz_ids) {
Session session = ((HibernateDaoSupport) this.commonDao) Session session = ((HibernateDaoSupport) this.commonDao)
.getSessionFactory().openSession(); .getSessionFactory().openSession();
/* try { */ /* try { */
@ -79,11 +100,13 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
+ "left join WAVE_DOC wd on wd.id=t.WAVE_DOC_ID " + "left join WAVE_DOC wd on wd.id=t.WAVE_DOC_ID "
+ "where 1=1 and pt.BILL_TYPE_ID=1094 and wd.code='" + "where 1=1 and pt.BILL_TYPE_ID=1094 and wd.code='"
+ waveDocCode + waveDocCode
+ "' and t.WAVE_DOC_ID is not null " + "' and t.WAVE_DOC_ID is not null ";
// + if(zone_id!=null){
// " t.PLAN_QUANTITY_MU-t.MOVED_QUANTITY_MU>0 and t.agv_status=0 " sql+=" and z.id="+zone_id;
+ "group by pt.code,t.BILLCODE,item.id,item.code,item.BE_MARK_WEIGHT,loc.id,loc.code,ik.PROP_C1,ik.PROP_C2,ik.PROP_C3,ik.PROP_D1,ik.PROP_D2,item.ISBOM " }
+ "order by min(t.skips ),max(loc.code) asc, item.id,pt.code,t.BILLCODE "; // " t.PLAN_QUANTITY_MU-t.MOVED_QUANTITY_MU>0 and t.agv_status=0 "
sql+= "group by pt.code,t.BILLCODE,item.id,item.code,item.BE_MARK_WEIGHT,loc.id,loc.code,ik.PROP_C1,ik.PROP_C2,ik.PROP_C3,ik.PROP_D1,ik.PROP_D2,item.ISBOM "
+ "order by min(t.skips ),max(loc.code) asc, item.id,pt.code,t.BILLCODE ";
logger.info(sql); logger.info(sql);
Query query = session.createSQLQuery(sql); Query query = session.createSQLQuery(sql);
List<Object[]> list = (List<Object[]>) query.list(); List<Object[]> list = (List<Object[]>) query.list();
@ -291,6 +314,18 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
logger.info("--------------------------------------------------------------------------------------------------------------------------------------------------"); logger.info("--------------------------------------------------------------------------------------------------------------------------------------------------");
} }
int count_all=syhs+list_fenpei.size();//所有未处理的数据
int gzz_nx_avg=count_all/gzz_codes.size();//得到工作站的平均能效,
if(gzz_nx_avg<jhxl){//小于默认值则取默认
gzz_nx_avg=jhxl;
}
//分配工作站,每个工作站剩余可分配订单数
for(String code:gzz_codes){
int gzz_nx=gzz_nx_avg-gzz_maps.get(code);
}
// 写入数据库 // 写入数据库
/* /*
@ -469,11 +504,61 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
return v; return v;
} }
public List<Long> getGZZ(Long zone_id) { public List<Long> getGzzIds(Long zone_id) {
String hql = "select id from LocationStorage l where l.type='拣货' and l.warehouseArea.id=" String hql = "select id from LocationStorage l where l.type='拣货' and l.warehouseArea.id="
+ zone_id;// +" and l.beAuto=1"; + zone_id;// +" and l.beAuto=1";
List<Long> ids = commonDao.findByQuery(hql); List<Long> ids = commonDao.findByQuery(hql);
return ids; return ids;
} }
public List<String> getGzzCodes(Long zone_id) {
String hql = "select code from LocationStorage l where l.type='拣货' and l.warehouseArea.id="
+ zone_id;// +" and l.beAuto=1";
List<String> codes = commonDao.findByQuery(hql);
return codes;
}
public Map<String, Integer > gzzCount(){
Session session = ((HibernateDaoSupport) this.commonDao).getSessionFactory().openSession();
String sql ="select v.gzz,count(v.gzz) gzz_count from "
+ " (SELECT MAX ( t.END_REGION ) AS gzz FROM task t "
+ " LEFT JOIN PICK_TICKET_DETAIL ptd ON ptd.id= t.PICK_TICKET_DETAIL_ID "
+ " LEFT JOIN PICK_TICKET pt ON pt.id= ptd.PICK_TICKET_ID "
+ " LEFT JOIN LOCATION loc ON loc.id= t.SRC_LOC_ID "
+ " LEFT JOIN ITEM_KEY ik ON ik.id= t.ITEM_KEY_ID "
+ " LEFT JOIN ITEM item ON item.id= ik.ITEM_ID "
+ " LEFT JOIN WAVE_DOC wd ON wd.id= t.WAVE_DOC_ID "
+ " WHERE 1 = 1 AND pt.BILL_TYPE_ID= 1094 and loc.ZONE_ID in (1763,1765,1766) "
+ " AND t.agv_Status in (1,2) "
+ " AND t.WAVE_DOC_ID IS NOT NULL "
+ " GROUP BY pt.code,t.BILLCODE,loc.id,loc.code,ik.PROP_C1,ik.PROP_C2,ik.PROP_C3,ik.PROP_D1,ik.PROP_D2,item.ISBOM ) v "
+ " GROUP BY v.gzz";
logger.info(sql);
Query query = session.createSQLQuery(sql);
List<Object[]> objs= (List<Object[]>)query.list();
Map<String, Integer > gdCount = new HashMap<String, Integer>();
for(int i=0;i<objs.size();i++){
Object[] obj=objs.get(i);
if(obj[0]==null||obj[0].toString().equals("")){
break;
}else{
gdCount.put(obj[0].toString(), getValueInt(obj,1));
}
}
session.close();
return gdCount;
}
public ShiXiao kqShiXiao(Long zone_id){
String hql =" from ShiXiao sx where sx.warehouseArea.id="+zone_id;
List<ShiXiao> list=commonDao.findByQuery(hql);
if(list.size()>0){
return list.get(0);
}
return null;
}
} }