fix: 修复与mes对接

This commit is contained in:
2023-06-30 17:45:20 +08:00
parent f50ab33253
commit a3191d28a0
19 changed files with 803 additions and 44 deletions

View File

@@ -32,6 +32,12 @@
</properties> </properties>
<dependencies> <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 --> <!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependency> <dependency>
<groupId>com.microsoft.sqlserver</groupId> <groupId>com.microsoft.sqlserver</groupId>

View File

@@ -195,6 +195,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
* 10.一楼货梯送料 * 10.一楼货梯送料
* 11.新增包装输送线送料 * 11.新增包装输送线送料
* 12.新增包装输送线送料入库 * 12.新增包装输送线送料入库
* 13.成品入库
*/ */
if (StrUtil.equals(type, "1")) { if (StrUtil.equals(type, "1")) {
// 1.共挤线申请空盘: 调用空托盘出库处理类创建任务 // 1.共挤线申请空盘: 调用空托盘出库处理类创建任务
@@ -242,6 +243,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
param.put("vehicle_type", vehicle_type); param.put("vehicle_type", vehicle_type);
param.put("vehicle_code", vehicle_code); param.put("vehicle_code", vehicle_code);
param.put("material_num", material_num); param.put("material_num", material_num);
param.put("material_code", whereJson.getString("material_code"));
param.put("task_code", whereJson.getString("task_code")); param.put("task_code", whereJson.getString("task_code"));
// 创建任务 // 创建任务
YqxCallMaterialTask taskBean = SpringContextHolder.getBean(YqxCallMaterialTask.class); YqxCallMaterialTask taskBean = SpringContextHolder.getBean(YqxCallMaterialTask.class);
@@ -320,6 +322,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
param.put("task_id", whereJson.getString("task_id")); param.put("task_id", whereJson.getString("task_id"));
BZXSendMaterialTask taskBean = SpringContextHolder.getBean(BZXSendMaterialTask .class); BZXSendMaterialTask taskBean = SpringContextHolder.getBean(BZXSendMaterialTask .class);
String task_id = taskBean.createTask(param); 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; return null;
} }

View File

@@ -50,8 +50,8 @@ public class WmsToMesController {
@Log("任务反馈") @Log("任务反馈")
@ApiOperation("任务反馈") @ApiOperation("任务反馈")
@SaIgnore @SaIgnore
public ResponseEntity<Object> taskFeedback(JSONObject param) { public ResponseEntity<Object> taskFeedback(JSONObject param, String finterfaceid) {
wmsToMesService.taskFeedback(param); wmsToMesService.taskFeedback(param, finterfaceid);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.NO_CONTENT);
} }
} }

View File

@@ -19,5 +19,5 @@ public interface WmsToMesService {
*/ */
void getUnitInfoForMes(); void getUnitInfoForMes();
void taskFeedback(JSONObject param); void taskFeedback(JSONObject param, String finterfaceid);
} }

View File

