|
@@ -1,5 +1,6 @@
|
|
|
package cn.datax.service.data.market.service.impl;
|
|
|
|
|
|
+import cn.datax.commo.office.word.WordUtil;
|
|
|
import cn.datax.common.base.BaseServiceImpl;
|
|
|
import cn.datax.common.core.DataConstant;
|
|
|
import cn.datax.common.core.RedisConstant;
|
|
@@ -28,9 +29,15 @@ import cn.datax.service.data.metadata.api.entity.MetadataColumnEntity;
|
|
|
import cn.datax.service.data.metadata.api.entity.MetadataSourceEntity;
|
|
|
import cn.datax.service.data.metadata.api.entity.MetadataTableEntity;
|
|
|
import cn.datax.service.data.metadata.api.enums.DataLevel;
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.date.DatePattern;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.aspose.words.Document;
|
|
|
+import com.aspose.words.MailMerge;
|
|
|
+import com.aspose.words.net.System.Data.DataRow;
|
|
|
+import com.aspose.words.net.System.Data.DataSet;
|
|
|
+import com.aspose.words.net.System.Data.DataTable;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
@@ -67,7 +74,6 @@ import java.time.LocalDateTime;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.HashSet;
|
|
|
-import java.util.LinkedList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Objects;
|
|
@@ -107,6 +113,65 @@ public class DataApiServiceImpl extends BaseServiceImpl<DataApiDao, DataApiEntit
|
|
|
@Autowired
|
|
|
private RedisService redisService;
|
|
|
|
|
|
+ @Override
|
|
|
+ public Document wordDataApi(String id) throws Exception {
|
|
|
+ DataApiEntity table = super.getById(id);
|
|
|
+
|
|
|
+ DataTable columnTable = new DataTable("ReqParamList");
|
|
|
+ columnTable.getColumns().add("paramName");
|
|
|
+ columnTable.getColumns().add("paramComment");
|
|
|
+ columnTable.getColumns().add("paramType");
|
|
|
+ columnTable.getColumns().add("nullable");
|
|
|
+ columnTable.getColumns().add("exampleValue");
|
|
|
+ List<ReqParam> reqParams = table.getReqParams();
|
|
|
+ if(CollUtil.isNotEmpty(reqParams)){
|
|
|
+ for (int i = 0; i < reqParams.size(); i++) {
|
|
|
+ DataRow row = columnTable.newRow();
|
|
|
+ ReqParam reqParam = objectMapper.convertValue(reqParams.get(i), ReqParam.class);
|
|
|
+ row.set(0, reqParam.getParamName());
|
|
|
+ row.set(1, reqParam.getParamComment());
|
|
|
+ row.set(2, reqParam.getParamType());
|
|
|
+ row.set(3, reqParam.getNullable());
|
|
|
+ row.set(4, reqParam.getExampleValue());
|
|
|
+ columnTable.getRows().add(row);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ DataTable columnTableres = new DataTable("ResParamList");
|
|
|
+ columnTableres.getColumns().add("fieldName");
|
|
|
+ columnTableres.getColumns().add("dataType");
|
|
|
+ columnTableres.getColumns().add("fieldComment");
|
|
|
+ columnTableres.getColumns().add("exampleValue");
|
|
|
+ List<ResParam> resParams = table.getResParams();
|
|
|
+ if(CollUtil.isNotEmpty(resParams)){
|
|
|
+ for (int i = 0; i < resParams.size(); i++) {
|
|
|
+ DataRow row = columnTableres.newRow();
|
|
|
+ ResParam resParam = objectMapper.convertValue(resParams.get(i), ResParam.class);
|
|
|
+ row.set(0, resParam.getFieldName());
|
|
|
+ row.set(1, resParam.getDataType());
|
|
|
+ row.set(2, resParam.getFieldComment());
|
|
|
+ row.set(3, resParam.getExampleValue());
|
|
|
+ columnTableres.getRows().add(row);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ DataSet dataSet = new DataSet();
|
|
|
+ dataSet.getTables().add(columnTable);
|
|
|
+ dataSet.getTables().add(columnTableres);
|
|
|
+
|
|
|
+ ClassPathResource classPathResource = new ClassPathResource("templates/api_1.0.0.docx");
|
|
|
+ InputStream inputStream = classPathResource.getInputStream();
|
|
|
+ Document doc = WordUtil.getInstance().getDocument(inputStream);
|
|
|
+
|
|
|
+ String[] fieldNames = new String[] {"apiName","apiVersion","reqMethod","resType","apiUrl","remark"};
|
|
|
+ Object[] fieldValues = new Object[] {table.getApiName(),table.getApiVersion(),table.getReqMethod(),table.getResType(),table.getApiUrl(),table.getRemark()};
|
|
|
+ MailMerge mailMerge = doc.getMailMerge();
|
|
|
+ mailMerge.execute(fieldNames, fieldValues);
|
|
|
+ mailMerge.executeWithRegions(dataSet);
|
|
|
+ WordUtil.getInstance().insertWatermarkText(doc, SecurityUtil.getUserName());
|
|
|
+ return doc;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void saveDataApi(DataApiDto dataApiDto) {
|