fix: 修复与mes对接
This commit is contained in:
@@ -32,6 +32,12 @@
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
<version>4.5.13</version>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
|
||||
<dependency>
|
||||
<groupId>com.microsoft.sqlserver</groupId>
|
||||
|
||||
@@ -195,6 +195,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
* 10.一楼货梯送料
|
||||
* 11.新增包装输送线送料
|
||||
* 12.新增包装输送线送料入库
|
||||
* 13.成品入库
|
||||
*/
|
||||
if (StrUtil.equals(type, "1")) {
|
||||
// 1.共挤线申请空盘: 调用空托盘出库处理类创建任务
|
||||
@@ -242,6 +243,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
param.put("vehicle_type", vehicle_type);
|
||||
param.put("vehicle_code", vehicle_code);
|
||||
param.put("material_num", material_num);
|
||||
param.put("material_code", whereJson.getString("material_code"));
|
||||
param.put("task_code", whereJson.getString("task_code"));
|
||||
// 创建任务
|
||||
YqxCallMaterialTask taskBean = SpringContextHolder.getBean(YqxCallMaterialTask.class);
|
||||
@@ -320,6 +322,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
param.put("task_id", whereJson.getString("task_id"));
|
||||
BZXSendMaterialTask taskBean = SpringContextHolder.getBean(BZXSendMaterialTask .class);
|
||||
String task_id = taskBean.createTask(param);
|
||||
} else if (StrUtil.equals(type, "13")) {
|
||||
// 13.成品入库
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("point_code1", point_code);
|
||||
param.put("vehicle_code", vehicle_code);
|
||||
param.put("vehicle_type", vehicle_type);
|
||||
param.put("qty", material_num);
|
||||
param.put("material_code", whereJson.getString("material_code"));
|
||||
param.put("task_code", whereJson.getString("task_code"));
|
||||
CpSendMaterialTask taskBean = SpringContextHolder.getBean(CpSendMaterialTask.class);
|
||||
String task_id = taskBean.createTask(param);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -50,8 +50,8 @@ public class WmsToMesController {
|
||||
@Log("任务反馈")
|
||||
@ApiOperation("任务反馈")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> taskFeedback(JSONObject param) {
|
||||
wmsToMesService.taskFeedback(param);
|
||||
public ResponseEntity<Object> taskFeedback(JSONObject param, String finterfaceid) {
|
||||
wmsToMesService.taskFeedback(param, finterfaceid);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,5 +19,5 @@ public interface WmsToMesService {
|
||||
*/
|
||||
void getUnitInfoForMes();
|
||||
|
||||
void taskFeedback(JSONObject param);
|
||||
void taskFeedback(JSONObject param, String finterfaceid);
|
||||
}
|
||||
|
||||
@@ -7,16 +7,11 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.common.utils.SecurityUtils;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.basedata.service.MaterialbaseService;
|
||||
import org.nl.wms.basedata.service.dto.MaterialbaseDto;
|
||||
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||
import org.nl.wms.ext.mes.service.MesToWmsService;
|
||||
import org.nl.wms.pdm.service.DeviceService;
|
||||
import org.nl.wms.pdm.service.dto.DeviceDto;
|
||||
import org.nl.wms.sch.tasks.callEmpty.GjxCallEmpVehicleTask;
|
||||
import org.nl.wms.sch.tasks.cpOut.CpOutTask;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -194,7 +189,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
|
||||
@Override
|
||||
public JSONObject hawKeAutomaticForMes(JSONObject param) {
|
||||
log.info("mes成品入库参数:" + param);
|
||||
param.put("type", "8");
|
||||
param.put("type", "13");
|
||||
acsToWmsService.apply(param);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", 200);
|
||||
|
||||
@@ -5,6 +5,9 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.wms.ext.mes.service.WmsToMesService;
|
||||
import org.nl.wms.log.LokiLogType;
|
||||
import org.nl.wms.sch.MesUtil;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
@@ -16,7 +19,7 @@ import org.springframework.stereotype.Service;
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class WmsToMesServiceImpl implements WmsToMesService {
|
||||
final String http = "http://example.com/";
|
||||
final String http = "http://helptimely.com:7722/";
|
||||
@Override
|
||||
public void getMaterialInfoForMes() {
|
||||
String url = http + "api/material";
|
||||
@@ -32,12 +35,10 @@ public class WmsToMesServiceImpl implements WmsToMesService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void taskFeedback(JSONObject param) {
|
||||
String url = http + "api/task";
|
||||
try {
|
||||
// String result = HttpUtil.post(url, param);
|
||||
} catch (Exception e) {
|
||||
log.error("反馈MES异常");
|
||||
public void taskFeedback(JSONObject param, String finterfaceid) {
|
||||
JSONObject feedback = MesUtil.taskFeedback(param, finterfaceid);
|
||||
if (!feedback.getString("code").equals("200")) {
|
||||
//????
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -33,8 +33,8 @@ public class SSXSendMaterialController {
|
||||
@Log("查询物料")
|
||||
@ApiOperation("查询物料")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> queryMaterial() {
|
||||
return new ResponseEntity<>(sendMaterialService.queryMaterial(), HttpStatus.OK);
|
||||
public ResponseEntity<Object> queryMaterial(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(sendMaterialService.queryMaterial(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/queryVehicle")
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
* @Date: 2023/6/15
|
||||
*/
|
||||
public interface SSXSendMaterialService {
|
||||
JSONObject queryMaterial();
|
||||
JSONObject queryMaterial(JSONObject param);
|
||||
|
||||
JSONObject confirm(JSONObject whereJson);
|
||||
|
||||
|
||||
@@ -6,13 +6,18 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.config.MapOf;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.core.engine.object.WO;
|
||||
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||
import org.nl.wms.pda.ssxsendmaterial.service.SSXSendMaterialService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 输送线送料
|
||||
@@ -24,11 +29,12 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
public class SSXSendMaterialServiceImpl implements SSXSendMaterialService {
|
||||
private final AcsToWmsService acsToWmsService;
|
||||
@Override
|
||||
public JSONObject queryMaterial() {
|
||||
public JSONObject queryMaterial(JSONObject param) {
|
||||
JSONObject result = new JSONObject();
|
||||
JSONArray mdMeMaterialbase = WQLObject.getWQLObject("md_me_materialbase")
|
||||
.query("is_used = '1' and is_delete = '0'", "create_time desc")
|
||||
.getResultJSONArray(0);
|
||||
String materialCode = param.getString("material_code");
|
||||
WO ssxQuery = WQL.getWO("SSX_QUERY");
|
||||
JSONArray mdMeMaterialbase = ssxQuery.addParamMap(MapOf.of("flag", "1"
|
||||
, "material_code", materialCode)).process().getResultJSONArray(0);
|
||||
result.put("result", mdMeMaterialbase);
|
||||
result.put("code", "1");
|
||||
result.put("desc", "查询成功");
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
[交易说明]
|
||||
交易名: 输送线业务代码
|
||||
所属模块:
|
||||
功能简述:
|
||||
版权所有:
|
||||
表引用:
|
||||
版本经历:
|
||||
|
||||
[数据库]
|
||||
--指定数据库,为空采用默认值,默认为db.properties中列出的第一个库
|
||||
|
||||
[IO定义]
|
||||
#################################################
|
||||
## 表字段对应输入参数
|
||||
#################################################
|
||||
输入.flag TYPEAS s_string
|
||||
输入.material_code TYPEAS s_string
|
||||
|
||||
|
||||
[临时表]
|
||||
--这边列出来的临时表就会在运行期动态创建
|
||||
|
||||
[临时变量]
|
||||
--所有中间过程变量均可在此处定义
|
||||
|
||||
[业务过程]
|
||||
|
||||
##########################################
|
||||
# 1、输入输出检查 #
|
||||
##########################################
|
||||
|
||||
|
||||
##########################################
|
||||
# 2、主过程前处理 #
|
||||
##########################################
|
||||
|
||||
|
||||
##########################################
|
||||
# 3、业务主过程 #
|
||||
##########################################
|
||||
IF 输入.flag = "1"
|
||||
QUERY
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
md_me_materialbase
|
||||
WHERE
|
||||
is_used = '1'
|
||||
AND is_delete = '0'
|
||||
OPTION 输入.material_code <> ""
|
||||
material_code like "%" 输入.material_code "%"
|
||||
ENDOPTION
|
||||
ORDER BY
|
||||
create_time DESC
|
||||
LIMIT 50
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
148
lms/nladmin-system/src/main/java/org/nl/wms/sch/MesUtil.java
Normal file
148
lms/nladmin-system/src/main/java/org/nl/wms/sch/MesUtil.java
Normal file
@@ -0,0 +1,148 @@
|
||||
package org.nl.wms.sch;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.client.HttpClient;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.entity.StringEntity;
|
||||
import org.apache.http.impl.client.HttpClientBuilder;
|
||||
import org.dom4j.Document;
|
||||
import org.dom4j.Element;
|
||||
import org.dom4j.io.SAXReader;
|
||||
import org.slf4j.MDC;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.StringReader;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: MES连接工具
|
||||
* @Date: 2023/6/29
|
||||
*/
|
||||
@Slf4j
|
||||
public class MesUtil {
|
||||
public static JSONObject taskFeedback(JSONObject param, String finterfaceid) {
|
||||
MDC.put("log_file_type", "WMS任务完成反馈给MES");
|
||||
String endpointUrl = "http://helptimely.com:7722/Timely4100_15_yonyu/services/HtWebService"; // 替换为实际的 WebService 地址
|
||||
JSONObject result = new JSONObject();
|
||||
Map<String, String> stringMap = new HashMap<>();
|
||||
try {
|
||||
// 创建 HttpClient
|
||||
HttpClient httpClient = HttpClientBuilder.create().build();
|
||||
|
||||
// 创建请求
|
||||
HttpPost httpPost = new HttpPost(endpointUrl);
|
||||
httpPost.setHeader("Content-Type", "text/xml;charset=UTF-8");
|
||||
|
||||
// 构建请求报文
|
||||
JSONObject req = new JSONObject();
|
||||
req.put("finterfaceid", finterfaceid);
|
||||
JSONArray items = new JSONArray();
|
||||
JSONArray p = new JSONArray();
|
||||
p.add(param);
|
||||
JSONObject ir = new JSONObject();
|
||||
ir.put("details", p);
|
||||
items.add(ir);
|
||||
req.put("items", items);
|
||||
String requestXml = parseXmlStr(JSON.toJSONString(req));
|
||||
// 设置请求体
|
||||
StringEntity entity = new StringEntity(requestXml, "UTF-8");
|
||||
httpPost.setEntity(entity);
|
||||
|
||||
// 发送请求并获取响应
|
||||
HttpResponse response = httpClient.execute(httpPost);
|
||||
|
||||
// 读取响应
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
|
||||
String line;
|
||||
StringBuilder responseContent = new StringBuilder();
|
||||
while ((line = reader.readLine()) != null) {
|
||||
responseContent.append(line);
|
||||
}
|
||||
reader.close();
|
||||
|
||||
// 处理响应结果
|
||||
int statusCode = response.getStatusLine().getStatusCode();
|
||||
stringMap = parseXml2Map(String.valueOf(responseContent), new HashMap<>());
|
||||
log.info("Response Code: " + statusCode);
|
||||
log.info("Response Body: " + stringMap);
|
||||
if (statusCode == 200) {
|
||||
result.put("code", 200);
|
||||
result.put("message", "操作成功!");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
result.put("code", 400);
|
||||
result.put("message", stringMap.get("ErrorMessage"));
|
||||
}
|
||||
MDC.remove("log_file_type");
|
||||
return result;
|
||||
}
|
||||
/**
|
||||
* 获得要发送的webservice的xml形式的参数
|
||||
* @param method
|
||||
* @return
|
||||
*/
|
||||
private static String parseXmlStr(String method){
|
||||
StringBuffer sb = new StringBuffer();
|
||||
sb.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:io=\"http://io.platform.ht.com\">");
|
||||
sb.append("<soapenv:Header/>");
|
||||
sb.append("<soapenv:Body>");
|
||||
sb.append("<io:post>");
|
||||
sb.append("<io:token>AGV</io:token>");
|
||||
sb.append("<io:datas>");
|
||||
sb.append(method);
|
||||
sb.append("</io:datas>");
|
||||
sb.append("<io:doctype>json</io:doctype>");
|
||||
sb.append("</io:post>");
|
||||
sb.append("</soapenv:Body>");
|
||||
sb.append("</soapenv:Envelope>");
|
||||
log.info("parseXmlStr组织参数为-----------------"+sb);
|
||||
return sb.toString();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 将xml转换为Map。 支持xml标签多层嵌套,并以"."分隔多级标签(不包括根节点)。 不支持XML标签重复时的情况
|
||||
*
|
||||
* @param xml
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
private static Map<String, String> parseXml2Map(String xml, Map<String, String> map) {
|
||||
try {
|
||||
SAXReader reader = new SAXReader();
|
||||
Document doc = reader.read(new StringReader(xml));
|
||||
Element root = doc.getRootElement();
|
||||
String path = "";
|
||||
if (map.containsKey(root.getName().trim())) {
|
||||
path = map.get(root.getName().trim());
|
||||
map.remove(root.getName().trim());
|
||||
}
|
||||
for (Iterator i = root.elementIterator(); i.hasNext();) {
|
||||
Element element = (Element) i.next();
|
||||
if (element.isTextOnly()) {
|
||||
if (path.length() > 0) {
|
||||
map.put(path + element.getName().trim(), element.getTextTrim());
|
||||
} else {
|
||||
map.put(element.getName().trim(), element.getTextTrim());
|
||||
}
|
||||
} else {
|
||||
map.put(element.getName().trim(), path+ element.getName().trim() + ".");
|
||||
parseXml2Map(element.asXML(), map);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package org.nl.wms.sch;
|
||||
|
||||
import cn.hutool.http.webservice.SoapClient;
|
||||
import cn.hutool.json.JSON;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
|
||||
public class SOAPClientExample {
|
||||
public static void main(String[] args) {
|
||||
String wsdlUrl = "http://helptimely.com:7722/Timely4100_15_yonyu/services/HtWebService?wsdl"; // 替换为实际的 WSDL 地址
|
||||
|
||||
try {
|
||||
// 创建 SoapClient
|
||||
SoapClient soapClient = SoapClient.create(wsdlUrl)
|
||||
.setMethod("io:post", "http://io.platform.ht.com");
|
||||
|
||||
// 构建请求参数
|
||||
JSON requestData = JSONUtil.createObj()
|
||||
.set("finterfaceid", "WM_INV_MOVE_P011_AGV01")
|
||||
.set("items", JSONUtil.createArray()
|
||||
.add(JSONUtil.createObj()
|
||||
.set("head", JSONUtil.createObj())
|
||||
.set("details", JSONUtil.createArray()
|
||||
.add(JSONUtil.createObj()
|
||||
.set("flpn979", "SN2305120052")
|
||||
.set("flocationid979number", "2306-08-01")
|
||||
.set("fsn502", "SN2305120052")
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
// 设置请求参数
|
||||
soapClient.setParam("io:token", "AGV")
|
||||
.setParam("io:datas", requestData)
|
||||
.setParam("io:doctype", "json");
|
||||
|
||||
// 发送 SOAP 请求
|
||||
String response = soapClient.send(true);
|
||||
|
||||
// 处理响应结果
|
||||
System.out.println("Response Body: " + response);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,195 @@
|
||||
package org.nl.wms.sch;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 后端调用第三方webservice接口
|
||||
* @author zds 2018-12-27 16:33:50
|
||||
*
|
||||
*/
|
||||
@Slf4j
|
||||
public class WebServiceUtil {
|
||||
|
||||
/**
|
||||
*
|
||||
* @param url 第三方系统提供webservice的接口url
|
||||
* @param method 第三方系统提供webservice对应的方法名
|
||||
* @param form 第三方系统提供webservice对应的方法请求参数
|
||||
* @return 第三方系统返回的JSONObject调用结果
|
||||
* @throws Exception 工具类一般不处理具体异常,抛出由调用方处理,否则容易形成黑箱
|
||||
*/
|
||||
public static String process(String url, String method, Map<String,String> form) throws Exception{
|
||||
//构建返回值
|
||||
JSONObject result = new JSONObject();
|
||||
//第一步:创建服务地址
|
||||
URL netUrl = new URL(url);
|
||||
|
||||
//第二步:打开一个通向服务地址的连接
|
||||
HttpURLConnection connection = (HttpURLConnection) netUrl.openConnection();
|
||||
|
||||
//第三步:设置参数
|
||||
connection.setRequestMethod("POST");
|
||||
//设置超时时间
|
||||
connection.setConnectTimeout(50000);
|
||||
|
||||
|
||||
//3.2设置数据格式:content-type
|
||||
connection.setRequestProperty("content-type", "text/xml;charset=utf-8");
|
||||
|
||||
//3.3设置输入输出,因为默认新创建的connection没有读写权限,
|
||||
connection.setDoInput(true);
|
||||
|
||||
connection.setDoOutput(true);
|
||||
|
||||
|
||||
//第四步:组织SOAP数据,发送请求
|
||||
String soapXML = getXML(form,method);
|
||||
|
||||
//将信息以流的方式发送出去
|
||||
OutputStream os = connection.getOutputStream();
|
||||
|
||||
os.write(soapXML.getBytes());
|
||||
|
||||
//第五步:接收服务端响应,打印
|
||||
|
||||
int responseCode = connection.getResponseCode();
|
||||
String ret="默认值";
|
||||
|
||||
if(200 == responseCode){//表示服务端响应成功
|
||||
log.info("请求成功!");
|
||||
//获取当前连接请求返回的数据流
|
||||
InputStream is = connection.getInputStream();
|
||||
|
||||
InputStreamReader isr = new InputStreamReader(is,"utf-8");
|
||||
|
||||
BufferedReader br = new BufferedReader(isr);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
String temp = null;
|
||||
|
||||
while(null != (temp = br.readLine())){
|
||||
sb.append(temp);
|
||||
}
|
||||
|
||||
//打印结果
|
||||
|
||||
ret=sb.toString();
|
||||
if(ret.startsWith("<?"))
|
||||
ret = ret.replaceAll("\\<\\?.+\\?\\>", "<?xml version='1.0' encoding='UTF-8'?>");
|
||||
else
|
||||
ret = (new StringBuilder("<?xml version='1.0' encoding='UTF-8'?>")).append(ret).toString();
|
||||
|
||||
/* String now = xml2jsonString(ret);
|
||||
System.out.println("打印返回结果转成jsonString-------------");
|
||||
result =JSONObject.parseObject(now);*/
|
||||
is.close();
|
||||
isr.close();
|
||||
br.close();
|
||||
//关闭连接
|
||||
connection.disconnect();
|
||||
}
|
||||
os.close();
|
||||
log.info("返回参数ret为:"+ret);
|
||||
return ret;
|
||||
// return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得要发送的webservice的xml形式的参数
|
||||
* @param form 查询条件
|
||||
* @return
|
||||
*/
|
||||
private static String getXML(Map<String,String> form, String method){
|
||||
StringBuffer sb = new StringBuffer();
|
||||
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?> ");
|
||||
sb.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:sap-com:document:sap:soap:functions:mc-style\">");
|
||||
sb.append("<soapenv:Header/>");
|
||||
sb.append("<soapenv:Body>");
|
||||
sb.append("<urn:"+method+">");
|
||||
if(method.contains("ZSd0002SendMatMd"))
|
||||
sb.append("<In>");
|
||||
// 设置请求参数
|
||||
for(Iterator<String> it = form.keySet().iterator();it.hasNext();){
|
||||
String key = it.next();
|
||||
String value = form.get(key);
|
||||
sb.append(" <"+key+">"+value+"</"+key+">");
|
||||
}
|
||||
if(method.contains("ZSd0002SendMatMd"))
|
||||
sb.append("</In>");
|
||||
sb.append("</urn:"+method+">");
|
||||
sb.append("</soapenv:Body>");
|
||||
sb.append("</soapenv:Envelope>");
|
||||
log.info("getXML组织参数为-----------------"+sb.toString());
|
||||
return sb.toString();
|
||||
|
||||
}
|
||||
/*
|
||||
public static String xml2jsonString(String xml) throws Exception {
|
||||
JSONObject xmlJSONObj = XML.toJSONObject(xml);
|
||||
return xmlJSONObj.toString();
|
||||
}*/
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
/*String url = "http://192.168.0.82:8000/sap/bc/srt/rfc/sap/z_sd0002_send_mat_md/800/z_sd0002_send_mat_md/binding";
|
||||
String method = "ZSd0002SendMatMd";
|
||||
HashMap<String,String> form = new HashMap<String,String>();
|
||||
form.put("MatnrFr", "24018347S");
|
||||
form.put("MatnrTo", "24018347S");
|
||||
//非必填字段
|
||||
JSONObject ret = WebServiceUtil.process(url,method,form);
|
||||
System.out.println("getXML返回数据-----------------"+ret.toString());
|
||||
JSONObject Envelope = ret.optJSONObject("soap-env:Envelope");
|
||||
JSONObject Body = Envelope.optJSONObject("soap-env:Body");
|
||||
JSONObject ZfmGetSoResponse = Body.optJSONObject("n0:ZSd0002SendMatMdResponse");
|
||||
JSONObject TZtsalesorder = ZfmGetSoResponse.optJSONObject("TZtsalesorder");
|
||||
JSONArray item = TZtsalesorder.optJSONArray("item");
|
||||
System.out.println("例子:查询结果字段OResultmsg-----------------"+ZfmGetSoResponse.optString("OResultmsg"));
|
||||
System.out.println("例子:查询结果数组size-----------------"+item.size());*/
|
||||
/* String url = "http://192.168.0.82:8000/sap/bc/srt/rfc/sap/zfg_ecc_to_zhwl/800/zfg_ecc_to_zhwl/binding";
|
||||
String method="ZfmGetSo";
|
||||
HashMap<String,String> form = new HashMap<String,String>();
|
||||
form.put("IErdatFrm", "2019-05-01");
|
||||
form.put("IErdatTo", "2019-05-08");
|
||||
//非必填字段
|
||||
form.put("IVbeln", "");
|
||||
JSONObject ret = WebServiceUtil.process(url,method,form);
|
||||
System.out.println("getXML发送数据-----------------"+ret.toString());
|
||||
JSONObject Envelope = ret.optJSONObject("soap-env:Envelope");
|
||||
JSONObject Body = Envelope.optJSONObject("soap-env:Body");
|
||||
JSONObject ZfmGetSoResponse = Body.optJSONObject("n0:ZfmGetSoResponse");
|
||||
JSONObject TZtsalesorder = ZfmGetSoResponse.optJSONObject("TZtsalesorder");
|
||||
JSONArray item = TZtsalesorder.optJSONArray("item");
|
||||
System.out.println("例子:查询结果字段OResultmsg-----------------"+ZfmGetSoResponse.optString("OResultmsg"));
|
||||
System.out.println("例子:查询结果数组size-----------------"+item.size());*/
|
||||
/* String url = "http://192.168.0.82:8000/sap/bc/srt/rfc/sap/zfg_ecc_to_zhwl/800/zfg_ecc_to_zhwl/binding";
|
||||
String method = "ZfmGetDnZjwl";
|
||||
HashMap<String,String> form = new HashMap<String,String>();
|
||||
form.put("IErdatFrm", "2019-05-01");
|
||||
form.put("IErdatTo", "2019-05-08");
|
||||
//非必填字段
|
||||
form.put("IVbeln", "");
|
||||
//非必填字段
|
||||
JSONObject ret = WebServiceUtil.process(url,method,form);
|
||||
System.out.println("getXML发送数据-----------------"+ret.toString());
|
||||
JSONObject Envelope = ret.optJSONObject("soap-env:Envelope");
|
||||
JSONObject Body = Envelope.optJSONObject("soap-env:Body");
|
||||
JSONObject ZfmGetDnZjwlResponse = Body.optJSONObject("n0:ZfmGetDnZjwlResponse");
|
||||
JSONObject TZtdn = ZfmGetDnZjwlResponse.optJSONObject("TZtdn");
|
||||
JSONArray item = TZtdn.optJSONArray("item");
|
||||
System.out.println("例子:查询结果字段OResultmsg-----------------"+ZfmGetDnZjwlResponse.optString("OResultmsg"));
|
||||
System.out.println("例子:查询结果数组size-----------------"+item.size());*/
|
||||
}
|
||||
}
|
||||
@@ -99,7 +99,7 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
feedback.put("flocationid979number", taskObj.getString("point_code1"));
|
||||
feedback.put("flpn979", taskObj.getString("vehicle_code"));
|
||||
feedback.put("fstoragequantity979", taskObj.getString("material_qty"));
|
||||
wmsToMesService.taskFeedback(feedback);
|
||||
wmsToMesService.taskFeedback(feedback, "WM_INV_MOVE_P011_AGV02");
|
||||
|
||||
//区域出入表【st_ivt_regionIO】
|
||||
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
|
||||
@@ -246,23 +246,36 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
|
||||
@Override
|
||||
public String createTask(JSONObject whereJson) {
|
||||
//生产工单表【PDM_BD_WorkOrder】
|
||||
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
|
||||
WQLObject materialTab = WQLObject.getWQLObject("md_me_materialbase");
|
||||
//任务表【SCH_BASE_Task】
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
//点位基础表【SCH_BASE_Point】
|
||||
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point");
|
||||
String point_code2 = whereJson.getString("point_code2");
|
||||
String material_code = whereJson.getString("material_code");
|
||||
// mes点位不同,要重新寻找
|
||||
JSONObject djwPoint = pointTab.query("mes_device_code = '" + point_code2 + "' AND is_used = '1'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(djwPoint)) {
|
||||
point_code2 = djwPoint.getString("point_code");
|
||||
}
|
||||
String task_code = CodeUtil.getNewCode("TASK_CODE");
|
||||
if (ObjectUtil.isNotEmpty(whereJson.getString("task_code"))) {
|
||||
task_code = whereJson.getString("task_code");
|
||||
}
|
||||
//生产工单表【PDM_BD_WorkOrder】
|
||||
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
|
||||
//任务表【SCH_BASE_Task】
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
//判断当前点是否有未完成的任务
|
||||
JSONObject taskObj = taskTab.query("is_delete='0' and point_code2 = '" + point_code2 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + point_code2 + "存在未完成的任务");
|
||||
//点位基础表【SCH_BASE_Point】
|
||||
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point");
|
||||
String device_code = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0).getString("device_code");
|
||||
JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除");
|
||||
JSONObject object = materialTab.query("material_code = '" + material_code + "'").uniqueResult(0);
|
||||
String material_id = workOrderObj.getString("material_id");
|
||||
if (ObjectUtil.isNotEmpty(object)) {
|
||||
material_id = object.getString("material_id");
|
||||
}
|
||||
|
||||
|
||||
SchTaskDto dto = SchTaskDto.builder()
|
||||
.task_id(IdUtil.getLongId())
|
||||
@@ -274,7 +287,7 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
.task_status(TaskStatusEnum.SURE_END.getCode())
|
||||
.point_code2(point_code2)
|
||||
.material_info_id(workOrderObj.getLong("workorder_id"))
|
||||
.material_id(workOrderObj.getLong("material_id"))
|
||||
.material_id(Long.valueOf(material_id))
|
||||
.vehicle_type(workOrderObj.getString("vehicle_type"))
|
||||
.handle_class(THIS_CLASS)
|
||||
.create_time(DateUtil.now())
|
||||
|
||||
@@ -49,7 +49,6 @@ public class CpOutTask extends AbstractAcsTask {
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
JSONObject requestParam = JSONObject.parseObject(taskObj.getString("request_param"));
|
||||
JSONObject feedback = new JSONObject();
|
||||
feedback.put("task_code", taskObj.getString("task_code"));
|
||||
//任务取消
|
||||
if (StrUtil.equals(status, "0")) {
|
||||
// 取消删除任务
|
||||
@@ -90,10 +89,11 @@ public class CpOutTask extends AbstractAcsTask {
|
||||
taskTab.update(taskObj);
|
||||
|
||||
// 通知mes
|
||||
feedback.put("fserialid054", taskObj.getString("task_code"));
|
||||
feedback.put("flpn081", taskObj.getString("vehicle_code"));
|
||||
feedback.put("fsonumber186", taskObj.getString("point_code2"));
|
||||
feedback.put("flocationid081number", requestParam.getString("out_store_order"));
|
||||
wmsToMesService.taskFeedback(feedback);
|
||||
feedback.put("fserialid054", taskObj.getString("task_code"));
|
||||
wmsToMesService.taskFeedback(feedback, "WM_OUT_020_P511_AGV01");
|
||||
|
||||
// 任务表的点位1:成品库区点
|
||||
String point_code1 = taskObj.getString("point_code1"); // 起点编码
|
||||
|
||||
@@ -0,0 +1,271 @@
|
||||
package org.nl.wms.sch.tasks.sendMaterial;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
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.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.ext.mes.service.WmsToMesService;
|
||||
import org.nl.wms.sch.SchTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.tasks.AcsTaskDto;
|
||||
import org.nl.wms.util.IdUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 成品入库送料任务服务
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class CpSendMaterialTask extends AbstractAcsTask {
|
||||
|
||||
private final String THIS_CLASS = CpSendMaterialTask.class.getName();
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(JSONObject task, String status) {
|
||||
WmsToMesService wmsToMesService = SpringContextHolder.getBean(WmsToMesService.class);
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
|
||||
String task_id = task.getString("task_id");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
JSONObject feedback = new JSONObject();
|
||||
feedback.put("task_code", taskObj.getString("task_code"));
|
||||
//任务取消
|
||||
if (StrUtil.equals(status, "0")) {
|
||||
// 取消删除任务
|
||||
if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
|
||||
throw new BadRequestException("已完成不能取消!");
|
||||
}
|
||||
String point_code2 = taskObj.getString("point_code2");
|
||||
if (ObjectUtil.isEmpty(point_code2)) {
|
||||
JSONObject endPoint = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
||||
endPoint.put("lock_type", "1");
|
||||
pointTab.update(endPoint);
|
||||
}
|
||||
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskObj.put("remark", "已取消");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
}
|
||||
|
||||
if ("1".equals(status)) {
|
||||
// 更新任务状态为执行中
|
||||
taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("car_no", taskObj.getString("car_no"));
|
||||
taskTab.update(taskObj);
|
||||
}
|
||||
|
||||
if (StrUtil.equals(status, "2")) {
|
||||
// 更改任务状态为完成
|
||||
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
|
||||
// 通知mes
|
||||
feedback.put("fpacknumberpl695", taskObj.getString("task_code"));
|
||||
feedback.put("flpn979", taskObj.getString("vehicle_code"));
|
||||
feedback.put("flocationid979number", taskObj.getString("point_code2"));
|
||||
wmsToMesService.taskFeedback(feedback, "WM_INV_MOVE_P011_AGV01");
|
||||
|
||||
String point_code2 = taskObj.getString("point_code2");
|
||||
JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
||||
JSONObject requestObj = JSONObject.parseObject(taskObj.getString("request_param"));
|
||||
//工单标识
|
||||
String workorder_id = requestObj.getString("material_info_id");
|
||||
//生产工单表【PDM_BD_WorkOrder】
|
||||
|
||||
//区域出入表【st_ivt_regionIO】
|
||||
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
|
||||
JSONObject regionIoObj = new JSONObject();
|
||||
regionIoObj.put("iostorinv_id", IdUtil.getLongId());
|
||||
regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE"));
|
||||
regionIoObj.put("buss_date", DateUtil.today());
|
||||
regionIoObj.put("io_type", "1");
|
||||
regionIoObj.put("region_id", point2Obj.getString("region_id"));
|
||||
regionIoObj.put("region_code", point2Obj.getString("region_code"));
|
||||
regionIoObj.put("region_name", point2Obj.getString("region_name"));
|
||||
regionIoObj.put("material_id", taskObj.getString("material_id"));
|
||||
regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code"));
|
||||
regionIoObj.put("qty", requestObj.getString("qty"));
|
||||
regionIoObj.put("bill_status", "3");
|
||||
regionIoObj.put("start_point_code", taskObj.getString("point_code1"));
|
||||
regionIoObj.put("end_point_code", taskObj.getString("point_code3"));
|
||||
regionIoObj.put("create_mode", "2");
|
||||
regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd"));
|
||||
regionIoObj.put("create_id", SecurityUtils.getCurrentUserId());
|
||||
regionIoObj.put("create_name", SecurityUtils.getCurrentNickName());
|
||||
regionIoObj.put("create_time", DateUtil.now());
|
||||
regionIoTab.insert(regionIoObj);
|
||||
|
||||
//完成后入库
|
||||
point2Obj.put("instorage_time", DateUtil.now());
|
||||
point2Obj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd"));
|
||||
point2Obj.put("ivt_qty", requestObj.getString("qty"));
|
||||
point2Obj.put("material_id", taskObj.getString("material_id"));
|
||||
point2Obj.put("vehicle_code", taskObj.getString("vehicle_code"));
|
||||
point2Obj.put("vehicle_type", taskObj.getString("vehicle_type"));
|
||||
|
||||
// 终点解锁
|
||||
point2Obj.put("lock_type", "1");
|
||||
point2Obj.put("point_status", "3");
|
||||
point2Obj.put("update_time", DateUtil.now());
|
||||
// 载具类型
|
||||
point2Obj.put("vehicle_type", taskObj.getString("vehicle_type"));
|
||||
pointTab.update(point2Obj);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findNextPoint() {
|
||||
/*
|
||||
* 根据业务找对应的终点
|
||||
*/
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' and task_status = '2'").getResultJSONArray(0);
|
||||
for (int i = 0; i < taskArr.size(); i++) {
|
||||
JSONObject taskObj = taskArr.getJSONObject(i);
|
||||
String vehicle_type = taskObj.getString("vehicle_type");
|
||||
JSONObject param1 = new JSONObject();
|
||||
param1.put("flag", "1");
|
||||
param1.put("region_code", "CPQYA01");
|
||||
param1.put("vehicle_type", "%" + vehicle_type + "%");
|
||||
//1、查找库区类是否有响应的载具类型和对应的物料
|
||||
JSONObject endPoint = WQL.getWO("QSCH_hkxSendMaterial_01").addParamMap(param1).process().uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(endPoint)) {
|
||||
taskObj.put("remark", "成品区无可用货位!");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
} else {
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("remark", "");
|
||||
taskObj.put("point_code2", endPoint.getString("point_code"));
|
||||
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
taskTab.update(taskObj);
|
||||
|
||||
//锁住终点
|
||||
endPoint.put("task_id", taskObj.getString("task_id"));
|
||||
endPoint.put("lock_type", "2");
|
||||
pointTab.update(endPoint);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AcsTaskDto> addTask() {
|
||||
/*
|
||||
* 下发给ACS时需要特殊处理
|
||||
*/
|
||||
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);
|
||||
|
||||
ArrayList<AcsTaskDto> acsTaskArr = new ArrayList<>();
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JSONObject json = arr.getJSONObject(i);
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
.task_id(json.getString("task_id"))
|
||||
.task_code(json.getString("task_code"))
|
||||
.task_type(json.getString("acs_task_type"))
|
||||
.start_device_code(json.getString("point_code1"))
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
.vehicle_code(json.getString("vehicle_code"))
|
||||
.vehicle_type(json.getString("vehicle_type"))
|
||||
.priority(json.getString("priority"))
|
||||
.remark(json.getString("remark"))
|
||||
.build();
|
||||
acsTaskArr.add(dto);
|
||||
}
|
||||
return acsTaskArr;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createTask(JSONObject whereJson) {
|
||||
//任务表【SCH_BASE_Task】
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject materialTab = WQLObject.getWQLObject("md_me_materialbase");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point");
|
||||
String point_code1 = whereJson.getString("point_code1");
|
||||
String vehicle_type = whereJson.getString("vehicle_type");
|
||||
String vehicle_code = whereJson.getString("vehicle_code");
|
||||
String material_code = whereJson.getString("material_code");
|
||||
String qty = whereJson.getString("qty");
|
||||
String task_code = CodeUtil.getNewCode("TASK_CODE");
|
||||
if (ObjectUtil.isNotEmpty(whereJson.getString("task_code"))) {
|
||||
task_code = whereJson.getString("task_code");
|
||||
}
|
||||
// mes点位不同,要重新寻找
|
||||
JSONObject djwPoint = pointTab.query("mes_device_code = '" + point_code1 + "' AND is_used = '1'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(djwPoint)) {
|
||||
point_code1 = djwPoint.getString("point_code");
|
||||
}
|
||||
//判断当前点是否有未完成的任务
|
||||
JSONObject taskObj = taskTab.query("is_delete='0' and point_code1 = '" + point_code1 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + point_code1 + "存在未完成的任务");
|
||||
|
||||
JSONObject materialObj = materialTab.query("material_code = '" + material_code + "' AND is_used = '1'").uniqueResult(0);
|
||||
|
||||
SchTaskDto dto = SchTaskDto.builder()
|
||||
.task_id(IdUtil.getLongId())
|
||||
.task_code(task_code)
|
||||
.task_type("task_type")
|
||||
.task_name("豪凯线满料")
|
||||
.material_qty(qty)
|
||||
.task_status(TaskStatusEnum.SURE_START.getCode())
|
||||
.point_code1(point_code1)
|
||||
.vehicle_code(vehicle_code)
|
||||
.material_id(materialObj.getLong("material_id"))
|
||||
.vehicle_type(vehicle_type)
|
||||
.handle_class(THIS_CLASS)
|
||||
.create_time(DateUtil.now())
|
||||
.request_param(whereJson.toJSONString())
|
||||
.build();
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
taskTab.insert(json);
|
||||
|
||||
//创建好立即下发
|
||||
this.immediateNotifyAcs();
|
||||
return String.valueOf(dto.getTask_id());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_id) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj))
|
||||
this.updateTaskStatus(taskObj, "2");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void cancel(String task_id) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj))
|
||||
this.updateTaskStatus(taskObj,"0");
|
||||
else {
|
||||
throw new BadRequestException("未找到该任务或者任务已完成!");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -130,7 +130,7 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
||||
feedback.put("fsn502", taskObj.getString("task_code"));
|
||||
feedback.put("flpn979", taskObj.getString("vehicle_code"));
|
||||
feedback.put("flocationid979number", taskObj.getString("point_code2"));
|
||||
wmsToMesService.taskFeedback(feedback);
|
||||
wmsToMesService.taskFeedback(feedback, "WM_INV_MOVE_P011_AGV01");
|
||||
|
||||
//区域出入表【st_ivt_regionIO】
|
||||
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
|
||||
@@ -324,13 +324,6 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
||||
|
||||
@Override
|
||||
public String createTask(JSONObject whereJson) {
|
||||
String point_code1 = whereJson.getString("point_code1");
|
||||
String vehicle_code = whereJson.getString("vehicle_code");
|
||||
String qty = whereJson.getString("qty");
|
||||
String task_code = CodeUtil.getNewCode("TASK_CODE");
|
||||
if (ObjectUtil.isNotEmpty(whereJson.getString("task_code"))) {
|
||||
task_code = whereJson.getString("task_code");
|
||||
}
|
||||
//生产工单表【PDM_BD_WorkOrder】
|
||||
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
|
||||
//点位基础表【SCH_BASE_Point】
|
||||
@@ -338,6 +331,19 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
||||
|
||||
//任务表【SCH_BASE_Task】
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
String point_code1 = whereJson.getString("point_code1");
|
||||
// mes点位不同,要重新寻找
|
||||
JSONObject djwPoint = pointTab.query("mes_device_code = '" + point_code1 + "' AND is_used = '1'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(djwPoint)) {
|
||||
point_code1 = djwPoint.getString("point_code");
|
||||
}
|
||||
String vehicle_code = whereJson.getString("vehicle_code");
|
||||
String qty = whereJson.getString("qty");
|
||||
String task_code = CodeUtil.getNewCode("TASK_CODE");
|
||||
if (ObjectUtil.isNotEmpty(whereJson.getString("task_code"))) {
|
||||
task_code = whereJson.getString("task_code");
|
||||
}
|
||||
|
||||
//判断当前点是否有未完成的任务
|
||||
JSONObject taskObj = taskTab.query("is_delete='0' and point_code1 = '" + point_code1 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + point_code1 + "存在未完成的任务");
|
||||
|
||||
@@ -85,7 +85,7 @@ public class HkxSendMaterialTask extends AbstractAcsTask {
|
||||
feedback.put("fpacknumberpl695", taskObj.getString("task_code"));
|
||||
feedback.put("flpn979", taskObj.getString("vehicle_code"));
|
||||
feedback.put("flocationid979number", taskObj.getString("point_code2"));
|
||||
wmsToMesService.taskFeedback(feedback);
|
||||
wmsToMesService.taskFeedback(feedback, "WM_INV_MOVE_P011_AGV01");
|
||||
|
||||
String point_code2 = taskObj.getString("point_code2");
|
||||
JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column prop="device_code" label="设备编码" />
|
||||
<el-table-column prop="device_name" label="设备名称" min-width="200" show-overflow-tooltip />
|
||||
<el-table-column prop="device_model" label="设备型号" min-width="200" show-overflow-tooltip />
|
||||
<el-table-column prop="extend_code" label="MES设备编码" min-width="200" show-overflow-tooltip />
|
||||
<el-table-column prop="productivity" label="设备产能" />
|
||||
<el-table-column label="是否启用" align="center" prop="is_used">
|
||||
<template slot-scope="scope">
|
||||
|
||||
Reference in New Issue
Block a user