|
@@ -4,16 +4,22 @@ import cn.cslg.pas.common.dto.QueryFeatureHistoryDTO;
|
|
import cn.cslg.pas.common.dto.invalidDTO.QueryClaimSplitHistoryDTO;
|
|
import cn.cslg.pas.common.dto.invalidDTO.QueryClaimSplitHistoryDTO;
|
|
import cn.cslg.pas.common.dto.invalidDTO.RemoveGroupFeatureDTO;
|
|
import cn.cslg.pas.common.dto.invalidDTO.RemoveGroupFeatureDTO;
|
|
import cn.cslg.pas.common.dto.invalidDTO.UpdateGroupFeatureDTO;
|
|
import cn.cslg.pas.common.dto.invalidDTO.UpdateGroupFeatureDTO;
|
|
|
|
+import cn.cslg.pas.common.vo.invalidVO.GroupFeatureHistoryVO;
|
|
import cn.cslg.pas.domain.business.AssoGroupFeature;
|
|
import cn.cslg.pas.domain.business.AssoGroupFeature;
|
|
import cn.cslg.pas.domain.business.Feature;
|
|
import cn.cslg.pas.domain.business.Feature;
|
|
|
|
+import cn.cslg.pas.exception.XiaoShiException;
|
|
import cn.cslg.pas.mapper.InvalidReport.AssoGroupFeatureMapper;
|
|
import cn.cslg.pas.mapper.InvalidReport.AssoGroupFeatureMapper;
|
|
|
|
+import cn.cslg.pas.service.business.FeatureService;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.function.Function;
|
|
import java.util.function.Function;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 权利要求
|
|
* 权利要求
|
|
@@ -24,6 +30,8 @@ import java.util.function.Function;
|
|
@Service
|
|
@Service
|
|
public class AssoGroupFeatureService extends ServiceImpl<AssoGroupFeatureMapper, AssoGroupFeature> {
|
|
public class AssoGroupFeatureService extends ServiceImpl<AssoGroupFeatureMapper, AssoGroupFeature> {
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private FeatureService featureService;
|
|
|
|
|
|
//根据证据组合id查询特征id
|
|
//根据证据组合id查询特征id
|
|
public List<Integer> getFeatureIdsByGroupId(Integer groupId) {
|
|
public List<Integer> getFeatureIdsByGroupId(Integer groupId) {
|
|
@@ -41,7 +49,12 @@ public class AssoGroupFeatureService extends ServiceImpl<AssoGroupFeatureMapper,
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- //
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 修改证据组合特征
|
|
|
|
+ *
|
|
|
|
+ * @param updateGroupFeatureVO
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
public Boolean updateGroupFeature(UpdateGroupFeatureDTO updateGroupFeatureVO) {
|
|
public Boolean updateGroupFeature(UpdateGroupFeatureDTO updateGroupFeatureVO) {
|
|
Integer featureId = updateGroupFeatureVO.getFeatureId();
|
|
Integer featureId = updateGroupFeatureVO.getFeatureId();
|
|
Boolean ifFirstEdit = updateGroupFeatureVO.getIfFirstEdit();
|
|
Boolean ifFirstEdit = updateGroupFeatureVO.getIfFirstEdit();
|
|
@@ -50,14 +63,56 @@ public class AssoGroupFeatureService extends ServiceImpl<AssoGroupFeatureMapper,
|
|
if (ifFirstEdit != null && ifFirstEdit.equals(false)) {
|
|
if (ifFirstEdit != null && ifFirstEdit.equals(false)) {
|
|
featureGen = 2;
|
|
featureGen = 2;
|
|
}
|
|
}
|
|
|
|
+ //获得上一个世代值
|
|
|
|
+ Integer lastGen = featureGen - 1;
|
|
//根据特征id查询证据组合和特征关联
|
|
//根据特征id查询证据组合和特征关联
|
|
LambdaQueryWrapper<AssoGroupFeature> queryWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<AssoGroupFeature> queryWrapper = new LambdaQueryWrapper<>();
|
|
- queryWrapper.eq(AssoGroupFeature::getFeatureId, featureId);
|
|
|
|
|
|
+ queryWrapper.eq(AssoGroupFeature::getFeatureId, featureId).eq(AssoGroupFeature::getFeatureGen, lastGen);
|
|
List<AssoGroupFeature> assoGroupFeatures = this.list(queryWrapper);
|
|
List<AssoGroupFeature> assoGroupFeatures = this.list(queryWrapper);
|
|
Integer newFeatureId = this.addFeature(featureContent);
|
|
Integer newFeatureId = this.addFeature(featureContent);
|
|
//更新特征内容
|
|
//更新特征内容
|
|
- if(assoGroupFeatures.size()!=0){
|
|
|
|
- //查询是否有第一世代
|
|
|
|
|
|
+ if (assoGroupFeatures.size() != 0) {
|
|
|
|
+ for (AssoGroupFeature assoGroupFeature : assoGroupFeatures) {
|
|
|
|
+ //查询是否存在世代
|
|
|
|
+ Integer genFeatureId = assoGroupFeature.getFeatureId();
|
|
|
|
+ Integer genGroupId = assoGroupFeature.getGroupId();
|
|
|
|
+ Integer featureOrder = assoGroupFeature.getFeatureOrder();
|
|
|
|
+
|
|
|
|
+ AssoGroupFeature assoGroupFeature1 = this.getGenGroupFeature(genGroupId, genFeatureId, featureGen);
|
|
|
|
+ //当世代不存在时新建并插入
|
|
|
|
+ if (assoGroupFeature1 == null) {
|
|
|
|
+ assoGroupFeature1 = new AssoGroupFeature();
|
|
|
|
+ //设置组合id
|
|
|
|
+ assoGroupFeature1.setGroupId(genGroupId);
|
|
|
|
+ //设置特征id
|
|
|
|
+ assoGroupFeature1.setFeatureId(newFeatureId);
|
|
|
|
+ //设置排序
|
|
|
|
+ assoGroupFeature1.setFeatureOrder(featureOrder);
|
|
|
|
+ //设置上一个特征id
|
|
|
|
+ if (genFeatureId != null) {
|
|
|
|
+ assoGroupFeature1.setFeaturePreId(genFeatureId);
|
|
|
|
+ } else {
|
|
|
|
+ assoGroupFeature1.setFeaturePreId(assoGroupFeature.getFeaturePreId());
|
|
|
|
+ }
|
|
|
|
+ //设置世代
|
|
|
|
+ assoGroupFeature1.setFeatureGen(featureGen);
|
|
|
|
+ assoGroupFeature1.setOperateMode(0);
|
|
|
|
+ assoGroupFeature1.insert();
|
|
|
|
+ }
|
|
|
|
+ //否则更新
|
|
|
|
+ else {
|
|
|
|
+ //设置组合id
|
|
|
|
+ assoGroupFeature1.setGroupId(genGroupId);
|
|
|
|
+ //设置特征id
|
|
|
|
+ assoGroupFeature1.setFeatureId(newFeatureId);
|
|
|
|
+ //设置排序
|
|
|
|
+ assoGroupFeature1.setFeatureOrder(featureOrder);
|
|
|
|
+ //设置世代
|
|
|
|
+ assoGroupFeature1.setFeatureGen(featureGen);
|
|
|
|
+ assoGroupFeature1.setOperateMode(0);
|
|
|
|
+ assoGroupFeature1.updateById();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|
|
@@ -65,32 +120,208 @@ public class AssoGroupFeatureService extends ServiceImpl<AssoGroupFeatureMapper,
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 删除证据组合历史
|
|
|
|
+ *
|
|
|
|
+ * @param removeGroupFeatureDTO
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
public Boolean removeGroupFeature(RemoveGroupFeatureDTO removeGroupFeatureDTO) {
|
|
public Boolean removeGroupFeature(RemoveGroupFeatureDTO removeGroupFeatureDTO) {
|
|
Integer featureId = removeGroupFeatureDTO.getFeatureId();
|
|
Integer featureId = removeGroupFeatureDTO.getFeatureId();
|
|
|
|
+ Boolean ifFirstEdit = removeGroupFeatureDTO.getIfFirstEdit();
|
|
|
|
+ Integer featureGen = 1;
|
|
|
|
+ if (ifFirstEdit != null && ifFirstEdit.equals(false)) {
|
|
|
|
+ featureGen = 2;
|
|
|
|
+ }
|
|
|
|
+ //获得上一个世代值
|
|
|
|
+ Integer lastGen = featureGen - 1;
|
|
|
|
+
|
|
//根据特征id查询证据组合和特征关联
|
|
//根据特征id查询证据组合和特征关联
|
|
LambdaQueryWrapper<AssoGroupFeature> queryWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<AssoGroupFeature> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ queryWrapper.eq(AssoGroupFeature::getFeatureId, featureId).eq(AssoGroupFeature::getFeatureGen, lastGen);
|
|
|
|
+ List<AssoGroupFeature> assoGroupFeatures = this.list(queryWrapper);
|
|
|
|
+ if (assoGroupFeatures.size() != 0) {
|
|
|
|
+ for (AssoGroupFeature assoGroupFeature : assoGroupFeatures) {
|
|
|
|
+ //查询是否存在世代
|
|
|
|
+ Integer genFeatureId = assoGroupFeature.getFeatureId();
|
|
|
|
+ Integer genGroupId = assoGroupFeature.getGroupId();
|
|
|
|
+ Integer featureOrder = assoGroupFeature.getFeatureOrder();
|
|
|
|
+ AssoGroupFeature assoGroupFeature1 = this.getGenGroupFeature(genGroupId, genFeatureId, featureGen);
|
|
|
|
+ if (assoGroupFeature1 == null) {
|
|
|
|
+ assoGroupFeature1 = new AssoGroupFeature();
|
|
|
|
+ assoGroupFeature1.setGroupId(genGroupId);
|
|
|
|
+ assoGroupFeature1.setFeatureGen(featureGen);
|
|
|
|
+ assoGroupFeature1.setOperateMode(1);
|
|
|
|
+ assoGroupFeature1.setFeaturePreId(genFeatureId);
|
|
|
|
+ assoGroupFeature1.insert();
|
|
|
|
+ } else {
|
|
|
|
+ assoGroupFeature1.setGroupId(genGroupId);
|
|
|
|
+ assoGroupFeature1.setFeatureGen(featureGen);
|
|
|
|
+ assoGroupFeature1.setOperateMode(1);
|
|
|
|
+ assoGroupFeature1.setFeaturePreId(genFeatureId);
|
|
|
|
+ assoGroupFeature1.updateById();
|
|
|
|
+ }
|
|
|
|
+ this.updateGroupFeatureOrder(genGroupId, featureOrder, featureGen);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
- public Boolean queryFeatureHistory(QueryFeatureHistoryDTO queryFeatureHistoryDTO) {
|
|
|
|
|
|
+ public List<GroupFeatureHistoryVO> queryFeatureHistory(QueryFeatureHistoryDTO queryFeatureHistoryDTO) {
|
|
|
|
+ List<AssoGroupFeature> assoGroupFeatures = new ArrayList<>();
|
|
Integer featureGroupId = queryFeatureHistoryDTO.getFeatureGroupId();
|
|
Integer featureGroupId = queryFeatureHistoryDTO.getFeatureGroupId();
|
|
//根据特征id查询证据组合和特征关联
|
|
//根据特征id查询证据组合和特征关联
|
|
- LambdaQueryWrapper<AssoGroupFeature> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
- return true;
|
|
|
|
|
|
+ AssoGroupFeature assoGroupFeature = this.getById(featureGroupId);
|
|
|
|
+ assoGroupFeatures.add(assoGroupFeature);
|
|
|
|
+ Integer groupId = assoGroupFeature.getGroupId();
|
|
|
|
+ Integer featureId = assoGroupFeature.getFeatureId();
|
|
|
|
+ //查询第一次历史
|
|
|
|
+ LambdaQueryWrapper<AssoGroupFeature> query1 = new LambdaQueryWrapper<>();
|
|
|
|
+ query1.eq(AssoGroupFeature::getFeatureGen, 1)
|
|
|
|
+ .eq(AssoGroupFeature::getFeaturePreId, featureId)
|
|
|
|
+ .eq(AssoGroupFeature::getGroupId, groupId);
|
|
|
|
+ AssoGroupFeature assoGroupFeature1 = this.getOne(query1, false);
|
|
|
|
+ if (assoGroupFeature1 != null) {
|
|
|
|
+ assoGroupFeatures.add(assoGroupFeature1);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //查询第二次历史
|
|
|
|
+ LambdaQueryWrapper<AssoGroupFeature> query2 = new LambdaQueryWrapper<>();
|
|
|
|
+ query2.eq(AssoGroupFeature::getFeatureGen, 2)
|
|
|
|
+ .eq(AssoGroupFeature::getGroupId, groupId);
|
|
|
|
+ if (assoGroupFeature1 != null) {
|
|
|
|
+ query2.and(i -> i.eq(AssoGroupFeature::getFeaturePreId, assoGroupFeature1.getFeatureId())
|
|
|
|
+ .or().eq(AssoGroupFeature::getFeaturePreId, featureId));
|
|
|
|
+ } else {
|
|
|
|
+ query2.eq(AssoGroupFeature::getFeaturePreId, featureId);
|
|
|
|
+ }
|
|
|
|
+ AssoGroupFeature assoGroupFeature2 = this.getOne(query2, false);
|
|
|
|
+ if (assoGroupFeature2 != null) {
|
|
|
|
+ assoGroupFeatures.add(assoGroupFeature2);
|
|
|
|
+ }
|
|
|
|
+ //装载历史
|
|
|
|
+ List<GroupFeatureHistoryVO> groupFeatureHistoryVOS = this.loadFeatureHistory(assoGroupFeatures);
|
|
|
|
+ return groupFeatureHistoryVOS;
|
|
}
|
|
}
|
|
|
|
|
|
public Boolean updateFeature(UpdateGroupFeatureDTO updateGroupFeatureDTO) {
|
|
public Boolean updateFeature(UpdateGroupFeatureDTO updateGroupFeatureDTO) {
|
|
Integer featureId = updateGroupFeatureDTO.getFeatureId();
|
|
Integer featureId = updateGroupFeatureDTO.getFeatureId();
|
|
|
|
+ Boolean ifFirstEdit = updateGroupFeatureDTO.getIfFirstEdit();
|
|
|
|
+ String featureContent = updateGroupFeatureDTO.getFeatureContent();
|
|
|
|
+ String common = updateGroupFeatureDTO.getCommon();
|
|
|
|
+ Integer featureGen = 1;
|
|
|
|
+ if (ifFirstEdit != null && ifFirstEdit.equals(false)) {
|
|
|
|
+ featureGen = 2;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //更新特征
|
|
|
|
+ Boolean flag = this.updateFeatureContent(featureId, featureContent);
|
|
|
|
+ if (flag.equals(false)) {
|
|
|
|
+ throw new XiaoShiException("特征不存在");
|
|
|
|
+ }
|
|
//根据特征id查询证据组合和特征关联
|
|
//根据特征id查询证据组合和特征关联
|
|
LambdaQueryWrapper<AssoGroupFeature> queryWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<AssoGroupFeature> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ queryWrapper.eq(AssoGroupFeature::getFeatureId, featureId)
|
|
|
|
+ .eq(AssoGroupFeature::getFeatureGen, featureGen);
|
|
|
|
+ List<AssoGroupFeature> assoGroupFeatures = this.list(queryWrapper);
|
|
|
|
+ if (assoGroupFeatures.size() > 0) {
|
|
|
|
+ assoGroupFeatures.forEach(item -> {
|
|
|
|
+ item.setCommon(common);
|
|
|
|
+ item.updateById();
|
|
|
|
+ });
|
|
|
|
+ }
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //根据内容添加特征
|
|
public Integer addFeature(String featureContent) {
|
|
public Integer addFeature(String featureContent) {
|
|
Feature feature = new Feature();
|
|
Feature feature = new Feature();
|
|
feature.setContent(featureContent);
|
|
feature.setContent(featureContent);
|
|
feature.insert();
|
|
feature.insert();
|
|
return feature.getId();
|
|
return feature.getId();
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ //根据分组id和特征id以及世代查询是否存在
|
|
|
|
+ public AssoGroupFeature getGenGroupFeature(Integer groupId, Integer featureId, Integer gen) {
|
|
|
|
+ LambdaQueryWrapper<AssoGroupFeature> queryWrapper1 = new LambdaQueryWrapper<>();
|
|
|
|
+ queryWrapper1.eq(AssoGroupFeature::getFeatureGen, gen)
|
|
|
|
+ .eq(AssoGroupFeature::getGroupId, groupId)
|
|
|
|
+ .eq(AssoGroupFeature::getFeaturePreId, featureId);
|
|
|
|
+
|
|
|
|
+ AssoGroupFeature assoGroupFeature1 = this.getOne(queryWrapper1, false);
|
|
|
|
+ return assoGroupFeature1;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //更新顺序
|
|
|
|
+ public void updateGroupFeatureOrder(Integer groupId, Integer fromOrder, Integer gen) {
|
|
|
|
+ Integer lastGen = gen - 1;
|
|
|
|
+ //根据groupId查询所有删除特征之后的特征组合关联
|
|
|
|
+ List<AssoGroupFeature> assoGroupFeatures = this.baseMapper.selectLastGroupFeature(groupId, fromOrder, lastGen);
|
|
|
|
+
|
|
|
|
+ if (assoGroupFeatures.size() > 0) {
|
|
|
|
+ //遍历添加世代
|
|
|
|
+ for (AssoGroupFeature assoGroupFeature : assoGroupFeatures) {
|
|
|
|
+ Integer featureId = assoGroupFeature.getFeatureId();
|
|
|
|
+ //查询是否世代已存在
|
|
|
|
+ AssoGroupFeature tem = this.getGenGroupFeature(groupId, featureId, gen);
|
|
|
|
+ if (tem == null) {
|
|
|
|
+ tem = new AssoGroupFeature();
|
|
|
|
+ BeanUtils.copyProperties(assoGroupFeature, tem);
|
|
|
|
+ tem.setFeatureOrder(tem.getFeatureOrder() - 1);
|
|
|
|
+ tem.setFeatureGen(gen);
|
|
|
|
+ tem.setId(null);
|
|
|
|
+ tem.setOperateMode(0);
|
|
|
|
+ tem.insert();
|
|
|
|
+ } else {
|
|
|
|
+ tem.setFeatureOrder(tem.getFeatureOrder() - 1);
|
|
|
|
+ tem.updateById();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //更新特征内容
|
|
|
|
+ public Boolean updateFeatureContent(Integer featureId, String featureContent) {
|
|
|
|
+ Feature feature = featureService.getById(featureId);
|
|
|
|
+ if (feature == null) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ feature.setContent(featureContent);
|
|
|
|
+ feature.updateById();
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ public List<GroupFeatureHistoryVO> loadFeatureHistory(List<AssoGroupFeature> assoGroupFeatures) {
|
|
|
|
+ List<GroupFeatureHistoryVO> groupFeatureHistoryVOS = new ArrayList<>();
|
|
|
|
+ if (assoGroupFeatures == null || assoGroupFeatures.size() == 0) {
|
|
|
|
+ return groupFeatureHistoryVOS;
|
|
|
|
+ }
|
|
|
|
+ List<Integer> featureIds = assoGroupFeatures.stream().filter(item -> item.getFeatureId() != null).map(AssoGroupFeature::getFeatureId).collect(Collectors.toList());
|
|
|
|
+ //根据特征id查询特征
|
|
|
|
+ List<Feature> features = new ArrayList<>();
|
|
|
|
+ LambdaQueryWrapper<Feature> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ queryWrapper.in(Feature::getId, featureIds);
|
|
|
|
+ features = featureService.list(queryWrapper);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ for (AssoGroupFeature item : assoGroupFeatures) {
|
|
|
|
+ Feature feature = features.stream().filter(i -> i.getId().equals(item.getFeatureId())).findFirst().orElse(null);
|
|
|
|
+
|
|
|
|
+ GroupFeatureHistoryVO groupFeatureHistoryVO = new GroupFeatureHistoryVO();
|
|
|
|
+ groupFeatureHistoryVO.setFeatureGroupId(item.getId());
|
|
|
|
+ if (feature != null) {
|
|
|
|
+ groupFeatureHistoryVO.setFeatureId(item.getFeatureId());
|
|
|
|
+ groupFeatureHistoryVO.setFeatureContent(feature.getContent());
|
|
|
|
+ }
|
|
|
|
+ groupFeatureHistoryVO.setFeatureGen(item.getFeatureGen());
|
|
|
|
+ groupFeatureHistoryVO.setOperateMode(item.getOperateMode());
|
|
|
|
+ groupFeatureHistoryVOS.add(groupFeatureHistoryVO);
|
|
|
|
+ }
|
|
|
|
+ return groupFeatureHistoryVOS;
|
|
|
|
+ }
|
|
}
|
|
}
|