日志以及注释补充

main
768863620@qq.com 2025-01-14 17:56:58 +08:00
parent 7908df31f1
commit 918cde0291
1 changed files with 189 additions and 212 deletions

View File

@ -37,6 +37,15 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
private static Logger logger = Logger
.getLogger(DefaultNewWaveManager.class);
private static Boolean log_sql=true;
private static Boolean log_TouWuLiaoChaiFen=true;
private static Boolean log_GongZuoZhanMinXi=true;
private static Boolean log_GongZuoZhanFenPeiJieGuo=true;
private static Boolean log_GongZuoZhanPiPeiForRqhAndGzzx=true;
private static Boolean log_PirntGongdanMap=true;
private static Boolean log_PirntGongDanMingXiList=true;
private static Boolean log_PirntFirstTouwuLiaoMap=true;
public void allocateGZZ(List<Long> ids) {
for (Long id : ids) {
WaveDoc waveDoc = commonDao.get(WaveDoc.class, id);
@ -122,7 +131,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
// sql += " and t.PLAN_QUANTITY_MU-t.MOVED_QUANTITY_MU>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);
LogPrint(log_sql,sql);
Query query = session.createSQLQuery(sql);
List<Object[]> list = (List<Object[]>) query.list();
int GongDan_wuLiaoMingXiCout = list.size();
@ -158,30 +167,15 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
} else {
list_fenpei_wgzz.add(bean);
}
// logger.info(bean.gdh+"---"+bean.twl);
}
// 1个工单对应一个头物料拆分号。
// 工单号 容器号 料号 物料类型 库区 工作中心 //头物料 拆分号 工单总行数
// 1100382814B X8001315 A0101 A 3#料箱区 kanban 512-00004567-F04B 1 5
// 1100382814B X8001315 A0102 A 3#料箱区 kanban 512-00004567-F04B 1 5
// 1100382814B X8001315 A0101 A 3#料箱区 kanban 512-00004567-F04B 1 5
// 1100382814B X8001315 A0102 A 3#料箱区 kanban 512-00004567-F04B 1 5
// 1100382814B X8001315 A0101 A 3#料箱区 kanban 512-00004567-F04B 1 5
// 1100382814A X8001315 A0102 A 3#料箱区 kanban 512-00004567-F04A
// 1100382814A X8001315 A0101 A 3#料箱区 kanban 512-00004567-F04A
// 1100382814A X8001315 A0102 A 3#料箱区 kanban 512-00004567-F04A
// 1100382814A X8001315 A0101 A 3#料箱区 kanban 512-00004567-F04A
// 1100382814A X8001315 A0102 A 3#料箱区 kanban 512-00004567-F04A
// 根据(工单号+物料类型)分组
Map<String, List<FenPei>> GongDan_WuLiao_Map = new HashMap<>();
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);
@ -193,25 +187,16 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
GongDan_WuLiao_Map.put(GongDan_WuLiao, list_count);
}
}
//打印分组情况
PirntGongdanMap(GongDan_WuLiao_Map,"最终工单分组");
//打印第一次分组,根据大小件拆分工单
//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
for (String key : GongDan_WuLiao_Map.keySet()) {
//logger.info("GongDan_WuLiao:" +key);
List<FenPei> list_ff =GongDan_WuLiao_Map.get(key);
for (FenPei fenPei : list_ff) {
//logger.info(":" +fenPei.gdh+"--"+fenPei.wllx+"---"+fenPei.twl+"---"+fenPei.rqh+"---"+fenPei.chf_fz+"---"+fenPei.chf);
}
}
//↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//打印第一次分组,根据大小件拆分工单
// 记录每个工单 的数目
List<GongDanMingXi> GongDan_List = new ArrayList<GongDanMingXi>();
for (String key : GongDan_WuLiao_Map.keySet()) {
// logger.info("gdh: "+key+" count"+gdCount.get(key).size());
// LogPrint("gdh: "+key+" count"+gdCount.get(key).size());
List<FenPei> list_ll1 = GongDan_WuLiao_Map.get(key);
Collections.sort(list_ll1);
@ -220,18 +205,8 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
}
Collections.sort(GongDan_List);
//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
//logger.info("---------------------List<GdPaiXu> GongDan_List = new ArrayList<GdPaiXu>();-------------------------------------------");
//logger.info("---------------------↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓-------------------------------------------");
for (GongDanMingXi gdPaiXu : GongDan_List) {
//logger.info("GongDan_WuLiao:" +gdPaiXu.gdh);
List<FenPei> list_FenPei =gdPaiXu.list;
for (FenPei fenPei : list_FenPei) {
//logger.info(":" +fenPei.gdh+"--"+fenPei.wllx+"---"+fenPei.twl+"---"+fenPei.rqh);
}
}
//↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//打印排序结果
PirntGongDanMingXiList(GongDan_List,"最终工单排序");
// 先根据头物料分组 如果头物料相同 且工单总行数 差异小于4的工单分到一个组里面 (尽量分配到同一工作站)
@ -246,7 +221,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
// 获取当前工单的数量
int currCount = gdPaiXu.hangshu;
// logger.info("---gdh:"+gdh+" currCount:"+currCount);
// LogPrint("---gdh:"+gdh+" currCount:"+currCount);
// 在touwuliao_map中进行匹配
boolean isFind = false;
for (String twlKey : touwuliao_map.keySet()) {
@ -270,60 +245,40 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
}
}
//logger.info("-----------------------------------------------------------------------");
//logger.info("-----------------------------------------------------------------------");
//logger.info("---------------------------打印计算结果--------------------------------------------");
int twl_count = 0;
for (String twlKey : touwuliao_map.keySet()) {
List<GongDanMingXi> list_show = touwuliao_map.get(twlKey);
for (GongDanMingXi fenPei2 : list_show) {
//logger.info("twl" + fenPei2.twl + " GDH:" + fenPei2.gdh+ " twlKey:" + twlKey + " GDHCount:"+ fenPei2.hangshu);
twl_count++;
StringBuffer rqm = new StringBuffer();
for (FenPei fff : fenPei2.list) {
rqm.append(fff.rqh + "");
}
}
//logger.info("-----------------------------------------------------------------------");
}
//打印头物料分组后的情况
PirntFirstTouwuLiaoMap(touwuliao_map,"最终头物料分组");
// 计算没个容器号出现得次数(在每个头物料得分组里面)
//logger.info("-------------------------------------------------------------------------------打印工单容器号----------------------------------------------------------------------------------------------------------------------------");
for (String twlKey : touwuliao_map.keySet()) {
List<GongDanMingXi> list_show = touwuliao_map.get(twlKey);
List<GongDanMingXi> GongDanList = touwuliao_map.get(twlKey);
//初始化rq_showTime 记录容器号次数
Map<String, Integer> rq_showTime = new HashMap<>();
for (GongDanMingXi fenPei2 : list_show) {
//循环工单中所有任务
for (GongDanMingXi fenPei2 : GongDanList) {
// 初始化set_rqh 记录本工单容器号出现次数,(set保证同一工单中一个容器号只计算一次)
Set<String> set_rqh = new HashSet<>();
StringBuffer rqm_str = new StringBuffer();
for (FenPei fff : fenPei2.list) {
// 通过set记录容器号
set_rqh.add(fff.rqh);
}
//循环 set_rqh 把统计的容器号写入rq_showTime (记录本头物料中 每个容器号出现次数)
for (String rqh : set_rqh) {
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) + ")" + "");
} else {
rq_showTime.put(rqh, 1);
rqm_str.append(rqh + " __" + 0 + "("
+ rq_showTime.get(rqh) + ")" + "");
}
}
}
// 给touwuliao_map的 中 按照容器出现次数进行排序
//循环GongDanList 并给所有工单 中所有任务写入任务中容器出现次数并按容器次数进行排序刷新touwuliao_map头物料分组合集
List<GongDanMingXi> list_show_new = new ArrayList<>();
for (GongDanMingXi fenPei2 : list_show) {
for (GongDanMingXi fenPei2 : GongDanList) {
List<FenPei> list_new = new ArrayList<>();
for (FenPei f1 : fenPei2.list) {
f1.show_time = rq_showTime.get(f1.rqh);
@ -334,58 +289,59 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
fenPei2.list = list_new;
list_show_new.add(fenPei2);
}
//刷新touwuliao_map头物料分组合集
touwuliao_map.put(twlKey, list_show_new);
}
//按照 拆分头物料工单总行数进行排序
List<TwlFenZu> paixu = new ArrayList<>();
//初始化 List<TwlFenZu> twlFenZuList 给所有数据写入twlFenZuList
List<TwlFenZu> twlFenZuList = new ArrayList<>();
for (String twlKey : touwuliao_map.keySet()) {
List<GongDanMingXi> list_show = touwuliao_map.get(twlKey);
TwlFenZu twlFenZu = new TwlFenZu(list_show);
paixu.add(twlFenZu);
twlFenZuList.add(twlFenZu);
}
Collections.sort(paixu);
logger.info("---------------------------------------------------头物料拆分结果-----------------------------------------------------------------------------------------------");
logger.info("↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
//根据 头物料 中所有工单总任务数进行 排序
Collections.sort(twlFenZuList);
LogPrint(log_TouWuLiaoChaiFen,"---------------------------------------------------头物料拆分排序结果-----------------------------------------------------------------------------------------------");
LogPrint(log_TouWuLiaoChaiFen,"↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
int wlcountString=0;
for (TwlFenZu twlFenZu : paixu) {
for (TwlFenZu twlFenZu : twlFenZuList) {
List<GongDanMingXi> list_show = twlFenZu.gdPaiXus;
for (GongDanMingXi fenPei2 : list_show) {
logger.info("twl" + fenPei2.twl + " GDH:" + fenPei2.gdh
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+") ");
wlcountString=wlcountString+1;
}
logger.info(rqm.toString());
LogPrint(log_TouWuLiaoChaiFen,rqm.toString());
}
logger.info("--------------------------------------------------------------------------------------------------------------------------------------------------");
LogPrint(log_TouWuLiaoChaiFen,"--------------------------------------------------------------------------------------------------------------------------------------------------");
}
logger.info("↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
logger.info("---------------------------------------------------头物料拆分结果-----------------------------------------------------------------------------------------------");
LogPrint(log_TouWuLiaoChaiFen,"↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
LogPrint(log_TouWuLiaoChaiFen,"---------------------------------------------------头物料拆分结果-----------------------------------------------------------------------------------------------");
logger.info("GongDan_wuLiaoMingXiCout:"+GongDan_wuLiaoMingXiCout+"wlcountString:"+wlcountString);
LogPrint(log_TouWuLiaoChaiFen,"GongDan_wuLiaoMingXiCout:"+GongDan_wuLiaoMingXiCout+"wlcountString:"+wlcountString);
Map<String, GongZuoZhan> gzzMap = new HashMap<>();
int count_all = syhs + list_fenpei.size();// 所有未处理的数据
int gzz_nx_avg = count_all / gzz_codes.size();// 得到工作站的平均能效,
if (gzz_nx_avg < jhxl) {// 小于默认值则取默认
if (gzz_nx_avg < jhxl) {
// 小于默认值则取默认 ,且根据需要关闭多余的工作站
gzz_nx_avg = jhxl;
int fenpeiALl=0;
for (String code : gzz_codes) {
int notFinished=(gzz_maps.get(code)==null?0:gzz_maps.get(code));
int fenpeicount=gzz_nx_avg-notFinished;
if(fenpeiALl-count_all<=0){
fenpeiALl=fenpeiALl+fenpeicount;
GongZuoZhan gzz=new GongZuoZhan(code, notFinished, gzz_nx_avg, true);
gzzMap.put(code,gzz);
}else{
//fenpeiALl=fenpeiALl+fenpeicount;
GongZuoZhan gzz=new GongZuoZhan(code, notFinished, gzz_nx_avg, false);
gzzMap.put(code,gzz);
}
@ -394,6 +350,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
}
}else{
//计算能效大于默认能效,则每个工作站能效 扩大至 计算值。所有工作站都需要使用
// 分配工作站,每个工作站剩余可分配订单数
for (String code : gzz_codes) {
int notFinished=(gzz_maps.get(code)==null?0:gzz_maps.get(code));
@ -402,21 +359,21 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
gzzMap.put(code,gzz);
}
}
logger.info("---------------------------------------------------工作站详情-----------------------------------------------------------------------------------------------");
logger.info("↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
LogPrint(log_GongZuoZhanMinXi,"---------------------------------------------------工作站详情-----------------------------------------------------------------------------------------------");
LogPrint(log_GongZuoZhanMinXi,"↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
for (String key : gzzMap.keySet()) {
GongZuoZhan gongZuoZhan=gzzMap.get(key);
logger.info("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);
}
logger.info("↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
logger.info("---------------------------------------------------工作站详情-----------------------------------------------------------------------------------------------");
for (TwlFenZu twlFenZu : paixu) {
List<GongDanMingXi> list_show = twlFenZu.gdPaiXus; //当前头物料所有的工单组合,以及每个工单的物料明细
LogPrint(log_GongZuoZhanMinXi,"↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
LogPrint(log_GongZuoZhanMinXi,"---------------------------------------------------工作站详情-----------------------------------------------------------------------------------------------");
for (TwlFenZu twlFenZu : twlFenZuList) {
List<GongDanMingXi> gongDanList = twlFenZu.gdPaiXus; //当前头物料所有的工单组合,以及每个工单的物料明细
int this_fenzuCount=twlFenZu.wl_count; //当前分组总物料行数
List<GongZuoZhan>listGzz= FaiXuGzz(gzzMap); //工作站根据可分配数量进行排序
if(list_show.size()==1){
GongDanMingXi gongDanMingXi=list_show.get(0);
if(gongDanList.size()==1){
GongDanMingXi gongDanMingXi=gongDanList.get(0);
GongZuoZhan curr_gzz=PiPeiGongZuoZhanForGzzxAndRqh(listGzz,gongDanMingXi,cfhs);
List<FenPei> list_wList=gongDanMingXi.list;
for (FenPei fenPei : list_wList) {
@ -428,28 +385,28 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
}else{
//多个工单匹配进行
int gzz_index=0; //当前分配工作站的排序下标
int gzz_index=0; //当前分配工作站的排序下标
GongZuoZhan curr_gzz=listGzz.get(0);
for (int index=0;index<list_show.size();index++) {
GongDanMingXi gongDanMingXi=list_show.get(index);
for (int index=0;index<gongDanList.size();index++) {
GongDanMingXi gongDanMingXi=gongDanList.get(index);
//当前工单的物料
List<FenPei> 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));
//LogPrint(listGzz.size());
if(chao<=cfhs||index==gongDanList.size()-1){
//LogPrint("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){
if(index==gongDanList.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;
@ -459,7 +416,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
curr_gzz.RongQIHaoMap.put(fenPei.rqh,"");
curr_gzz.GongZuoZhongXinMap.put(fenPei.gzzx,"");
}
if(index==list_show.size()-1){
if(index==gongDanList.size()-1){
//最后一个工单
gzzMap.put(curr_gzz.code, curr_gzz);
}
@ -473,9 +430,9 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
int fenPeiCount=0;
for (String key : gzzMap.keySet()) {
GongZuoZhan gongZuoZhan=gzzMap.get(key);
logger.info("----------------------------------------------------开始分配----------------------------------------------------------------------");
logger.info("Code:"+gongZuoZhan.code+" notFinished:"+gongZuoZhan.notFinished+" maxRenWu:"+gongZuoZhan.maxRenWu+" isEnble:"+gongZuoZhan.isEnble);
logger.info("↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
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(",");
@ -489,34 +446,40 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
task.setEndRegion(gongZuoZhan.code);
//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);
//LogPrint("one:"+task.getBillCode()+"---"+task.getEndRegion()+"--two:-"+task.getOldGzz()+"---"+task.getOldZrw()+"--three:-"+fenPei.gdh+"-"+fenPei.chf_fz+"-----"+gongZuoZhan.code);
}
logger.info("工作站:"+gongZuoZhan.code+" 工单号:"+fenPei.gdh+" 容器号:"+fenPei.rqh+" 拆分号:"+fenPei.chf+" 拆分组:"+fenPei.chf_fz+" 头物料:"+fenPei.twl_fz);
//logger.info(""+fenPei.twl_fz+"---"+fenPei.chf_fz+"---"+fenPei.chf+"---"+fenPei.gdh+"---"+fenPei.rqh);
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);
}
logger.info("↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
LogPrint(log_GongZuoZhanFenPeiJieGuo,"↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
}
logger.info("GongDan_wuLiaoMingXiCout:"+GongDan_wuLiaoMingXiCout+"wlcountString:"+wlcountString+" fenPeiCount:"+fenPeiCount);
LogPrint(log_GongZuoZhanFenPeiJieGuo,"GongDan_wuLiaoMingXiCout:"+GongDan_wuLiaoMingXiCout+"wlcountString:"+wlcountString+" fenPeiCount:"+fenPeiCount);
// 写入数据库
/*
* }catch (Exception e) { logger.info(e.toString()); session.close();
* }catch (Exception e) { LogPrint(e.toString()); session.close();
* }finally { session.close(); }
*/
session.close();
}
public void LogPrint(boolean isshow,String msg){
if(isshow){
logger.info(msg);
}
}
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;
logger.info("------------------------匹配容器号和工作中心-----------------------------------------------");
logger.info("↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
logger.info("当前工单号:"+gongDanMingXi.gdh);
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"------------------------匹配容器号和工作中心-----------------------------------------------");
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"当前工单号:"+gongDanMingXi.gdh);
for (GongZuoZhan gzz : listGzz) {
logger.info("当前工作站:"+gzz.code);
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"当前工作站:"+gzz.code);
List<FenPei>list=gzz.renWuList;
StringBuffer sb_gzzx=new StringBuffer();
StringBuffer sb_rqh=new StringBuffer();
@ -525,9 +488,9 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
sb_rqh.append(fenPei.rqh+" , ");
}
int chao=(list_wList.size()+gzz.notFinished+gzz.renWuList.size())-gzz.maxRenWu;
//logger.info(listGzz.size());
//LogPrint(listGzz.size());
if(chao>cfhs){
logger.info("工作站:"+gzz.code+"超出:"+chao+"无法分配,跳过此工作站");
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"工作站:"+gzz.code+"超出:"+chao+"无法分配,跳过此工作站");
continue;
}
StringBuffer sb_pipei=new StringBuffer();
@ -542,10 +505,10 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
sb_pipei.append(fenPei.rqh);
}
}
logger.info("工作站:"+gzz.code+" gzzx"+gzzx+" rqh_count"+rqh_count);
logger.info(sb_gzzx.toString());
logger.info(sb_rqh.toString());
logger.info("匹配上的容器号: "+sb_pipei.toString());
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());
Boolean isPiPeiGzzx=false;//true 优先按照工作中心匹配再按照容器号。false直接按照容器号匹配散单
if(isPiPeiGzzx){
if(max_gzzx==0 && gzzx==0 && rqh_count>max_rqh_count){
@ -582,9 +545,9 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
}
}
logger.info("容器号匹配次数:"+max_rqh_count+" 工作中心匹配次数:"+max_gzzx+" 工单号:"+gongDanMingXi.gdh+" 工作站:"+check.code);
logger.info("↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
logger.info("------------------------匹配容器号和工作中心-----------------------------------------------");
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"容器号匹配次数:"+max_rqh_count+" 工作中心匹配次数:"+max_gzzx+" 工单号:"+gongDanMingXi.gdh+" 工作站:"+check.code);
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
LogPrint(log_GongZuoZhanPiPeiForRqhAndGzzx,"------------------------匹配容器号和工作中心-----------------------------------------------");
return check;
}
@ -627,11 +590,11 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
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)) {
List<FenPei> list_count = GongDan_WuLiao_Map.get(GongDan_WuLiao);
list_count.add(fenPei);
GongDan_WuLiao_Map.put(GongDan_WuLiao, list_count);
@ -641,61 +604,36 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
GongDan_WuLiao_Map.put(GongDan_WuLiao, list_count);
}
}
int sumCout = 0;
//打印第一次分组,根据大小件拆分工单
//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
for (String key : GongDan_WuLiao_Map.keySet()) {
//logger.info("GongDan_WuLiao:" +key);
List<FenPei> list_FenPei =GongDan_WuLiao_Map.get(key);
for (FenPei fenPei : list_FenPei) {
//logger.info(":" +fenPei.gdh+"--"+fenPei.wllx+"---"+fenPei.twl+"---"+fenPei.rqh);
}
}
//↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//打印第一次分组,根据大小件拆分工单
// 记录每个工单 的数目
//打印分组情况
PirntGongdanMap(GongDan_WuLiao_Map,"首次工单分组");
int sumCout = 0; //所有工单总任务数
//给分组后的结果写入 GongDanMingXi 类中,记录工单(头物料,行数,工单号),并按工单的任务行数进行排序
List<GongDanMingXi> GongDan_List = new ArrayList<GongDanMingXi>();
for (String key : GongDan_WuLiao_Map.keySet()) {
// logger.info("gdh: "+key+" count"+gdCount.get(key).size());
sumCout = sumCout + GongDan_WuLiao_Map.get(key).size();
//对工单中的任务明细,根据任务的容器号名称进行排序
List<FenPei> list_ll1 = GongDan_WuLiao_Map.get(key);
Collections.sort(list_ll1);
GongDanMingXi gdPaiXu = new GongDanMingXi(key, list_ll1);
GongDan_List.add(gdPaiXu);
}
//对所有工单进行排序 (按工单的任务行数进行排序)
Collections.sort(GongDan_List);
//打印排序结果
PirntGongDanMingXiList(GongDan_List,"首次工单排序");
//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
for (GongDanMingXi gdPaiXu : GongDan_List) {
//logger.info("GongDan_WuLiao:" +gdPaiXu.gdh);
List<FenPei> list_FenPei =gdPaiXu.list;
for (FenPei fenPei : list_FenPei) {
//logger.info(":" +fenPei.gdh+"--"+fenPei.wllx+"---"+fenPei.twl+"---"+fenPei.rqh);
}
}
// 先根据头物料分组 如果头物料相同 且工单总行数 差异小于4的工单分到一个组里面 (尽量分配到同一工作站)
Map<String, List<GongDanMingXi>> touwuliao_map = new HashMap<>();
for (GongDanMingXi gdPaiXu : GongDan_List) {
// 获取当前头物料
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 + "_"+ touwuliao_map.get(twlKey).get(0).list.get(0).wllx;
@ -718,60 +656,40 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
}
}
//logger.info("-----------------------------------------------------------------------");
//logger.info("-----------------------------------------------------------------------");
//logger.info("---------------------------打印计算结果--------------------------------------------");
int twl_count = 0;
for (String twlKey : touwuliao_map.keySet()) {
List<GongDanMingXi> list_show = touwuliao_map.get(twlKey);
for (GongDanMingXi fenPei2 : list_show) {
//logger.info("twl" + fenPei2.twl + " GDH:" + fenPei2.gdh+ " twlKey:" + twlKey + " GDHCount:"+ fenPei2.hangshu);
twl_count++;
StringBuffer rqm = new StringBuffer();
for (FenPei fff : fenPei2.list) {
rqm.append(fff.rqh + "");
}
}
//logger.info("-----------------------------------------------------------------------");
}
//打印头物料分组后的情况
PirntFirstTouwuLiaoMap(touwuliao_map,"首次头物料分组");
// 计算没个容器号出现得次数(在每个头物料得分组里面)
//logger.info("-------------------------------------------------------------------------------打印工单容器号----------------------------------------------------------------------------------------------------------------------------");
for (String twlKey : touwuliao_map.keySet()) {
List<GongDanMingXi> list_show = touwuliao_map.get(twlKey);
List<GongDanMingXi> GongDanList = touwuliao_map.get(twlKey);
//初始化rq_showTime 记录容器号次数
Map<String, Integer> rq_showTime = new HashMap<>();
for (GongDanMingXi fenPei2 : list_show) {
//循环工单中所有任务
for (GongDanMingXi fenPei2 : GongDanList) {
// 初始化set_rqh 记录本工单容器号出现次数,(set保证同一工单中一个容器号只计算一次)
Set<String> set_rqh = new HashSet<>();
StringBuffer rqm_str = new StringBuffer();
for (FenPei fff : fenPei2.list) {
// 通过set记录容器号
set_rqh.add(fff.rqh);
}
//循环 set_rqh 把统计的容器号写入rq_showTime (记录本头物料中 每个容器号出现次数)
for (String rqh : set_rqh) {
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) + ")" + "");
} else {
rq_showTime.put(rqh, 1);
rqm_str.append(rqh + " __" + 0 + "("
+ rq_showTime.get(rqh) + ")" + "");
}
}
}
// 给touwuliao_map的 中 按照容器出现次数进行排序
//循环GongDanList 并给所有工单 中所有任务写入任务中容器出现次数并按容器次数进行排序刷新touwuliao_map头物料分组合集
List<GongDanMingXi> list_show_new = new ArrayList<>();
for (GongDanMingXi fenPei2 : list_show) {
for (GongDanMingXi fenPei2 : GongDanList) {
List<FenPei> list_new = new ArrayList<>();
for (FenPei f1 : fenPei2.list) {
f1.show_time = rq_showTime.get(f1.rqh);
@ -782,17 +700,18 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
fenPei2.list = list_new;
list_show_new.add(fenPei2);
}
//刷新touwuliao_map头物料分组合集
touwuliao_map.put(twlKey, list_show_new);
}
// 对touwuliao_map 的单个工单大于拆分书数的进行拆分
Map<String, List<GongDanMingXi>> touwuliao_new_Map = new HashMap<>();
// 对touwuliao_map(头物料分组合集) 的单个工单大于拆分行数数的进行拆分
//初始化 list_new (记录拆分后的标识,提供给后无进行分组)
List<FenPei> list_new =new ArrayList<>();
for (String twlKey : touwuliao_map.keySet()) {
List<GongDanMingXi> list_show = touwuliao_map.get(twlKey);
int max_len=0;
//得出最大列数
//计算本头物料中的 工单的最大任务数(多个工单最多的任务的工单)
if(list_show.size()>0){
for (GongDanMingXi gdPaiXu : list_show) {
if(max_len<gdPaiXu.list.size()){
@ -809,12 +728,12 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
//循环每个工单
GongDanMingXi gdPaiXu =list_show.get(gd_index);
List<FenPei> list_fen=gdPaiXu.list;
//防止本工单没有这么多任务数
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(rq_last_show.containsKey(fenPei.rqh)){
fenPei.chf_fz=(fz_col)/cfhs;
fenPei.chf=(fz_col+1)+"";
@ -840,6 +759,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
if((fz_col+1)%cfhs==0){
//拆分最大行数的时候
//记录上一个分组中的所有容器
rq_last_show=rq_last_show2;
rq_last_show2= new HashMap<>();
}
@ -853,6 +773,63 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
return list_new;
}
public void PirntFirstTouwuLiaoMap(Map<String, List<GongDanMingXi>> touwuliao_map ,String title){
LogPrint(log_PirntFirstTouwuLiaoMap,"");
LogPrint(log_PirntFirstTouwuLiaoMap,"");
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);
StringBuffer rqm = new StringBuffer();
for (FenPei fff : gongDan.list) {
rqm.append(fff.rqh + "");
}
LogPrint(log_PirntFirstTouwuLiaoMap,"容器号: "+rqm.toString());
}
LogPrint(log_PirntFirstTouwuLiaoMap,"-----------------------------------------------------------------------");
LogPrint(log_PirntFirstTouwuLiaoMap,"");
LogPrint(log_PirntFirstTouwuLiaoMap,"");
}
}
public void PirntGongDanMingXiList(List<GongDanMingXi> GongDan_List ,String title){
LogPrint(log_PirntGongDanMingXiList,"");
LogPrint(log_PirntGongDanMingXiList,"");
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_PirntGongdanMap,"");
LogPrint(log_PirntGongdanMap,"-------------------------------------------------------------------------------------------------------");
}
}
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+"------------------------------------------");
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,"");
LogPrint(log_PirntGongdanMap,"-------------------------------------------------------------------------------------------------------");
}
}
class TwlFenZu implements Comparable<TwlFenZu> {
List<GongDanMingXi> gdPaiXus;
@ -993,7 +970,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
try {
str = Integer.parseInt(obj[i].toString());
} catch (Exception e) {
logger.info(i + "" + e.toString());
//LogPrint(i + "" + e.toString());
str = -1;
}
return str;
@ -1004,7 +981,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
try {
str = (String) obj[i];
} catch (Exception e) {
logger.info(i + "" + e.toString());
//LogPrint(i + "" + e.toString());
str = "";
}
return str;
@ -1015,7 +992,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
try {
str = Long.parseLong(obj[i].toString());
} catch (Exception e) {
logger.info(i + "" + e.toString());
//LogPrint(i + "" + e.toString());
str = 0l;
}
return str;
@ -1027,7 +1004,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
v = Float.parseFloat(obj[i].toString());
} catch (Exception e) {
v = 0;
logger.info(i + "" + e.toString());
//LogPrint(i + "" + e.toString());
}
return v;
}
@ -1062,7 +1039,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
+ " 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);
LogPrint(log_sql,sql);
Query query = session.createSQLQuery(sql);
List<Object[]> objs = (List<Object[]>) query.list();
Map<String, Integer> gdCount = new HashMap<String, Integer>();