add erp对接
This commit is contained in:
@@ -60,7 +60,7 @@
|
||||
mb.material_type = 输入.material_type
|
||||
ENDOPTION
|
||||
OPTION 输入.order_code <> ""
|
||||
mb.order_code LIKE '%' order_code '%'
|
||||
mb.order_code LIKE '%' 输入.order_code '%'
|
||||
ENDOPTION
|
||||
OPTION 输入.product_grade <> ""
|
||||
mb.product_grade LIKE '%' 输入.product_grade '%'
|
||||
|
||||
@@ -704,6 +704,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
String unqualified_qty = jsonObject.getString("unqualified_qty");
|
||||
if (StrUtil.isNotBlank(unqualified_qty) && !"0".equals(unqualified_qty)) {
|
||||
workorder.put("unqualified_qty", unqualified_qty);
|
||||
|
||||
JSONObject regionIn = TaskUtils.buildRegionInFromWorkorder(workorder, RegionInType.FPRK);
|
||||
WQLObject.getWQLObject("st_ivt_regionio").insert(regionIn);
|
||||
}
|
||||
String qualified_qty = jsonObject.getString("qualified_qty");
|
||||
if (StrUtil.isNotBlank(qualified_qty) && !"0".equals(qualified_qty)) {
|
||||
|
||||
@@ -110,4 +110,6 @@ public class WorkorderDto implements Serializable {
|
||||
private String ext_code;
|
||||
|
||||
private String region_code;
|
||||
|
||||
private String plan_date;
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.pdm.service.WorkordeService;
|
||||
import org.nl.wms.pdm.service.dto.WorkorderDto;
|
||||
import org.nl.wms.sch.manage.Region;
|
||||
import org.nl.wms.sch.manage.RegionInType;
|
||||
import org.nl.wms.sch.manage.WorkOrderEnum;
|
||||
import org.nl.wms.sch.task.util.TaskUtils;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
@@ -133,6 +134,7 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
work_order.put("is_pri", dto.getIs_pri());
|
||||
work_order.put("ext_code", dto.getExt_code());
|
||||
work_order.put("is_delete", TrueOrFalse.FALSE.value());
|
||||
work_order.put("plan_date", dto.getPlan_date());
|
||||
Long user_id = SecurityUtils.getCurrentUserId();
|
||||
String nick_name = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
@@ -209,6 +211,11 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
throw new BadRequestException("该设备已下发其它工单!");
|
||||
}
|
||||
|
||||
if (Region.HL.value().equals(submit_obj.getString("region_code"))) {
|
||||
String material_code = submit_obj.getString("material_code");
|
||||
submit_obj.put("material_code", material_code.substring(5, 11));
|
||||
}
|
||||
|
||||
JSONArray request = new JSONArray();
|
||||
request.add(submit_obj);
|
||||
Map<String, Object> result;
|
||||
@@ -431,6 +438,9 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
String unqualified_qty = row.getString("unqualified_qty");
|
||||
if (StrUtil.isNotBlank(unqualified_qty) && !"0".equals(unqualified_qty)) {
|
||||
workorder.put("unqualified_qty", unqualified_qty);
|
||||
|
||||
JSONObject regionIn = TaskUtils.buildRegionInFromWorkorder(workorder, RegionInType.FPRK);
|
||||
WQLObject.getWQLObject("st_ivt_regionio").insert(regionIn);
|
||||
}
|
||||
String qualified_qty = row.getString("qualified_qty");
|
||||
if (StrUtil.isNotBlank(qualified_qty) && !"0".equals(qualified_qty)) {
|
||||
|
||||
@@ -176,7 +176,8 @@
|
||||
material.a,
|
||||
material.b,
|
||||
material.h,
|
||||
material.w
|
||||
material.w,
|
||||
device.region_code
|
||||
FROM
|
||||
pdm_bd_workorder workorder
|
||||
LEFT JOIN md_me_materialbase material ON workorder.material_id = material.material_id
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package org.nl.wms.sch.manage;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 入库类型
|
||||
*
|
||||
* @author zhangjiangwei
|
||||
* @date 2023/05/19 09:53
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
public enum RegionInType {
|
||||
|
||||
WGRK("完工入库", "F"),
|
||||
BCPRK("半成品入库", "W"),
|
||||
FPRK("废品入库", "W");
|
||||
|
||||
private final String label;
|
||||
private final String value;
|
||||
|
||||
public String label() {
|
||||
return this.label;
|
||||
}
|
||||
|
||||
public String value() {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
public static RegionInType get(String value) {
|
||||
return Arrays.stream(RegionInType.values()).filter(r -> r.value.equals(value)).collect(Collectors.toList()).get(0);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package org.nl.wms.sch.manage;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author zhangjiangwei
|
||||
* @date 2023/05/20 14:06
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
public enum RegionOutType {
|
||||
|
||||
BCPCK("半成品出库", "W");
|
||||
|
||||
private final String label;
|
||||
private final String value;
|
||||
|
||||
public String label() {
|
||||
return this.label;
|
||||
}
|
||||
|
||||
public String value() {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
public static RegionOutType get(String value) {
|
||||
return Arrays.stream(RegionOutType.values()).filter(r -> r.value.equals(value)).collect(Collectors.toList()).get(0);
|
||||
}
|
||||
}
|
||||
@@ -93,6 +93,8 @@ public class FJCallMaterialTask extends AbstractAcsTask {
|
||||
task.put("task_status", TaskStatus.START_AND_END.value());
|
||||
task.put("point_code1", point.getString("point_code"));
|
||||
task.put("vehicle_code", TaskUtils.formatVehicleCode(point.getString("vehicle_code")));
|
||||
task.put("material_id", point.getString("material_id"));
|
||||
task.put("group_id", point.getString("vd_id"));
|
||||
task.put("remark", "");
|
||||
TaskUtils.addAutoUpdateColum(task);
|
||||
task_table.update(task);
|
||||
@@ -225,6 +227,9 @@ public class FJCallMaterialTask extends AbstractAcsTask {
|
||||
}
|
||||
point_table.update(point2, "point_code = '" + point_code2 + "'");
|
||||
}
|
||||
|
||||
JSONObject regionOut = TaskUtils.buildRegionOut(task, RegionOutType.BCPCK);
|
||||
WQLObject.getWQLObject("st_ivt_regionout").insert(regionOut);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,6 +91,7 @@ public class SZCallMaterialTask extends AbstractAcsTask {
|
||||
task.put("point_code1", point.getString("point_code"));
|
||||
task.put("material_id", point.getString("material_id"));
|
||||
task.put("vehicle_code", TaskUtils.formatVehicleCode(point.getString("vehicle_code")));
|
||||
task.put("group_id", point.getString("vd_id"));
|
||||
task.put("remark", "");
|
||||
TaskUtils.addAutoUpdateColum(task);
|
||||
task_table.update(task);
|
||||
|
||||
@@ -93,6 +93,7 @@ public class YZCallMaterialTask extends AbstractAcsTask {
|
||||
task.put("task_status", TaskStatus.START_AND_END.value());
|
||||
task.put("point_code1", point.getString("point_code"));
|
||||
task.put("vehicle_code", TaskUtils.formatVehicleCode(point.getString("vehicle_code")));
|
||||
task.put("group_id", point.getString("vd_id"));
|
||||
task.put("material_id", point.getString("material_id"));
|
||||
task.put("remark", "");
|
||||
TaskUtils.addAutoUpdateColum(task);
|
||||
|
||||
@@ -84,6 +84,7 @@
|
||||
QUERY
|
||||
SELECT
|
||||
point.*,
|
||||
vd.material_id,
|
||||
vd.vd_id
|
||||
FROM
|
||||
sch_base_point point
|
||||
@@ -109,7 +110,8 @@
|
||||
QUERY
|
||||
SELECT
|
||||
point.*,
|
||||
mb1.material_id
|
||||
mb1.material_id,
|
||||
vd.vd_id
|
||||
FROM
|
||||
sch_base_point point
|
||||
LEFT JOIN st_ivt_vehicle_detail vd ON point.vehicle_type = vd.vehicle_type
|
||||
|
||||
@@ -86,7 +86,7 @@ public class FJSendMaterialTask extends AbstractAcsTask {
|
||||
form.getString("create_id"),
|
||||
form.getString("create_name")
|
||||
);
|
||||
empty_task.put("task_group_id", material_task.getLongValue("task_id"));
|
||||
empty_task.put("table_fk_id", material_task.getLongValue("task_id"));
|
||||
WQLObject.getWQLObject("sch_base_task").insert(empty_task);
|
||||
}
|
||||
|
||||
@@ -309,6 +309,14 @@ public class FJSendMaterialTask extends AbstractAcsTask {
|
||||
}
|
||||
|
||||
// todo 如果是送料任务需要发送唛头信息到包装机
|
||||
|
||||
if (TaskType.SEND_MATERIAL.value().equals(task.getString("task_type"))) {
|
||||
JSONObject point2 = WQLObject.getWQLObject("sch_base_point").query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
||||
if (Region.FJ.value().equals(point2.getString("region_code")) && "5".equals(point2.getString("point_type"))) {
|
||||
JSONObject regionIn = TaskUtils.buildRegionInFromTask(task, RegionInType.WGRK);
|
||||
WQLObject.getWQLObject("st_ivt_regionio").insert(regionIn);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,14 +167,14 @@ public class SZSendMaterialTask extends AbstractAcsTask {
|
||||
}
|
||||
|
||||
|
||||
public void finishTask(JSONObject task, OperationType operation_type) {
|
||||
public void finishTask(JSONObject task, OperationType operation_type) {
|
||||
int current_task_status = task.getIntValue("task_status");
|
||||
if (current_task_status < Integer.parseInt(TaskStatus.FINISHED.value())) {
|
||||
if (operation_type == OperationType.MANUAL
|
||||
&& current_task_status < Integer.parseInt(TaskStatus.START_AND_END.value())) {
|
||||
&& current_task_status < Integer.parseInt(TaskStatus.START_AND_END.value())) {
|
||||
throw new BadRequestException("只能手动完成 [确认起点和终点] 之后的任务!");
|
||||
}
|
||||
|
||||
|
||||
task.put("task_status", TaskStatus.FINISHED.value());
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(task);
|
||||
@@ -218,8 +218,11 @@ public class SZSendMaterialTask extends AbstractAcsTask {
|
||||
} else if (operation_type == OperationType.MANUAL) {
|
||||
TaskUtils.addCurrentUpdateColum(point2);
|
||||
}
|
||||
point_table.update(point2, "point_code = '" + point_code2 +"'");
|
||||
point_table.update(point2, "point_code = '" + point_code2 + "'");
|
||||
}
|
||||
|
||||
JSONObject regionIn = TaskUtils.buildRegionInFromTask(task, RegionInType.BCPRK);
|
||||
WQLObject.getWQLObject("st_ivt_regionio").insert(regionIn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ public class BTHCToPackageTask extends AbstractAcsTask {
|
||||
TaskStatus.SURE_START.value(),
|
||||
point.getString("point_code"),
|
||||
null,
|
||||
pn.getLongValue("data_id"),
|
||||
vd.getLongValue("vd_id"),
|
||||
vd.getString("material_id"),
|
||||
vd.getString("vehicle_type"),
|
||||
vd.getString("vehicle_code"),
|
||||
@@ -60,6 +60,7 @@ public class BTHCToPackageTask extends AbstractAcsTask {
|
||||
form.getString("create_id"),
|
||||
form.getString("create_name")
|
||||
);
|
||||
task.put("table_fk_id", pn.getLong("data_id"));
|
||||
WQLObject.getWQLObject("sch_base_task").insert(task);
|
||||
|
||||
point.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
@@ -168,7 +169,7 @@ public class BTHCToPackageTask extends AbstractAcsTask {
|
||||
point_table.update(point2, "point_code = '" + point_code2 + "'");
|
||||
}
|
||||
|
||||
WQLObject.getWQLObject("das_produce_number").delete("data_id = " + task.getLongValue("group_id"));
|
||||
WQLObject.getWQLObject("das_produce_number").delete("data_id = " + task.getLongValue("table_fk_id"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,6 +224,9 @@ public class BTHCToPackageTask extends AbstractAcsTask {
|
||||
}
|
||||
point_table.update(point2, "point_code = '" + point_code2 + "'");
|
||||
}
|
||||
|
||||
JSONObject regionIn = TaskUtils.buildRegionInFromTask(task, RegionInType.WGRK);
|
||||
WQLObject.getWQLObject("st_ivt_regionio").insert(regionIn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ public class FJToPackageTask extends AbstractAcsTask {
|
||||
TaskStatus.SURE_START.value(),
|
||||
point.getString("point_code"),
|
||||
null,
|
||||
pn.getLongValue("data_id"),
|
||||
vd.getLongValue("vd_id"),
|
||||
vd.getString("material_id"),
|
||||
vd.getString("vehicle_type"),
|
||||
vd.getString("vehicle_code"),
|
||||
@@ -62,6 +62,7 @@ public class FJToPackageTask extends AbstractAcsTask {
|
||||
form.getString("create_id"),
|
||||
form.getString("create_name")
|
||||
);
|
||||
task.put("table_fk_id", pn.getLong("data_id"));
|
||||
WQLObject.getWQLObject("sch_base_task").insert(task);
|
||||
|
||||
point.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
@@ -170,7 +171,7 @@ public class FJToPackageTask extends AbstractAcsTask {
|
||||
point_table.update(point2, "point_code = '" + point_code2 + "'");
|
||||
}
|
||||
|
||||
WQLObject.getWQLObject("das_produce_number").delete("data_id = " + task.getLongValue("group_id"));
|
||||
WQLObject.getWQLObject("das_produce_number").delete("data_id = " + task.getLongValue("table_fk_id"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -225,6 +226,9 @@ public class FJToPackageTask extends AbstractAcsTask {
|
||||
}
|
||||
point_table.update(point2, "point_code = '" + point_code2 + "'");
|
||||
}
|
||||
|
||||
JSONObject regionIn = TaskUtils.buildRegionInFromTask(task, RegionInType.WGRK);
|
||||
WQLObject.getWQLObject("st_ivt_regionio").insert(regionIn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,12 +8,10 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.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.wms.common.PickType;
|
||||
import org.nl.wms.sch.manage.ACSSystem;
|
||||
import org.nl.wms.sch.manage.AutoCreate;
|
||||
import org.nl.wms.sch.manage.LockType;
|
||||
import org.nl.wms.sch.manage.PointStatus;
|
||||
import org.nl.wms.sch.manage.*;
|
||||
|
||||
/**
|
||||
* 辽宁晟华任务工具类
|
||||
@@ -170,4 +168,59 @@ public class TaskUtils {
|
||||
pn.put("create_time", DateUtil.now());
|
||||
return pn;
|
||||
}
|
||||
|
||||
public static JSONObject buildRegionInFromTask(JSONObject task, RegionInType regionInType) {
|
||||
JSONObject detail = WQL.getWO("TASK_UTILS").addParam("flag", "1").addParam("vd_id", task.getString("group_id")).process().uniqueResult(0);
|
||||
JSONObject regionIn = new JSONObject();
|
||||
regionIn.put("id", IdUtil.getSnowflake(1L, 1L).nextId());
|
||||
regionIn.put("cCode", CodeUtil.getNewCode("IN_STORE_CODE"));
|
||||
regionIn.put("dDate", DateUtil.today());
|
||||
regionIn.put("cVouchType", regionInType.label());
|
||||
String material_code = detail.getString("material_code");
|
||||
String cMocode = material_code.substring(11, 16);
|
||||
regionIn.put("cMocode", cMocode);
|
||||
regionIn.put("cInvCode", regionInType.value() + material_code);
|
||||
regionIn.put("iQuantity", String.format("%.3f", detail.getDoubleValue("vd_weight") / 1000));
|
||||
regionIn.put("iNum", detail.getString("qty"));
|
||||
regionIn.put("iinvexchrate", String.format("%.3f", detail.getDoubleValue("material_weight") / 1000));
|
||||
regionIn.put("cBatch", cMocode);
|
||||
return regionIn;
|
||||
}
|
||||
|
||||
public static JSONObject buildRegionInFromWorkorder(JSONObject workorder, RegionInType regionInType) {
|
||||
JSONObject detail = WQL.getWO("TASK_UTILS").addParam("flag", "2").addParam("workorder_id", workorder.getString("workorder_id")).process().uniqueResult(0);
|
||||
JSONObject regionIn = new JSONObject();
|
||||
regionIn.put("id", IdUtil.getSnowflake(1L, 1L).nextId());
|
||||
regionIn.put("cCode", CodeUtil.getNewCode("IN_STORE_CODE"));
|
||||
regionIn.put("dDate", DateUtil.today());
|
||||
regionIn.put("cVouchType", regionInType.label());
|
||||
String material_code = detail.getString("material_code");
|
||||
String cMocode = material_code.substring(11, 16);
|
||||
regionIn.put("cMocode", cMocode);
|
||||
regionIn.put("cInvCode", regionInType.value() + material_code);
|
||||
int qty = detail.getIntValue("qty");
|
||||
regionIn.put("iNum", qty);
|
||||
double material_weight = detail.getDoubleValue("material_weight") / 1000;
|
||||
regionIn.put("iinvexchrate", String.format("%.3f", material_weight));
|
||||
regionIn.put("iQuantity", String.format("%.3f", qty * material_weight / 1000));
|
||||
regionIn.put("cBatch", cMocode);
|
||||
return regionIn;
|
||||
}
|
||||
|
||||
public static JSONObject buildRegionOut(JSONObject task, RegionOutType regionOutType) {
|
||||
JSONObject detail = WQL.getWO("TASK_UTILS").addParam("flag", "1").addParam("vd_id", task.getString("group_id")).process().uniqueResult(0);
|
||||
JSONObject regionIn = new JSONObject();
|
||||
regionIn.put("id", IdUtil.getSnowflake(1L, 1L).nextId());
|
||||
regionIn.put("cCode", CodeUtil.getNewCode("IN_STORE_CODE"));
|
||||
regionIn.put("dDate", DateUtil.today());
|
||||
String material_code = detail.getString("material_code");
|
||||
String cMocode = material_code.substring(11, 16);
|
||||
regionIn.put("cMocode", cMocode);
|
||||
regionIn.put("cInvCode", regionOutType.value() + material_code);
|
||||
regionIn.put("iQuantity", String.format("%.3f", detail.getDoubleValue("vd_weight") / 1000));
|
||||
regionIn.put("iNum", detail.getString("qty"));
|
||||
regionIn.put("iinvexchrate", String.format("%.3f", detail.getDoubleValue("material_weight") / 1000));
|
||||
regionIn.put("cBatch", cMocode);
|
||||
return regionIn;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
[交易说明]
|
||||
交易名: 任务工具类
|
||||
所属模块:
|
||||
功能简述:
|
||||
版权所有:
|
||||
表引用:
|
||||
版本经历:
|
||||
|
||||
[数据库]
|
||||
--指定数据库,为空采用默认值,默认为db.properties中列出的第一个库
|
||||
|
||||
[IO定义]
|
||||
#################################################
|
||||
## 表字段对应输入参数
|
||||
#################################################
|
||||
输入.flag TYPEAS s_string
|
||||
输入.vd_id TYPEAS f_string
|
||||
输入.workorder_id TYPEAS f_string
|
||||
|
||||
[临时表]
|
||||
--这边列出来的临时表就会在运行期动态创建
|
||||
|
||||
[临时变量]
|
||||
--所有中间过程变量均可在此处定义
|
||||
|
||||
[业务过程]
|
||||
|
||||
##########################################
|
||||
# 1、输入输出检查 #
|
||||
##########################################
|
||||
|
||||
|
||||
##########################################
|
||||
# 2、主过程前处理 #
|
||||
##########################################
|
||||
|
||||
|
||||
##########################################
|
||||
# 3、业务主过程 #
|
||||
##########################################
|
||||
|
||||
IF 输入.flag = "1"
|
||||
QUERY
|
||||
SELECT
|
||||
vd.qty,
|
||||
vd.weight AS vd_weight,
|
||||
material.weight AS material_weight,
|
||||
material.material_code
|
||||
FROM
|
||||
st_ivt_vehicle_detail vd
|
||||
LEFT JOIN md_me_materialbase material ON vd.material_id = material.material_id
|
||||
WHERE
|
||||
vd.vd_id = 输入.vd_id
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "2"
|
||||
QUERY
|
||||
SELECT
|
||||
workorder.unqualified_qty AS qty,
|
||||
material.material_code AS material_code,
|
||||
material.weight AS material_weight
|
||||
FROM
|
||||
pdm_bd_workorder workorder
|
||||
LEFT JOIN md_me_materialbase material ON workorder.material_id = material.material_id
|
||||
WHERE
|
||||
workorder.vd_id = 输入.workorder_id
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
Binary file not shown.
Reference in New Issue
Block a user