From 2ee70a38e4c832e3888b12d29ebf962456069cdb Mon Sep 17 00:00:00 2001 From: whycq <123456> Date: 星期三, 03 七月 2024 14:30:04 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/phpsasrs' into phpsasrs --- src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java | 276 +++++++++++++++++++++++++++++++++++------------------- 1 files changed, 177 insertions(+), 99 deletions(-) diff --git a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java index 64a30fd..263758a 100644 --- a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java @@ -1,9 +1,8 @@ package com.zy.asrs.task.handler; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.core.common.Cools; -import com.core.common.DateUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.DocType; import com.zy.asrs.entity.Order; @@ -15,16 +14,20 @@ import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.common.constant.MesConstant; -import com.zy.common.model.MesPakinParam; -import com.zy.common.model.MesPakoutParam; import com.zy.common.utils.HttpHandler; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.digest.DigestUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * Created by vincent on 2020/7/7 @@ -44,116 +47,191 @@ @Autowired private DocTypeService docTypeService; + + @Transactional public ReturnT<String> start(Order order) { DocType docType = docTypeService.selectById(order.getDocType()); if (null == docType) { + log.info("涓婃姤鍑洪敊锛屼笉瀛樺湪璇ュ崟鎹被鍨嬶細 " + order); return SUCCESS; } List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); + + // 鑾峰彇璇锋眰澶� + Map<String, Object> headers = getHeaders(); + + // 鏋勯�犺姹備綋 + String body = getBody(orderDetls, order); + // 鍏ュ簱瀹屾垚涓婃姤 - if (docType.getPakin() == 1) { - MesPakinParam pakinParam = new MesPakinParam(); - pakinParam.setPakinTime(DateUtils.convert(order.getUpdateTime())); - pakinParam.setLgortFrom("5008"); - pakinParam.setLgortTo("5006"); - for (OrderDetl orderDetl : orderDetls) { - String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch(); - pakinParam.getList().add(new MesPakinParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme())); - } - String response = ""; - boolean success = false; - try { - response = new HttpHandler.Builder() - .setUri(MesConstant.URL) - .setPath(MesConstant.PAKIN_URL) - .setJson(JSON.toJSONString(pakinParam)) - .build() - .doPost(); - JSONObject jsonObject = JSON.parseObject(response); - if (jsonObject.getInteger("code").equals(200)) { - success = true; - // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶� - if (!orderService.updateSettle(order.getId(), 6L, null)) { - throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); - } - } else { - log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PAKIN_URL, JSON.toJSONString(pakinParam), response); - throw new CoolException("涓婃姤mes绯荤粺澶辫触"); + String response = ""; + boolean success = false; + try { + response = new HttpHandler.Builder() + .setUri(MesConstant.URL) + .setPath(MesConstant.PAKIN_URL) + .setHeaders(headers) + .setJson(body) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + JSONObject std_data = jsonObject.getJSONObject("std_data"); + JSONObject execution = std_data.getJSONObject("execution"); + String code = execution.getString("code"); + JSONObject std_data1 = std_data.getJSONObject("parameter"); + JSONObject execution1 = std_data1.getJSONObject("response_result"); + String status = execution1.getString("Status"); + + if ("0".equals(code) && "0".equals(status)) { + success = true; + // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶� + if (!orderService.updateSettle(order.getId(), 6L, null)) { + throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); } - } catch (Exception e) { - log.error("fail", e); + } else { + orderService.updateSettle(order.getId(), 7L, null); + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PAKIN_URL, body, response); + throw new CoolException("涓婃姤mes绯荤粺澶辫触"); + } + } catch (Exception e) { + log.error("fail", e); // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - return FAIL.setMsg(e.getMessage()); - } finally { - try { - // 淇濆瓨鎺ュ彛鏃ュ織 - apiLogService.save( - "鎴愬搧搴撳叆搴撲笂鎶�", - MesConstant.URL + MesConstant.PAKIN_URL, - null, - "127.0.0.1", - JSON.toJSONString(pakinParam), - response, - success - ); - } catch (Exception e) { log.error("", e); } - } - } - // 鍑哄簱瀹屾垚涓婃姤 - if (docType.getPakout() == 1) { - if (true) { - return SUCCESS; - } - MesPakoutParam pakoutParam = new MesPakoutParam(); - pakoutParam.setPakoutTime(DateUtils.convert(order.getUpdateTime())); // todo:luxiaotao - pakoutParam.setLgortFrom("5008"); // todo:luxiaotao - pakoutParam.setLgortTo("5006"); // todo:luxiaotao - pakoutParam.setOrderNo(order.getOrderNo()); - for (OrderDetl orderDetl : orderDetls) { - String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch(); - pakoutParam.getList().add(new MesPakoutParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme())); - } - String response = ""; - boolean success = false; + return FAIL.setMsg(e.getMessage()); + } finally { try { - response = new HttpHandler.Builder() - .setUri(MesConstant.URL) - .setPath(MesConstant.PAKOUT_URL) // todo:luxiaotao - .setJson(JSON.toJSONString(pakoutParam)) - .build() - .doPost(); - JSONObject jsonObject = JSON.parseObject(response); - if (jsonObject.getInteger("code").equals(200)) { - success = true; - // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶� - if (!orderService.updateSettle(order.getId(), 6L, null)) { - throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); - } - } else { - log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PAKOUT_URL, JSON.toJSONString(pakoutParam), response); - throw new CoolException("涓婃姤mes绯荤粺澶辫触"); - } + // 淇濆瓨鎺ュ彛鏃ュ織 + apiLogService.save( + docType.getPakin() == 1 ?"鍏ュ簱涓婃姤" : "鍑哄簱涓婃姤", + MesConstant.URL + MesConstant.PAKIN_URL, + null, + "127.0.0.1", + JSON.toJSONString(body), + response, + success + ); } catch (Exception e) { - log.error("fail", e); -// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - return FAIL.setMsg(e.getMessage()); - } finally { - try { - // 淇濆瓨鎺ュ彛鏃ュ織 - apiLogService.save( - "鎴愬搧搴撳嚭搴撲笂鎶�", - MesConstant.URL + MesConstant.PAKOUT_URL, - null, - "127.0.0.1", - JSON.toJSONString(pakoutParam), - response, - success - ); - } catch (Exception e) { log.error("", e); } + log.error("", e); } } return SUCCESS; } + private String getBody(List<OrderDetl> orderDetls, Order order) { + + JSONObject orderJson = new JSONObject(); + JSONObject orderJson1 = new JSONObject(); + JSONObject orderJson2 = new JSONObject(); + JSONObject orderJson3 = new JSONObject(); + + JSONArray jsonArray = new JSONArray(); + for(OrderDetl orderDetl:orderDetls) { + Map<String,Object> map = new HashMap<>(); + map.put("matnr",orderDetl.getMatnr()); + map.put("anfme",orderDetl.getAnfme()); + jsonArray.add(map); + } + + orderJson3.put("orderNo",order.getOrderNo()); + orderJson3.put("TypeKey",order.getDocType$()); + orderJson3.put("matList",jsonArray); + orderJson2.put("importData",orderJson3); + orderJson1.put("parameter",orderJson2); + orderJson.put("std_data",orderJson1); + return orderJson.toJSONString(); + } + + Map<String, Object> getHeaders(){ +// digi-type: sync +// digi-protocol: raw +// digi-host: {"prod":"XThirdParty","ver":"1.0","ip":"61.153.227.86","id":"XWMS","timezone":"+8","timestamp":"20240613062240538","acct":"dcms"} +// digi-service: {"prod":"E10","name":"XCommon.ImportData","id":"XFX","ip":"139.196.196.39"} +// digi-key: 504011D3B5AD32B465FE0C097C7FDAAC +// digi-datakey: XCommon.ImportData + // 鑾峰彇褰撳墠鏃堕棿 + LocalDateTime now = LocalDateTime.now(); + + // 瀹氫箟鏃ユ湡鏃堕棿鏍煎紡鍖栧櫒锛屾牴鎹綘鐨勯渶姹傚畾涔夋牸寮� + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"); + + // 鏍煎紡鍖栨棩鏈熸椂闂翠负瀛楃涓� + String formattedDateTime = now.format(formatter); + + JSONObject digiHost = new JSONObject(); + digiHost.put("prod","XThirdParty"); + digiHost.put("ver","1.0"); + digiHost.put("ip","61.153.227.86"); + digiHost.put("id","XWMS"); + digiHost.put("timezone","+8"); + digiHost.put("timestamp",formattedDateTime); + digiHost.put("acct","dcms"); + + JSONObject digiService = new JSONObject(); + digiService.put("prod","E10"); + digiService.put("name","XCommon.ImportData"); + digiService.put("ip","139.196.196.39"); + digiService.put("id","XFX"); + + String key = digiHost.toJSONString() + digiService.toJSONString(); + String keyMd5 = DigestUtils.md5Hex(key); + + + Map<String,Object> headers = new HashMap<>(); + headers.put("digi-type","sync "); + headers.put("digi-protocol","raw"); + headers.put("digi-host",digiHost.toJSONString()); + headers.put("digi-service",digiService.toJSONString()); + headers.put("digi-key",keyMd5); + headers.put("digi-datakey"," XCommon.ImportData"); + + return headers; + } + + public static void main(String[] args) { + + String msg = "{\n" + + " \"std_data\": {\n" + + " \"execution\": {\n" + + " \"code\": \"0\",\n" + + " \"sql_code\": \"\",\n" + + " \"description\": \"鎵ц鎴愬姛\",\n" + + " \"token_id\": \"e7b4b7d668ec41fa83f643eb1b322959\"\n" + + " },\n" + + " \"parameter\": {\n" + + " \"response_result\": {\n" + + " \"Status\": \"0\",\n" + + " \"Message\": \"鎿嶄綔鎴愬姛锛乗",\n" + + " \"DOC_NO\": \"\"\n" + + " }\n" + + " }\n" + + " }\n" + + "}"; + JSONObject jsonObject = JSON.parseObject(msg); + JSONObject std_data = jsonObject.getJSONObject("std_data"); + JSONObject execution = std_data.getJSONObject("execution"); + System.out.println(jsonObject.get("std_data")); + System.out.println(execution.getString("code")); + +// JSONObject orderJson = new JSONObject(); +// JSONObject orderJson1 = new JSONObject(); +// JSONObject orderJson2 = new JSONObject(); +// JSONObject orderJson3 = new JSONObject(); +// +// JSONArray jsonArray = new JSONArray(); +// Map<String,Object> map = new HashMap<>(); +// map.put("matnr","301080001"); +// map.put("anfme","23456"); +// JSONObject jsonObject = new JSONObject(); +// jsonObject.put("matnr","301080001"); +// jsonObject.put("anfme","23456"); +// jsonArray.add(map); +// +// orderJson3.put("orderNo","3600-201702010001"); +// orderJson3.put("TypeKey","PURCHASE_ARRIVAL"); +// orderJson3.put("matList",jsonArray); +// orderJson2.put("importData",orderJson3); +// orderJson1.put("parameter",orderJson2); +// orderJson.put("std_data",orderJson1); +// System.out.println(orderJson.toJSONString()); + } } -- Gitblit v1.9.1