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

新增导出,解决数据错误

上级 2f5482bc
...@@ -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.KingDeeLimitVo;
import com.system.utils.HttpUtil; import com.system.utils.HttpUtil;
import com.system.utils.JsonUtil; import com.system.utils.JsonUtil;
import com.system.utils.ProductLogUtil; import com.system.utils.ProductLogUtil;
...@@ -96,6 +97,12 @@ public class KingDeeApi { ...@@ -96,6 +97,12 @@ public class KingDeeApi {
this.thirdPartyUrl = thirdPartyUrl; this.thirdPartyUrl = thirdPartyUrl;
} }
private String stringLimit(KingDeeLimitVo limit) {
return "\"StartRow\": " + limit.getPageNo() + ",\n" +
" \"Limit\": " + limit.getPageSize();
}
private String stringKey(Map<String, String> map) { private String stringKey(Map<String, String> map) {
StringBuilder keys = new StringBuilder(); StringBuilder keys = new StringBuilder();
for (Map.Entry<String, String> entry : map.entrySet()) { for (Map.Entry<String, String> entry : map.entrySet()) {
...@@ -121,18 +128,46 @@ public class KingDeeApi { ...@@ -121,18 +128,46 @@ public class KingDeeApi {
} }
} }
if (StringUtil.isNotBlank(where.toString())) { if (StringUtil.isNotBlank(where.toString())) {
return ",\"FilterString\":\"" + where.toString() + "\""; return "\"FilterString\":\"" + where.toString() + "\"";
} }
return ""; return "";
} }
/** /**
* 查询单据体分页
*/
public List<List<Object>> getKingDeeDataLimit(Map<String, String> config, String queueId, Map<String, String> key, Map<String, String> where, KingDeeLimitVo limit) {
String requesqt = "{\"FormId\":\"" + config.get("sFormId") + "\"," + stringKey(key) + "," + stringWhere(where) + ","+stringLimit(limit)+"}";
try {
if (this.flag) {
String request = "{\"FormId\":\"" + config.get("sFormId") + "\"," + stringKey(key) + "," + stringWhere(where) + ","+stringLimit(limit)+"}";
System.out.println("================content==============" + request + "=================content===================");
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==================="); System.out.println("================content==============" + request + "=================content===================");
List<List<Object>> response = kingDeeK3CloudApi.executeBillQuery(request); List<List<Object>> response = kingDeeK3CloudApi.executeBillQuery(request);
//记录查询金蝶云数据的请求及响应信息 //记录查询金蝶云数据的请求及响应信息
...@@ -158,7 +193,7 @@ public class KingDeeApi { ...@@ -158,7 +193,7 @@ public class KingDeeApi {
public List<List<Object>> synchronization(Map<String, String> config, String queueId, Map<String, String> key, Map<String, String> where) { public List<List<Object>> synchronization(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==================="); System.out.println("================content==============" + request + "=================content===================");
List<List<Object>> response = kingDeeK3CloudApi.executeBillQuery(request); List<List<Object>> response = kingDeeK3CloudApi.executeBillQuery(request);
//记录查询金蝶云数据的请求及响应信息 //记录查询金蝶云数据的请求及响应信息
......
...@@ -10,15 +10,11 @@ import io.swagger.annotations.Api; ...@@ -10,15 +10,11 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap; import java.util.*;
import java.util.Map;
/** /**
* @author Inori * @author Inori
...@@ -38,8 +34,8 @@ public class KingDeeGetController { ...@@ -38,8 +34,8 @@ public class KingDeeGetController {
return kingDeeCommonGetService.kingDeeDataList(inVo); return kingDeeCommonGetService.kingDeeDataList(inVo);
} }
@ApiOperation("金蝶通用查询") @ApiOperation("金蝶通用导出")
@PostMapping("/kingdee/data/export") @PostMapping("/kingdee/data/export/list")
public void kingDeeDataExport(@RequestBody @Validated KingDeeDataListInVo inVo, HttpServletResponse response) throws IOException { public void kingDeeDataExport(@RequestBody @Validated KingDeeDataListInVo inVo, HttpServletResponse response) throws IOException {
try { try {
...@@ -57,7 +53,8 @@ public class KingDeeGetController { ...@@ -57,7 +53,8 @@ public class KingDeeGetController {
} }
} }
@ApiOperation("金蝶通用查询")
@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);
......
...@@ -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.KingDeeLimitVo;
import com.system.utils.KingDeeUtil; import com.system.utils.KingDeeUtil;
import com.system.utils.StringUtil; import com.system.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -26,12 +27,24 @@ public class KingDeeCommonGetApi { ...@@ -26,12 +27,24 @@ 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) {
Map<String, String> key = KingDeeCommonSyncConstants.encapsulationKingDeeField(fieldList);
List<List<Object>> result = kingDeeApi.getKingDeeDataLimit(config, queueId, key, where, limit);
return encapsulationIms(result, fieldList, config.get("mesEntryName"), Integer.valueOf(config.get("encapsulationFormat")));
}
public List<List<Object>> getKingDeeList(Map<String, String> config, String queueId, List<Map<String, String>> fieldList, Map<String, String> where) { public List<List<Object>> getKingDeeList(Map<String, String> config, String queueId, List<Map<String, String>> fieldList, Map<String, String> where) {
Map<String, String> key = KingDeeCommonSyncConstants.encapsulationKingDeeField(fieldList); Map<String, String> key = KingDeeCommonSyncConstants.encapsulationKingDeeField(fieldList);
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>> 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.getKingDeeDataLimit(config, queueId, key, where, limit);
return result;
}
/** /**
* 封装第三方字段 * 封装第三方字段
*/ */
......
...@@ -11,12 +11,12 @@ import org.springframework.web.socket.server.standard.ServerEndpointExporter; ...@@ -11,12 +11,12 @@ import org.springframework.web.socket.server.standard.ServerEndpointExporter;
* @author daiyg * @author daiyg
* @date 2021/8/24 17:19 * @date 2021/8/24 17:19
*/ */
@Service //@Service
@Configuration //@Configuration
@EnableWebSocket //@EnableWebSocket
public class WebSocketConfig { public class WebSocketConfig {
@Bean // @Bean
public ServerEndpointExporter serverEndpointExporter(){ public ServerEndpointExporter serverEndpointExporter(){
return new ServerEndpointExporter(); return new ServerEndpointExporter();
} }
......
...@@ -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.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;
import com.system.utils.JsonUtil; import com.system.utils.JsonUtil;
...@@ -44,6 +45,7 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService { ...@@ -44,6 +45,7 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService {
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
String queueId = inVo.getQueueId(); String queueId = inVo.getQueueId();
Map<String, String> config = kingDeeCommonGetConstants.get(inVo.getDocType()); Map<String, String> config = kingDeeCommonGetConstants.get(inVo.getDocType());
if (CollectionUtils.isEmpty(config)) { if (CollectionUtils.isEmpty(config)) {
return RestResponse.fail("自定义查询失败! docType为: " + inVo.getDocType() + " 的表单ERP-MES标识不存在"); return RestResponse.fail("自定义查询失败! docType为: " + inVo.getDocType() + " 的表单ERP-MES标识不存在");
...@@ -101,7 +103,9 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService { ...@@ -101,7 +103,9 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService {
} }
this.setWhereDefaultRule(inVo.getDocType(), where); this.setWhereDefaultRule(inVo.getDocType(), where);
List<List<Object>> response = kingDeeCommonGetApi.getKingDeeList(config, queueId, fieldList, where); 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)) {
String temp = "false"; String temp = "false";
...@@ -112,11 +116,11 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService { ...@@ -112,11 +116,11 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService {
} }
} }
Map<String, String> key = KingDeeCommonSyncConstants.encapsulationThirdPartyFieldCn(fieldList); Map<String, String> key = KingDeeCommonSyncConstants.encapsulationThirdPartyFieldCn(fieldList);
List<List<String>> head = key.keySet().stream().map(m -> new ArrayList() {{ List<List<String>> head = key.keySet().stream().map(m -> new ArrayList<String>() {{
add(m); add(m);
}}).collect(Collectors.toList()); }}).collect(Collectors.toList());
List<List<Object>> dataList = response;
List<List<Object>> dataList = new ArrayList<>();
if (!inVo.getAll()) { if (!inVo.getAll()) {
dataList = response.stream().skip((inVo.getPageNo() - 1) * inVo.getPageSize()).limit(inVo.getPageSize()).collect(Collectors.toList()); dataList = response.stream().skip((inVo.getPageNo() - 1) * inVo.getPageSize()).limit(inVo.getPageSize()).collect(Collectors.toList());
} }
...@@ -137,7 +141,7 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService { ...@@ -137,7 +141,7 @@ public class KingDeeCommonGetServiceImpl implements IKingDeeCommonGetService {
*/ */
private void setWhereDefaultRule(String docType, Map<String, String> where) { private void setWhereDefaultRule(String docType, Map<String, String> where) {
if ("INVENTORY".equals(docType)) { if ("INVENTORY".equals(docType)) {
where.put("FQty" + "!", "0"); where.put("FBaseQty" + "!", "0");
} }
} }
} }
package com.system.transfer.kingdee;
import lombok.Data;
/**
*
*/
@Data
public class KingDeeLimitVo {
/**
* 页码
*/
private Integer pageNo;
/**
* 每页数量
*/
private Integer pageSize;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论