From c3d9be48ccd7af23ac4d08d56dd773a82a24853b Mon Sep 17 00:00:00 2001 From: 16358 <1635849544@qq.com> Date: Fri, 27 Jun 2025 11:54:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=98=9F=E7=A9=BA=E5=AF=B9=E6=8E=A5=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=BC=80=E5=8F=91:=E5=AF=B9=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=98=9F=E7=A9=BA=E6=8E=A5=E5=8F=A3=E6=B7=BB=E5=8A=A0=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/webApi/ApiPostBack.java | 79 ++++++++++++++++++- 1 file changed, 77 insertions(+), 2 deletions(-) diff --git a/measurement/src/main/java/com/ruoyi/webApi/ApiPostBack.java b/measurement/src/main/java/com/ruoyi/webApi/ApiPostBack.java index c2d17e8..786c199 100644 --- a/measurement/src/main/java/com/ruoyi/webApi/ApiPostBack.java +++ b/measurement/src/main/java/com/ruoyi/webApi/ApiPostBack.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSONObject; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.ruoyi.bill.domain.PoundBill; +import com.ruoyi.bill.domain.Poundappli; import com.ruoyi.bill.service.IPoundBillService; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.webApi.saveRequestBody.billHandlerUtil.BillHandler; @@ -20,9 +21,15 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; +import java.math.BigDecimal; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.Date; +import java.util.UUID; /** * 各个单据回传星空接口(单据更新,单据下推) @@ -50,9 +57,18 @@ public class ApiPostBack { String url = sysConfigService.selectConfigByKey("OA_Url") + "/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc"; - BillHandler handler = BillHandlers.getHandler(poundBill.getSrcblltype()); - DynamicFormRequest request = handler.buildRequest(poundBill); + //星空单据类型 (发货通知单,收料通知单有下游单据 ;存在下游单据时不允许计量同步星空) + String srcblltype = poundBill.getSrcblltype(); + if ("SAL_DELIVERYNOTICE".equals(srcblltype) || "PUR_ReceiveBill".equals(srcblltype)){ + String fid = poundBill.getFid(); + if(!"0".equals(fid)){ + if(checkOaBillExist(srcblltype,id)) throw new RuntimeException("磅单在星空已经存在下游单据,不允许修改,如需修改请前往星空平台删除下游单据!"); + } + } + //构建请求体 + BillHandler handler = BillHandlers.getHandler(srcblltype); + DynamicFormRequest request = handler.buildRequest(poundBill); String jsonInputString; try { jsonInputString = objectMapper.writeValueAsString(request); @@ -148,5 +164,64 @@ public class ApiPostBack { } } + //查询单据在星空的是否存在下游 返回boolean值(true为不允许下推) + public Boolean checkOaBillExist(String billId,String fid) throws IOException { + Boolean result = false; + + //查询单据是否存在下游 + // 目标URL + String url = sysConfigService.selectConfigByKey("OA_Url")+"/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc"; + String jsonInputString = ""; + switch (billId){ + case "SAL_DELIVERYNOTICE": + jsonInputString = "{\n" + + " \"data\": {\n" + + " \"FormId\": \"SAL_DELIVERYNOTICE\",\n" + + " \"FieldKeys\": \"FJoinOutQty\",\n" + + " \"OrderString\": \"\",\n" + + " \"FilterString\": \"FID = "+fid+"\",\n" + + " \"TopRowCount\": 0,\n" + + " \"StartRow\": 0,\n" + + " \"Limit\": 2000,\n" + + " \"SubSystemId\": \"\"\n" + + " }\n" + + "}"; + break; + case "PUR_ReceiveBill": + jsonInputString = "{\n" + + " \"data\": {\n" + + " \"FormId\": \"PUR_ReceiveBill\",\n" + + " \"FieldKeys\": \"FInStockJoinQty\",\n" + + " \"OrderString\": \"\",\n" + + " \"FilterString\": \"FID = "+fid+"\",\n" + + " \"TopRowCount\": 0,\n" + + " \"StartRow\": 0,\n" + + " \"Limit\": 2000,\n" + + " \"SubSystemId\": \"\"\n" + + " }\n" + + "}"; + break; + default: + result = false; + break; + } + + if (jsonInputString.isEmpty()) return result; + + String oaData = sendPostRequest(url, jsonInputString); + + //查询的参数为FJoinOutQty/FInStockJoinQty,这两者如果有存在大于0的情况或者存在什么也没查到的情况就返回true + JSONArray dataList = JSONArray.parseArray(oaData); + for (int i = 0; i < dataList.size(); i++) { + JSONArray row = dataList.getJSONArray(i); + Integer joinQty = row.getInteger(0); + if (joinQty > 0) { + result = true; + break; + } + } + + return result; + } } \ No newline at end of file