提交人:陈绍鑫

日期:2025/11/28 15:30
内容:推送公享定时任务v1.1
This commit is contained in:
陈绍鑫 2025-12-28 15:29:55 +08:00
parent c9ebddc486
commit 5c212e93bd
1 changed files with 79 additions and 7 deletions

View File

@ -14,6 +14,7 @@ import kd.bos.orm.query.QFilter;
import kd.bos.schedule.executor.AbstractTask; import kd.bos.schedule.executor.AbstractTask;
import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.QueryServiceHelper; import kd.bos.servicehelper.QueryServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.drp.mdr.api.Api; import kd.drp.mdr.api.Api;
import kd.tmc.fbp.common.util.EmptyUtil; import kd.tmc.fbp.common.util.EmptyUtil;
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.CloseableHttpResponse;
@ -41,6 +42,7 @@ import java.net.URL;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -54,13 +56,10 @@ import java.util.stream.Collectors;
public class SharePushTaskPlugin extends AbstractTask { public class SharePushTaskPlugin extends AbstractTask {
private static final Log logger = LogFactory.getLog(SharePushTaskPlugin.class); private static final Log logger = LogFactory.getLog(SharePushTaskPlugin.class);
// 日期格式化器
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
@Override @Override
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException { public void execute(RequestContext requestContext, Map<String, Object> 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,"司库电子回单推送共享系统"); QFilter qFilter = new QFilter("shkd_name", QCP.equals,"司库电子回单推送共享系统");
DynamicObject shkd_apimappingid = BusinessDataServiceHelper.loadSingle("shkd_apimapping", "id", qFilter.toArray()); DynamicObject shkd_apimappingid = BusinessDataServiceHelper.loadSingle("shkd_apimapping", "id", qFilter.toArray());
@ -69,6 +68,27 @@ public class SharePushTaskPlugin extends AbstractTask {
return; return;
} }
DynamicObject shkd_apimapping = BusinessDataServiceHelper.loadSingle(shkd_apimappingid.getLong("id"), "shkd_apimapping"); 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"); String shkd_url = shkd_apimapping.getString("shkd_url");
Map<String, Object> headMap = new HashMap<>(); Map<String, Object> headMap = new HashMap<>();
DynamicObjectCollection shkdHeade = shkd_apimapping.getDynamicObjectCollection("shkd_heade"); DynamicObjectCollection shkdHeade = shkd_apimapping.getDynamicObjectCollection("shkd_heade");
@ -80,12 +100,64 @@ public class SharePushTaskPlugin extends AbstractTask {
for (DynamicObject bei_elecreceiptid : bei_elecreceiptids) { for (DynamicObject bei_elecreceiptid : bei_elecreceiptids) {
DynamicObject bei_elecreceipt = BusinessDataServiceHelper.loadSingle(bei_elecreceiptid.getLong("id"), "bei_elecreceipt"); DynamicObject bei_elecreceipt = BusinessDataServiceHelper.loadSingle(bei_elecreceiptid.getLong("id"), "bei_elecreceipt");
String saveRequestBody=getJSON(bei_elecreceipt,shkd_mapping);//请求json 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); 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<String, Object> 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){ private String getJSON(DynamicObject bei_elecreceipt,DynamicObjectCollection shkd_mapping){
JSONObject otherIsJson = new JSONObject(); JSONObject otherIsJson = new JSONObject();
for (DynamicObject map : shkd_mapping) { for (DynamicObject map : shkd_mapping) {