no message
parent
3229aa367c
commit
311cc6d9c6
|
|
@ -12,6 +12,7 @@ import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import net.sf.json.JSONObject;
|
import net.sf.json.JSONObject;
|
||||||
|
import net.sf.json.util.JSONUtils;
|
||||||
|
|
||||||
import org.hibernate.Query;
|
import org.hibernate.Query;
|
||||||
import org.hibernate.Session;
|
import org.hibernate.Session;
|
||||||
|
|
@ -23,8 +24,11 @@ import com.dev.swms.server.model.inventory.Task;
|
||||||
import com.dev.swms.server.model.receiving.LibraryTaskType.classification;
|
import com.dev.swms.server.model.receiving.LibraryTaskType.classification;
|
||||||
import com.dev.swms.server.model.shipping.NewWaveFlag;
|
import com.dev.swms.server.model.shipping.NewWaveFlag;
|
||||||
import com.dev.swms.server.model.shipping.WaveDoc;
|
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.service.shipping.NewWaveManager;
|
||||||
import com.dev.swms.server.utils.interfaceUtil;
|
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;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
|
@ -36,8 +40,8 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
public void allocateGZZ(List<Long> ids) {
|
public void allocateGZZ(List<Long> ids) {
|
||||||
for (Long id : ids) {
|
for (Long id : ids) {
|
||||||
WaveDoc waveDoc = commonDao.get(WaveDoc.class, id);
|
WaveDoc waveDoc = commonDao.get(WaveDoc.class, id);
|
||||||
ShiXiao lx_sx = kqShiXiao(NewWaveFlag.LKQ);
|
ShiXiao lx_sx = kqShiXiao(NewWaveFlag.LXQ);
|
||||||
ShiXiao hj_sx = kqShiXiao(NewWaveFlag.LKQ);
|
ShiXiao hj_sx = kqShiXiao(NewWaveFlag.HJQ);
|
||||||
ShiXiao lk_sx = kqShiXiao(NewWaveFlag.LKQ);
|
ShiXiao lk_sx = kqShiXiao(NewWaveFlag.LKQ);
|
||||||
// 得到工作站剩余任务行数
|
// 得到工作站剩余任务行数
|
||||||
List<String> lx_codes = getGzzCodes(NewWaveFlag.LXQ);// 自动创波工作站
|
List<String> lx_codes = getGzzCodes(NewWaveFlag.LXQ);// 自动创波工作站
|
||||||
|
|
@ -59,7 +63,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
lkCount +=maps.get(code)==null?0:maps.get(code);
|
lkCount +=maps.get(code)==null?0:maps.get(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
allocateGZZ(waveDoc.getCode(), NewWaveFlag.LKQ, lx_codes,
|
allocateGZZ(waveDoc.getCode(), NewWaveFlag.LXQ, lx_codes,
|
||||||
(int) lx_sx.getTaskD(), (int) lx_sx.getNumber(), lxCount,
|
(int) lx_sx.getTaskD(), (int) lx_sx.getNumber(), lxCount,
|
||||||
maps);
|
maps);
|
||||||
allocateGZZ(waveDoc.getCode(), NewWaveFlag.HJQ, hj_codes,
|
allocateGZZ(waveDoc.getCode(), NewWaveFlag.HJQ, hj_codes,
|
||||||
|
|
@ -121,7 +125,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
logger.info(sql);
|
logger.info(sql);
|
||||||
Query query = session.createSQLQuery(sql);
|
Query query = session.createSQLQuery(sql);
|
||||||
List<Object[]> list = (List<Object[]>) query.list();
|
List<Object[]> list = (List<Object[]>) query.list();
|
||||||
int dataSize = list.size();
|
int GongDan_wuLiaoMingXiCout = list.size();
|
||||||
|
|
||||||
List<FenPei> list_fenpei = new ArrayList<FenPei>();
|
List<FenPei> list_fenpei = new ArrayList<FenPei>();
|
||||||
List<FenPei> list_fenpei_wgzz = new ArrayList<FenPei>();// 无需分配工作站数据
|
List<FenPei> list_fenpei_wgzz = new ArrayList<FenPei>();// 无需分配工作站数据
|
||||||
|
|
@ -171,44 +175,75 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
// 1100382814A X8001315 A0101 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 A0102 A 3#料箱区 kanban 512-00004567-F04A
|
||||||
|
|
||||||
// 计算同一工单总行数。
|
// 根据(工单号+物料类型)分组
|
||||||
Map<String, List<FenPei>> gdCount = new HashMap<>();
|
Map<String, List<FenPei>> GongDan_WuLiao_Map = new HashMap<>();
|
||||||
|
|
||||||
for (FenPei fenPei : list_fenpei) {
|
List<FenPei>list_fen=Paixu(list_fenpei);
|
||||||
String key_gd_wl = fenPei.gdh + fenPei.wllx;
|
|
||||||
if (((java.util.Map) gdCount).containsKey(key_gd_wl)) {
|
for (FenPei fenPei : list_fen) {
|
||||||
List<FenPei> list_count = gdCount.get(key_gd_wl);
|
|
||||||
|
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);
|
||||||
list_count.add(fenPei);
|
list_count.add(fenPei);
|
||||||
gdCount.put(key_gd_wl, list_count);
|
GongDan_WuLiao_Map.put(GongDan_WuLiao, list_count);
|
||||||
} else {
|
} else {
|
||||||
List<FenPei> list_count = new ArrayList<FenPei>();
|
List<FenPei> list_count = new ArrayList<FenPei>();
|
||||||
list_count.add(fenPei);
|
list_count.add(fenPei);
|
||||||
gdCount.put(key_gd_wl, list_count);
|
GongDan_WuLiao_Map.put(GongDan_WuLiao, list_count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int sumCout = 0;
|
|
||||||
|
|
||||||
|
//打印第一次分组,根据大小件拆分工单
|
||||||
|
//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
||||||
|
logger.info("--------------------------Map<String, List<FenPei>> GongDan_WuLiao_Map = new HashMap<>();-----------------------------------------------");
|
||||||
|
logger.info("-------------------------↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓-----------------------------------------------");
|
||||||
|
|
||||||
|
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<GdPaiXu> gd_paixuList = new ArrayList<GdPaiXu>();
|
List<GongDanMingXi> GongDan_List = new ArrayList<GongDanMingXi>();
|
||||||
for (String key : gdCount.keySet()) {
|
for (String key : GongDan_WuLiao_Map.keySet()) {
|
||||||
// logger.info("gdh: "+key+" count:"+gdCount.get(key).size());
|
// logger.info("gdh: "+key+" count:"+gdCount.get(key).size());
|
||||||
sumCout = sumCout + gdCount.get(key).size();
|
|
||||||
List<FenPei> list_ll1 = gdCount.get(key);
|
List<FenPei> list_ll1 = GongDan_WuLiao_Map.get(key);
|
||||||
Collections.sort(list_ll1);
|
Collections.sort(list_ll1);
|
||||||
GdPaiXu gdPaiXu = new GdPaiXu(key, list_ll1);
|
GongDanMingXi gdPaiXu = new GongDanMingXi(key, list_ll1);
|
||||||
gd_paixuList.add(gdPaiXu);
|
GongDan_List.add(gdPaiXu);
|
||||||
}
|
}
|
||||||
Collections.sort(gd_paixuList);
|
Collections.sort(GongDan_List);
|
||||||
logger.info("sumCout" + sumCout + "___dataSize:" + dataSize);
|
|
||||||
|
|
||||||
|
//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
|
||||||
|
|
||||||
// 先根据头物料分组 如果头物料相同 且工单总行数 差异小于4的工单分到一个组里面 (尽量分配到同一工作站)
|
// 先根据头物料分组 如果头物料相同 且工单总行数 差异小于4的工单分到一个组里面 (尽量分配到同一工作站)
|
||||||
|
|
||||||
Map<String, List<GdPaiXu>> touwuliao_map = new HashMap<>();
|
Map<String, List<GongDanMingXi>> touwuliao_map = new HashMap<>();
|
||||||
|
|
||||||
for (GdPaiXu gdPaiXu : gd_paixuList) {
|
for (GongDanMingXi gdPaiXu : GongDan_List) {
|
||||||
|
|
||||||
// 获取当前头物料
|
// 获取当前头物料
|
||||||
String fenzu = gdPaiXu.twl + gdPaiXu.list.get(0).wllx;
|
String fenzu = gdPaiXu.list.get(0).twl_fz+"_"+gdPaiXu.list.get(0).chf_fz;
|
||||||
|
|
||||||
String gdh = gdPaiXu.gdh;
|
String gdh = gdPaiXu.gdh;
|
||||||
|
|
||||||
|
|
@ -218,13 +253,12 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
// 在touwuliao_map中进行匹配
|
// 在touwuliao_map中进行匹配
|
||||||
boolean isFind = false;
|
boolean isFind = false;
|
||||||
for (String twlKey : touwuliao_map.keySet()) {
|
for (String twlKey : touwuliao_map.keySet()) {
|
||||||
String twl_in = touwuliao_map.get(twlKey).get(0).twl + "_"
|
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;
|
||||||
+ touwuliao_map.get(twlKey).get(0).list.get(0).wllx;
|
|
||||||
int currCount_in = touwuliao_map.get(twlKey).get(0).hangshu;
|
int currCount_in = touwuliao_map.get(twlKey).get(0).hangshu;
|
||||||
if (twl_in.equals(fenzu)
|
if (twl_in.equals(fenzu)
|
||||||
&& Math.abs(currCount - currCount_in) <= 4) {
|
&& Math.abs(currCount - currCount_in) <= 4) {
|
||||||
// 在分配好的数据中找到了相同的头物料 且 数量差小于4
|
// 在分配好的数据中找到了相同的头物料 且 数量差小于4
|
||||||
List<GdPaiXu> old = touwuliao_map.get(twlKey);
|
List<GongDanMingXi> old = touwuliao_map.get(twlKey);
|
||||||
old.add(gdPaiXu);
|
old.add(gdPaiXu);
|
||||||
touwuliao_map.put(twlKey, old);
|
touwuliao_map.put(twlKey, old);
|
||||||
isFind = true;
|
isFind = true;
|
||||||
|
|
@ -233,10 +267,9 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
}
|
}
|
||||||
if (!isFind) {
|
if (!isFind) {
|
||||||
// 未匹配到数据,自己单独一组
|
// 未匹配到数据,自己单独一组
|
||||||
List<GdPaiXu> llist = new ArrayList<GdPaiXu>();
|
List<GongDanMingXi> llist = new ArrayList<GongDanMingXi>();
|
||||||
llist.add(gdPaiXu);
|
llist.add(gdPaiXu);
|
||||||
touwuliao_map.put(fenzu + "_" + gdh, llist);
|
touwuliao_map.put(fenzu, llist);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -245,8 +278,8 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
logger.info("---------------------------打印计算结果--------------------------------------------");
|
logger.info("---------------------------打印计算结果--------------------------------------------");
|
||||||
int twl_count = 0;
|
int twl_count = 0;
|
||||||
for (String twlKey : touwuliao_map.keySet()) {
|
for (String twlKey : touwuliao_map.keySet()) {
|
||||||
List<GdPaiXu> list_show = touwuliao_map.get(twlKey);
|
List<GongDanMingXi> list_show = touwuliao_map.get(twlKey);
|
||||||
for (GdPaiXu fenPei2 : list_show) {
|
for (GongDanMingXi fenPei2 : list_show) {
|
||||||
logger.info("twl" + fenPei2.twl + " GDH:" + fenPei2.gdh
|
logger.info("twl" + fenPei2.twl + " GDH:" + fenPei2.gdh
|
||||||
+ " twlKey:" + twlKey + " GDHCount:"
|
+ " twlKey:" + twlKey + " GDHCount:"
|
||||||
+ fenPei2.hangshu);
|
+ fenPei2.hangshu);
|
||||||
|
|
@ -260,18 +293,18 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
logger.info("-----------------------------------------------------------------------");
|
logger.info("-----------------------------------------------------------------------");
|
||||||
|
|
||||||
}
|
}
|
||||||
logger.info("twl_count" + twl_count + "___dataSize:" + dataSize);
|
|
||||||
|
|
||||||
// 计算没个容器号出现得次数(在每个头物料得分组里面)
|
// 计算没个容器号出现得次数(在每个头物料得分组里面)
|
||||||
|
|
||||||
logger.info("-------------------------------------------------------------------------------打印工单容器号----------------------------------------------------------------------------------------------------------------------------");
|
logger.info("-------------------------------------------------------------------------------打印工单容器号----------------------------------------------------------------------------------------------------------------------------");
|
||||||
|
|
||||||
for (String twlKey : touwuliao_map.keySet()) {
|
for (String twlKey : touwuliao_map.keySet()) {
|
||||||
List<GdPaiXu> list_show = touwuliao_map.get(twlKey);
|
List<GongDanMingXi> list_show = touwuliao_map.get(twlKey);
|
||||||
|
|
||||||
Map<String, Integer> rq_showTime = new HashMap<>();
|
Map<String, Integer> rq_showTime = new HashMap<>();
|
||||||
|
|
||||||
for (GdPaiXu fenPei2 : list_show) {
|
for (GongDanMingXi fenPei2 : list_show) {
|
||||||
Set<String> set_rqh = new HashSet<>();
|
Set<String> set_rqh = new HashSet<>();
|
||||||
StringBuffer rqm_str = new StringBuffer();
|
StringBuffer rqm_str = new StringBuffer();
|
||||||
for (FenPei fff : fenPei2.list) {
|
for (FenPei fff : fenPei2.list) {
|
||||||
|
|
@ -294,8 +327,8 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
|
|
||||||
}
|
}
|
||||||
// 给touwuliao_map的 中 按照容器出现次数进行排序
|
// 给touwuliao_map的 中 按照容器出现次数进行排序
|
||||||
List<GdPaiXu> list_show_new = new ArrayList<>();
|
List<GongDanMingXi> list_show_new = new ArrayList<>();
|
||||||
for (GdPaiXu fenPei2 : list_show) {
|
for (GongDanMingXi fenPei2 : list_show) {
|
||||||
List<FenPei> list_new = new ArrayList<>();
|
List<FenPei> list_new = new ArrayList<>();
|
||||||
for (FenPei f1 : fenPei2.list) {
|
for (FenPei f1 : fenPei2.list) {
|
||||||
f1.show_time = rq_showTime.get(f1.rqh);
|
f1.show_time = rq_showTime.get(f1.rqh);
|
||||||
|
|
@ -309,46 +342,28 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
touwuliao_map.put(twlKey, list_show_new);
|
touwuliao_map.put(twlKey, list_show_new);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.info("-----------------------------------------------------------------------");
|
//按照 拆分头物料工单总行数进行排序
|
||||||
logger.info("-----------------------------------------------------------------------");
|
|
||||||
logger.info("---------------------------打印计算结果-------------------------------------------");
|
|
||||||
|
|
||||||
// 计算拆分号 (为了15个为一组的工单) 拆分号等于 工单总行数 /15(可配置) 根据容器号。物料
|
|
||||||
|
|
||||||
for (String twlKey : touwuliao_map.keySet()) {
|
|
||||||
List<GdPaiXu> list_show = touwuliao_map.get(twlKey);
|
|
||||||
for (GdPaiXu fenPei2 : list_show) {
|
|
||||||
logger.info("twl" + fenPei2.twl + " GDH:" + fenPei2.gdh
|
|
||||||
+ " twlKey:" + twlKey + " GDHCount:"
|
|
||||||
+ fenPei2.hangshu);
|
|
||||||
StringBuffer rqm = new StringBuffer();
|
|
||||||
for (FenPei fff : fenPei2.list) {
|
|
||||||
rqm.append(fff.rqh + "(" + fff.show_time + ") ");
|
|
||||||
}
|
|
||||||
logger.info(rqm.toString());
|
|
||||||
}
|
|
||||||
logger.info("--------------------------------------------------------------------------------------------------------------------------------------------------");
|
|
||||||
logger.info("--------------------------------------------------------------------------------------------------------------------------------------------------");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
List<TwlFenZu> paixu = new ArrayList<>();
|
List<TwlFenZu> paixu = new ArrayList<>();
|
||||||
for (String twlKey : touwuliao_map.keySet()) {
|
for (String twlKey : touwuliao_map.keySet()) {
|
||||||
List<GdPaiXu> list_show = touwuliao_map.get(twlKey);
|
List<GongDanMingXi> list_show = touwuliao_map.get(twlKey);
|
||||||
TwlFenZu twlFenZu = new TwlFenZu(list_show);
|
TwlFenZu twlFenZu = new TwlFenZu(list_show);
|
||||||
paixu.add(twlFenZu);
|
paixu.add(twlFenZu);
|
||||||
}
|
}
|
||||||
Collections.sort(paixu);
|
Collections.sort(paixu);
|
||||||
|
logger.info("---------------------------------------------------最后结果-----------------------------------------------------------------------------------------------");
|
||||||
|
logger.info("-------------------------------------------------最后结果-------------------------------------------------------------------------------------------------");
|
||||||
|
int wlcountString=0;
|
||||||
for (TwlFenZu twlFenZu : paixu) {
|
for (TwlFenZu twlFenZu : paixu) {
|
||||||
List<GdPaiXu> list_show = twlFenZu.gdPaiXus;
|
List<GongDanMingXi> list_show = twlFenZu.gdPaiXus;
|
||||||
for (GdPaiXu fenPei2 : list_show) {
|
for (GongDanMingXi fenPei2 : list_show) {
|
||||||
logger.info("twl" + fenPei2.twl + " GDH:" + fenPei2.gdh
|
logger.info("twl" + fenPei2.twl + " GDH:" + fenPei2.gdh
|
||||||
+ " GDHCount:" + fenPei2.hangshu);
|
+ " GDHCount:" + fenPei2.hangshu+" FenZu:"+fenPei2.list.get(0).chf_fz);
|
||||||
StringBuffer rqm = new StringBuffer();
|
StringBuffer rqm = new StringBuffer();
|
||||||
for (FenPei fff : fenPei2.list) {
|
for (FenPei fff : fenPei2.list) {
|
||||||
rqm.append(fff.rqh + "(" + fff.show_time + ") ");
|
rqm.append(fff.rqh + "(" + fff.show_time + "/"+fff.chf+") ");
|
||||||
|
wlcountString=wlcountString+1;
|
||||||
}
|
}
|
||||||
logger.info(rqm.toString());
|
logger.info(rqm.toString());
|
||||||
}
|
}
|
||||||
|
|
@ -356,18 +371,99 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
logger.info("--------------------------------------------------------------------------------------------------------------------------------------------------");
|
logger.info("--------------------------------------------------------------------------------------------------------------------------------------------------");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
logger.info("---------------------------------------------最后结果-----------------------------------------------------------------------------------------------------");
|
||||||
|
logger.info("----------------------------------------------最后结果--------------------------------------------------------------------------------------------------");
|
||||||
|
|
||||||
|
logger.info("GongDan_wuLiaoMingXiCout:"+GongDan_wuLiaoMingXiCout+"wlcountString:"+wlcountString);
|
||||||
|
|
||||||
|
Map<String, GongZuoZhan> gzzMap = new HashMap<>();
|
||||||
int count_all = syhs + list_fenpei.size();// 所有未处理的数据
|
int count_all = syhs + list_fenpei.size();// 所有未处理的数据
|
||||||
int gzz_nx_avg = count_all / gzz_codes.size();// 得到工作站的平均能效,
|
int gzz_nx_avg = count_all / gzz_codes.size();// 得到工作站的平均能效,
|
||||||
if (gzz_nx_avg < jhxl) {// 小于默认值则取默认
|
if (gzz_nx_avg < jhxl) {// 小于默认值则取默认
|
||||||
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
// 分配工作站,每个工作站剩余可分配订单数
|
||||||
|
for (String code : gzz_codes) {
|
||||||
|
int notFinished=(gzz_maps.get(code)==null?0:gzz_maps.get(code));
|
||||||
|
//int gzz_nx = gzz_nx_avg - notFinished;
|
||||||
|
GongZuoZhan gzz=new GongZuoZhan(code, notFinished, gzz_nx_avg, true);
|
||||||
|
gzzMap.put(code,gzz);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 分配工作站,每个工作站剩余可分配订单数
|
|
||||||
for (String code : gzz_codes) {
|
for (String key : gzzMap.keySet()) {
|
||||||
int gzz_nx = gzz_nx_avg - (gzz_maps.get(code)==null?0:gzz_maps.get(code));
|
GongZuoZhan gongZuoZhan=gzzMap.get(key);
|
||||||
|
logger.info("Code:"+gongZuoZhan.code+" notFinished:"+gongZuoZhan.notFinished+" maxRenWu:"+gongZuoZhan.maxRenWu+" isEnble:"+gongZuoZhan.isEnble);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for (TwlFenZu twlFenZu : paixu) {
|
||||||
|
List<GongDanMingXi> list_show = twlFenZu.gdPaiXus; //当前头无聊所有的工单组合,以及每个工单的物料明细
|
||||||
|
int this_fenzuCount=twlFenZu.wl_count; //当前分组总物料行数
|
||||||
|
List<GongZuoZhan>listGzz= FaiXuGzz(gzzMap); //工作站根据可分配数量进行排序
|
||||||
|
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);
|
||||||
|
//当前工单的物料
|
||||||
|
List<FenPei> list_wList=gongDanMingXi.list;
|
||||||
|
if(list_wList.size()+curr_gzz.notFinished+curr_gzz.renWuList.size()<=curr_gzz.maxRenWu){
|
||||||
|
//如果当前待分配+此工作站未完成+已分配任务数 小于最大任务数 //将当前任务分配到此工作站
|
||||||
|
for (FenPei fenPei : list_wList) {
|
||||||
|
curr_gzz.renWuList.add(fenPei);
|
||||||
|
}
|
||||||
|
if(index==list_show.size()-1){
|
||||||
|
//最后一个工单
|
||||||
|
gzzMap.put(curr_gzz.code, curr_gzz);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
gzzMap.put(curr_gzz.code, curr_gzz);
|
||||||
|
//如果当前待分配+此工作站未完成+已分配任务数 大于最大任务数 //将当前任务分配到下个工作站
|
||||||
|
gzz_index=gzz_index+1;
|
||||||
|
curr_gzz=listGzz.get(gzz_index);
|
||||||
|
for (FenPei fenPei : list_wList) {
|
||||||
|
curr_gzz.renWuList.add(fenPei);
|
||||||
|
}
|
||||||
|
if(index==list_show.size()-1){
|
||||||
|
//最后一个工单
|
||||||
|
gzzMap.put(curr_gzz.code, curr_gzz);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int fenPeiCount=0;
|
||||||
|
for (String key : gzzMap.keySet()) {
|
||||||
|
GongZuoZhan gongZuoZhan=gzzMap.get(key);
|
||||||
|
logger.info("----------------------------------------------------开始分配----------------------------------------------------------------------");
|
||||||
|
logger.info("--------------------------------------------------------------------------------------------------------------------------");
|
||||||
|
logger.info("Code:"+gongZuoZhan.code+" notFinished:"+gongZuoZhan.notFinished+" maxRenWu:"+gongZuoZhan.maxRenWu+" isEnble:"+gongZuoZhan.isEnble);
|
||||||
|
logger.info("--------------------------------------------------------------------------------------------------------------------------");
|
||||||
|
for (FenPei fenPei : gongZuoZhan.renWuList) {
|
||||||
|
fenPeiCount=fenPeiCount+1;
|
||||||
|
logger.info(""+fenPei.twl_fz+"---"+fenPei.chf_fz+"---"+fenPei.chf+"---"+fenPei.gdh+"---"+fenPei.rqh);
|
||||||
|
}
|
||||||
|
logger.info("--------------------------------------------------------------------------------------------------------------------------");
|
||||||
|
}
|
||||||
|
logger.info("GongDan_wuLiaoMingXiCout:"+GongDan_wuLiaoMingXiCout+"wlcountString:"+wlcountString+" fenPeiCount:"+fenPeiCount);
|
||||||
// 写入数据库
|
// 写入数据库
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -375,7 +471,228 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
* }finally { session.close(); }
|
* }finally { session.close(); }
|
||||||
*/
|
*/
|
||||||
session.close();
|
session.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public List<GongZuoZhan> FaiXuGzz(Map<String, GongZuoZhan> gzzMap){
|
||||||
|
List<GongZuoZhan> list =new ArrayList<DefaultNewWaveManager.GongZuoZhan>();
|
||||||
|
for (String key: gzzMap.keySet()) {
|
||||||
|
if(gzzMap.get(key).isEnble){
|
||||||
|
list.add(gzzMap.get(key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Collections.sort(list);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class GongZuoZhan implements Comparable<GongZuoZhan>{
|
||||||
|
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;
|
||||||
|
public int notFinished =0;
|
||||||
|
public List<FenPei> renWuList=new ArrayList<DefaultNewWaveManager.FenPei>();
|
||||||
|
@Override
|
||||||
|
public int compareTo(GongZuoZhan other) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return this.notFinished+renWuList.size()-other.notFinished-other.renWuList.size();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public List<FenPei> Paixu(List<FenPei>list_fenpei ){
|
||||||
|
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);
|
||||||
|
} else {
|
||||||
|
List<FenPei> list_count = new ArrayList<FenPei>();
|
||||||
|
list_count.add(fenPei);
|
||||||
|
GongDan_WuLiao_Map.put(GongDan_WuLiao, list_count);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int sumCout = 0;
|
||||||
|
|
||||||
|
//打印第一次分组,根据大小件拆分工单
|
||||||
|
//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
||||||
|
//logger.info("--------------------------Map<String, List<FenPei>> GongDan_WuLiao_Map = new HashMap<>();-----------------------------------------------");
|
||||||
|
//logger.info("--------------------------Map<String, List<FenPei>> GongDan_WuLiao_Map = new HashMap<>();-----------------------------------------------");
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
|
||||||
|
//打印第一次分组,根据大小件拆分工单
|
||||||
|
|
||||||
|
// 记录每个工单 的数目
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
|
||||||
|
//↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
||||||
|
//logger.info("---------------------List<GdPaiXu> GongDan_List = new ArrayList<GdPaiXu>();-------------------------------------------");
|
||||||
|
//logger.info("---------------------List<GdPaiXu> GongDan_List = new ArrayList<GdPaiXu>();-------------------------------------------");
|
||||||
|
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;
|
||||||
|
int currCount_in = touwuliao_map.get(twlKey).get(0).hangshu;
|
||||||
|
if (twl_in.equals(fenzu)
|
||||||
|
&& Math.abs(currCount - currCount_in) <= 4) {
|
||||||
|
// 在分配好的数据中找到了相同的头物料 且 数量差小于4
|
||||||
|
List<GongDanMingXi> old = touwuliao_map.get(twlKey);
|
||||||
|
old.add(gdPaiXu);
|
||||||
|
touwuliao_map.put(twlKey, old);
|
||||||
|
isFind = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!isFind) {
|
||||||
|
// 未匹配到数据,自己单独一组
|
||||||
|
List<GongDanMingXi> llist = new ArrayList<GongDanMingXi>();
|
||||||
|
llist.add(gdPaiXu);
|
||||||
|
touwuliao_map.put(fenzu+"_"+gdh, llist);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//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("-----------------------------------------------------------------------");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 计算没个容器号出现得次数(在每个头物料得分组里面)
|
||||||
|
|
||||||
|
//logger.info("-------------------------------------------------------------------------------打印工单容器号----------------------------------------------------------------------------------------------------------------------------");
|
||||||
|
|
||||||
|
for (String twlKey : touwuliao_map.keySet()) {
|
||||||
|
List<GongDanMingXi> list_show = touwuliao_map.get(twlKey);
|
||||||
|
|
||||||
|
Map<String, Integer> rq_showTime = new HashMap<>();
|
||||||
|
|
||||||
|
for (GongDanMingXi fenPei2 : list_show) {
|
||||||
|
Set<String> set_rqh = new HashSet<>();
|
||||||
|
StringBuffer rqm_str = new StringBuffer();
|
||||||
|
for (FenPei fff : fenPei2.list) {
|
||||||
|
// 通过set记录容器号
|
||||||
|
set_rqh.add(fff.rqh);
|
||||||
|
}
|
||||||
|
|
||||||
|
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的 中 按照容器出现次数进行排序
|
||||||
|
List<GongDanMingXi> list_show_new = new ArrayList<>();
|
||||||
|
for (GongDanMingXi fenPei2 : list_show) {
|
||||||
|
List<FenPei> list_new = new ArrayList<>();
|
||||||
|
for (FenPei f1 : fenPei2.list) {
|
||||||
|
f1.show_time = rq_showTime.get(f1.rqh);
|
||||||
|
f1.paixu_type = 1;
|
||||||
|
list_new.add(f1);
|
||||||
|
}
|
||||||
|
Collections.sort(list_new);
|
||||||
|
fenPei2.list = list_new;
|
||||||
|
list_show_new.add(fenPei2);
|
||||||
|
}
|
||||||
|
touwuliao_map.put(twlKey, list_show_new);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 对touwuliao_map 的单个工单大于15的进行拆分
|
||||||
|
Map<String, List<GongDanMingXi>> touwuliao_new_Map = new HashMap<>();
|
||||||
|
List<FenPei> list_new =new ArrayList<>();
|
||||||
|
for (String twlKey : touwuliao_map.keySet()) {
|
||||||
|
List<GongDanMingXi> list_show = touwuliao_map.get(twlKey);
|
||||||
|
for (GongDanMingXi gdPaiXu : list_show) {
|
||||||
|
List<FenPei> list_fen=gdPaiXu.list;
|
||||||
|
|
||||||
|
for (int i = 0; i < list_fen.size(); i++) {
|
||||||
|
FenPei fenPei=list_fen.get(i);
|
||||||
|
fenPei.chf_fz=(i)/15+1;
|
||||||
|
fenPei.chf=(i+1)+"";
|
||||||
|
fenPei.twl_fz=twlKey;
|
||||||
|
list_new.add(fenPei);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return list_new;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeToDb(List<FenPei> list_fenpei) {
|
public void writeToDb(List<FenPei> list_fenpei) {
|
||||||
|
|
@ -398,13 +715,13 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
}
|
}
|
||||||
|
|
||||||
class TwlFenZu implements Comparable<TwlFenZu> {
|
class TwlFenZu implements Comparable<TwlFenZu> {
|
||||||
List<GdPaiXu> gdPaiXus;
|
List<GongDanMingXi> gdPaiXus;
|
||||||
public int wl_count = 0;
|
public int wl_count = 0;
|
||||||
|
|
||||||
public TwlFenZu(List<GdPaiXu> gdPaiXus) {
|
public TwlFenZu(List<GongDanMingXi> gdPaiXus) {
|
||||||
this.gdPaiXus = gdPaiXus;
|
this.gdPaiXus = gdPaiXus;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for (GdPaiXu gdPaiXu : gdPaiXus) {
|
for (GongDanMingXi gdPaiXu : gdPaiXus) {
|
||||||
count = count + gdPaiXu.list.size();
|
count = count + gdPaiXu.list.size();
|
||||||
}
|
}
|
||||||
this.wl_count = count;
|
this.wl_count = count;
|
||||||
|
|
@ -417,13 +734,13 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class GdPaiXu implements Comparable<GdPaiXu> {
|
class GongDanMingXi implements Comparable<GongDanMingXi> {
|
||||||
public String gdh; // 工单号
|
public String gdh; // 工单号
|
||||||
public int hangshu;// 工单行数
|
public int hangshu;// 工单行数
|
||||||
public String twl;// 头物料
|
public String twl;// 头物料
|
||||||
public List<FenPei> list;
|
public List<FenPei> list;
|
||||||
|
|
||||||
public GdPaiXu(String gdh, List<FenPei> list) {
|
public GongDanMingXi(String gdh, List<FenPei> list) {
|
||||||
this.gdh = gdh;
|
this.gdh = gdh;
|
||||||
this.hangshu = list.size();
|
this.hangshu = list.size();
|
||||||
this.twl = list.get(0).twl;
|
this.twl = list.get(0).twl;
|
||||||
|
|
@ -432,7 +749,7 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compareTo(GdPaiXu other) {
|
public int compareTo(GongDanMingXi other) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
return Integer.compare(this.hangshu, other.hangshu);
|
return Integer.compare(this.hangshu, other.hangshu);
|
||||||
}
|
}
|
||||||
|
|
@ -495,6 +812,15 @@ public class DefaultNewWaveManager extends DefaultBaseManager implements
|
||||||
* 拆分号
|
* 拆分号
|
||||||
*/
|
*/
|
||||||
public String chf;
|
public String chf;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 拆分号分组
|
||||||
|
*/
|
||||||
|
public int chf_fz;
|
||||||
|
/**
|
||||||
|
* 拆分号分组
|
||||||
|
*/
|
||||||
|
public String twl_fz;
|
||||||
|
|
||||||
public int paixu_type = 0;
|
public int paixu_type = 0;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue