From 5c212e93bdd29264baa7e7c2d95a12e1df78fe02 Mon Sep 17 00:00:00 2001 From: csx <1981897232@qq.com> Date: Sun, 28 Dec 2025 15:29:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BA=BA=EF=BC=9A=E9=99=88?= =?UTF-8?q?=E7=BB=8D=E9=91=AB=20=E6=97=A5=E6=9C=9F=EF=BC=9A2025/11/28=2015?= =?UTF-8?q?=EF=BC=9A30=20=E5=86=85=E5=AE=B9:=E6=8E=A8=E9=80=81=E5=85=AC?= =?UTF-8?q?=E4=BA=AB=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1v1.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/plugin/task/SharePushTaskPlugin.java | 86 +++++++++++++++++-- 1 file changed, 79 insertions(+), 7 deletions(-) diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/task/SharePushTaskPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/task/SharePushTaskPlugin.java index 793811c..6804a45 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/task/SharePushTaskPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/task/SharePushTaskPlugin.java @@ -14,6 +14,7 @@ import kd.bos.orm.query.QFilter; import kd.bos.schedule.executor.AbstractTask; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.QueryServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; import kd.drp.mdr.api.Api; import kd.tmc.fbp.common.util.EmptyUtil; import org.apache.http.client.methods.CloseableHttpResponse; @@ -41,6 +42,7 @@ import java.net.URL; import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.nio.file.Paths; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -54,13 +56,10 @@ import java.util.stream.Collectors; public class SharePushTaskPlugin extends AbstractTask { private static final Log logger = LogFactory.getLog(SharePushTaskPlugin.class); + // 日期格式化器 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); @Override public void execute(RequestContext requestContext, Map map) throws KDException { - //要推送单据的过滤(查询单子回单) - QFilter dzhdqFilter = new QFilter("ismatch", QCP.equals,true); - dzhdqFilter = dzhdqFilter.and(new QFilter("billno", QCP.equals, "EBB-250928-101566")); - DynamicObject[] bei_elecreceiptids = BusinessDataServiceHelper.load("bei_elecreceipt", "id", dzhdqFilter.toArray()); - logger.info("符合推送条件数据有:{}条", bei_elecreceiptids.length); //获取司库电子回单推送共享系统的对应映射 QFilter qFilter = new QFilter("shkd_name", QCP.equals,"司库电子回单推送共享系统"); DynamicObject shkd_apimappingid = BusinessDataServiceHelper.loadSingle("shkd_apimapping", "id", qFilter.toArray()); @@ -69,6 +68,27 @@ public class SharePushTaskPlugin extends AbstractTask { return; } DynamicObject shkd_apimapping = BusinessDataServiceHelper.loadSingle(shkd_apimappingid.getLong("id"), "shkd_apimapping"); + + //要推送单据的过滤(查询单子回单默认过滤条件) + QFilter dzhdqFilter = new QFilter("ismatch", QCP.equals,true); + dzhdqFilter = dzhdqFilter.and(new QFilter("billno", QCP.equals, "EBB-250928-101566")); + + //自定义过滤条件 + String shkd_zdygltj = shkd_apimappingid.getString("shkd_zdygltj"); + if (!EmptyUtil.isEmpty(shkd_zdygltj)){ + QFilter zdyqFilter= null; + try { + zdyqFilter = getqFilter(shkd_zdygltj); + } catch (ParseException e) { + throw new RuntimeException(e); + } + dzhdqFilter=dzhdqFilter.and(zdyqFilter); + } + + DynamicObject[] bei_elecreceiptids = BusinessDataServiceHelper.load("bei_elecreceipt", "id", dzhdqFilter.toArray()); + logger.info("符合推送条件数据有:{}条", bei_elecreceiptids.length); + + String shkd_url = shkd_apimapping.getString("shkd_url"); Map headMap = new HashMap<>(); DynamicObjectCollection shkdHeade = shkd_apimapping.getDynamicObjectCollection("shkd_heade"); @@ -80,12 +100,64 @@ public class SharePushTaskPlugin extends AbstractTask { for (DynamicObject bei_elecreceiptid : bei_elecreceiptids) { DynamicObject bei_elecreceipt = BusinessDataServiceHelper.loadSingle(bei_elecreceiptid.getLong("id"), "bei_elecreceipt"); String saveRequestBody=getJSON(bei_elecreceipt,shkd_mapping);//请求json - logger.info(""); + logger.info("单据"+bei_elecreceiptid.getString("billno")+"推送json:"+saveRequestBody); String res = doPost(shkd_url,headMap,saveRequestBody,null); - System.out.print(res); + logger.info("单据"+bei_elecreceiptid.getString("billno")+"返回json:"+res); + JSONObject otherIsJsonRS = JSONObject.parseObject(res);//获取返回结果 + Map resultMap = new HashMap<>(); + resultMap.put("shkd_requesturl",shkd_url);//请求地址 + resultMap.put("shkd_request",saveRequestBody);//请求体 + resultMap.put("shkd_response",res);//响应数据 + resultMap.put("shkd_thirdpartysys","浪潮");//第三方系统 + resultMap.put("shkd_calldescription","司库->浪潮");//第三方系统 + + String flag = otherIsJsonRS.getString("flag"); + if ("0".equals(flag)){//失败 + resultMap.put("shkd_issuccess",false);//是否成功 + }else { + JSONArray datas = otherIsJsonRS.getJSONArray("data"); + JSONObject data = datas.getJSONObject(0); + String dataflag = data.getString("flag"); + if ("0".equals(dataflag)){ + resultMap.put("shkd_issuccess",false);//是否成功 + }else { + resultMap.put("shkd_issuccess",true);//是否成功 + bei_elecreceipt.set("shkd_sfcgtsgx",true); + SaveServiceHelper.update(bei_elecreceipt); + } + } + ApiService.saveThePushLog(resultMap); } } + private QFilter getqFilter(String shkd_zdygltj) throws ParseException { + // 将字符串转换为 JSON 数组 + JSONArray jsonArray = JSONArray.parseArray(shkd_zdygltj); + QFilter qFilter = null; + // 遍历 JSON 数组 + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + String field = jsonObject.getString("field"); + String qcp = jsonObject.getString("qcp"); + String value = jsonObject.getString("value"); + String type = jsonObject.getString("type"); + Object o; + if (type.equals("String")){ + o=value; + } else if (type.equals("Date")) { + o = dateFormat.parse(value); // 将字符串转换为 Date + }else { + o=value; + } + if (i==0){ + qFilter=new QFilter(field,qcp,o); + }else { + qFilter.and(new QFilter(field,qcp,o)); + } + } + return qFilter; + } + private String getJSON(DynamicObject bei_elecreceipt,DynamicObjectCollection shkd_mapping){ JSONObject otherIsJson = new JSONObject(); for (DynamicObject map : shkd_mapping) {