no message
							parent
							
								
									b4d3f96e41
								
							
						
					
					
						commit
						82bebe402e
					
				| 
						 | 
				
			
			@ -36,33 +36,54 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
 | 
			
		|||
	public void allocateGZZ(List<Long> ids) {
 | 
			
		||||
		for (Long id : ids) {
 | 
			
		||||
			WaveDoc waveDoc = commonDao.get(WaveDoc.class, id);
 | 
			
		||||
			ShiXiao lx_sx=commonDao.get(ShiXiao.class, 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);
 | 
			
		||||
			ShiXiao lx_sx = commonDao.get(ShiXiao.class, 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;
 | 
			
		||||
			try {
 | 
			
		||||
				for (String code : lx_codes) {
 | 
			
		||||
					lxCount += maps.get(code);
 | 
			
		||||
				}
 | 
			
		||||
			} catch (Exception e) {
 | 
			
		||||
				lxCount = 0;
 | 
			
		||||
			}
 | 
			
		||||
			for(String code:hj_codes){
 | 
			
		||||
				hjCount+=maps.get(code);
 | 
			
		||||
			try {
 | 
			
		||||
				for (String code : hj_codes) {
 | 
			
		||||
					hjCount += maps.get(code);
 | 
			
		||||
				}
 | 
			
		||||
			} catch (Exception e) {
 | 
			
		||||
				hjCount = 0;
 | 
			
		||||
			}
 | 
			
		||||
			for(String code:lk_codes){
 | 
			
		||||
				lkCount+=maps.get(code);
 | 
			
		||||
			try {
 | 
			
		||||
				for (String code : lk_codes) {
 | 
			
		||||
					lkCount += maps.get(code);
 | 
			
		||||
				}
 | 
			
		||||
			} catch (Exception e) {
 | 
			
		||||
				lkCount = 0;
 | 
			
		||||
			}
 | 
			
		||||
			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);
 | 
			
		||||
			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, Long zone_id,List<String> gzz_codes,int cfhs,int jhxl,int syhs,Map<String, Integer> gzz_maps) {
 | 
			
		||||
	public void allocateGZZ(String waveDocCode, Long zone_id,
 | 
			
		||||
			List<String> gzz_codes, int cfhs, int jhxl, int syhs,
 | 
			
		||||
			Map<String, Integer> gzz_maps) {
 | 
			
		||||
		Session session = ((HibernateDaoSupport) this.commonDao)
 | 
			
		||||
				.getSessionFactory().openSession();
 | 
			
		||||
		/* try { */
 | 
			
		||||
| 
						 | 
				
			
			@ -99,14 +120,13 @@ 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 wd.code='"
 | 
			
		||||
				+ waveDocCode
 | 
			
		||||
				+ "' and t.WAVE_DOC_ID is not null ";
 | 
			
		||||
		if(zone_id!=null){
 | 
			
		||||
			sql+=" and z.id="+zone_id;
 | 
			
		||||
				+ waveDocCode + "' and t.WAVE_DOC_ID is not null ";
 | 
			
		||||
		if (zone_id != null) {
 | 
			
		||||
			sql += " and z.id=" + zone_id;
 | 
			
		||||
		}
 | 
			
		||||
			// " 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 ";
 | 
			
		||||
		// " 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);
 | 
			
		||||
		Query query = session.createSQLQuery(sql);
 | 
			
		||||
		List<Object[]> list = (List<Object[]>) query.list();
 | 
			
		||||
| 
						 | 
				
			
			@ -197,18 +217,20 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
 | 
			
		|||
		for (GdPaiXu gdPaiXu : gd_paixuList) {
 | 
			
		||||
 | 
			
		||||
			// 获取当前头物料
 | 
			
		||||
			String twl = gdPaiXu.twl;
 | 
			
		||||
			String fenzu = gdPaiXu.twl + gdPaiXu.list.get(0).wllx;
 | 
			
		||||
 | 
			
		||||
			String gdh = gdPaiXu.gdh;
 | 
			
		||||
 | 
			
		||||
			// 获取当前工单的数量
 | 
			
		||||
			int currCount = gdPaiXu.hangshu;
 | 
			
		||||
			// logger.info("---gdh:"+gdh+"		currCount:"+currCount);
 | 
			
		||||
			// 在touwuliao_map中进行匹配
 | 
			
		||||
			boolean isFind = false;
 | 
			
		||||
			for (String twlKey : touwuliao_map.keySet()) {
 | 
			
		||||
				String twl_in = touwuliao_map.get(twlKey).get(0).twl;
 | 
			
		||||
				String gdh_in = touwuliao_map.get(twlKey).get(0).gdh;
 | 
			
		||||
				String twl_in = touwuliao_map.get(twlKey).get(0).twl + "_"
 | 
			
		||||
						+ touwuliao_map.get(twlKey).get(0).list.get(0).wllx;
 | 
			
		||||
				int currCount_in = touwuliao_map.get(twlKey).get(0).hangshu;
 | 
			
		||||
				if (twl_in.equals(twl)
 | 
			
		||||
				if (twl_in.equals(fenzu)
 | 
			
		||||
						&& Math.abs(currCount - currCount_in) <= 4) {
 | 
			
		||||
					// 在分配好的数据中找到了相同的头物料 且 数量差小于4
 | 
			
		||||
					List<GdPaiXu> old = touwuliao_map.get(twlKey);
 | 
			
		||||
| 
						 | 
				
			
			@ -222,7 +244,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
 | 
			
		|||
				// 未匹配到数据,自己单独一组
 | 
			
		||||
				List<GdPaiXu> llist = new ArrayList<GdPaiXu>();
 | 
			
		||||
				llist.add(gdPaiXu);
 | 
			
		||||
				touwuliao_map.put(twl + "_" + gdh, llist);
 | 
			
		||||
				touwuliao_map.put(fenzu + "_" + gdh, llist);
 | 
			
		||||
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -234,7 +256,9 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
 | 
			
		|||
		for (String twlKey : touwuliao_map.keySet()) {
 | 
			
		||||
			List<GdPaiXu> list_show = touwuliao_map.get(twlKey);
 | 
			
		||||
			for (GdPaiXu fenPei2 : list_show) {
 | 
			
		||||
				logger.info("twl" + fenPei2.twl + "		GDH:" + fenPei2.gdh+ "		twlKey:" + twlKey + "		GDHCount:"+ fenPei2.hangshu);
 | 
			
		||||
				logger.info("twl" + fenPei2.twl + "		GDH:" + fenPei2.gdh
 | 
			
		||||
						+ "		twlKey:" + twlKey + "		GDHCount:"
 | 
			
		||||
						+ fenPei2.hangshu);
 | 
			
		||||
				twl_count++;
 | 
			
		||||
				StringBuffer rqm = new StringBuffer();
 | 
			
		||||
				for (FenPei fff : fenPei2.list) {
 | 
			
		||||
| 
						 | 
				
			
			@ -268,10 +292,12 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
 | 
			
		|||
					if (rq_showTime.containsKey(rqh)) {
 | 
			
		||||
						int stt = rq_showTime.get(rqh);
 | 
			
		||||
						rq_showTime.put(rqh, stt + 1);
 | 
			
		||||
						rqm_str.append(rqh + "    __" + stt + "("+ rq_showTime.get(rqh) + ")" + ",");
 | 
			
		||||
						rqm_str.append(rqh + "    __" + stt + "("
 | 
			
		||||
								+ rq_showTime.get(rqh) + ")" + ",");
 | 
			
		||||
					} else {
 | 
			
		||||
						rq_showTime.put(rqh, 1);
 | 
			
		||||
						rqm_str.append(rqh + "    __" + 0 + "("+ rq_showTime.get(rqh) + ")" + ",");
 | 
			
		||||
						rqm_str.append(rqh + "    __" + 0 + "("
 | 
			
		||||
								+ rq_showTime.get(rqh) + ")" + ",");
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -302,11 +328,12 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
 | 
			
		|||
		for (String twlKey : touwuliao_map.keySet()) {
 | 
			
		||||
			List<GdPaiXu> list_show = touwuliao_map.get(twlKey);
 | 
			
		||||
			for (GdPaiXu fenPei2 : list_show) {
 | 
			
		||||
				logger.info("twl" + fenPei2.twl + "		GDH:" + fenPei2.gdh+ "		twlKey:" + twlKey + "		GDHCount:"+ fenPei2.hangshu);
 | 
			
		||||
				twl_count++;
 | 
			
		||||
				logger.info("twl" + fenPei2.twl + "		GDH:" + fenPei2.gdh
 | 
			
		||||
						+ "		twlKey:" + twlKey + "		GDHCount:"
 | 
			
		||||
						+ fenPei2.hangshu);
 | 
			
		||||
				StringBuffer rqm = new StringBuffer();
 | 
			
		||||
				for (FenPei fff : fenPei2.list) {
 | 
			
		||||
					rqm.append(fff.rqh + "("+fff.show_time+")		");
 | 
			
		||||
					rqm.append(fff.rqh + "(" + fff.show_time + ")		");
 | 
			
		||||
				}
 | 
			
		||||
				logger.info(rqm.toString());
 | 
			
		||||
			}
 | 
			
		||||
| 
						 | 
				
			
			@ -315,15 +342,39 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
 | 
			
		|||
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		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;
 | 
			
		||||
		List<TwlFenZu> paixu = new ArrayList<>();
 | 
			
		||||
		for (String twlKey : touwuliao_map.keySet()) {
 | 
			
		||||
			List<GdPaiXu> list_show = touwuliao_map.get(twlKey);
 | 
			
		||||
			TwlFenZu twlFenZu = new TwlFenZu(list_show);
 | 
			
		||||
			paixu.add(twlFenZu);
 | 
			
		||||
		}
 | 
			
		||||
		//分配工作站,每个工作站剩余可分配订单数
 | 
			
		||||
		for(String code:gzz_codes){
 | 
			
		||||
			int gzz_nx=gzz_nx_avg-gzz_maps.get(code);
 | 
			
		||||
		Collections.sort(paixu);
 | 
			
		||||
 | 
			
		||||
		for (TwlFenZu twlFenZu : paixu) {
 | 
			
		||||
			List<GdPaiXu> list_show = twlFenZu.gdPaiXus;
 | 
			
		||||
			for (GdPaiXu fenPei2 : list_show) {
 | 
			
		||||
				logger.info("twl" + fenPei2.twl + "		GDH:" + fenPei2.gdh
 | 
			
		||||
						+ "	GDHCount:" + fenPei2.hangshu);
 | 
			
		||||
				StringBuffer rqm = new StringBuffer();
 | 
			
		||||
				for (FenPei fff : fenPei2.list) {
 | 
			
		||||
					rqm.append(fff.rqh + "(" + fff.show_time + ")		");
 | 
			
		||||
				}
 | 
			
		||||
				logger.info(rqm.toString());
 | 
			
		||||
			}
 | 
			
		||||
			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);
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// 写入数据库
 | 
			
		||||
| 
						 | 
				
			
			@ -355,6 +406,26 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	class TwlFenZu implements Comparable<TwlFenZu> {
 | 
			
		||||
		List<GdPaiXu> gdPaiXus;
 | 
			
		||||
		public int wl_count = 0;
 | 
			
		||||
 | 
			
		||||
		public TwlFenZu(List<GdPaiXu> gdPaiXus) {
 | 
			
		||||
			this.gdPaiXus = gdPaiXus;
 | 
			
		||||
			int count = 0;
 | 
			
		||||
			for (GdPaiXu gdPaiXu : gdPaiXus) {
 | 
			
		||||
				count = count + gdPaiXu.list.size();
 | 
			
		||||
			}
 | 
			
		||||
			this.wl_count = count;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public int compareTo(TwlFenZu other) {
 | 
			
		||||
			// TODO Auto-generated method stub
 | 
			
		||||
			return other.wl_count - this.wl_count;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	class GdPaiXu implements Comparable<GdPaiXu> {
 | 
			
		||||
		public String gdh; // 工单号
 | 
			
		||||
		public int hangshu;// 工单行数
 | 
			
		||||
| 
						 | 
				
			
			@ -518,9 +589,10 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
 | 
			
		|||
		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 "
 | 
			
		||||
	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 "
 | 
			
		||||
| 
						 | 
				
			
			@ -534,31 +606,29 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
 | 
			
		|||
				+ " 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));
 | 
			
		||||
		Query query = session.createSQLQuery(sql);
 | 
			
		||||
		List<Object[]> objs = (List<Object[]>) query.list();
 | 
			
		||||
		Map<String, Integer> gdCount = new HashMap<String, Integer>();
 | 
			
		||||
		if(objs.size()>0){
 | 
			
		||||
			for (int i = 0; i < objs.size(); i++) {
 | 
			
		||||
				Object[] obj = objs.get(i);
 | 
			
		||||
			
 | 
			
		||||
				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);
 | 
			
		||||
	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;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue