This commit is contained in:
2023-01-09 21:49:01 +08:00
29 changed files with 1647 additions and 221 deletions

View File

@@ -331,21 +331,71 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
String sale_order_name = sub_jo.getString("sale_order_name");
//查询是否存在可用的空位
JSONObject jo = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("flag", "19").addParam("sale_order_name", sale_order_name).process().uniqueResult(0);
if (ObjectUtil.isEmpty(jo)) {
String point_code = "";
JSONArray joArr = new JSONArray();
// 查找此订单号所在的所有排
JSONArray joRow = WQL.getWO("QST_ACSTOLMSTYPE4").addParam("flag", "1").addParam("sale_order_name", sale_order_name).process().getResultJSONArray(0);
for (int j = 0; j < joRow.size(); j++) {
JSONObject json = joRow.getJSONObject(j);
String row_num = json.getString("row_num");
// 查找此排下的所有空位
JSONArray joEmpPoint = WQL.getWO("QST_ACSTOLMSTYPE4").addParam("flag", "2").addParam("row_num", row_num).process().getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(joEmpPoint)) {
for (int n = 0; n < joEmpPoint.size(); n++) {
joArr.add(joEmpPoint.getJSONObject(n));
}
}
}
if (ObjectUtil.isEmpty(joArr)) {
//查询新的一排
JSONObject point_jo = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("flag", "20").process().uniqueResult(0);
JSONObject point_jo = WQL.getWO("QST_ACSTOLMSTYPE4").addParam("flag", "3").process().uniqueResult(0);
if (ObjectUtil.isEmpty(point_jo)) {
throw new BadRequestException("未查询到相同销售订单的放货区点位或空的一排!");
} else {
jo = WQLObject.getWQLObject("sch_base_point").query("row_num = '" + point_jo.getString("row_num") + "' AND point_type ='9' AND is_delete = '0'").uniqueResult(0);
JSONObject jsonNewRow = WQLObject.getWQLObject("sch_base_point").query("row_num = '" + point_jo.getString("row_num") + "' AND point_type ='9' AND is_delete = '0' order by out_order_seq ASC").uniqueResult(0);
point_code = jsonNewRow.getString("point_code");
}
} else {
// 校验此货位是否被堵住1.如果被堵住则判断下一个是否被堵住 2.如果全部被堵住则新开一排
for (int i = 0; i < joArr.size(); i++) {
JSONObject json = joArr.getJSONObject(i);
// 判断是否被挡住
JSONArray jsonArray = WQL.getWO("QST_ACSTOLMSTYPE4")
.addParam("flag", "4")
.addParam("point_code", json.getString("point_code"))
.process().getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(jsonArray)) {
// 堵住则判断下一个
continue;
} else {
// 未堵住: 跳出循环
point_code = json.getString("point_code");
break;
}
}
}
if (ObjectUtil.isEmpty(point_code)) {
// 为空则新开一排
JSONObject point_jo = WQL.getWO("QST_ACSTOLMSTYPE4").addParam("flag", "3").process().uniqueResult(0);
if (ObjectUtil.isEmpty(point_jo)) {
throw new BadRequestException("未查询到相同销售订单的放货区点位或空的一排!");
} else {
JSONObject jsonNewRow = WQLObject.getWQLObject("sch_base_point").query("row_num = '" + point_jo.getString("row_num") + "' AND point_type ='9' AND is_delete = '0' order by out_order_seq ASC").uniqueResult(0);
point_code = jsonNewRow.getString("point_code");
}
}
//创建任务
JSONObject task_jo = new JSONObject();
task_jo.put("point_code1", device_code);
task_jo.put("point_code2", jo.getString("point_cde"));
task_jo.put("point_code2", point_code);
task_jo.put("vehicle_code", vehicle_code);
task_jo.put("task_type", "010506");
SendOutTask sendOutTask = new SendOutTask();

View File

