|
@@ -16,17 +16,15 @@
|
|
|
*/
|
|
|
package org.springblade.manager.service.impl;
|
|
|
|
|
|
-import cn.hutool.core.date.StopWatch;
|
|
|
-import cn.hutool.log.StaticLog;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.mixsmart.utils.ListUtils;
|
|
|
-import com.mixsmart.utils.StringUtils;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import lombok.Data;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
import org.springblade.business.feign.InformationQueryClient;
|
|
|
import org.springblade.common.utils.SnowFlakeUtil;
|
|
|
import org.springblade.core.oss.model.BladeFile;
|
|
@@ -35,15 +33,12 @@ import org.springblade.core.tool.node.ForestNodeMerger;
|
|
|
import org.springblade.core.tool.utils.Func;
|
|
|
import org.springblade.core.tool.utils.StringPool;
|
|
|
import org.springblade.manager.bean.TableInfo;
|
|
|
-import org.springblade.manager.dto.ElementData;
|
|
|
import org.springblade.manager.dto.FormData;
|
|
|
import org.springblade.manager.entity.ExcelTab;
|
|
|
import org.springblade.manager.entity.Formula;
|
|
|
import org.springblade.manager.entity.WbsTree;
|
|
|
import org.springblade.manager.entity.WbsTreeContract;
|
|
|
-import org.springblade.manager.formula.ITableElementConverter;
|
|
|
import org.springblade.manager.formula.KeyMapper;
|
|
|
-import org.springblade.manager.formula.impl.TableElementConverter;
|
|
|
import org.springblade.manager.service.IFormulaService;
|
|
|
import org.springblade.manager.service.IWbsParamService;
|
|
|
import org.springblade.manager.service.IWbsTreeContractService;
|
|
@@ -60,7 +55,6 @@ import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
|
import java.util.*;
|
|
|
-import java.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -77,6 +71,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
|
|
|
private final InformationQueryClient informationQueryClient;
|
|
|
// 元素信息表-
|
|
|
private final IWbsTreeContractService wbsTreeContractService;
|
|
|
+ private final IWbsTreeService wbsTreeService;
|
|
|
private final IFormulaService formulaService;
|
|
|
private final JdbcTemplate jdbcTemplate;
|
|
|
|
|
@@ -214,20 +209,36 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
|
|
|
|
|
|
@Override
|
|
|
public void formulaFillData(List<TableInfo> tableInfoList) {
|
|
|
- StopWatch stopWatch = new StopWatch();
|
|
|
- stopWatch.start("公式处理");
|
|
|
- String ids =tableInfoList.stream().map(TableInfo::getPkeyId).collect(Collectors.joining(","));
|
|
|
- List<Map<String,Object>> list=this.jdbcTemplate.queryForList("SELECT a.p_key_id as nodeId,b.id as fieldId,b.e_key as field,c.init_table_name as tableName from m_wbs_tree_contract a LEFT JOIN m_wbs_form_element b on a.id=b.f_id left JOIN m_wbs_tree c on a.id=c.id where a.p_key_id in ("+ids+")");
|
|
|
- List<KeyMapper> keyMappers = JSON.parseArray(JSONArray.toJSONString(list), KeyMapper.class);
|
|
|
- List<Formula> formulas =this.formulaService.list(Wrappers.<Formula>lambdaQuery().in(Formula::getElementId,keyMappers.stream().map(KeyMapper::getFieldId).distinct().collect(Collectors.toList())));
|
|
|
- TableElementConverter tec= new TableElementConverter(tableInfoList,keyMappers,formulas);
|
|
|
- if(tec.isPresent()){
|
|
|
- tec.before();
|
|
|
- this.formulaService.execute(tec);
|
|
|
- tec.after();
|
|
|
+ List<FormData> fds = new ArrayList<>();
|
|
|
+ List<WbsTreeContract> wbsTreeContractList = wbsTreeContractService.list(Wrappers.<WbsTreeContract>lambdaQuery().in(WbsTreeContract::getPKeyId,tableInfoList.stream().map(TableInfo::getPkeyId).collect(Collectors.toList())));
|
|
|
+ if(Func.isNotEmpty(wbsTreeContractList)){
|
|
|
+ List<WbsTree> wbsTrees = this.wbsTreeService.list(Wrappers.<WbsTree>lambdaQuery().in(WbsTree::getId,wbsTreeContractList.stream().map(WbsTreeContract::getId).distinct().collect(Collectors.toList())));
|
|
|
+ Map<Long,List<WbsTree>> treeMap = wbsTrees.stream().collect(Collectors.groupingBy(WbsTree::getId));
|
|
|
+ LinkedHashMap<Long,Long> map = new LinkedHashMap<>(wbsTreeContractList.size()*2);
|
|
|
+ String ids =tableInfoList.stream().map(TableInfo::getPkeyId).collect(Collectors.joining(","));
|
|
|
+ List<Map<String,Object>> list=this.jdbcTemplate.queryForList("SELECT a.p_key_id as nodeId,b.id as fieldId,b.e_key as field,c.init_table_name as tableName from m_wbs_tree_contract a LEFT JOIN m_wbs_form_element b on a.id=b.f_id left JOIN m_wbs_tree c on a.id=c.id where a.p_key_id in ("+ids+")");
|
|
|
+ List<KeyMapper> keyMappers = JSON.parseArray(JSONArray.toJSONString(list), KeyMapper.class);
|
|
|
+ if(Func.isNotEmpty(keyMappers)){
|
|
|
+ /*当前节点所有已经配置的公式*/
|
|
|
+ List<Formula> formulas =this.formulaService.list(Wrappers.<Formula>lambdaQuery().in(Formula::getElementId,keyMappers.stream().map(KeyMapper::getFieldId).distinct().collect(Collectors.toList())));
|
|
|
+ Map<Long,Formula> formulaMap = new HashMap<>();
|
|
|
+ if(Func.isNotEmpty(formulas)){
|
|
|
+ formulas.forEach(e->{
|
|
|
+ formulaMap.put(e.getElementId(),e);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ LinkedHashMap<String,List<KeyMapper>> dataMap =keyMappers.stream().collect(Collectors.groupingBy(e->e.getTableName()+e.getField(), LinkedHashMap<String,List<KeyMapper>>::new,Collectors.toList()));
|
|
|
+ for(Map.Entry<String,List<KeyMapper>> entry:dataMap.entrySet()){
|
|
|
+ String code= entry.getKey();
|
|
|
+ List<KeyMapper> keyMapperList =entry.getValue();
|
|
|
+ KeyMapper km = keyMapperList.get(0);
|
|
|
+ fds.add(new FormData(code,new ArrayList<>(),formulaMap.get(km.getFieldId())));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ System.out.println();
|
|
|
}
|
|
|
- stopWatch.stop();
|
|
|
- StaticLog.info("{}",stopWatch);
|
|
|
+ //stopWatch.stop();
|
|
|
+ //StaticLog.info("{}",stopWatch);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -246,43 +257,30 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
|
|
|
String tabName = wbsTreeContract.getInitTableName();
|
|
|
|
|
|
// 判读修改还是 添加
|
|
|
- // String querySql = "select * from "+tabName+" where p_key_id="+tableInfo.getPkeyId() ;
|
|
|
- // List<Map<String, Object>> dataIn = jdbcTemplate.queryForList(querySql);
|
|
|
String delSql = "delete from "+tabName+" where p_key_id="+tableInfo.getPkeyId();
|
|
|
jdbcTemplate.execute(delSql);
|
|
|
|
|
|
String sqlInfo="";
|
|
|
- LinkedHashMap<String,String> dataMap2 = tableInfo.getDataMap();
|
|
|
- // if(dataIn.isEmpty()){ //插入
|
|
|
- sqlInfo = "INSERT INTO "+tabName+" ( ";
|
|
|
- String keyStr = "id,";
|
|
|
- String valStr = SnowFlakeUtil.getId() + ",";
|
|
|
- for (String keys : dataMap2.keySet()){
|
|
|
- keyStr += keys+",";
|
|
|
- valStr += "'"+dataMap2.get(keys)+"',";
|
|
|
- }
|
|
|
- keyStr=keyStr.substring(0,keyStr.lastIndexOf(","));
|
|
|
- valStr=valStr.substring(0,valStr.lastIndexOf(","));
|
|
|
- sqlInfo = sqlInfo + keyStr+") VALUES (" +valStr +")";
|
|
|
-
|
|
|
+ LinkedHashMap<String,String> dataMap2 = tableInfo.getDataMap();
|
|
|
+ sqlInfo = "INSERT INTO "+tabName+" ( ";
|
|
|
+ String keyStr = "id,";
|
|
|
+ String valStr = SnowFlakeUtil.getId() + ",";
|
|
|
+ for (String keys : dataMap2.keySet()){
|
|
|
+ keyStr += keys+",";
|
|
|
+ valStr += "'"+dataMap2.get(keys)+"',";
|
|
|
+ }
|
|
|
+ keyStr=keyStr.substring(0,keyStr.lastIndexOf(","));
|
|
|
+ valStr=valStr.substring(0,valStr.lastIndexOf(","));
|
|
|
+ sqlInfo = sqlInfo + keyStr+") VALUES (" +valStr +")";
|
|
|
|
|
|
- WbsTreeContract wbsTreeContractByP = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
+ WbsTreeContract wbsTreeContractByP = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
|
|
|
.eq(WbsTreeContract::getId, wbsTreeContract.getParentId()).eq(WbsTreeContract::getContractId,tableInfo.getContractId()));
|
|
|
-
|
|
|
//处理文件提名
|
|
|
- String fileName = this.wbsParamService.createFileTitle(wbsTreeContractByP.getPKeyId(), Long.parseLong(wbsTreeContractByP.getContractId()));
|
|
|
+ String fileName = this.wbsParamService.createFileTitle(wbsTreeContractByP.getPKeyId(), Long.parseLong(wbsTreeContractByP.getContractId()));
|
|
|
fileName = StringUtils.isNotEmpty(fileName) ? fileName : "缺少文件提名配置";
|
|
|
|
|
|
//huangjn 保存成功后调用生成资料查询列表数据
|
|
|
- this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId()+"", fileName, Integer.parseInt(tableInfo.getClassify()), 2);
|
|
|
- /*}else{ //更新
|
|
|
- sqlInfo = "update "+tabName+" set ";
|
|
|
- for (String keys : dataMap2.keySet()){
|
|
|
- sqlInfo += keys+"='"+dataMap2.get(keys)+"',";
|
|
|
- }
|
|
|
- sqlInfo=sqlInfo.substring(0,sqlInfo.lastIndexOf(","));
|
|
|
- sqlInfo = sqlInfo + " where p_key_id="+tableInfo.getPkeyId();
|
|
|
- }*/
|
|
|
+ this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId()+"", fileName, Integer.parseInt(tableInfo.getClassify()), 2);
|
|
|
|
|
|
UpdateWrapper<WbsTreeContract> updateWrapper = new UpdateWrapper<>();
|
|
|
updateWrapper.in("p_key_id",tableInfo.getPkeyId());
|
|
@@ -290,7 +288,8 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
|
|
|
wbsTreeContractService.update(updateWrapper);
|
|
|
|
|
|
jdbcTemplate.execute(sqlInfo);
|
|
|
- // this.getBussPdfInfo(Long.parseLong(pkeyId));
|
|
|
+ // pdf 预览添加
|
|
|
+ //this.getBussPdfInfo(Long.parseLong(tableInfo.getPkeyId()));
|
|
|
}
|
|
|
}
|
|
|
}
|