This commit is contained in:
2023-02-14 00:13:42 +08:00
28 changed files with 1571 additions and 362 deletions

View File

@@ -69,7 +69,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
*/
@Override
public Map<String, Object> receiveTaskStatusAcs(String string) {
log.info("receiveTaskStatusAcs请求参数--------------------------------------"+string);
log.info("receiveTaskStatusAcs请求参数--------------------------------------" + string);
JSONArray array = JSONArray.parseArray(string);
//返回处理失败的任务
JSONArray errArr = new JSONArray();
@@ -265,47 +265,58 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
3、任务下发判断巷道的任务类型只能为空盘入库或者无任务类型
* */
vehicle_code = CodeUtil.getNewCode("VEHICCLE_CODE_KTP");
JSONObject empty_row = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("flag", "21").process().uniqueResult(0);
JSONArray emptyArr = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("flag", "21").process().getResultJSONArray(0);
JSONObject struct_jo = new JSONObject();
if (ObjectUtil.isNotEmpty(empty_row)) {
for (int i = 0; i < emptyArr.size(); i++) {
JSONObject empty_row = emptyArr.getJSONObject(i);
String block_num = empty_row.getString("block_num");
String row_num = empty_row.getString("row_num");
String placement_type = empty_row.getString("placement_type");
if (placement_type.equals("03")) {
// 右通
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq desc").uniqueResult(0);
} else if (placement_type.equals("02")) {
// 左通
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq").uniqueResult(0);
} else {
// 双通
JSONArray isLock = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type not in ('4','5') AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1'").getResultJSONArray(0);
// 先倒序找到第一个托盘、判断上一个是否有货位
JSONObject jsonDescBox = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq DESC").uniqueResult(0);
String out_order_seq = jsonDescBox.getString("out_order_seq");
// 上一个货位顺序号
String out_order_seq_desc = String.valueOf(NumberUtil.add(out_order_seq, "1"));
JSONObject jsonDescStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq = '" + out_order_seq_desc + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonDescStruct)) {
struct_jo = jsonDescStruct;
if (ObjectUtil.isEmpty(isLock)) {
if (placement_type.equals("03")) {
// 右通
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq desc").uniqueResult(0);
break;
} else if (placement_type.equals("02")) {
// 左通
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' order by out_order_seq").uniqueResult(0);
break;
} else {
// 没有就正序找到第一个托盘、判断上一个是否有货位
JSONObject jsonAscBox = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq ASC").uniqueResult(0);
String out_order_seq2 = jsonAscBox.getString("out_order_seq");
// 上一个货位顺序号
String out_order_seq_asc = String.valueOf(NumberUtil.sub(out_order_seq2, "1"));
JSONObject jsonAscStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq = '" + out_order_seq_asc + "'").uniqueResult(0);
// 双通
if (ObjectUtil.isNotEmpty(jsonAscStruct)) {
struct_jo = jsonAscStruct;
// 先倒序找到第一个托盘、判断上一个是否有货位
JSONObject jsonDescBox = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq DESC").uniqueResult(0);
String out_order_seq = jsonDescBox.getString("out_order_seq");
// 上一个货位顺序号
JSONObject jsonDescStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq > '" + out_order_seq + "' order by out_order_seq ASC").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonDescStruct)) {
struct_jo = jsonDescStruct;
break;
} else {
// 没有就正序找到第一个托盘、判断上一个是否有货位
JSONObject jsonAscBox = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq ASC").uniqueResult(0);
String out_order_seq2 = jsonAscBox.getString("out_order_seq");
// 上一个货位顺序号
JSONObject jsonAscStruct = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') = '' and out_order_seq < '" + out_order_seq2 + "' order by out_order_seq DESC").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonAscStruct)) {
struct_jo = jsonAscStruct;
break;
}
}
}
} else {
continue;
}
}
if (ObjectUtil.isEmpty(struct_jo)) {
throw new BadRequestException("未查询到可用的空载具存放点位!");
}
@@ -333,20 +344,31 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
b、没有则优先找空的巷道按空位置顺序分配
3、任务下发判断巷道的任务类型只能为空盘入库或者无任务类型
* */
JSONObject empty_row = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("flag", "22").process().uniqueResult(0);
JSONArray empArr = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("flag", "22").process().getResultJSONArray(0);
JSONObject struct_jo = new JSONObject();
if (ObjectUtil.isNotEmpty(empty_row)) {
for (int i = 0; i < empArr.size(); i++) {
JSONObject empty_row = empArr.getJSONObject(i);
String block_num = empty_row.getString("block_num");
String row_num = empty_row.getString("row_num");
String placement_type = empty_row.getString("placement_type");
if (placement_type.equals("01") || placement_type.equals("03")) {
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq").uniqueResult(0);
JSONArray isLock = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type not in ('4','5') AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1'").getResultJSONArray(0);
if (ObjectUtil.isEmpty(isLock)) {
if (placement_type.equals("01") || placement_type.equals("03")) {
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq").uniqueResult(0);
break;
} else {
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq desc").uniqueResult(0);
break;
}
} else {
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq desc").uniqueResult(0);
continue;
}
}
if (ObjectUtil.isEmpty(struct_jo)) {
throw new BadRequestException("未查询到可用的空载具!");
}
@@ -364,6 +386,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
map.put("lock_type", "4");
point_table.update(map, "point_code = '" + struct_jo.getString("struct_code") + "'");
struct_table.update(map, "struct_code = '" + struct_jo.getString("struct_code") + "'");
}
if (type.equals("4")) {
//查询该木箱对应的包装关系
@@ -484,7 +509,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Override
public JSONObject deviceApply(JSONObject whereJson) {
log.info("deviceApply请求参数---------------------------------------------"+whereJson.toString());
log.info("deviceApply请求参数---------------------------------------------" + whereJson.toString());
String vehicle_code = whereJson.getString("vehicle_code");
String weight = whereJson.getString("weight");
String type = whereJson.getString("type");
@@ -547,13 +572,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
data.put("box_width", box_width);
data.put("box_high", box_high);
data.put("bundle_times", 2);
result.put("data",data);
result.put("data", data);
} else if (type.equals("3")) {
//烘箱出箱任务
String device_code = whereJson.getString("device_code");
JSONObject bake_jo = new JSONObject();
bake_jo.put("point_code",device_code);
bake_jo.put("option","2");
bake_jo.put("point_code", device_code);
bake_jo.put("option", "2");
new BakingServiceImpl().ovenInAndOut(bake_jo);
} else {
throw new BadRequestException("请输入正确的任务类型!");
@@ -563,7 +588,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Override
public JSONObject process(JSONObject whereJson) {
log.info("process请求参数---------------------------------------------"+whereJson.toString());
log.info("process请求参数---------------------------------------------" + whereJson.toString());
String vehicle_code = whereJson.getString("vehicle_code");
String ext_task_id = whereJson.getString("ext_task_id");
String srcLocation = whereJson.getString("srcLocation");
@@ -630,20 +655,20 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Override
public JSONObject shipDeviceUpdate(JSONObject whereJson) {
log.info("shipDeviceUpdate请求参数---------------------------------------------"+whereJson.toString());
log.info("shipDeviceUpdate请求参数---------------------------------------------" + whereJson.toString());
String device_code = whereJson.getString("device_code");
if (StrUtil.isEmpty(device_code)){
if (StrUtil.isEmpty(device_code)) {
throw new BadRequestException("输入的设备号不能为空!");
}
//查询该设备对应的输送线点位
JSONObject deliver_jo = WQLObject.getWQLObject("st_ivt_deliverypointivt").query("point_code = '"+device_code+"'").uniqueResult(0);
if (deliver_jo != null){
JSONObject deliver_jo = WQLObject.getWQLObject("st_ivt_deliverypointivt").query("point_code = '" + device_code + "'").uniqueResult(0);
if (deliver_jo != null) {
String qzzno = deliver_jo.getString("qzzno");
if (ObjectUtil.isNotEmpty(deliver_jo)){
deliver_jo.put("point_status","01");
deliver_jo.put("qzzno","");
deliver_jo.put("vehicle_code","");
if (ObjectUtil.isNotEmpty(deliver_jo)) {
deliver_jo.put("point_status", "01");
deliver_jo.put("qzzno", "");
deliver_jo.put("vehicle_code", "");
WQLObject.getWQLObject("st_ivt_deliverypointivt").update(deliver_jo);
//如果为靠近分切机一端的输送点,判断远离端是否需要进行横移
@@ -657,18 +682,18 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
.addParam("point_code", device_code)
.addParam("product_area", product_area)
.addParam("sort_seq", sort_seq)
.addParam("find_type","1")
.addParam("find_type", "1")
.addParam("flag", "17").process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(right_point) && !right_point.getString("point_status").equals("01")) {
//创建载具横移任务
String translate_code1 = right_point.getString("point_code");
String translate_code2 = device_code;
JSONObject tran_jo = new JSONObject();
tran_jo.put("point_code1",translate_code1);
tran_jo.put("point_code2",translate_code2);
tran_jo.put("vehicle_code",right_point.getString("qzzno"));
tran_jo.put("vehicle_code2",right_point.getString("vehicle_code"));
tran_jo.put("task_type","010406");
tran_jo.put("point_code1", translate_code1);
tran_jo.put("point_code2", translate_code2);
tran_jo.put("vehicle_code", right_point.getString("qzzno"));
tran_jo.put("vehicle_code2", right_point.getString("vehicle_code"));
tran_jo.put("task_type", "010406");
cutConveyorTask.createTask(tran_jo);
}
}
@@ -683,100 +708,98 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Override
public void initialize(JSONObject param) {
{
{
int j_size = param.getInteger("j"); //
int k_size = param.getInteger("k"); //
String block = param.getString("layer"); // 块
JSONObject max_jo = WQLObject.getWQLObject("ST_IVT_StructAttr").query("sect_code = 'ZC01' order by out_order_seq desc ").uniqueResult(0);
int max_no = 0;
if (ObjectUtil.isNotEmpty(max_jo)) {
max_no = max_jo.getIntValue("out_order_seq");
}
max_no++;
for (int i = 1; i < 4; i++) {
for (int j = 1; j < j_size; j++) {
for (int k = 1; k < k_size; k++) {
//排
String row = "";
if (j < 10) {
row = "0" + j;
} else {
row = j + "";
}
//列
String line = "";
if (k < 10) {
line = "0" + k;
} else {
line = k + "";
}
//块
String piece = i + block;
//层
String layer = "0" + i;
JSONObject jo = new JSONObject();
jo.put("struct_id", IdUtil.getSnowflake(1, 1).nextId());
jo.put("struct_code", piece + row + "-" + line + "-" + layer);
jo.put("struct_name", piece + "" + row + "" + line + "" + layer + "");
jo.put("simple_name", piece + "" + row + "" + line + "" + layer + "");
jo.put("sect_id", "1582991348217286656");
jo.put("sect_code", "ZC01");
jo.put("sect_name", "主存区");
jo.put("stor_id", "1582991156504039424");
jo.put("stor_code", "CP01");
jo.put("stor_name", "兰州仓库");
jo.put("stor_type", "03");
jo.put("is_tempstruct", "0");
jo.put("row_num", row);
jo.put("col_num", line);
jo.put("layer_num", layer);
jo.put("block_num", piece);
jo.put("in_order_seq", 0);
jo.put("out_order_seq", max_no);
jo.put("in_empty_seq", 0);
jo.put("out_empty_seq", 0);
jo.put("placement_type", "01");
jo.put("create_id", "1");
jo.put("create_name", "管理员");
jo.put("create_time", DateUtil.now());
jo.put("update_optid", "1");
jo.put("update_optname", "管理员");
jo.put("update_time", DateUtil.now());
jo.put("is_delete", "0");
jo.put("is_used", "1");
jo.put("lock_type", "1");
jo.put("material_height_type", "1");
WQLObject.getWQLObject("ST_IVT_StructAttr").insert(jo);
max_no++;
//插入点位
JSONObject structMap = new JSONObject();
structMap.put("point_id", IdUtil.getSnowflake(1,1).nextId());
structMap.put("point_code", jo.getString("struct_code"));
structMap.put("point_name", jo.getString("struct_name"));
structMap.put("region_id", "1582991348217286656");
structMap.put("region_code", jo.getString("sect_code"));
structMap.put("region_name", jo.getString("sect_name"));
structMap.put("point_type", "2");
structMap.put("point_status", "1");
structMap.put("lock_type", jo.getString("lock_type"));
structMap.put("block_num", jo.getIntValue("block_num"));
structMap.put("row_num", jo.getIntValue("row_num"));
structMap.put("col_num", jo.getIntValue("col_num"));
structMap.put("layer_num", jo.getIntValue("layer_num"));
structMap.put("source_id", jo.getString("struct_id"));
structMap.put("create_id", "1");
structMap.put("create_name", "管理员");
structMap.put("create_time", DateUtil.now());
structMap.put("update_optid", "1");
structMap.put("update_optname", "管理员");
structMap.put("update_time", DateUtil.now());
WQLObject.getWQLObject("sch_base_point").insert(structMap);
int j_size = param.getInteger("j"); // 排
int k_size = param.getInteger("k"); //
String block = param.getString("layer"); //
JSONObject max_jo = WQLObject.getWQLObject("ST_IVT_StructAttr").query("sect_code = 'ZC01' order by out_order_seq desc ").uniqueResult(0);
int max_no = 0;
if (ObjectUtil.isNotEmpty(max_jo)) {
max_no = max_jo.getIntValue("out_order_seq");
}
max_no++;
for (int i = 1; i < 4; i++) {
for (int j = 1; j < j_size; j++) {
for (int k = 1; k < k_size; k++) {
//排
String row = "";
if (j < 10) {
row = "0" + j;
} else {
row = j + "";
}
//列
String line = "";
if (k < 10) {
line = "0" + k;
} else {
line = k + "";
}
//块
String piece = i + block;
//层
String layer = "0" + i;
JSONObject jo = new JSONObject();
jo.put("struct_id", IdUtil.getSnowflake(1, 1).nextId());
jo.put("struct_code", piece + row + "-" + line + "-" + layer);
jo.put("struct_name", piece + "" + row + "" + line + "" + layer + "");
jo.put("simple_name", piece + "" + row + "" + line + "" + layer + "");
jo.put("sect_id", "1582991348217286656");
jo.put("sect_code", "ZC01");
jo.put("sect_name", "主存区");
jo.put("stor_id", "1582991156504039424");
jo.put("stor_code", "CP01");
jo.put("stor_name", "兰州仓库");
jo.put("stor_type", "03");
jo.put("is_tempstruct", "0");
jo.put("row_num", row);
jo.put("col_num", line);
jo.put("layer_num", layer);
jo.put("block_num", piece);
jo.put("in_order_seq", 0);
jo.put("out_order_seq", max_no);
jo.put("in_empty_seq", 0);
jo.put("out_empty_seq", 0);
jo.put("placement_type", "01");
jo.put("create_id", "1");
jo.put("create_name", "管理员");
jo.put("create_time", DateUtil.now());
jo.put("update_optid", "1");
jo.put("update_optname", "管理员");
jo.put("update_time", DateUtil.now());
jo.put("is_delete", "0");
jo.put("is_used", "1");
jo.put("lock_type", "1");
jo.put("material_height_type", "1");
WQLObject.getWQLObject("ST_IVT_StructAttr").insert(jo);
max_no++;
//插入点位
JSONObject structMap = new JSONObject();
structMap.put("point_id", IdUtil.getSnowflake(1, 1).nextId());
structMap.put("point_code", jo.getString("struct_code"));
structMap.put("point_name", jo.getString("struct_name"));
structMap.put("region_id", "1582991348217286656");
structMap.put("region_code", jo.getString("sect_code"));
structMap.put("region_name", jo.getString("sect_name"));
structMap.put("point_type", "2");
structMap.put("point_status", "1");
structMap.put("lock_type", jo.getString("lock_type"));
structMap.put("block_num", jo.getIntValue("block_num"));
structMap.put("row_num", jo.getIntValue("row_num"));
structMap.put("col_num", jo.getIntValue("col_num"));
structMap.put("layer_num", jo.getIntValue("layer_num"));
structMap.put("source_id", jo.getString("struct_id"));
structMap.put("create_id", "1");
structMap.put("create_name", "管理员");
structMap.put("create_time", DateUtil.now());
structMap.put("update_optid", "1");
structMap.put("update_optname", "管理员");
structMap.put("update_time", DateUtil.now());
WQLObject.getWQLObject("sch_base_point").insert(structMap);
}
}
}

View File

@@ -795,7 +795,7 @@
sa.row_num,
sa.placement_type
ORDER BY
sa.placement_type DESC
sa.block_num DESC
ENDSELECT
ENDQUERY
ENDIF
@@ -818,7 +818,7 @@
sa.row_num,
sa.placement_type
ORDER BY
sa.placement_type DESC
sa.block_num DESC
ENDSELECT
ENDQUERY
ENDIF