生成头物料,波次优化
parent
66c8a5643a
commit
8553b089ba
|
|
@ -127,7 +127,7 @@ public class Task extends VersionalEntity {
|
|||
private String operator;//操作人
|
||||
private Date dateline;//交单日期
|
||||
private String setTask;//集套交单任务
|
||||
private int agvStatus =0;//任务状态 0-未下发 1=已下发 2=执行中,3=完成。
|
||||
private int agvStatus =0;//任务状态 0-未下发 1=已下发 2=执行中,3=完成,-1已分配工作站未下发AGV。
|
||||
private Date operatorDate;//合单日期
|
||||
/**任务号 1已绑定工作站,0还没开始的任务*/
|
||||
private int libraryStatus=0;
|
||||
|
|
|
|||
|
|
@ -373,13 +373,6 @@ public class DefaultNewAutoAllocator extends DefaultBaseManager implements NewAu
|
|||
task.setStrBill7(inventory.getLocation().getStock().getLP());
|
||||
}
|
||||
task.setBillCode(pt.getRelatedBill2());
|
||||
String tItemCode=item.getCode().substring(0, 9);
|
||||
String ptCode = ptd.getPickTicket().getCode();
|
||||
char lastChar = ptCode.charAt(ptCode.length() - 1);
|
||||
if (Character.isUpperCase(lastChar)) {
|
||||
//System.out.println("最后一位是大写字母");
|
||||
task.setStrBill8(tItemCode+lastChar);
|
||||
}
|
||||
task.setCode(TimeNumberUtils.getTaskCode());
|
||||
task.setType(TaskType.MV_PICKTICKET);
|
||||
task.setItemKey(inventory.getItemKey());
|
||||
|
|
|
|||
|
|
@ -1136,13 +1136,6 @@ public class DefaultNewWaveDocManager extends DefaultBaseManager implements
|
|||
task.setStrBill7(inventory.getLocation().getStock().getLP());
|
||||
}
|
||||
task.setBillCode(pt.getRelatedBill2());
|
||||
String tItemCode=item.getCode().substring(0, 9);
|
||||
String ptCode = ptd.getPickTicket().getCode();
|
||||
char lastChar = ptCode.charAt(ptCode.length() - 1);
|
||||
if (Character.isUpperCase(lastChar)) {
|
||||
//System.out.println("最后一位是大写字母");
|
||||
task.setStrBill8(tItemCode+lastChar);
|
||||
}
|
||||
task.setCode(TimeNumberUtils.getTaskCode());
|
||||
task.setType(TaskType.MV_PICKTICKET);
|
||||
task.setItemKey(inventory.getItemKey());
|
||||
|
|
|
|||
|
|
@ -18,17 +18,15 @@ import org.hibernate.Query;
|
|||
import org.hibernate.Session;
|
||||
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
|
||||
|
||||
import com.dev.energy.server.model.EntityFactory;
|
||||
import com.dev.energy.server.service.pojo.DefaultBaseManager;
|
||||
import com.dev.sequence.model.sequence.Sequence;
|
||||
import com.dev.sequence.service.sequence.SequenceManager;
|
||||
import com.dev.swms.server.model.base.ShiXiao;
|
||||
import com.dev.swms.server.model.inventory.Task;
|
||||
import com.dev.swms.server.model.receiving.LibraryTaskType.classification;
|
||||
import com.dev.swms.server.model.shipping.NewWaveFlag;
|
||||
import com.dev.swms.server.model.shipping.WaveDoc;
|
||||
import com.dev.swms.server.service.interfaceLog.JsonUtil;
|
||||
import com.dev.swms.server.service.shipping.NewWaveManager;
|
||||
import com.dev.swms.server.utils.interfaceUtil;
|
||||
import com.itextpdf.text.pdf.PdfStructTreeController.returnType;
|
||||
import com.sun.org.apache.bcel.internal.classfile.Code;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
|
|
@ -56,7 +54,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
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();// 所有工作站没完成的任务
|
||||
Map<String, Integer> maps = gzzCount(waveDoc.getCode());// 所有工作站没完成的任务
|
||||
int lxCount = 0;// 工作站任务未处理任务数
|
||||
int hjCount = 0;
|
||||
int lkCount = 0;
|
||||
|
|
@ -74,13 +72,13 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
}
|
||||
|
||||
allocateGZZ(waveDoc.getCode(), NewWaveFlag.LXQ, lx_codes,
|
||||
(int) lx_sx.getTaskD(), (int) lx_sx.getNumber(), lxCount,
|
||||
(int) lx_sx.getTaskD(), getValueGzzNumber(lx_sx), lxCount,
|
||||
maps);
|
||||
allocateGZZ(waveDoc.getCode(), NewWaveFlag.HJQ, hj_codes,
|
||||
(int) hj_sx.getTaskD(), (int) hj_sx.getNumber(), hjCount,
|
||||
(int) hj_sx.getTaskD(), getValueGzzNumber(hj_sx), hjCount,
|
||||
maps);
|
||||
allocateGZZ(waveDoc.getCode(), NewWaveFlag.LKQ, lk_codes,
|
||||
(int) lk_sx.getTaskD(), (int) lk_sx.getNumber(), lkCount,
|
||||
(int) lk_sx.getTaskD(), getValueGzzNumber(lk_sx), lkCount,
|
||||
maps);
|
||||
|
||||
}
|
||||
|
|
@ -113,7 +111,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
+ "loc.code as kwh,"
|
||||
+ "max(t.agv_Status) as rwzt,"
|
||||
+ "max(item.GOOD_TYPE) as wllx,"
|
||||
+ "max(t.strBill8) as twl "
|
||||
+ "max(LEFT(pt.RELATED_BILL3, 9)+RIGHT(pt.CODE,1)) as twl "
|
||||
+ "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 "
|
||||
|
|
@ -124,8 +122,10 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
+ "left join STOCK s2 on s2.id=t.SRC_LP "
|
||||
+ "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 and t.agv_status=0";
|
||||
+ "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";
|
||||
if (zone_id != null) {
|
||||
sql += " and z.id=" + zone_id;
|
||||
}
|
||||
|
|
@ -170,16 +170,15 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
List<FenPei> list_fen = Paixu(list_fenpei, cfhs);
|
||||
// 初始化 GongDan_WuLiao_Map 根据(工单号+物料类型+拆分组号)分组
|
||||
Map<String, List<FenPei>> GongDan_WuLiao_Map = new HashMap<>();
|
||||
for (FenPei fenPei : list_fen) {
|
||||
String GongDan_WuLiao = fenPei.gdh + fenPei.wllx + fenPei.chf_fz;
|
||||
if (((java.util.Map) GongDan_WuLiao_Map).containsKey(GongDan_WuLiao)) {
|
||||
List<FenPei> list_count = GongDan_WuLiao_Map.get(GongDan_WuLiao);
|
||||
if (((java.util.Map) GongDan_WuLiao_Map)
|
||||
.containsKey(GongDan_WuLiao)) {
|
||||
List<FenPei> list_count = GongDan_WuLiao_Map
|
||||
.get(GongDan_WuLiao);
|
||||
list_count.add(fenPei);
|
||||
GongDan_WuLiao_Map.put(GongDan_WuLiao, list_count);
|
||||
} else {
|
||||
|
|
@ -191,8 +190,6 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
// 打印分组情况
|
||||
PirntGongdanMap(GongDan_WuLiao_Map, "最终工单分组");
|
||||
|
||||
|
||||
|
||||
// 记录每个工单 的数目
|
||||
|
||||
List<GongDanMingXi> GongDan_List = new ArrayList<GongDanMingXi>();
|
||||
|
|
@ -216,7 +213,8 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
for (GongDanMingXi gdPaiXu : GongDan_List) {
|
||||
|
||||
// 获取当前头物料
|
||||
String fenzu = gdPaiXu.list.get(0).twl_fz+"_"+gdPaiXu.list.get(0).chf_fz;
|
||||
String fenzu = gdPaiXu.list.get(0).twl_fz + "_"
|
||||
+ gdPaiXu.list.get(0).chf_fz;
|
||||
|
||||
String gdh = gdPaiXu.gdh;
|
||||
|
||||
|
|
@ -226,7 +224,9 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
// 在touwuliao_map中进行匹配
|
||||
boolean isFind = false;
|
||||
for (String twlKey : touwuliao_map.keySet()) {
|
||||
String twl_in = touwuliao_map.get(twlKey).get(0).list.get(0).twl_fz + "_"+ touwuliao_map.get(twlKey).get(0).list.get(0).chf_fz;
|
||||
String twl_in = touwuliao_map.get(twlKey).get(0).list.get(0).twl_fz
|
||||
+ "_"
|
||||
+ touwuliao_map.get(twlKey).get(0).list.get(0).chf_fz;
|
||||
int currCount_in = touwuliao_map.get(twlKey).get(0).hangshu;
|
||||
if (twl_in.equals(fenzu)
|
||||
&& Math.abs(currCount - currCount_in) <= 4) {
|
||||
|
|
@ -252,7 +252,6 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
|
||||
// 计算没个容器号出现得次数(在每个头物料得分组里面)
|
||||
|
||||
|
||||
for (String twlKey : touwuliao_map.keySet()) {
|
||||
List<GongDanMingXi> GongDanList = touwuliao_map.get(twlKey);
|
||||
// 初始化rq_showTime 记录容器号次数
|
||||
|
|
@ -277,7 +276,8 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
|
||||
}
|
||||
// 给touwuliao_map的 中 按照容器出现次数进行排序
|
||||
//循环GongDanList 并给所有工单 中所有任务,写入任务中容器出现次数,并按容器次数进行排序;刷新touwuliao_map(头物料分组合集);
|
||||
// 循环GongDanList 并给所有工单
|
||||
// 中所有任务,写入任务中容器出现次数,并按容器次数进行排序;刷新touwuliao_map(头物料分组合集);
|
||||
List<GongDanMingXi> list_show_new = new ArrayList<>();
|
||||
for (GongDanMingXi fenPei2 : GongDanList) {
|
||||
List<FenPei> list_new = new ArrayList<>();
|
||||
|
|
@ -295,7 +295,6 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
|
||||
}
|
||||
|
||||
|
||||
// 初始化 List<TwlFenZu> twlFenZuList 给所有数据写入twlFenZuList
|
||||
List<TwlFenZu> twlFenZuList = new ArrayList<>();
|
||||
for (String twlKey : touwuliao_map.keySet()) {
|
||||
|
|
@ -305,37 +304,50 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
}
|
||||
// 根据 头物料 中所有工单总任务数进行 排序
|
||||
Collections.sort(twlFenZuList);
|
||||
LogPrint(log_TouWuLiaoChaiFen,"---------------------------------------------------头物料拆分排序结果-----------------------------------------------------------------------------------------------");
|
||||
LogPrint(log_TouWuLiaoChaiFen,"↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
|
||||
LogPrint(
|
||||
log_TouWuLiaoChaiFen,
|
||||
"---------------------------------------------------头物料拆分排序结果-----------------------------------------------------------------------------------------------");
|
||||
LogPrint(
|
||||
log_TouWuLiaoChaiFen,
|
||||
"↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
|
||||
int wlcountString = 0;
|
||||
for (TwlFenZu twlFenZu : twlFenZuList) {
|
||||
List<GongDanMingXi> list_show = twlFenZu.gdPaiXus;
|
||||
for (GongDanMingXi fenPei2 : list_show) {
|
||||
LogPrint(log_TouWuLiaoChaiFen,"twl" + fenPei2.twl + " GDH:" + fenPei2.gdh
|
||||
+ " GDHCount:" + fenPei2.hangshu+" FenZu:"+fenPei2.list.get(0).chf_fz);
|
||||
LogPrint(log_TouWuLiaoChaiFen, "twl" + fenPei2.twl + " GDH:"
|
||||
+ fenPei2.gdh + " GDHCount:" + fenPei2.hangshu
|
||||
+ " FenZu:" + fenPei2.list.get(0).chf_fz);
|
||||
StringBuffer rqm = new StringBuffer();
|
||||
for (FenPei fff : fenPei2.list) {
|
||||
rqm.append(fff.rqh + "(" + fff.show_time + "/"+fff.chf+") ");
|
||||
rqm.append(fff.rqh + "(" + fff.show_time + "/" + fff.chf
|
||||
+ ") ");
|
||||
wlcountString = wlcountString + 1;
|
||||
}
|
||||
LogPrint(log_TouWuLiaoChaiFen, rqm.toString());
|
||||
}
|
||||
LogPrint(log_TouWuLiaoChaiFen,"--------------------------------------------------------------------------------------------------------------------------------------------------");
|
||||
LogPrint(
|
||||
log_TouWuLiaoChaiFen,
|
||||
"--------------------------------------------------------------------------------------------------------------------------------------------------");
|
||||
|
||||
}
|
||||
LogPrint(log_TouWuLiaoChaiFen,"↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
|
||||
LogPrint(log_TouWuLiaoChaiFen,"---------------------------------------------------头物料拆分结果-----------------------------------------------------------------------------------------------");
|
||||
|
||||
LogPrint(log_TouWuLiaoChaiFen,"GongDan_wuLiaoMingXiCout:"+GongDan_wuLiaoMingXiCout+"wlcountString:"+wlcountString);
|
||||
LogPrint(
|
||||
log_TouWuLiaoChaiFen,
|
||||
"↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
|
||||
LogPrint(
|
||||
log_TouWuLiaoChaiFen,
|
||||
"---------------------------------------------------头物料拆分结果-----------------------------------------------------------------------------------------------");
|
||||
|
||||
LogPrint(log_TouWuLiaoChaiFen, "GongDan_wuLiaoMingXiCout:"
|
||||
+ GongDan_wuLiaoMingXiCout + "wlcountString:" + wlcountString);
|
||||
|
||||
// 工作站使用判定
|
||||
|
||||
|
||||
List<GongZuoZhan> gzlistGongZuoZhans = new ArrayList<DefaultNewWaveManager.GongZuoZhan>();
|
||||
for (String gongzuozhancode : gzz_codes) {
|
||||
int notFinished=(gzz_maps.get(gongzuozhancode)==null?0:gzz_maps.get(gongzuozhancode));
|
||||
GongZuoZhan gongZuoZhan=new GongZuoZhan(gongzuozhancode,notFinished,0,true);
|
||||
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);
|
||||
|
|
@ -352,10 +364,12 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
int fenpeicount = gzz_nx_avg - notFinished;
|
||||
if (fenpeiALl - count_all <= 0) {
|
||||
fenpeiALl = fenpeiALl + fenpeicount;
|
||||
GongZuoZhan gzz=new GongZuoZhan(gongZuoZhan.code, notFinished, gzz_nx_avg, true);
|
||||
GongZuoZhan gzz = new GongZuoZhan(gongZuoZhan.code,
|
||||
notFinished, gzz_nx_avg, true);
|
||||
gzzMap.put(gzz.code, gzz);
|
||||
} else {
|
||||
GongZuoZhan gzz=new GongZuoZhan(gongZuoZhan.code, notFinished, gzz_nx_avg, true);
|
||||
GongZuoZhan gzz = new GongZuoZhan(gongZuoZhan.code,
|
||||
notFinished, gzz_nx_avg, true);
|
||||
gzzMap.put(gzz.code, gzz);
|
||||
}
|
||||
}
|
||||
|
|
@ -363,20 +377,30 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
for (GongZuoZhan gongZuoZhan : gzlistGongZuoZhans) {
|
||||
int notFinished = gongZuoZhan.notFinished;
|
||||
// int gzz_nx = gzz_nx_avg - notFinished;
|
||||
GongZuoZhan gzz=new GongZuoZhan(gongZuoZhan.code, notFinished, gzz_nx_avg, true);
|
||||
GongZuoZhan gzz = new GongZuoZhan(gongZuoZhan.code,
|
||||
notFinished, gzz_nx_avg, true);
|
||||
gzzMap.put(gzz.code, gzz);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
LogPrint(log_GongZuoZhanMinXi,"---------------------------------------------------工作站详情-----------------------------------------------------------------------------------------------");
|
||||
LogPrint(log_GongZuoZhanMinXi,"↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
|
||||
LogPrint(
|
||||
log_GongZuoZhanMinXi,
|
||||
"---------------------------------------------------工作站详情-----------------------------------------------------------------------------------------------");
|
||||
LogPrint(
|
||||
log_GongZuoZhanMinXi,
|
||||
"↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
|
||||
for (String key : gzzMap.keySet()) {
|
||||
GongZuoZhan gongZuoZhan = gzzMap.get(key);
|
||||
LogPrint(log_GongZuoZhanMinXi,"Code:"+gongZuoZhan.code+" notFinished:"+gongZuoZhan.notFinished+" maxRenWu:"+gongZuoZhan.maxRenWu+" isEnble:"+gongZuoZhan.isEnble);
|
||||
LogPrint(log_GongZuoZhanMinXi, "Code:" + gongZuoZhan.code
|
||||
+ " notFinished:" + gongZuoZhan.notFinished + " maxRenWu:"
|
||||
+ gongZuoZhan.maxRenWu + " isEnble:" + gongZuoZhan.isEnble);
|
||||
}
|
||||
LogPrint(log_GongZuoZhanMinXi,"↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
|
||||
LogPrint(log_GongZuoZhanMinXi,"---------------------------------------------------工作站详情-----------------------------------------------------------------------------------------------");
|
||||
LogPrint(
|
||||
log_GongZuoZhanMinXi,
|
||||
"↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
|
||||
LogPrint(
|
||||
log_GongZuoZhanMinXi,
|
||||
"---------------------------------------------------工作站详情-----------------------------------------------------------------------------------------------");
|
||||
for (TwlFenZu twlFenZu : twlFenZuList) {
|
||||
List<GongDanMingXi> gongDanList = twlFenZu.gdPaiXus; // 当前头物料所有的工单组合,以及每个工单的物料明细
|
||||
int this_fenzuCount = twlFenZu.wl_count; // 当前分组总物料行数
|
||||
|
|
@ -384,7 +408,8 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
|
||||
if (gongDanList.size() == 1) {
|
||||
GongDanMingXi gongDanMingXi = gongDanList.get(0);
|
||||
GongZuoZhan curr_gzz=PiPeiGongZuoZhanForGzzxAndRqh(listGzz,gongDanMingXi,cfhs);
|
||||
GongZuoZhan curr_gzz = PiPeiGongZuoZhanForGzzxAndRqh(listGzz,
|
||||
gongDanMingXi, cfhs);
|
||||
List<FenPei> list_wList = gongDanMingXi.list;
|
||||
for (FenPei fenPei : list_wList) {
|
||||
curr_gzz.renWuList.add(fenPei);
|
||||
|
|
@ -402,7 +427,8 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
// 当前工单的物料
|
||||
List<FenPei> list_wList = gongDanMingXi.list;
|
||||
|
||||
int chao=(list_wList.size()+curr_gzz.notFinished+curr_gzz.renWuList.size())-curr_gzz.maxRenWu;
|
||||
int chao = (list_wList.size() + curr_gzz.notFinished + curr_gzz.renWuList
|
||||
.size()) - curr_gzz.maxRenWu;
|
||||
// LogPrint(listGzz.size());
|
||||
if (chao <= cfhs || index == gongDanList.size() - 1) {
|
||||
// LogPrint("11=="+listGzz.get(gzz_index));
|
||||
|
|
@ -435,36 +461,130 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
int fenPeiCount = 0;
|
||||
Map<String, Sequence> gdNextMaps = getGdNextSeq();
|
||||
Map<String, Integer> gdNextMax_ALL = new HashMap<String, Integer>();
|
||||
Map<String, Integer> gdNextMax_B = new HashMap<String, Integer>();
|
||||
Map<String, Integer> gdNextMax_S = new HashMap<String, Integer>();
|
||||
for ( String gdh: GongDan_WuLiao_Map.keySet()) {
|
||||
List<FenPei> gdlist=GongDan_WuLiao_Map.get(gdh);
|
||||
FenPei fenPei=gdlist.get(0);
|
||||
String gdhkey = fenPei.gdh + "-";
|
||||
String lx = "S";// 小件
|
||||
gdNextMax_ALL.put(gdhkey, 1);
|
||||
if (!gdNextMax_B.containsKey(gdhkey)) {
|
||||
gdNextMax_B.put(gdhkey, 1);
|
||||
}
|
||||
if (!gdNextMax_S.containsKey(gdhkey)) {
|
||||
gdNextMax_S.put(gdhkey, 1);
|
||||
}
|
||||
if ("big".equals(fenPei.wllx)) {
|
||||
lx = "B";// 大件
|
||||
int va = gdNextMax_B.get(gdhkey);
|
||||
if (fenPei.chf_fz > va) {
|
||||
gdNextMax_B.put(gdhkey, fenPei.chf_fz);
|
||||
}
|
||||
|
||||
}else{
|
||||
int va = gdNextMax_S.get(gdhkey);
|
||||
if (fenPei.chf_fz > va) {
|
||||
gdNextMax_S.put(gdhkey, fenPei.chf_fz);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
for (String key : gzzMap.keySet()) {
|
||||
GongZuoZhan gongZuoZhan = gzzMap.get(key);
|
||||
LogPrint(log_GongZuoZhanFenPeiJieGuo,"----------------------------------------------------开始分配----------------------------------------------------------------------");
|
||||
LogPrint(log_GongZuoZhanFenPeiJieGuo,"Code:"+gongZuoZhan.code+" notFinished:"+gongZuoZhan.notFinished+" maxRenWu:"+gongZuoZhan.maxRenWu+" isEnble:"+gongZuoZhan.isEnble);
|
||||
LogPrint(log_GongZuoZhanFenPeiJieGuo,"↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
|
||||
LogPrint(
|
||||
log_GongZuoZhanFenPeiJieGuo,
|
||||
"----------------------------------------------------开始分配----------------------------------------------------------------------");
|
||||
LogPrint(log_GongZuoZhanFenPeiJieGuo, "Code:" + gongZuoZhan.code
|
||||
+ " notFinished:" + gongZuoZhan.notFinished + " maxRenWu:"
|
||||
+ gongZuoZhan.maxRenWu + " isEnble:" + gongZuoZhan.isEnble);
|
||||
LogPrint(
|
||||
log_GongZuoZhanFenPeiJieGuo,
|
||||
"↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
|
||||
for (FenPei fenPei : gongZuoZhan.renWuList) {
|
||||
fenPeiCount = fenPeiCount + 1;
|
||||
String[] ids = fenPei.tsakId.split(",");
|
||||
for (int i = 0; i < ids.length; i++) {
|
||||
Task task=this.commonDao.get(Task.class, Long.parseLong(ids[i]));
|
||||
String lx="S";
|
||||
Task task = this.commonDao.get(Task.class,
|
||||
Long.parseLong(ids[i]));
|
||||
String lx = "S";// 小件
|
||||
int seq = 1;
|
||||
String gdhkey = fenPei.gdh + "-";
|
||||
|
||||
if ("big".equals(fenPei.wllx)) {
|
||||
lx="B";
|
||||
lx = "B";// 大件
|
||||
if (gdNextMaps.containsKey(gdhkey)) {
|
||||
seq = gdNextMaps.get(gdhkey).getNextId().intValue()-1;
|
||||
}
|
||||
task.setBillCode(fenPei.gdh+"-"+lx+"-"+fenPei.chf_fz);
|
||||
task.setEndRegion(gongZuoZhan.code);
|
||||
//task.setAgvStatus(1);//下发
|
||||
int maxS=0;
|
||||
if(gdNextMax_S.containsKey(gdhkey)){
|
||||
maxS=gdNextMax_S.get(gdhkey);
|
||||
}
|
||||
task.setOldZrw(fenPei.gdh + "-"
|
||||
+ (seq+maxS+fenPei.chf_fz ));
|
||||
|
||||
}else{
|
||||
if (gdNextMaps.containsKey(gdhkey)) {
|
||||
seq =gdNextMaps.get(gdhkey).getNextId().intValue()-1;
|
||||
}
|
||||
task.setOldZrw(fenPei.gdh + "-"
|
||||
+ (fenPei.chf_fz + seq ));
|
||||
}
|
||||
|
||||
// task.setBillCode(fenPei.gdh+"-"+lx+"-"+fenPei.chf_fz);
|
||||
// task.setEndRegion(gongZuoZhan.code);
|
||||
// if(task.getOldGzz()!=null){
|
||||
// task.setBillCode(task.getOldZrw());
|
||||
// task.setEndRegion(task.getOldGzz());
|
||||
// }
|
||||
task.setAgvStatus(-1);
|
||||
task.setOldGzz(gongZuoZhan.code);
|
||||
|
||||
|
||||
task.setStrBill9(lx+"-"+fenPei.chf_fz);
|
||||
task.setStrBill8(fenPei.twl);
|
||||
this.commonDao.store(task);
|
||||
// LogPrint("one:"+task.getBillCode()+"---"+task.getEndRegion()+"--two:-"+task.getOldGzz()+"---"+task.getOldZrw()+"--three:-"+fenPei.gdh+"-"+fenPei.chf_fz+"-----"+gongZuoZhan.code);
|
||||
|
||||
}
|
||||
LogPrint(log_GongZuoZhanFenPeiJieGuo,"工作站:"+gongZuoZhan.code+" 工单号:"+fenPei.gdh+" 容器号:"+fenPei.rqh+" 拆分号:"+fenPei.chf+" 拆分组:"+fenPei.chf_fz+" 头物料:"+fenPei.twl_fz);
|
||||
LogPrint(log_GongZuoZhanFenPeiJieGuo, "工作站:" + gongZuoZhan.code
|
||||
+ " 工单号:" + fenPei.gdh + " 容器号:" + fenPei.rqh
|
||||
+ " 拆分号:" + fenPei.chf + " 拆分组:" + fenPei.chf_fz
|
||||
+ " 头物料:" + fenPei.twl_fz);
|
||||
// LogPrint(""+fenPei.twl_fz+"---"+fenPei.chf_fz+"---"+fenPei.chf+"---"+fenPei.gdh+"---"+fenPei.rqh);
|
||||
}
|
||||
LogPrint(log_GongZuoZhanFenPeiJieGuo,"↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
|
||||
LogPrint(
|
||||
log_GongZuoZhanFenPeiJieGuo,
|
||||
"↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
|
||||
}
|
||||
LogPrint(log_GongZuoZhanFenPeiJieGuo,"GongDan_wuLiaoMingXiCout:"+GongDan_wuLiaoMingXiCout+"wlcountString:"+wlcountString+" fenPeiCount:"+fenPeiCount);
|
||||
for (String gdhkey: gdNextMax_ALL.keySet()) {
|
||||
Sequence s = gdNextMaps.get(gdhkey);
|
||||
int maxB=0;
|
||||
int maxS=0;
|
||||
if(gdNextMax_S.containsKey(gdhkey)){
|
||||
maxS=gdNextMax_S.get(gdhkey);
|
||||
}
|
||||
if(gdNextMax_B.containsKey(gdhkey)){
|
||||
maxB=gdNextMax_B.get(gdhkey);
|
||||
}
|
||||
int max=maxB+maxS;
|
||||
if(s!=null){
|
||||
s.setNextId(s.getNextId() +max );
|
||||
this.commonDao.store(s);
|
||||
} else {
|
||||
String insert_sql = "INSERT INTO SEQUENCE ([SEQUENCE_KEY], [SEQUENCE_TYPE], [NEXT_ID]) VALUES ('"
|
||||
+ gdhkey + "', ' ', " + max+ ")";
|
||||
session.createSQLQuery(insert_sql).executeUpdate();
|
||||
}
|
||||
}
|
||||
LogPrint(log_GongZuoZhanFenPeiJieGuo, "GongDan_wuLiaoMingXiCout:"
|
||||
+ GongDan_wuLiaoMingXiCout + "wlcountString:" + wlcountString
|
||||
+ " fenPeiCount:" + fenPeiCount);
|
||||
// 写入数据库
|
||||
|
||||
/*
|
||||
|
|
@ -480,14 +600,19 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
}
|
||||
}
|
||||
|
||||
public GongZuoZhan PiPeiGongZuoZhanForGzzxAndRqh(List<GongZuoZhan>listGzz,GongDanMingXi gongDanMingXi,int cfhs){
|
||||
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;
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"------------------------匹配容器号和工作中心-----------------------------------------------");
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"当前工单号:"+gongDanMingXi.gdh);
|
||||
LogPrint(
|
||||
log_GongZuoZhanPiPeiForRqhAndGzzx,
|
||||
"------------------------匹配容器号和工作中心-----------------------------------------------");
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,
|
||||
"↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "当前工单号:"
|
||||
+ gongDanMingXi.gdh);
|
||||
for (GongZuoZhan gzz : listGzz) {
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "当前工作站:" + gzz.code);
|
||||
List<FenPei> list = gzz.renWuList;
|
||||
|
|
@ -497,10 +622,12 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
sb_gzzx.append(fenPei.gzzx + " , ");
|
||||
sb_rqh.append(fenPei.rqh + " , ");
|
||||
}
|
||||
int chao=(list_wList.size()+gzz.notFinished+gzz.renWuList.size())-gzz.maxRenWu;
|
||||
int chao = (list_wList.size() + gzz.notFinished + gzz.renWuList
|
||||
.size()) - gzz.maxRenWu;
|
||||
// LogPrint(listGzz.size());
|
||||
if (chao > cfhs) {
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"工作站:"+gzz.code+"超出:"+chao+"无法分配,跳过此工作站");
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "工作站:" + gzz.code
|
||||
+ "超出:" + chao + "无法分配,跳过此工作站");
|
||||
continue;
|
||||
}
|
||||
StringBuffer sb_pipei = new StringBuffer();
|
||||
|
|
@ -515,10 +642,12 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
sb_pipei.append(fenPei.rqh);
|
||||
}
|
||||
}
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"工作站:"+gzz.code+" gzzx:"+gzzx+" rqh_count:"+rqh_count);
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "工作站:" + gzz.code
|
||||
+ " gzzx:" + gzzx + " rqh_count:" + rqh_count);
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, sb_gzzx.toString());
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, sb_rqh.toString());
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"匹配上的容器号: "+sb_pipei.toString());
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,
|
||||
"匹配上的容器号: " + sb_pipei.toString());
|
||||
Boolean isPiPeiGzzx = false;// true 优先按照工作中心匹配,再按照容器号。false直接按照容器号匹配散单
|
||||
if (isPiPeiGzzx) {
|
||||
if (max_gzzx == 0 && gzzx == 0 && rqh_count > max_rqh_count) {
|
||||
|
|
@ -532,7 +661,8 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
max_gzzx = gzzx;
|
||||
check = gzz;
|
||||
|
||||
}else if(max_gzzx==1 &&gzzx==1 && rqh_count>max_rqh_count){
|
||||
} else if (max_gzzx == 1 && gzzx == 1
|
||||
&& rqh_count > max_rqh_count) {
|
||||
// 如果匹配过工作中心,且本次匹配到工作中心; 容器号匹配度大优先
|
||||
max_rqh_count = rqh_count;
|
||||
max_gzzx = gzzx;
|
||||
|
|
@ -545,7 +675,8 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
max_rqh_count = rqh_count;
|
||||
max_gzzx = gzzx;
|
||||
check = gzz;
|
||||
}else if(rqh_count==max_rqh_count && gzzx==1 && max_gzzx==0){
|
||||
} else if (rqh_count == max_rqh_count && gzzx == 1
|
||||
&& max_gzzx == 0) {
|
||||
// 如果容器号匹配次数相同,且上次匹配工作站未匹配工作中心,本次匹配到了工作中心,本次匹配设为最优解
|
||||
max_rqh_count = rqh_count;
|
||||
max_gzzx = gzzx;
|
||||
|
|
@ -555,13 +686,17 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
}
|
||||
}
|
||||
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"容器号匹配次数:"+max_rqh_count+" 工作中心匹配次数:"+max_gzzx+" 工单号:"+gongDanMingXi.gdh+" 工作站:"+check.code);
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"------------------------匹配容器号和工作中心-----------------------------------------------");
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx, "容器号匹配次数:" + max_rqh_count
|
||||
+ " 工作中心匹配次数:" + max_gzzx + " 工单号:" + gongDanMingXi.gdh
|
||||
+ " 工作站:" + check.code);
|
||||
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,
|
||||
"↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
|
||||
LogPrint(
|
||||
log_GongZuoZhanPiPeiForRqhAndGzzx,
|
||||
"------------------------匹配容器号和工作中心-----------------------------------------------");
|
||||
return check;
|
||||
}
|
||||
|
||||
|
||||
public List<GongZuoZhan> FaiXuGzz(Map<String, GongZuoZhan> gzzMap) {
|
||||
List<GongZuoZhan> list = new ArrayList<DefaultNewWaveManager.GongZuoZhan>();
|
||||
for (String key : gzzMap.keySet()) {
|
||||
|
|
@ -573,14 +708,15 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
return list;
|
||||
}
|
||||
|
||||
|
||||
class GongZuoZhan implements Comparable<GongZuoZhan> {
|
||||
public GongZuoZhan(String code,int notFinished,int maxRenWu,boolean isEnble){
|
||||
public GongZuoZhan(String code, int notFinished, int maxRenWu,
|
||||
boolean isEnble) {
|
||||
this.code = code;
|
||||
this.notFinished = notFinished;
|
||||
this.maxRenWu = maxRenWu;
|
||||
this.isEnble = isEnble;
|
||||
}
|
||||
|
||||
public String code = "";
|
||||
public boolean isEnble;
|
||||
public int maxRenWu;
|
||||
|
|
@ -589,23 +725,25 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
|
||||
Map<String, String> GongZuoZhongXinMap = new HashMap<>();
|
||||
Map<String, String> RongQIHaoMap = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public int compareTo(GongZuoZhan other) {
|
||||
// TODO Auto-generated method stub
|
||||
return this.notFinished+renWuList.size()-other.notFinished-other.renWuList.size();
|
||||
return this.notFinished + renWuList.size() - other.notFinished
|
||||
- other.renWuList.size();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public List<FenPei> Paixu(List<FenPei> list_fenpei, int cfhs) {
|
||||
Map<String, List<FenPei>> GongDan_WuLiao_Map = new HashMap<>();
|
||||
// 第一步:给所有任务进行分组(根据工单号,和物料类型)
|
||||
for (FenPei fenPei : list_fenpei) {
|
||||
String GongDan_WuLiao = fenPei.gdh + fenPei.wllx;
|
||||
if (((java.util.Map) GongDan_WuLiao_Map).containsKey(GongDan_WuLiao)) {
|
||||
if (((java.util.Map) GongDan_WuLiao_Map)
|
||||
.containsKey(GongDan_WuLiao)) {
|
||||
|
||||
List<FenPei> list_count = GongDan_WuLiao_Map.get(GongDan_WuLiao);
|
||||
List<FenPei> list_count = GongDan_WuLiao_Map
|
||||
.get(GongDan_WuLiao);
|
||||
list_count.add(fenPei);
|
||||
GongDan_WuLiao_Map.put(GongDan_WuLiao, list_count);
|
||||
} else {
|
||||
|
|
@ -633,8 +771,6 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
// 打印排序结果
|
||||
PirntGongDanMingXiList(GongDan_List, "首次工单排序");
|
||||
|
||||
|
||||
|
||||
// 先根据头物料分组 如果头物料相同 且工单总行数 差异小于4的工单分到一个组里面 (尽量分配到同一工作站)
|
||||
Map<String, List<GongDanMingXi>> touwuliao_map = new HashMap<>();
|
||||
for (GongDanMingXi gdPaiXu : GongDan_List) {
|
||||
|
|
@ -646,7 +782,8 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
int currCount = gdPaiXu.hangshu;
|
||||
boolean isFind = false;
|
||||
for (String twlKey : touwuliao_map.keySet()) {
|
||||
String twl_in = touwuliao_map.get(twlKey).get(0).twl + "_"+ touwuliao_map.get(twlKey).get(0).list.get(0).wllx;
|
||||
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(fenzu)
|
||||
&& Math.abs(currCount - currCount_in) <= 4) {
|
||||
|
|
@ -669,7 +806,6 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
// 打印头物料分组后的情况
|
||||
PirntFirstTouwuLiaoMap(touwuliao_map, "首次头物料分组");
|
||||
|
||||
|
||||
// 计算没个容器号出现得次数(在每个头物料得分组里面)
|
||||
|
||||
for (String twlKey : touwuliao_map.keySet()) {
|
||||
|
|
@ -697,7 +833,8 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
|
||||
}
|
||||
// 给touwuliao_map的 中 按照容器出现次数进行排序
|
||||
//循环GongDanList 并给所有工单 中所有任务,写入任务中容器出现次数,并按容器次数进行排序;刷新touwuliao_map(头物料分组合集);
|
||||
// 循环GongDanList 并给所有工单
|
||||
// 中所有任务,写入任务中容器出现次数,并按容器次数进行排序;刷新touwuliao_map(头物料分组合集);
|
||||
List<GongDanMingXi> list_show_new = new ArrayList<>();
|
||||
for (GongDanMingXi fenPei2 : GongDanList) {
|
||||
List<FenPei> list_new = new ArrayList<>();
|
||||
|
|
@ -742,7 +879,8 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
if (fz_col < gdPaiXu.list.size()) {
|
||||
FenPei fenPei = list_fen.get(fz_col);
|
||||
rq_last_show2.put(fenPei.rqh, 1);
|
||||
if((fz_col+1)%cfhs==1||(fz_col+1)%cfhs==2){
|
||||
if ((fz_col + 1) % cfhs == 1
|
||||
|| (fz_col + 1) % cfhs == 2) {
|
||||
// 如果 超过最大拆分行的第一列 第二列中 出现了 上一个分组的容器,则本 任务分给上一个组
|
||||
if (rq_last_show.containsKey(fenPei.rqh)) {
|
||||
fenPei.chf_fz = (fz_col) / cfhs;
|
||||
|
|
@ -774,24 +912,28 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
rq_last_show2 = new HashMap<>();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return list_new;
|
||||
}
|
||||
|
||||
public void PirntFirstTouwuLiaoMap(Map<String, List<GongDanMingXi>> touwuliao_map ,String title){
|
||||
public void PirntFirstTouwuLiaoMap(
|
||||
Map<String, List<GongDanMingXi>> touwuliao_map, String title) {
|
||||
LogPrint(log_PirntFirstTouwuLiaoMap, "");
|
||||
LogPrint(log_PirntFirstTouwuLiaoMap, "");
|
||||
LogPrint(log_PirntFirstTouwuLiaoMap,"-------------------------------------------------------------------------------------------------------");
|
||||
LogPrint(log_PirntFirstTouwuLiaoMap,"------------------------------------"+title+"------------------------------------------");
|
||||
LogPrint(
|
||||
log_PirntFirstTouwuLiaoMap,
|
||||
"-------------------------------------------------------------------------------------------------------");
|
||||
LogPrint(log_PirntFirstTouwuLiaoMap,
|
||||
"------------------------------------" + title
|
||||
+ "------------------------------------------");
|
||||
for (String twlKey : touwuliao_map.keySet()) {
|
||||
List<GongDanMingXi> list_show = touwuliao_map.get(twlKey);
|
||||
for (GongDanMingXi gongDan : list_show) {
|
||||
LogPrint(log_PirntFirstTouwuLiaoMap,"头物料 " + gongDan.twl + " 工单号:" + gongDan.gdh+ " 头物料分组KEY:" + twlKey + " 任务行数:"+ gongDan.hangshu);
|
||||
LogPrint(log_PirntFirstTouwuLiaoMap, "头物料 " + gongDan.twl
|
||||
+ " 工单号:" + gongDan.gdh + " 头物料分组KEY:" + twlKey
|
||||
+ " 任务行数:" + gongDan.hangshu);
|
||||
|
||||
StringBuffer rqm = new StringBuffer();
|
||||
for (FenPei fff : gongDan.list) {
|
||||
|
|
@ -800,47 +942,65 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
LogPrint(log_PirntFirstTouwuLiaoMap, "容器号: " + rqm.toString());
|
||||
|
||||
}
|
||||
LogPrint(log_PirntFirstTouwuLiaoMap,"-----------------------------------------------------------------------");
|
||||
LogPrint(log_PirntFirstTouwuLiaoMap,
|
||||
"-----------------------------------------------------------------------");
|
||||
LogPrint(log_PirntFirstTouwuLiaoMap, "");
|
||||
LogPrint(log_PirntFirstTouwuLiaoMap, "");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void PirntGongDanMingXiList(List<GongDanMingXi> GongDan_List ,String title){
|
||||
public void PirntGongDanMingXiList(List<GongDanMingXi> GongDan_List,
|
||||
String title) {
|
||||
LogPrint(log_PirntGongDanMingXiList, "");
|
||||
LogPrint(log_PirntGongDanMingXiList, "");
|
||||
LogPrint(log_PirntGongdanMap,"-------------------------------------------------------------------------------------------------------");
|
||||
LogPrint(log_PirntFirstTouwuLiaoMap,"------------------------------------"+title+"------------------------------------------");
|
||||
LogPrint(
|
||||
log_PirntGongdanMap,
|
||||
"-------------------------------------------------------------------------------------------------------");
|
||||
LogPrint(log_PirntFirstTouwuLiaoMap,
|
||||
"------------------------------------" + title
|
||||
+ "------------------------------------------");
|
||||
for (GongDanMingXi gdPaiXu : GongDan_List) {
|
||||
LogPrint(log_PirntGongDanMingXiList, "工单号:" + gdPaiXu.gdh);
|
||||
List<FenPei> list_FenPei = gdPaiXu.list;
|
||||
for (FenPei fenPei : list_FenPei) {
|
||||
LogPrint(log_PirntGongDanMingXiList,"工单号:" +fenPei.gdh+" 物料类型:"+fenPei.wllx+" 头物料:"+fenPei.twl+" 容器号: "+fenPei.rqh);
|
||||
LogPrint(log_PirntGongDanMingXiList, "工单号:" + fenPei.gdh
|
||||
+ " 物料类型:" + fenPei.wllx + " 头物料:" + fenPei.twl
|
||||
+ " 容器号: " + fenPei.rqh);
|
||||
}
|
||||
LogPrint(log_PirntGongdanMap, "");
|
||||
LogPrint(log_PirntGongdanMap,"-------------------------------------------------------------------------------------------------------");
|
||||
LogPrint(
|
||||
log_PirntGongdanMap,
|
||||
"-------------------------------------------------------------------------------------------------------");
|
||||
}
|
||||
}
|
||||
|
||||
public void PirntGongdanMap(Map<String, List<FenPei>> GongDan_WuLiao_Map,String title){
|
||||
public void PirntGongdanMap(Map<String, List<FenPei>> GongDan_WuLiao_Map,
|
||||
String title) {
|
||||
LogPrint(log_PirntGongDanMingXiList, "");
|
||||
LogPrint(log_PirntGongDanMingXiList, "");
|
||||
LogPrint(log_PirntGongdanMap,"-------------------------------------------------------------------------------------------------------");
|
||||
LogPrint(log_PirntFirstTouwuLiaoMap,"------------------------------------"+title+"------------------------------------------");
|
||||
LogPrint(
|
||||
log_PirntGongdanMap,
|
||||
"-------------------------------------------------------------------------------------------------------");
|
||||
LogPrint(log_PirntFirstTouwuLiaoMap,
|
||||
"------------------------------------" + title
|
||||
+ "------------------------------------------");
|
||||
for (String key : GongDan_WuLiao_Map.keySet()) {
|
||||
LogPrint(log_PirntGongdanMap, "工单号:" + key);
|
||||
LogPrint(log_PirntGongdanMap, "");
|
||||
List<FenPei> list_FenPei = GongDan_WuLiao_Map.get(key);
|
||||
for (FenPei fenPei : list_FenPei) {
|
||||
LogPrint(log_PirntGongdanMap,"工单号:" +fenPei.gdh+" 物料类型:"+fenPei.wllx+" 头物料:"+fenPei.twl+" 容器号: "+fenPei.rqh);
|
||||
LogPrint(log_PirntGongdanMap, "工单号:" + fenPei.gdh + " 物料类型:"
|
||||
+ fenPei.wllx + " 头物料:" + fenPei.twl + " 容器号: "
|
||||
+ fenPei.rqh);
|
||||
}
|
||||
LogPrint(log_PirntGongdanMap, "");
|
||||
LogPrint(log_PirntGongdanMap,"-------------------------------------------------------------------------------------------------------");
|
||||
LogPrint(
|
||||
log_PirntGongdanMap,
|
||||
"-------------------------------------------------------------------------------------------------------");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class TwlFenZu implements Comparable<TwlFenZu> {
|
||||
List<GongDanMingXi> gdPaiXus;
|
||||
public int wl_count = 0;
|
||||
|
|
@ -986,6 +1146,19 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
return str;
|
||||
}
|
||||
|
||||
// 工作站初始效能
|
||||
public int getValueGzzNumber(ShiXiao lx_sx) {
|
||||
int str = 60;
|
||||
try {
|
||||
str = Integer.parseInt(lx_sx.getTime()) / 60
|
||||
* (int) lx_sx.getNumber();
|
||||
} catch (Exception e) {
|
||||
// LogPrint(i + "" + e.toString());
|
||||
str = 60;
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
public String getValueString(Object[] obj, int i) {
|
||||
String str = "";
|
||||
try {
|
||||
|
|
@ -1033,11 +1206,13 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
return codes;
|
||||
}
|
||||
|
||||
public Map<String, Integer> gzzCount() {
|
||||
// 工作站剩余任务量
|
||||
public Map<String, Integer> gzzCount(String waveDocCode) {
|
||||
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 "
|
||||
// + " (SELECT MAX ( t.END_REGION ) AS gzz FROM task t "
|
||||
+ " (SELECT MAX ( t.old_gzz ) 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 "
|
||||
|
|
@ -1045,20 +1220,21 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
+ " 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 "
|
||||
+ " AND t.agv_Status in (-1,1,2) "
|
||||
+ " AND t.WAVE_DOC_ID IS NOT NULL and t.END_REGION is not null and wd.code!='"
|
||||
+ waveDocCode
|
||||
+ "' "
|
||||
+ " 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";
|
||||
LogPrint(log_sql,sql);
|
||||
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);
|
||||
|
||||
if (obj[0] != null) {
|
||||
gdCount.put(obj[0].toString() + "", getValueInt(obj, 1));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1066,6 +1242,19 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
|||
return gdCount;
|
||||
}
|
||||
|
||||
// 工作站剩余任务量
|
||||
public Map<String, Sequence> getGdNextSeq() {
|
||||
String hql = " from Sequence";
|
||||
List<Sequence> list = commonDao.findByQuery(hql);
|
||||
Map<String, Sequence> maps = new HashMap<String, Sequence>();
|
||||
for (Sequence seq : list) {
|
||||
maps.put(seq.getSequenceKey().getKey(), seq);
|
||||
}
|
||||
|
||||
return maps;
|
||||
}
|
||||
|
||||
// 拆分行数查询
|
||||
public ShiXiao kqShiXiao(Long zone_id) {
|
||||
String hql = " from ShiXiao sx where sx.warehouseArea.id=" + zone_id;
|
||||
List<ShiXiao> list = commonDao.findByQuery(hql);
|
||||
|
|
|
|||
Loading…
Reference in New Issue