提交人:陈绍鑫

日期: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.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<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,"司库电子回单推送共享系统");
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<String, Object> headMap = new HashMap<>();
DynamicObjectCollection shkdHeade = shkd_apimapping.getDynamicObjectCollection("shkd_heade");
@ -80,11 +100,63 @@ 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<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){
JSONObject otherIsJson = new JSONObject();