@@ -7,16 +7,11 @@ import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.modules.common.exception.BadRequestException; 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.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder; import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.basedata.service.MaterialbaseService; 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.acs.service.AcsToWmsService;
import org.nl.wms.ext.mes.service.MesToWmsService; 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.nl.wms.sch.tasks.cpOut.CpOutTask;
import org.slf4j.MDC; import org.slf4j.MDC;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -194,7 +189,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
@Override @Override
public JSONObject hawKeAutomaticForMes(JSONObject param) { public JSONObject hawKeAutomaticForMes(JSONObject param) {
log.info("mes成品入库参数" + param); log.info("mes成品入库参数" + param);
param.put("type", "8"); param.put("type", "13");
acsToWmsService.apply(param); acsToWmsService.apply(param);
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
result.put("status", 200); result.put("status", 200);

View File

@@ -5,6 +5,9 @@ import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.wms.ext.mes.service.WmsToMesService; 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; import org.springframework.stereotype.Service;
/** /**
@@ -16,7 +19,7 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j @Slf4j
public class WmsToMesServiceImpl implements WmsToMesService { public class WmsToMesServiceImpl implements WmsToMesService {
final String http = "http://example.com/"; final String http = "http://helptimely.com:7722/";
@Override @Override
public void getMaterialInfoForMes() { public void getMaterialInfoForMes() {
String url = http + "api/material"; String url = http + "api/material";
@@ -32,12 +35,10 @@ public class WmsToMesServiceImpl implements WmsToMesService {
} }
@Override @Override
public void taskFeedback(JSONObject param) { public void taskFeedback(JSONObject param, String finterfaceid) {
String url = http + "api/task"; JSONObject feedback = MesUtil.taskFeedback(param, finterfaceid);
try { if (!feedback.getString("code").equals("200")) {
// String result = HttpUtil.post(url, param); //????
} catch (Exception e) {
log.error("反馈MES异常");
} }
} }

View File

@@ -33,8 +33,8 @@ public class SSXSendMaterialController {
@Log("查询物料") @Log("查询物料")
@ApiOperation("查询物料") @ApiOperation("查询物料")
@SaIgnore @SaIgnore
public ResponseEntity<Object> queryMaterial() { public ResponseEntity<Object> queryMaterial(@RequestBody JSONObject param) {
return new ResponseEntity<>(sendMaterialService.queryMaterial(), HttpStatus.OK); return new ResponseEntity<>(sendMaterialService.queryMaterial(param), HttpStatus.OK);
} }
@PostMapping("/queryVehicle") @PostMapping("/queryVehicle")

View File

@@ -8,7 +8,7 @@ import com.alibaba.fastjson.JSONObject;
* @Date: 2023/6/15 * @Date: 2023/6/15
*/ */
public interface SSXSendMaterialService { public interface SSXSendMaterialService {
JSONObject queryMaterial(); JSONObject queryMaterial(JSONObject param);
JSONObject confirm(JSONObject whereJson); JSONObject confirm(JSONObject whereJson);

View File

@@ -6,13 +6,18 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.config.MapOf;
import org.nl.modules.common.exception.BadRequestException; 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.bean.WQLObject;
import org.nl.modules.wql.core.engine.object.WO;
import org.nl.wms.ext.acs.service.AcsToWmsService; import org.nl.wms.ext.acs.service.AcsToWmsService;
import org.nl.wms.pda.ssxsendmaterial.service.SSXSendMaterialService; import org.nl.wms.pda.ssxsendmaterial.service.SSXSendMaterialService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
/** /**
* @Author: lyd * @Author: lyd
* @Description: 输送线送料 * @Description: 输送线送料
@@ -24,11 +29,12 @@ import org.springframework.transaction.annotation.Transactional;
public class SSXSendMaterialServiceImpl implements SSXSendMaterialService { public class SSXSendMaterialServiceImpl implements SSXSendMaterialService {
private final AcsToWmsService acsToWmsService; private final AcsToWmsService acsToWmsService;
@Override @Override
public JSONObject queryMaterial() { public JSONObject queryMaterial(JSONObject param) {
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
JSONArray mdMeMaterialbase = WQLObject.getWQLObject("md_me_materialbase") String materialCode = param.getString("material_code");
.query("is_used = '1' and is_delete = '0'", "create_time desc") WO ssxQuery = WQL.getWO("SSX_QUERY");
.getResultJSONArray(0); JSONArray mdMeMaterialbase = ssxQuery.addParamMap(MapOf.of("flag", "1"
, "material_code", materialCode)).process().getResultJSONArray(0);
result.put("result", mdMeMaterialbase); result.put("result", mdMeMaterialbase);
result.put("code", "1"); result.put("code", "1");
result.put("desc", "查询成功"); result.put("desc", "查询成功");

View File

@@ -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

View 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;
}
}

View File

@@ -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();
}
}
}

View File

@@ -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());*/
}
}

View File

@@ -99,7 +99,7 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
feedback.put("flocationid979number", taskObj.getString("point_code1")); feedback.put("flocationid979number", taskObj.getString("point_code1"));
feedback.put("flpn979", taskObj.getString("vehicle_code")); feedback.put("flpn979", taskObj.getString("vehicle_code"));
feedback.put("fstoragequantity979", taskObj.getString("material_qty")); feedback.put("fstoragequantity979", taskObj.getString("material_qty"));
wmsToMesService.taskFeedback(feedback); wmsToMesService.taskFeedback(feedback, "WM_INV_MOVE_P011_AGV02");
//区域出入表【st_ivt_regionIO】 //区域出入表【st_ivt_regionIO】
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO"); WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
@@ -246,23 +246,36 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
@Override @Override
public String createTask(JSONObject whereJson) { 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 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"); String task_code = CodeUtil.getNewCode("TASK_CODE");
if (ObjectUtil.isNotEmpty(whereJson.getString("task_code"))) { if (ObjectUtil.isNotEmpty(whereJson.getString("task_code"))) {
task_code = 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); 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 + "存在未完成的任务"); 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"); 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); 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("该设备当前未生产或者已删除"); 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() SchTaskDto dto = SchTaskDto.builder()
.task_id(IdUtil.getLongId()) .task_id(IdUtil.getLongId())
@@ -274,7 +287,7 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
.task_status(TaskStatusEnum.SURE_END.getCode()) .task_status(TaskStatusEnum.SURE_END.getCode())
.point_code2(point_code2) .point_code2(point_code2)
.material_info_id(workOrderObj.getLong("workorder_id")) .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")) .vehicle_type(workOrderObj.getString("vehicle_type"))
.handle_class(THIS_CLASS) .handle_class(THIS_CLASS)
.create_time(DateUtil.now()) .create_time(DateUtil.now())

View File

@@ -49,7 +49,6 @@ public class CpOutTask extends AbstractAcsTask {
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
JSONObject requestParam = JSONObject.parseObject(taskObj.getString("request_param")); JSONObject requestParam = JSONObject.parseObject(taskObj.getString("request_param"));
JSONObject feedback = new JSONObject(); JSONObject feedback = new JSONObject();
feedback.put("task_code", taskObj.getString("task_code"));
//任务取消 //任务取消
if (StrUtil.equals(status, "0")) { if (StrUtil.equals(status, "0")) {
// 取消删除任务 // 取消删除任务
@@ -90,10 +89,11 @@ public class CpOutTask extends AbstractAcsTask {
taskTab.update(taskObj); taskTab.update(taskObj);
// 通知mes // 通知mes
feedback.put("fserialid054", taskObj.getString("task_code")); feedback.put("flpn081", taskObj.getString("vehicle_code"));
feedback.put("fsonumber186", taskObj.getString("point_code2")); feedback.put("fsonumber186", taskObj.getString("point_code2"));
feedback.put("flocationid081number", requestParam.getString("out_store_order")); 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:成品库区点 // 任务表的点位1:成品库区点
String point_code1 = taskObj.getString("point_code1"); // 起点编码 String point_code1 = taskObj.getString("point_code1"); // 起点编码

View File

@@ -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("未找到该任务或者任务已完成!");
}
}
}

View File

@@ -130,7 +130,7 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
feedback.put("fsn502", taskObj.getString("task_code")); feedback.put("fsn502", taskObj.getString("task_code"));
feedback.put("flpn979", taskObj.getString("vehicle_code")); feedback.put("flpn979", taskObj.getString("vehicle_code"));
feedback.put("flocationid979number", taskObj.getString("point_code2")); feedback.put("flocationid979number", taskObj.getString("point_code2"));
wmsToMesService.taskFeedback(feedback); wmsToMesService.taskFeedback(feedback, "WM_INV_MOVE_P011_AGV01");
//区域出入表【st_ivt_regionIO】 //区域出入表【st_ivt_regionIO】
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO"); WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
@@ -324,13 +324,6 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
@Override @Override
public String createTask(JSONObject whereJson) { 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】 //生产工单表【PDM_BD_WorkOrder】
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
//点位基础表【SCH_BASE_Point】 //点位基础表【SCH_BASE_Point】
@@ -338,6 +331,19 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
//任务表【SCH_BASE_Task】 //任务表【SCH_BASE_Task】
WQLObject taskTab = WQLObject.getWQLObject("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); 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 + "存在未完成的任务"); if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + point_code1 + "存在未完成的任务");

View File

@@ -85,7 +85,7 @@ public class HkxSendMaterialTask extends AbstractAcsTask {
feedback.put("fpacknumberpl695", taskObj.getString("task_code")); feedback.put("fpacknumberpl695", taskObj.getString("task_code"));
feedback.put("flpn979", taskObj.getString("vehicle_code")); feedback.put("flpn979", taskObj.getString("vehicle_code"));
feedback.put("flocationid979number", taskObj.getString("point_code2")); 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"); String point_code2 = taskObj.getString("point_code2");
JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);

View File

@@ -49,7 +49,7 @@
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column prop="device_code" label="设备编码" /> <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_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 prop="productivity" label="设备产能" />
<el-table-column label="是否启用" align="center" prop="is_used"> <el-table-column label="是否启用" align="center" prop="is_used">
<template slot-scope="scope"> <template slot-scope="scope">