From 08fc5462a5b82cf6cee38fc564d79c7b5f98160d Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期五, 18 四月 2025 16:35:42 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/task/handler/OrderReportHander.java | 292 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 292 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderReportHander.java b/src/main/java/com/zy/asrs/task/handler/OrderReportHander.java
new file mode 100644
index 0000000..149d301
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/OrderReportHander.java
@@ -0,0 +1,292 @@
+package com.zy.asrs.task.handler;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.DocType;
+import com.zy.asrs.entity.Order;
+import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.DocTypeService;
+import com.zy.asrs.service.OrderDetlService;
+import com.zy.asrs.service.OrderService;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.kingdee.handler.LoginAuthenticationHandler;
+import com.zy.common.utils.HttpHandler;
+import com.zy.erp.kingdee.enums.KingDeeUtilType;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+
+@Service
+@Slf4j
+public class OrderReportHander extends AbstractHandler<String> {
+
+ @Value("${erp.address.URL}")
+ //绔彛
+ private String URL;
+
+ @Value("${erp.address.inaddressSave}")
+ //涓婃姤鍏ュ簱鍦板潃
+ private String inaddressSave;
+ @Value("${erp.address.outaddressSave}")
+ //涓婃姤鍑哄簱鍦板潃
+ private String outaddressSave;
+ @Autowired
+ private OrderService orderService;
+ @Autowired
+ private OrderDetlService orderDetlService;
+ @Autowired
+ private ApiLogService apiLogService;
+ @Autowired
+ private DocTypeService docTypeService;
+ @Autowired
+ private LoginAuthenticationHandler loginAuthenticationHandler;
+
+ public ReturnT<String> startPakIn() {
+ // 鏌ュ嚭鎵�鏈夋暟鎹叆搴撳崟
+ List<Order> orderList = orderService.selectList(new EntityWrapper<Order>().eq("doc_type", 34));
+ for(Order order : orderList){
+ List<OrderDetl> orderMemoList = orderDetlService.selectList(new EntityWrapper<OrderDetl>()
+ .isNull("memo")
+ .eq("order_No", order.getOrderNo()));//memo涓虹┖琛ㄧず浠嶆湭涓婃姤
+
+ List<OrderDetl> toReportList = new ArrayList<>();
+
+ // 寰幆鍒ゆ柇 anfme 鍜� qty 鏄惁鐩哥瓑锛岀浉绛夊垯琛ㄧず宸插畬鎴愬叆搴�
+ for (OrderDetl orderDetl : orderMemoList) {
+ if (orderDetl.getAnfme() != null && orderDetl.getQty() != null
+ && orderDetl.getAnfme().doubleValue() == orderDetl.getQty().doubleValue()) {
+ toReportList.add(orderDetl);
+ }
+ }
+
+ // 濡傛灉鏈夌鍚堟潯浠剁殑鏁版嵁锛屾墽琛屼笂鎶�
+ if (!toReportList.isEmpty()) {
+ reportPakIn(toReportList);
+
+ for (OrderDetl detl : toReportList) {
+ detl.setMemo("1");
+ orderDetlService.updateById(detl);
+ log.info("宸插畬鎴愬崟鎹笂鎶� =====> " + detl);
+ }
+ }
+ }
+
+ return SUCCESS;
+ }
+
+ private void reportPakIn(List<OrderDetl> orderDetls) {
+
+ Date now = new Date();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ // 鏋勫缓涓诲崟 JSON 鏁版嵁
+ JSONObject requestBody = new JSONObject();
+ requestBody.put("billType", "鍏ュ簱鍗�");
+
+ // 浠庣涓�涓槑缁嗕腑鎻愬彇璁㈠崟鍙风瓑淇℃伅
+ if (!orderDetls.isEmpty()) {
+ OrderDetl first = orderDetls.get(0);
+ requestBody.put("orderNo", first.getOrderNo());
+ }
+
+ requestBody.put("createTime", sdf.format(now));
+
+ // 鏋勫缓鐗╂枡鍒楄〃
+ JSONArray matList = new JSONArray();
+ for (OrderDetl detl : orderDetls) {
+ JSONObject mat = new JSONObject();
+ mat.put("matnr", detl.getMatnr());
+ mat.put("maktx", detl.getMaktx());
+ mat.put("batch", detl.getBatch());
+ mat.put("qty", detl.getQty());
+ mat.put("anfme", detl.getAnfme());
+ mat.put("units", detl.getUnits());
+ matList.add(mat);
+ }
+
+ requestBody.put("matList", matList);
+
+ // 鍙戦�� POST 璇锋眰
+ String response = "";
+ boolean success = false;
+ try {
+ HashMap<String, Object> headers = new HashMap<>();
+ // cookie
+ headers.put("Cookie", loginAuthenticationHandler.start().getContent());
+
+ response = new HttpHandler.Builder()
+ .setHeaders(headers)
+ .setUri(URL)
+ .setPath(inaddressSave) // 璁剧疆浣犵殑鎺ュ彛璺緞
+ .setJson(requestBody.toJSONString())
+ .build()
+ .doPost();
+
+ JSONObject data = JSON.parseObject(response);
+ Object isSuccess = findValueByKey(data, "IsSuccess");
+ String bool = isSuccess != null ? isSuccess.toString() : "false";
+
+ if ("true".equals(bool)) {
+ success = true;
+ }
+ } catch (Exception e) {
+ log.error("涓婃姤ERP澶辫触", e);
+ } finally {
+ try {
+ apiLogService.save(
+ "鍏ュ簱涓婃姤",
+ URL + inaddressSave,
+ null,
+ "127.0.0.1",
+ requestBody.toJSONString(),
+ response,
+ success
+ );
+ } catch (Exception e) {
+ log.error("鏃ュ織淇濆瓨澶辫触", e);
+ }
+ }
+ }
+
+ public ReturnT<String> startPakOut() {
+ // 鎵�鏈夋暟鎹嚭搴撳崟
+ List<Order> orderList = orderService.selectList(new EntityWrapper<Order>().eq("doc_type", 33));
+ for(Order order : orderList){
+ List<OrderDetl> orderMemoList = orderDetlService.selectList(new EntityWrapper<OrderDetl>()
+ .isNull("memo")
+ .eq("order_No", order.getOrderNo()));
+
+ List<OrderDetl> toReportList = new ArrayList<>();
+
+ // 寰幆鍒ゆ柇 anfme 鍜� qty 鏄惁鐩哥瓑
+ for (OrderDetl orderDetl : orderMemoList) {
+ if (orderDetl.getAnfme() != null && orderDetl.getQty() != null
+ && orderDetl.getAnfme().doubleValue() == orderDetl.getQty().doubleValue()) {
+ toReportList.add(orderDetl);
+ }
+ }
+
+ // 濡傛灉鏈夌鍚堟潯浠剁殑鏁版嵁锛屾墽琛屼笂鎶�
+ if (!toReportList.isEmpty()) {
+ reportPakOut(toReportList);
+
+ for (OrderDetl detl : toReportList) {
+ detl.setMemo("1");
+ orderDetlService.updateById(detl);
+ log.info("宸插畬鎴愬崟鎹笂鎶� =====> " + detl);
+ }
+ }
+ }
+
+ return SUCCESS;
+ }
+
+ private void reportPakOut(List<OrderDetl> orderDetls) {
+
+ Date now = new Date();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+ // 鏋勫缓涓诲崟 JSON 鏁版嵁
+ JSONObject requestBody = new JSONObject();
+ requestBody.put("billType", "鍑哄簱鍗�");
+
+ // 浠庣涓�涓槑缁嗕腑鎻愬彇璁㈠崟鍙风瓑淇℃伅
+ if (!orderDetls.isEmpty()) {
+ OrderDetl first = orderDetls.get(0);
+ requestBody.put("orderNo", first.getOrderNo());
+ }
+
+ requestBody.put("createTime", sdf.format(now));
+
+ // 鏋勫缓鐗╂枡鍒楄〃
+ JSONArray matList = new JSONArray();
+ for (OrderDetl detl : orderDetls) {
+ JSONObject mat = new JSONObject();
+ mat.put("matnr", detl.getMatnr());
+ mat.put("maktx", detl.getMaktx());
+ mat.put("batch", detl.getBatch());
+ mat.put("qty", detl.getQty());
+ mat.put("anfme", detl.getAnfme());
+ mat.put("units", detl.getUnits());
+ matList.add(mat);
+ }
+
+ requestBody.put("matList", matList);
+
+ // 鍙戦�� POST 璇锋眰
+ String response = "";
+ boolean success = false;
+ try {
+ HashMap<String, Object> headers = new HashMap<>();
+ //cookie
+ headers.put("Cookie", loginAuthenticationHandler.start().getContent());
+
+ response = new HttpHandler.Builder()
+ .setHeaders(headers)
+ .setUri(URL)
+ .setPath(inaddressSave) // 璁剧疆浣犵殑鎺ュ彛璺緞
+ .setJson(requestBody.toJSONString())
+ .build()
+ .doPost();
+
+ JSONObject data = JSON.parseObject(response);
+ Object isSuccess = findValueByKey(data, "IsSuccess");
+ String bool = isSuccess != null ? isSuccess.toString() : "false";
+
+ if ("true".equals(bool)) {
+ success = true;
+ }
+ } catch (Exception e) {
+ log.error("涓婃姤ERP澶辫触", e);
+ } finally {
+ try {
+ apiLogService.save(
+ "鍑哄簱涓婃姤",
+ URL + outaddressSave,
+ null,
+ "127.0.0.1",
+ requestBody.toJSONString(),
+ response,
+ success
+ );
+ } catch (Exception e) {
+ log.error("鏃ュ織淇濆瓨澶辫触", e);
+ }
+ }
+ }
+
+ public static Object findValueByKey(JSONObject json, String key) {
+ Set<String> keySet = json.keySet();
+ for (String k : keySet) {
+ Object v = json.get(k);
+ if (k.equals(key)) {
+ return v;
+ } else if (v instanceof JSONArray) {
+ int size = ((JSONArray) v).size();
+ for (int i = 0; i <= size - 1; i++) {
+ Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key);
+ if (result != null){
+ return result;
+ }
+ }
+ } else if (v instanceof JSONObject){
+ Object result = findValueByKey((JSONObject) v, key);
+ if (result != null){
+ return result;
+ }
+ }
+ }
+ return null;
+ }
+
+
+}
--
Gitblit v1.9.1