From 6cd08fe4de88df0a21851f96bdc4e617c5d92e36 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期三, 29 四月 2026 11:57:31 +0800
Subject: [PATCH] 工单相关功能完善
---
src/main/java/com/zy/asrs/task/handler/OrderPakinSyncHandler.java | 170 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 160 insertions(+), 10 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderPakinSyncHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderPakinSyncHandler.java
index 2797bac..3ae5db3 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderPakinSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderPakinSyncHandler.java
@@ -1,20 +1,33 @@
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.zy.asrs.entity.DocType;
import com.zy.asrs.entity.OrderDetlPakin;
import com.zy.asrs.entity.OrderPakin;
+import com.zy.asrs.mapper.OrderDetlPakinMapper;
+import com.zy.asrs.mapper.OrderPakinMapper;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.DocTypeService;
import com.zy.asrs.service.OrderDetlPakinService;
import com.zy.asrs.service.OrderPakinService;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
+import com.zy.common.utils.HttpHandler;
+import com.zy.system.timer.LoadingConfigTimer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.Iterator;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* Created by vincent on 2020/7/7
@@ -29,20 +42,157 @@
private OrderDetlPakinService orderDetlPakinService;
@Autowired
private ApiLogService apiLogService;
- @Autowired
- private DocTypeService docTypeService;
+
+ @Resource
+ private LoadingConfigTimer loadingConfigTimer;
@Transactional
- public ReturnT<String> startOrderReport(OrderPakin order) {
- DocType docType = docTypeService.selectById(order.getDocType());
- if (null == docType) {
- return SUCCESS;
- }
- long settle = 6L;
- List<OrderDetlPakin> orderDetls = orderDetlPakinService.selectByOrderId(order.getId());
+ public void startOrderReport(OrderPakin order) {
- return SUCCESS;
+ // 鏋勯�犺姹備綋
+ JSONObject param = new JSONObject();
+ param.put("orderNo", order.getOrderNo());
+ List<OrderDetlPakin> orderDetls = orderDetlPakinService.selectByOrderId(order.getId());
+ JSONArray detl = new JSONArray();
+ for (OrderDetlPakin orderDetlPakin : orderDetls) {
+ JSONObject object = new JSONObject();
+ object.put("matnr", orderDetlPakin.getMatnr());
+ object.put("batch", orderDetlPakin.getBatch());
+ object.put("anfme", orderDetlPakin.getQty());
+ detl.add(object);
+ }
+ param.put("matList", detl);
+
+ String response = "";
+ boolean success = false;
+ String errorMsg = null;
+ String requestJson = param.toJSONString();
+ String url = loadingConfigTimer.getErpReportURL() + loadingConfigTimer.getErpInReportPath();
+ String nameSpaces = "鍏ュ簱鍗曚笂鎶�";
+ try {
+
+ response = new HttpHandler.Builder()
+ .setUri(loadingConfigTimer.getErpReportURL())
+ .setPath(loadingConfigTimer.getErpInReportPath())
+ .setJson(requestJson)
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getString("code") != null && jsonObject.getString("code").equals("200")) {
+ orderPakinService.updateSettle(order.getId(), 6L, null);
+ log.info("鍏ュ簱鍗曟嵁涓婃姤鎴愬姛锛屽崟鎹紪鍙凤細{}", order.getOrderNo());
+ success = true;
+ } else {
+ errorMsg = response;
+ log.error(nameSpaces + "璋冪敤澶栭儴鎺ュ彛澶辫触锛寀rl锛歿}锛宺equest锛歿}锛宺esponse锛歿}", url, requestJson, response);
+ }
+ } catch (Exception e) {
+ errorMsg = e.getMessage();
+ log.error(nameSpaces + "璋冪敤澶栭儴鎺ュ彛寮傚父锛寀rl锛歿}锛宺equest锛歿}锛宺esponse锛歿}", url, requestJson, response, e);
+ } finally {
+ try {
+ apiLogService.save(
+ nameSpaces,
+ url,
+ null,
+ "127.0.0.1",
+ requestJson,
+ response,
+ success,
+ errorMsg
+ );
+ } catch (Exception e) {
+ log.error(nameSpaces + "淇濆瓨鎺ュ彛鏃ュ織澶辫触", e);
+ }
+ }
}
+ @Transactional
+ public void reportInStockOrders(List<OrderDetlPakin> orderDetlPakinList) {
+ // 鎸夎鍗曞垎缁�
+ Map<String, List<OrderDetlPakin>> listMap = orderDetlPakinList.stream().collect(Collectors.groupingBy(OrderDetlPakin::getOrderNo));
+
+ // 鏋勯�犺姹備綋
+ JSONArray param = new JSONArray();
+ for (Map.Entry<String, List<OrderDetlPakin>> entry : listMap.entrySet()) {
+ JSONObject object = new JSONObject();
+ object.put("orderNo", entry.getKey());
+ List<OrderDetlPakin> orderDetlPakins = entry.getValue();
+ JSONArray detl = new JSONArray();
+ for (OrderDetlPakin orderDetlPakin : orderDetlPakins) {
+ JSONObject detlObject = new JSONObject();
+ detlObject.put("sku", orderDetlPakin.getSku());
+ detlObject.put("standby1", orderDetlPakin.getStandby1());
+ detlObject.put("matnr", orderDetlPakin.getMatnr());
+ detlObject.put("batch", orderDetlPakin.getBatch());
+ detlObject.put("anfme", orderDetlPakin.getQty() - orderDetlPakin.getUnits());
+ detl.add(detlObject);
+ }
+ object.put("matList", detl);
+ param.add(object);
+ }
+
+ String response = "";
+ boolean success = false;
+ String errorMsg = null;
+ String requestJson = param.toJSONString();
+ String url = loadingConfigTimer.getErpReportURL() + loadingConfigTimer.getErpInReportPath();
+ String nameSpaces = "鍏ュ簱鍗曚笂鎶�";
+ try {
+
+ response = new HttpHandler.Builder()
+ .setUri(loadingConfigTimer.getErpReportURL())
+ .setPath(loadingConfigTimer.getErpInReportPath())
+ .setJson(requestJson)
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getString("code") != null && jsonObject.getString("code").equals("200")) {
+ // 鎵归噺鏇存柊units 涓婃姤鏁伴噺
+ List<OrderDetlPakin> collect = orderDetlPakinList.stream().peek(orderDetlPakin -> orderDetlPakin.setUnits(orderDetlPakin.getQty())).collect(Collectors.toList());
+ orderDetlPakinService.updateBatchById(collect);
+ success = true;
+ } else {
+ errorMsg = response;
+ log.error(nameSpaces + "璋冪敤澶栭儴鎺ュ彛澶辫触锛寀rl锛歿}锛宺equest锛歿}锛宺esponse锛歿}", url, requestJson, response);
+ }
+ } catch (Exception e) {
+ errorMsg = e.getMessage();
+ log.error(nameSpaces + "璋冪敤澶栭儴鎺ュ彛寮傚父锛寀rl锛歿}锛宺equest锛歿}锛宺esponse锛歿}", url, requestJson, response, e);
+ } finally {
+ try {
+ apiLogService.save(
+ nameSpaces,
+ url,
+ null,
+ "127.0.0.1",
+ requestJson,
+ response,
+ success,
+ errorMsg
+ );
+ } catch (Exception e) {
+ log.error(nameSpaces + "淇濆瓨鎺ュ彛鏃ュ織澶辫触", e);
+ }
+ }
+ }
+
+ @Resource
+ private OrderDetlPakinMapper orderDetlPakinMapper;
+
+ public void completeOrderReport() {
+ List<OrderPakin> orderPakins = orderPakinService.selectList(new EntityWrapper<OrderPakin>().where("settle = 4"));
+
+ // 浣跨敤 removeIf 绠�鍖栦唬鐮�
+ orderPakins.removeIf(orderPakin -> orderDetlPakinMapper.selectReportComplete(orderPakin.getId()) == 0);
+
+ // 瀵瑰墿浣欐暟鎹繘琛宻ettle璁剧疆
+ orderPakins.forEach(orderPakin -> orderPakin.setSettle(6L));
+
+ // 鎵归噺鏇存柊
+ if (!orderPakins.isEmpty()) {
+ orderPakinService.updateBatchById(orderPakins);
+ }
+ }
}
--
Gitblit v1.9.1