@@ -158,10 +158,10 @@ public class InTask extends AbstractAcsTask {
@Override
@Transactional(rollbackFor = Exception.class)
public void forceFinish(String taskdtl_id) {
public void forceFinish(String task_id) {
//任务表
WQLObject wo_Task = WQLObject.getWQLObject("SCH_BASE_Task");
JSONObject task = wo_Task.query("task_status<>'99' and taskdtl_id='" + taskdtl_id + "'").uniqueResult(0);
JSONObject task = wo_Task.query("task_status<>'07' and task_id='" + task_id + "'").uniqueResult(0);
if (task == null) {
throw new BadRequestException("查询不到操作的任务记录!");
}

View File

@@ -12,6 +12,7 @@ import lombok.RequiredArgsConstructor;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.ext.mes.service.impl.LmsToMesServiceImpl;
@@ -46,7 +47,10 @@ public class OutTask extends AbstractAcsTask {
WQLObject wo_Task = WQLObject.getWQLObject("SCH_BASE_Task");
WQLObject dis_tab = WQLObject.getWQLObject("ST_IVT_IOStorInvDis");
JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
JSONObject map = new JSONObject();
map.put("flag", "1");
map.put("handle_class", THIS_CLASS);
JSONArray arr = WQL.getWO("TASK01").addParamMap(map).process().getResultJSONArray(0);
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
for (int i = 0; i < arr.size(); i++) {

View File

@@ -92,7 +92,7 @@ public class SendOutTask extends AbstractAcsTask {
// 更新暂存区点位状态
JSONObject jsonPoint2 = WQLObject.getWQLObject("sch_base_point").query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0);
jsonPoint2.put("point_status", "02");
jsonPoint2.put("point_status", "2");
jsonPoint2.put("vehicle_code", jsonTask.getString("vehicle_code"));
pointTab.update(jsonPoint2);
}

View File

@@ -0,0 +1,60 @@
[交易说明]
交易名: 出库任务
所属模块:
功能简述:
版权所有:
表引用:
版本经历:
[数据库]
--指定数据库为空采用默认值默认为db.properties中列出的第一个库
[IO定义]
#################################################
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
输入.handle_class TYPEAS s_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
[临时变量]
--所有中间过程变量均可在此处定义
[业务过程]
##########################################
# 1、输入输出检查 #
##########################################
##########################################
# 2、主过程前处理 #
##########################################
##########################################
# 3、业务主过程 #
##########################################
IF 输入.flag = "1"
QUERY
SELECT
max(task_group_id) AS task_group_id,
max(task_type) AS task_type
FROM
sch_base_task
WHERE
task_status = '04'
AND is_delete = '0'
OPTION 输入.handle_class <> ""
handle_class = 输入.handle_class
ENDOPTION
group by task_group_id
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -565,8 +565,8 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
transfer = false;
}
//创建任务
AbstractAcsTask task = new InTask();
//创建任务并下发
InTask task = new InTask();
JSONObject task_form = new JSONObject();
task_form.put("task_type", "010501");
task_form.put("start_device_code", map.get("point_code"));
@@ -574,21 +574,10 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
task_form.put("vehicle_code", map.get("box_no"));
task_form.put("storagevehicle_type", map.get("storagevehicle_type"));
String task_id = task.createTask(task_form);
if (whereJson.containsKey("auto_issue")) {
AbstractAcsTask intask = new InTask();
//调用ACS接受任务接口
JSONObject result = null;
if (ObjectUtil.isNotEmpty(result)) {
String status = result.getString("status");
if ("200".equals(status)) {
HashMap<String, String> mapnow = new HashMap<>();
mapnow.put("task_status", "02");
WQLObject.getWQLObject("SCH_BASE_Task").update(mapnow, "taskdtl_id = '" + task_id + "'");
} else {
throw new BadRequestException("任务下发失败:" + result.getString("message"));
}
}
}
// 下发
task.immediateNotifyAcs(task_id);
/* if (whereJson.containsKey("auto_issue")) {
}*/
dis_map.put("task_id", task_id);
dis_map.put("work_status", "01");
}

View File

@@ -0,0 +1,182 @@
[交易说明]
交易名: ACS请求WMS
所属模块:
功能简述:
版权所有:
表引用:
版本经历:
[数据库]
--指定数据库为空采用默认值默认为db.properties中列出的第一个库
[IO定义]
#################################################
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
输入.sale_order_name TYPEAS s_string
输入.point_code TYPEAS s_string
输入.row_num TYPEAS s_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
[临时变量]
--所有中间过程变量均可在此处定义
[业务过程]
##########################################
# 1、输入输出检查 #
##########################################
##########################################
# 2、主过程前处理 #
##########################################
##########################################
# 3、业务主过程 #
##########################################
IF 输入.flag = "1"
QUERY
SELECT
max(po.row_num) AS row_num
FROM
sch_base_point po
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.package_box_sn = po.vehicle_code
WHERE
po.point_type = '9'
AND sub.sale_order_name = 输入.sale_order_name
GROUP BY po.row_num
ORDER BY po.row_num ASC
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "2"
QUERY
SELECT
po.point_code
FROM
sch_base_point po
WHERE
IFNULL( po.vehicle_code, '' ) = ''
AND
po.point_type = '9'
OPTION 输入.row_num <> ""
po.row_num = 输入.row_num
ENDOPTION
AND NOT EXISTS (
SELECT
*
FROM
sch_base_task
WHERE
( point_code1 = po.point_code OR point_code2 = po.point_code )
AND task_status < '07'
AND is_delete = '0'
)
ORDER BY po.out_order_seq
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "3"
QUERY
SELECT
*
FROM
(
SELECT
po.row_num
FROM
sch_base_point po
WHERE
po.is_delete = '0'
AND is_used = '1'
AND po.point_type = '9'
GROUP BY
po.row_num
) a
WHERE
NOT EXISTS (
SELECT
*
FROM
(
SELECT
row_num
FROM
sch_base_point po2
WHERE
IFNULL( po2.vehicle_code, '' ) <> ''
AND po2.point_type = '9'
GROUP BY
po2.row_num
) b
WHERE
b.row_num = a.row_num
)
ORDER BY row_num ASC
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "4"
QUERY
SELECT
point2.*
FROM
sch_base_point point1
LEFT JOIN sch_base_point point2 ON point1.row_num = point2.row_num
WHERE
IFNULL( point2.vehicle_code, '' ) <> ''
AND point1.out_order_seq < point2.out_order_seq
AND point2.point_type = '9'
OPTION 输入.point_code <> ""
point1.point_code = 输入.point_code
ENDOPTION
UNION
SELECT
point2.*
FROM
sch_base_point point1
LEFT JOIN sch_base_point point2 ON point1.row_num = point2.row_num
WHERE
IFNULL( point2.vehicle_code, '' ) = ''
AND point1.out_order_seq < point2.out_order_seq
AND point2.point_type = '9'
OPTION 输入.point_code <> ""
point1.point_code = 输入.point_code
ENDOPTION
AND EXISTS (
SELECT
*
FROM
sch_base_task
WHERE
( point_code1 = point2.point_code OR point_code2 = point2.point_code )
AND task_status < '07'
AND is_delete = '0'
)
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -32,6 +32,8 @@
输入.sale_order_name TYPEAS s_string
输入.material_code TYPEAS s_string
输入.sect_id TYPEAS s_string
输入.point_code TYPEAS s_string
输入.row_num TYPEAS s_string
输入.sql_str TYPEAS f_string
输入.in_stor_id TYPEAS f_string
@@ -722,7 +724,7 @@
AND is_delete = '0'
)
ORDER BY po2.out_order_seq
LIMIT 1
ENDSELECT
ENDIF
@@ -762,6 +764,9 @@
WHERE
b.row_num = a.row_num
)
ORDER BY row_num ASC
ENDSELECT
ENDQUERY
ENDIF
@@ -812,7 +817,101 @@
ENDQUERY
ENDIF
IF 输入.flag = "23"
QUERY
SELECT
point2.*
FROM
sch_base_point point1
LEFT JOIN sch_base_point point2 ON point1.row_num = point2.row_num
WHERE
IFNULL( point2.vehicle_code, '' ) <> ''
AND point1.out_order_seq < point2.out_order_seq
AND point2.point_type = '9'
OPTION 输入.point_code <> ""
point1.point_code = 输入.point_code
ENDOPTION
UNION
SELECT
point2.*
FROM
sch_base_point point1
LEFT JOIN sch_base_point point2 ON point1.row_num = point2.row_num
WHERE
IFNULL( point2.vehicle_code, '' ) = ''
AND point1.out_order_seq < point2.out_order_seq
AND point2.point_type = '9'
OPTION 输入.point_code <> ""
point1.point_code = 输入.point_code
ENDOPTION
AND EXISTS (
SELECT
*
FROM
sch_base_task
WHERE
( point_code1 = point2.point_code OR point_code2 = point2.point_code )
AND task_status < '07'
AND is_delete = '0'
)
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "24"
SELECT
max(po.row_num) AS row_num
FROM
sch_base_point po
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.package_box_sn = po.vehicle_code
WHERE
po.point_type = '9'
OPTION 输入.sale_order_name <> ""
sub.sale_order_name = 输入.sale_order_name
ENDOPTION
GROUP BY po.row_num
ORDER BY po.row_num ASC
ENDSELECT
ENDIF
IF 输入.flag = "25"
SELECT
po.point_code
FROM
sch_base_point po
WHERE
IFNULL( po.vehicle_code, '' ) = ''
AND
po.point_type = '9'
OPTION 输入.row_num <> ""
po.row_num = 输入.row_num
ENDOPTION
AND NOT EXISTS (
SELECT
*
FROM
sch_base_task
WHERE
( point_code1 = po.point_code OR point_code2 = po.point_code )
AND task_status < '07'
AND is_delete = '0'
)
ORDER BY po.out_order_seq
ENDSELECT
ENDIF

View File

@@ -2499,7 +2499,6 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
jsonRow.put("point_id", jsonPoint2.getString("point_id"));
this.rowDispose(jsonRow);
}
outTask.immediateNotifyAcs(null);
}
@Transactional(rollbackFor = Exception.class)