|
@@ -16,10 +16,8 @@ import org.springblade.core.tool.utils.Func;
|
|
import org.springblade.manager.dto.TreeNode;
|
|
import org.springblade.manager.dto.TreeNode;
|
|
import org.springblade.manager.entity.*;
|
|
import org.springblade.manager.entity.*;
|
|
import org.springblade.manager.mapper.WbsParamMapper;
|
|
import org.springblade.manager.mapper.WbsParamMapper;
|
|
-import org.springblade.manager.service.IElementFormulaMappingService;
|
|
|
|
-import org.springblade.manager.service.IFormulaService;
|
|
|
|
-import org.springblade.manager.service.IWbsParamService;
|
|
|
|
-import org.springblade.manager.service.IWbsTreeContractService;
|
|
|
|
|
|
+import org.springblade.manager.mapper.WbsTreePrivateMapper;
|
|
|
|
+import org.springblade.manager.service.*;
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
@@ -38,8 +36,8 @@ import java.util.stream.Collectors;
|
|
@AllArgsConstructor
|
|
@AllArgsConstructor
|
|
public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsParam> implements IWbsParamService {
|
|
public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsParam> implements IWbsParamService {
|
|
private final IWbsTreeContractService treeContractService;
|
|
private final IWbsTreeContractService treeContractService;
|
|
|
|
+ private final WbsTreePrivateMapper wbsTreePrivateMapper;
|
|
private final IElementFormulaMappingService elementFormulaMappingService;
|
|
private final IElementFormulaMappingService elementFormulaMappingService;
|
|
- private final IFormulaService formulaService;
|
|
|
|
private final JdbcTemplate jdbcTemplate;
|
|
private final JdbcTemplate jdbcTemplate;
|
|
|
|
|
|
private static final String NOT_SET = "还未配置提名规则";
|
|
private static final String NOT_SET = "还未配置提名规则";
|
|
@@ -56,12 +54,12 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
|
|
if(wtc!=null&&wtc.getPKeyId()!=null){
|
|
if(wtc!=null&&wtc.getPKeyId()!=null){
|
|
List<WbsTreeContract> nodes = tracing(wtc.getPKeyId());
|
|
List<WbsTreeContract> nodes = tracing(wtc.getPKeyId());
|
|
if (Func.isNotEmpty(nodes)) {
|
|
if (Func.isNotEmpty(nodes)) {
|
|
- WbsTreePrivate wtp = this.formulaService.wtpId(wtc.getPKeyId());
|
|
|
|
|
|
+ WbsTreePrivate wtp = this.wtpId(wtc.getPKeyId());
|
|
if(wtp!=null){
|
|
if(wtp!=null){
|
|
/*优先取私有*/
|
|
/*优先取私有*/
|
|
WbsParam wp = this.getOne(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId, wtp.getPKeyId()).eq(WbsParam::getK, FILE_TITLE).last(" limit 1"));
|
|
WbsParam wp = this.getOne(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId, wtp.getPKeyId()).eq(WbsParam::getK, FILE_TITLE).last(" limit 1"));
|
|
if (wp == null) {
|
|
if (wp == null) {
|
|
- WbsTreePrivate publicWtp = this.formulaService.getOriginWtp(wtp.getPKeyId());
|
|
|
|
|
|
+ WbsTreePrivate publicWtp = this.getOriginWtp(wtp.getPKeyId());
|
|
wp = this.getOne(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId, publicWtp.getId()).eq(WbsParam::getK, FILE_TITLE).last(" limit 1 "));
|
|
wp = this.getOne(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId, publicWtp.getId()).eq(WbsParam::getK, FILE_TITLE).last(" limit 1 "));
|
|
}
|
|
}
|
|
if (Func.isNotEmpty(wp)) {
|
|
if (Func.isNotEmpty(wp)) {
|
|
@@ -74,6 +72,41 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
|
|
return NOT_SET;
|
|
return NOT_SET;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public WbsTreePrivate getOriginWtp(Long pkeyId) {
|
|
|
|
+
|
|
|
|
+ /*WbsTreePrivate wtp = this.wbsTreePrivateMapper.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId,pkeyId));*/
|
|
|
|
+ WbsTreePrivate wtp = this.wbsTreePrivateMapper.getByPKeyId(pkeyId);
|
|
|
|
+ int i=10;
|
|
|
|
+ WbsTreePrivate publicWtp = wtp;
|
|
|
|
+ while (i>0) {
|
|
|
|
+ /* WbsTreePrivate tmp= this.wbsTreePrivateMapper.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, publicWtp.getWbsId()));*/
|
|
|
|
+ WbsTreePrivate tmp= this.wbsTreePrivateMapper.getByPKeyId(Long.parseLong(publicWtp.getWbsId()));
|
|
|
|
+ if (tmp == null) {
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ publicWtp = tmp;
|
|
|
|
+ i--;
|
|
|
|
+ }
|
|
|
|
+ /*私有引用项目的wbsId其实是被复制的项目的根节点p_key_id,只有溯源才能找到真正的wbsId*/
|
|
|
|
+ wtp.setWbsId(publicWtp.getWbsId());
|
|
|
|
+ return wtp;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public WbsTreePrivate wtpId(Long pkeyId){
|
|
|
|
+ WbsTreeContract wtc = this.treeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId,pkeyId));
|
|
|
|
+ int loop=0;
|
|
|
|
+ while (wtc.getOldId()!=null&&loop<10){
|
|
|
|
+ loop++;
|
|
|
|
+ WbsTreeContract tmp = this.treeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getId,wtc.getOldId()).eq(WbsTreeContract::getProjectId,wtc.getProjectId()).last(" limit 1 "));
|
|
|
|
+ if(tmp==null){
|
|
|
|
+ return this.wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getId,wtc.getOldId()).eq(WbsTreePrivate::getProjectId,wtc.getProjectId()).last(" limit 1 "));
|
|
|
|
+ }else{
|
|
|
|
+ wtc=tmp;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return this.wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getId,wtc.getId()).eq(WbsTreePrivate::getProjectId,wtc.getProjectId()).last(" limit 1 "));
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public String createFileTitle(Long pkeyId) {
|
|
public String createFileTitle(Long pkeyId) {
|
|
WbsTreeContract wtc =this.treeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId,pkeyId));
|
|
WbsTreeContract wtc =this.treeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId,pkeyId));
|
|
@@ -166,9 +199,9 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
|
|
if(removeMapingIds.size()>0){
|
|
if(removeMapingIds.size()>0){
|
|
batchDel(this.elementFormulaMappingService,removeMapingIds);
|
|
batchDel(this.elementFormulaMappingService,removeMapingIds);
|
|
}
|
|
}
|
|
- if(removeFormulaIds.size()>0){
|
|
|
|
|
|
+/* if(removeFormulaIds.size()>0){
|
|
batchDel(this.formulaService,removeFormulaIds);
|
|
batchDel(this.formulaService,removeFormulaIds);
|
|
- }
|
|
|
|
|
|
+ }*/
|
|
stopWatch.stop();
|
|
stopWatch.stop();
|
|
Long totalTime = stopWatch.getTotalTimeMillis();
|
|
Long totalTime = stopWatch.getTotalTimeMillis();
|
|
StaticLog.info("公式执行用时:{},删除情况:{}", totalTime,result);
|
|
StaticLog.info("公式执行用时:{},删除情况:{}", totalTime,result);
|
|
@@ -267,24 +300,7 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
|
- public Map<String, Formula> formulaKeyMap(List<String> ks) {
|
|
|
|
- Map<String,Formula> result = new HashMap<>();
|
|
|
|
- Map<String,Long> fkMap= formulaIdKeyMap(ks);
|
|
|
|
- if(fkMap.size()>0) {
|
|
|
|
- List<Formula> list = this.formulaService.listByIds(fkMap.values());
|
|
|
|
- if(list.size()<fkMap.size()){
|
|
|
|
- /*this.formulaService.update(Wrappers.<Formula>lambdaUpdate().set(Formula::getIsDeleted,0).eq(Formula::getIsDeleted,1).in(Formula::getId,fkMap.values()));*/
|
|
|
|
- this.jdbcTemplate.execute("update m_formula set is_deleted = 0 where is_deleted = 1 and id in ("+fkMap.values().stream().map(Object::toString).collect(Collectors.joining(","))+")");
|
|
|
|
- list = this.formulaService.listByIds(fkMap.values());
|
|
|
|
- }
|
|
|
|
- Map<Long,Formula> idMap=list.stream().collect(Collectors.toMap(BaseEntity::getId, f->f));
|
|
|
|
- fkMap.forEach((k,v)->{
|
|
|
|
- result.put(k,idMap.get(v));
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
|
|
|
|
public void builder(Long id,List<String>sqlList){
|
|
public void builder(Long id,List<String>sqlList){
|
|
List<Map<String,Object>> treeNodeList= this.jdbcTemplate.queryForList("select node_name name,p_key_id value, id, parent_id parentId,sort from m_wbs_tree_contract where contract_id="+id+" and is_deleted=0 and type=1 order by sort,create_time");
|
|
List<Map<String,Object>> treeNodeList= this.jdbcTemplate.queryForList("select node_name name,p_key_id value, id, parent_id parentId,sort from m_wbs_tree_contract where contract_id="+id+" and is_deleted=0 and type=1 order by sort,create_time");
|