生成头物料,波次优化

main
FOAM 2025-01-20 16:32:56 +08:00
parent 66c8a5643a
commit 8553b089ba
4 changed files with 618 additions and 443 deletions

View File

@ -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;

View File

@ -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());

View File

@ -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());

View File

@ -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);