diff --git a/lms/nladmin-system/pom.xml b/lms/nladmin-system/pom.xml index 72bb5ef..57b7264 100644 --- a/lms/nladmin-system/pom.xml +++ b/lms/nladmin-system/pom.xml @@ -32,6 +32,12 @@ + + org.apache.httpcomponents + httpclient + 4.5.13 + + com.microsoft.sqlserver diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index e71d39f..069ac9e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -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; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/WmsToMesController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/WmsToMesController.java index 6c4cf6a..030ff6a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/WmsToMesController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/WmsToMesController.java @@ -50,8 +50,8 @@ public class WmsToMesController { @Log("任务反馈") @ApiOperation("任务反馈") @SaIgnore - public ResponseEntity taskFeedback(JSONObject param) { - wmsToMesService.taskFeedback(param); + public ResponseEntity taskFeedback(JSONObject param, String finterfaceid) { + wmsToMesService.taskFeedback(param, finterfaceid); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/WmsToMesService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/WmsToMesService.java index ef6b7ae..1ac53d7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/WmsToMesService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/WmsToMesService.java @@ -19,5 +19,5 @@ public interface WmsToMesService { */ void getUnitInfoForMes(); - void taskFeedback(JSONObject param); + void taskFeedback(JSONObject param, String finterfaceid); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToWmsServiceImpl.java index 9ccb571..d233743 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToWmsServiceImpl.java @@ -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); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java index ccf4912..f886490 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java @@ -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")) { + //???? } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/ssxsendmaterial/rest/SSXSendMaterialController.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/ssxsendmaterial/rest/SSXSendMaterialController.java index 41456e5..40dd0fd 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/ssxsendmaterial/rest/SSXSendMaterialController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/ssxsendmaterial/rest/SSXSendMaterialController.java @@ -33,8 +33,8 @@ public class SSXSendMaterialController { @Log("查询物料") @ApiOperation("查询物料") @SaIgnore - public ResponseEntity queryMaterial() { - return new ResponseEntity<>(sendMaterialService.queryMaterial(), HttpStatus.OK); + public ResponseEntity queryMaterial(@RequestBody JSONObject param) { + return new ResponseEntity<>(sendMaterialService.queryMaterial(param), HttpStatus.OK); } @PostMapping("/queryVehicle") diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/ssxsendmaterial/service/SSXSendMaterialService.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/ssxsendmaterial/service/SSXSendMaterialService.java index e50b8c5..5e5b774 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/ssxsendmaterial/service/SSXSendMaterialService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/ssxsendmaterial/service/SSXSendMaterialService.java @@ -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); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/ssxsendmaterial/service/impl/SSXSendMaterialServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/ssxsendmaterial/service/impl/SSXSendMaterialServiceImpl.java index cda3149..e31a8a6 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/ssxsendmaterial/service/impl/SSXSendMaterialServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/ssxsendmaterial/service/impl/SSXSendMaterialServiceImpl.java @@ -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", "查询成功"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/ssxsendmaterial/wql/SSX_QUERY.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pda/ssxsendmaterial/wql/SSX_QUERY.wql new file mode 100644 index 0000000..1af0576 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/ssxsendmaterial/wql/SSX_QUERY.wql @@ -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 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/MesUtil.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/MesUtil.java new file mode 100644 index 0000000..b69a78f --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/MesUtil.java @@ -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 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(""); + sb.append(""); + sb.append(""); + sb.append(""); + sb.append("AGV"); + sb.append(""); + sb.append(method); + sb.append(""); + sb.append("json"); + sb.append(""); + sb.append(""); + sb.append(""); + log.info("parseXmlStr组织参数为-----------------"+sb); + return sb.toString(); + + } + + /** + * 将xml转换为Map。 支持xml标签多层嵌套,并以"."分隔多级标签(不包括根节点)。 不支持XML标签重复时的情况 + * + * @param xml + * @param map + * @return + */ + private static Map parseXml2Map(String xml, Map 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; + } + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/SOAPClientExample.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/SOAPClientExample.java new file mode 100644 index 0000000..6da500c --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/SOAPClientExample.java @@ -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(); + } + } +} + diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/WebServiceUtil.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/WebServiceUtil.java new file mode 100644 index 0000000..b9d4f72 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/WebServiceUtil.java @@ -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 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("", ""); + else + ret = (new StringBuilder("")).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 form, String method){ + StringBuffer sb = new StringBuffer(); + sb.append(" "); + sb.append(""); + sb.append(""); + sb.append(""); + sb.append(""); + if(method.contains("ZSd0002SendMatMd")) + sb.append(""); + // 设置请求参数 + for(Iterator it = form.keySet().iterator();it.hasNext();){ + String key = it.next(); + String value = form.get(key); + sb.append(" <"+key+">"+value+""); + } + if(method.contains("ZSd0002SendMatMd")) + sb.append(""); + sb.append(""); + sb.append(""); + sb.append(""); + 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 form = new HashMap(); + 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 form = new HashMap(); + 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 form = new HashMap(); + 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());*/ + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YqxCallMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YqxCallMaterialTask.java index a4ed853..36e8525 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YqxCallMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YqxCallMaterialTask.java @@ -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()) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/cpOut/CpOutTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/cpOut/CpOutTask.java index ff579a9..4f0fbc1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/cpOut/CpOutTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/cpOut/CpOutTask.java @@ -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"); // 起点编码 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/CpSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/CpSendMaterialTask.java new file mode 100644 index 0000000..a1e0bd9 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/CpSendMaterialTask.java @@ -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 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 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("未找到该任务或者任务已完成!"); + } + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/GjxSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/GjxSendMaterialTask.java index e96ddb2..1df573d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/GjxSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/GjxSendMaterialTask.java @@ -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 + "存在未完成的任务"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/HkxSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/HkxSendMaterialTask.java index fee94f9..d945516 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/HkxSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/HkxSendMaterialTask.java @@ -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); diff --git a/lms/nladmin-ui/src/views/wms/pdm/device/index.vue b/lms/nladmin-ui/src/views/wms/pdm/device/index.vue index f192457..4aa9e46 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/device/index.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/device/index.vue @@ -49,7 +49,7 @@ - +