提交 f5e38c55 authored 作者: 李炎's avatar 李炎

添加通用分页,字段过滤

上级 871edaaa
...@@ -8,6 +8,7 @@ import com.system.dao.InitConnectParamMapper; ...@@ -8,6 +8,7 @@ import com.system.dao.InitConnectParamMapper;
import com.system.exception.KingDeeConnectException; import com.system.exception.KingDeeConnectException;
import com.system.model.DelayedElement; import com.system.model.DelayedElement;
import com.system.model.InitConnectParam; import com.system.model.InitConnectParam;
import com.system.transfer.kingdee.KingDeeFilterStringVo;
import com.system.transfer.kingdee.KingDeeLimitVo; import com.system.transfer.kingdee.KingDeeLimitVo;
import com.system.utils.HttpUtil; import com.system.utils.HttpUtil;
import com.system.utils.JsonUtil; import com.system.utils.JsonUtil;
...@@ -118,6 +119,22 @@ public class KingDeeApi { ...@@ -118,6 +119,22 @@ public class KingDeeApi {
return ""; return "";
} }
private String filterString(List<KingDeeFilterStringVo> filterStringList) {
StringBuilder where = new StringBuilder();
for (KingDeeFilterStringVo filterStringVo : filterStringList) {
if (StringUtil.isNotBlank(where)) {
where.append(" AND ").append(filterStringVo.getFieldName()).append(filterStringVo.getCompare()).append("'").append(filterStringVo.getValue()).append("'");
} else {
where = new StringBuilder(filterStringVo.getFieldName() + filterStringVo.getCompare() + "'" + filterStringVo.getValue() + "'");
}
}
if (StringUtil.isNotBlank(where.toString())) {
return "\"FilterString\":\"" + where.toString() + "\"";
}
return "";
}
private String stringWhere(Map<String, String> map) { private String stringWhere(Map<String, String> map) {
StringBuilder where = new StringBuilder(); StringBuilder where = new StringBuilder();
for (Map.Entry<String, String> entry : map.entrySet()) { for (Map.Entry<String, String> entry : map.entrySet()) {
...@@ -136,11 +153,10 @@ public class KingDeeApi { ...@@ -136,11 +153,10 @@ public class KingDeeApi {
/** /**
* 查询单据体分页 * 查询单据体分页
*/ */
public List<List<Object>> getKingDeeDataLimit(Map<String, String> config, String queueId, Map<String, String> key, Map<String, String> where, KingDeeLimitVo limit) { public List<List<Object>> getKingDeeDataLimit(Map<String, String> config, String queueId, Map<String, String> key, List<KingDeeFilterStringVo> filterStringList, KingDeeLimitVo limit) {
String requesqt = "{\"FormId\":\"" + config.get("sFormId") + "\"," + stringKey(key) + "," + stringWhere(where) + ","+stringLimit(limit)+"}";
try { try {
if (this.flag) { if (this.flag) {
String request = "{\"FormId\":\"" + config.get("sFormId") + "\"," + stringKey(key) + "," + stringWhere(where) + ","+stringLimit(limit)+"}"; String request = "{\"FormId\":\"" + config.get("sFormId") + "\"," + stringKey(key) + "," + filterString(filterStringList) + "," + stringLimit(limit) + "}";
System.out.println("================content==============" + request + "=================content==================="); System.out.println("================content==============" + request + "=================content===================");
List<List<Object>> response = kingDeeK3CloudApi.executeBillQuery(request); List<List<Object>> response = kingDeeK3CloudApi.executeBillQuery(request);
//记录查询金蝶云数据的请求及响应信息 //记录查询金蝶云数据的请求及响应信息
...@@ -164,11 +180,34 @@ public class KingDeeApi { ...@@ -164,11 +180,34 @@ public class KingDeeApi {
/** /**
* 查询单据体 * 查询单据体
*/ */
public List<List<Object>> getKingDeeData(Map<String, String> config, String queueId, Map<String, String> key, List<KingDeeFilterStringVo> filterStringList) {
try {
if (this.flag) {
String request = "{\"FormId\":\"" + config.get("sFormId") + "\"," + stringKey(key) + "," + filterString(filterStringList) + "}";
List<List<Object>> response = kingDeeK3CloudApi.executeBillQuery(request);
//记录查询金蝶云数据的请求及响应信息
if (StringUtil.isNotBlank(config.get(Constants.NAME))) {
productLogUtil.productSyncLogCreate(Integer.valueOf(config.get("productId")), queueId, config.get("name"), config.get("docType"), config.get("direction"), request, response);
}
return response;
} else {
throw new KingDeeConnectException(LOGIN_MESSAGE);
}
} catch (Exception e) {
e.printStackTrace();
if (StringUtil.isNotNull(config.get(Constants.NAME))) {
productLogUtil.productSyncErrorLogCreate(Integer.valueOf(config.get("productId")), queueId, config.get("name"), config.get("docType"), config.get("direction"), "", LOGIN_MESSAGE);
}
throw new KingDeeConnectException(LOGIN_MESSAGE);
}
}
/**
* 查询单据体
*/
public List<List<Object>> getKingDeeData(Map<String, String> config, String queueId, Map<String, String> key, Map<String, String> where) { public List<List<Object>> getKingDeeData(Map<String, String> config, String queueId, Map<String, String> key, Map<String, String> where) {
try { try {
if (this.flag) { if (this.flag) {
String request = "{\"FormId\":\"" + config.get("sFormId") + "\"," + stringKey(key) + "," + stringWhere(where) + "}"; String request = "{\"FormId\":\"" + config.get("sFormId") + "\"," + stringKey(key) + "," + stringWhere(where) + "}";
System.out.println("================content==============" + request + "=================content===================");
List<List<Object>> response = kingDeeK3CloudApi.executeBillQuery(request); List<List<Object>> response = kingDeeK3CloudApi.executeBillQuery(request);
//记录查询金蝶云数据的请求及响应信息 //记录查询金蝶云数据的请求及响应信息
if (StringUtil.isNotBlank(config.get(Constants.NAME))) { if (StringUtil.isNotBlank(config.get(Constants.NAME))) {
......
...@@ -39,7 +39,11 @@ public class KingDeeGetController { ...@@ -39,7 +39,11 @@ public class KingDeeGetController {
public void kingDeeDataExport(@RequestBody @Validated KingDeeDataListInVo inVo, HttpServletResponse response) throws IOException { public void kingDeeDataExport(@RequestBody @Validated KingDeeDataListInVo inVo, HttpServletResponse response) throws IOException {
try { try {
ExportModel export = kingDeeCommonGetService.export(inVo); ExportModel export = new ExportModel();
export.setName(inVo.getDocType());
export.setDataList(dataList());
export.setHead(head());
// ExportModel export = kingDeeCommonGetService.export(inVo);
ExcelUtil.export(export, response); ExcelUtil.export(export, response);
} catch (Exception e) { } catch (Exception e) {
// 重置response // 重置response
...@@ -53,13 +57,42 @@ public class KingDeeGetController { ...@@ -53,13 +57,42 @@ public class KingDeeGetController {
} }
} }
private List<List<String>> head() {
List<List<String>> list = new ArrayList<>();
List<String> head0 = new ArrayList<>();
head0.add("字符串" + System.currentTimeMillis());
List<String> head1 = new ArrayList<>();
head1.add("数字" + System.currentTimeMillis());
List<String> head2 = new ArrayList<>();
head2.add("日期" + System.currentTimeMillis());
list.add(head0);
list.add(head1);
list.add(head2);
return list;
}
private List<List<Object>> dataList() {
List<List<Object>> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
List<Object> data = new ArrayList<>();
data.add("字符串" + i);
data.add(new Date());
data.add(0.56);
list.add(data);
}
return list;
}
@ApiOperation("金蝶通用导出All") @ApiOperation("金蝶通用导出All")
@PostMapping("/kingdee/data/export/all") @PostMapping("/kingdee/data/export/all")
public void kingDeeDataExportAll(@RequestBody @Validated KingDeeDataListInVo inVo, HttpServletResponse response) throws IOException { public void kingDeeDataExportAll(@RequestBody @Validated KingDeeDataListInVo inVo, HttpServletResponse response) throws IOException {
inVo.setAll(true); inVo.setAll(true);
try { try {
ExportModel export = kingDeeCommonGetService.export(inVo); // ExportModel export = kingDeeCommonGetService.export(inVo);
ExportModel export = new ExportModel();
export.setName(inVo.getDocType());
export.setDataList(dataList());
export.setHead(head());
ExcelUtil.export(export, response); ExcelUtil.export(export, response);
} catch (Exception e) { } catch (Exception e) {
// 重置response // 重置response
......
...@@ -2,6 +2,7 @@ package com.system.kingdee; ...@@ -2,6 +2,7 @@ package com.system.kingdee;
import com.system.api.KingDeeApi; import com.system.api.KingDeeApi;
import com.system.constants.KingDeeCommonSyncConstants; import com.system.constants.KingDeeCommonSyncConstants;
import com.system.transfer.kingdee.KingDeeFilterStringVo;
import com.system.transfer.kingdee.KingDeeLimitVo; import com.system.transfer.kingdee.KingDeeLimitVo;
import com.system.utils.KingDeeUtil; import com.system.utils.KingDeeUtil;
import com.system.utils.StringUtil; import com.system.utils.StringUtil;
...@@ -27,9 +28,9 @@ public class KingDeeCommonGetApi { ...@@ -27,9 +28,9 @@ public class KingDeeCommonGetApi {
return encapsulationIms(result, fieldList, config.get("mesEntryName"), Integer.valueOf(config.get("encapsulationFormat"))); return encapsulationIms(result, fieldList, config.get("mesEntryName"), Integer.valueOf(config.get("encapsulationFormat")));
} }
public List<Map<String, Object>> getKingDeeDataLimit(Map<String, String> config, String queueId, List<Map<String, String>> fieldList, Map<String, String> where, KingDeeLimitVo limit) { public List<Map<String, Object>> getKingDeeDataLimit(Map<String, String> config, String queueId, List<Map<String, String>> fieldList, List<KingDeeFilterStringVo> filterStringList, KingDeeLimitVo limit) {
Map<String, String> key = KingDeeCommonSyncConstants.encapsulationKingDeeField(fieldList); Map<String, String> key = KingDeeCommonSyncConstants.encapsulationKingDeeField(fieldList);
List<List<Object>> result = kingDeeApi.getKingDeeDataLimit(config, queueId, key, where, limit); List<List<Object>> result = kingDeeApi.getKingDeeDataLimit(config, queueId, key, filterStringList, limit);
return encapsulationIms(result, fieldList, config.get("mesEntryName"), Integer.valueOf(config.get("encapsulationFormat"))); return encapsulationIms(result, fieldList, config.get("mesEntryName"), Integer.valueOf(config.get("encapsulationFormat")));
} }
...@@ -38,10 +39,14 @@ public class KingDeeCommonGetApi { ...@@ -38,10 +39,14 @@ public class KingDeeCommonGetApi {
List<List<Object>> result = kingDeeApi.getKingDeeData(config, queueId, key, where); List<List<Object>> result = kingDeeApi.getKingDeeData(config, queueId, key, where);
return result; return result;
} }
public List<List<Object>> getKingDeeList(Map<String, String> config, String queueId, List<Map<String, String>> fieldList, List<KingDeeFilterStringVo> filterStringList) {
public List<List<Object>> getKingDeeListLimit(Map<String, String> config, String queueId, List<Map<String, String>> fieldList, Map<String, String> where, KingDeeLimitVo limit) { Map<String, String> key = KingDeeCommonSyncConstants.encapsulationKingDeeField(fieldList);
List<List<Object>> result = kingDeeApi.getKingDeeData(config, queueId, key, filterStringList);
return result;
}
public List<List<Object>> getKingDeeListLimit(Map<String, String> config, String queueId, List<Map<String, String>> fieldList, List<KingDeeFilterStringVo> filterStringList, KingDeeLimitVo limit) {
Map<String, String> key = KingDeeCommonSyncConstants.encapsulationKingDeeField(fieldList); Map<String, String> key = KingDeeCommonSyncConstants.encapsulationKingDeeField(fieldList);
List<List<Object>> result = kingDeeApi.getKingDeeDataLimit(config, queueId, key, where, limit); List<List<Object>> result = kingDeeApi.getKingDeeDataLimit(config, queueId, key, filterStringList, limit);
return result; return result;
} }
......
...@@ -7,6 +7,7 @@ import com.system.framework.core.exception.StarBosException; ...@@ -7,6 +7,7 @@ import com.system.framework.core.exception.StarBosException;
import com.system.kingdee.KingDeeCommonGetApi; import com.system.kingdee.KingDeeCommonGetApi;
import com.system.serivce.IKingDeeCommonGetService; import com.system.serivce.IKingDeeCommonGetService;
import com.system.transfer.kingdee.KingDeeDataListInVo; import com.system.transfer.kingdee.KingDeeDataListInVo;
import com.system.transfer.kingdee.KingDeeFilterStringVo;
import com.system.transfer.kingdee.KingDeeLimitVo; import com.system.transfer.kingdee.KingDeeLimitVo;
import com.system.transfer.response.RestResponse; import com.system.transfer.response.RestResponse;
import com.system.transfer.temp.KingDeeCommonGetListOutVo; import com.system.transfer.temp.KingDeeCommonGetListOutVo;
...@@ -56,16 +57,20 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService { ...@@ -56,16 +57,20 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService {
List<Object> tempList = JsonUtil.toList(config.get("kingDeeFiledDetail"), Object.class); List<Object> tempList = JsonUtil.toList(config.get("kingDeeFiledDetail"), Object.class);
List<Map<String, String>> fieldList = tempList.stream().map(m -> JsonUtil.toMap(JsonUtil.toString(m), String.class, String.class)).collect(Collectors.toList()); List<Map<String, String>> fieldList = tempList.stream().map(m -> JsonUtil.toMap(JsonUtil.toString(m), String.class, String.class)).collect(Collectors.toList());
Map<String, String> where = new HashMap<>(5); List<KingDeeFilterStringVo> filterStringList = new ArrayList<>();
this.setWhereDefaultRule(inVo.getDocType(), filterStringList);
if (!CollectionUtils.isEmpty(inVo.getData())) { if (!CollectionUtils.isEmpty(inVo.getData())) {
for (Map.Entry<String, Object> entry : inVo.getData().entrySet()) { for (Map.Entry<String, Object> entry : inVo.getData().entrySet()) {
where.put(entry.getKey(), String.valueOf(entry.getValue())); KingDeeFilterStringVo filterString = new KingDeeFilterStringVo();
filterString.setFieldName(entry.getKey());
filterString.setValue(String.valueOf(entry.getValue()));
filterStringList.add(filterString);
} }
} }
;
this.setWhereDefaultRule(inVo.getDocType(), where); List<Map<String, Object>> response = kingDeeCommonGetApi.getKingDeeDataLimit(config, queueId, fieldList, filterStringList, new KingDeeLimitVo(inVo.getPageNo(), inVo.getPageSize()));
List<Map<String, Object>> response = kingDeeCommonGetApi.getKingDeeData(config, queueId, fieldList, where);
long costTime = System.currentTimeMillis() - start; long costTime = System.currentTimeMillis() - start;
if (!CollectionUtils.isEmpty(response)) { if (!CollectionUtils.isEmpty(response)) {
String temp = "false"; String temp = "false";
...@@ -78,7 +83,8 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService { ...@@ -78,7 +83,8 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService {
KingDeeCommonGetListOutVo outVo = new KingDeeCommonGetListOutVo(); KingDeeCommonGetListOutVo outVo = new KingDeeCommonGetListOutVo();
outVo.setTotal(response.size()); outVo.setTotal(response.size());
outVo.setRecords(response.stream().skip((inVo.getPageNo() - 1) * inVo.getPageSize()).limit(inVo.getPageSize()).collect(Collectors.toList())); outVo.setRecords(response);
// outVo.setRecords(response.stream().skip((inVo.getPageNo() - 1) * inVo.getPageSize()).limit(inVo.getPageSize()).collect(Collectors.toList()));
return RestResponse.success(outVo); return RestResponse.success(outVo);
} }
...@@ -95,16 +101,26 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService { ...@@ -95,16 +101,26 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService {
List<Object> tempList = JsonUtil.toList(config.get("kingDeeFiledDetail"), Object.class); List<Object> tempList = JsonUtil.toList(config.get("kingDeeFiledDetail"), Object.class);
List<Map<String, String>> fieldList = tempList.stream().map(m -> JsonUtil.toMap(JsonUtil.toString(m), String.class, String.class)).collect(Collectors.toList()); List<Map<String, String>> fieldList = tempList.stream().map(m -> JsonUtil.toMap(JsonUtil.toString(m), String.class, String.class)).collect(Collectors.toList());
Map<String, String> where = new HashMap<>(5); List<KingDeeFilterStringVo> filterStringList = new ArrayList<>();
this.setWhereDefaultRule(inVo.getDocType(), filterStringList);
if (!CollectionUtils.isEmpty(inVo.getData())) { if (!CollectionUtils.isEmpty(inVo.getData())) {
for (Map.Entry<String, Object> entry : inVo.getData().entrySet()) { for (Map.Entry<String, Object> entry : inVo.getData().entrySet()) {
where.put(entry.getKey(), String.valueOf(entry.getValue())); KingDeeFilterStringVo filterString = new KingDeeFilterStringVo();
filterString.setFieldName(entry.getKey());
filterString.setValue(String.valueOf(entry.getValue()));
filterStringList.add(filterString);
} }
} }
this.setWhereDefaultRule(inVo.getDocType(), where); List<List<Object>> response = new ArrayList<>();
if (!inVo.getAll()) {
response = kingDeeCommonGetApi.getKingDeeListLimit(config, queueId, fieldList, filterStringList, new KingDeeLimitVo(inVo.getPageNo(), inVo.getPageSize()));
} else {
response = kingDeeCommonGetApi.getKingDeeList(config, queueId, fieldList, filterStringList);
}
List<List<Object>> response = kingDeeCommonGetApi.getKingDeeList(config, queueId, fieldList, where);
long costTime = System.currentTimeMillis() - start; long costTime = System.currentTimeMillis() - start;
if (!CollectionUtils.isEmpty(response)) { if (!CollectionUtils.isEmpty(response)) {
...@@ -120,12 +136,8 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService { ...@@ -120,12 +136,8 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService {
add(m); add(m);
}}).collect(Collectors.toList()); }}).collect(Collectors.toList());
List<List<Object>> dataList = response;
if (!inVo.getAll()) {
dataList = response.stream().skip((inVo.getPageNo() - 1) * inVo.getPageSize()).limit(inVo.getPageSize()).collect(Collectors.toList());
}
List<List<Object>> dataList = response;
ExportModel exportModel = new ExportModel(); ExportModel exportModel = new ExportModel();
exportModel.setName(inVo.getDocType()); exportModel.setName(inVo.getDocType());
exportModel.setHead(head); exportModel.setHead(head);
...@@ -138,11 +150,15 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService { ...@@ -138,11 +150,15 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService {
* 注:此为该项目应急用使用,建议后续扩展 * 注:此为该项目应急用使用,建议后续扩展
* *
* @param docType * @param docType
* @param where * @param filterStringList
*/ */
private void setWhereDefaultRule(String docType, Map<String, String> where) { private void setWhereDefaultRule(String docType, List<KingDeeFilterStringVo> filterStringList) {
if ("INVENTORY".equals(docType)) { if ("INVENTORY".equals(docType)) {
where.put("FBaseQty" + "!", "0"); KingDeeFilterStringVo filterString = new KingDeeFilterStringVo();
filterString.setFieldName("FBaseQty");
filterString.setCompare("!=");
filterString.setValue("0");
filterStringList.add(filterString);
} }
} }
} }
package com.system.transfer.kingdee;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
//@Data
public class KingDeeFilterStringVo {
private String fieldName;
private String compare;
private String value;
public String getFieldName() {
return fieldName;
}
public void setFieldName(String fieldName) {
this.fieldName = fieldName;
}
public String getCompare() {
if (StringUtils.isEmpty(this.compare)) {
this.compare = "like";
}
return compare;
}
public void setCompare(String compare) {
if (StringUtils.isEmpty(compare)) {
this.compare = "like";
} else {
this.compare = compare;
}
}
public String getValue() {
if ("like".equals(this.compare)) {
if (!this.value.startsWith("%")) {
this.value = "%" + this.value;
}
if (!this.value.endsWith("%")) {
this.value = this.value + "%";
}
}
return value;
}
public void setValue(String value) {
this.value = value;
}
}
...@@ -17,4 +17,12 @@ public class KingDeeLimitVo { ...@@ -17,4 +17,12 @@ public class KingDeeLimitVo {
* 每页数量 * 每页数量
*/ */
private Integer pageSize; private Integer pageSize;
public KingDeeLimitVo() {
}
public KingDeeLimitVo(Integer pageNo, Integer pageSize) {
this.pageNo = pageNo;
this.pageSize = pageSize;
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论