修改参数清单变更扩展

This commit is contained in:
高嵩
2023-08-17 21:47:50 +08:00
parent 09e3297be4
commit 1a0589a83b
9 changed files with 304 additions and 15 deletions
@@ -77,7 +77,7 @@ public class ParamsManifestEOController extends JeroController<ParamsManifestEO,
paramsManifestEO.setTitle(paramsManifestEO.getTitle().replace("%","\\%"));
}
IPage page = new Page(pageNo, pageSize);
IPage page = new Page(pageNo, 100);
IPage pageList = paramsManifestEOService.pageInfo(page, paramsManifestEO);
// List<ParamsManifestEO> rows = pageList.getRecords();
// // 处理 状态 中英文
@@ -20,5 +20,8 @@ public interface IParamsManifestHistoryEOService extends IService<ParamsManifest
List<ParamsManifestHistoryEO> getHistoryList(String paramsManifestId);
List<ParamsManifestHistoryEO> getHistoryListByProjectId(String getProjectId);
void deleteAllHistoryVersion(List<String> paramsManifestIdList);
}
@@ -6948,10 +6948,28 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
params.put("back_url_phone",backUrlPhone + "/phoneTaskData?activeTab=parametercollection");
feishuService.sendMessageHomoParameterCollection(TemplateInfoEnum2.HOMO_PARAMETER_COLLECTION_NO_DEADLINE.getValue(),params,null);
//如果全清单都是待发起收集则置状态为未收集
checkCollectionState(paramsCollectManifestVO.getParamsManifestId());
return Result.OK("强制撤回成功!");
}
private void checkCollectionState(String paramsManifestId) {
List<ParamsCollectManifestEO> paramList = paramsCollectManifestEOMapper.queryByParamManifestId(paramsManifestId);
boolean flag = false;
for (ParamsCollectManifestEO pcm : paramList) {
if(!pcm.getControlType().equals(ControlTypeEnum.Title.getValue()) && !pcm.getState().equals(CollectManifestStateEnum.WAIT_COLLECT.getValue())){
flag = true;
break;
}
}
if(!flag){
ParamsManifestEO paramsManifestEO = paramsManifestEOService.queryById(paramsManifestId); // 获取清单信息
paramsManifestEO.setState(ManifestStateEnum.UNCOLLECTED.getValue());
paramsManifestEOService.updateById(paramsManifestEO);
}
}
@Override
public Result<?> certifiedEngineerUpdateDreBatch(ParamsCollectManifestVO paramsCollectManifestVO) {
if (StringUtils.isEmpty(paramsCollectManifestVO.getIds())
@@ -17,13 +17,10 @@ import com.jero.modules.cert.collect.enums.CollectManifestChangeFlagEnum;
import com.jero.modules.cert.collect.enums.CollectManifestStateEnum;
import com.jero.modules.cert.collect.enums.ManifestStateEnum;
import com.jero.modules.cert.collect.mapper.ParamsCollectManifestEOMapper;
import com.jero.modules.cert.collect.mapper.ParamsCollectManifestHistoryEOMapper;
import com.jero.modules.cert.collect.mapper.ParamsConfigEOMapper;
import com.jero.modules.cert.collect.mapper.ParamsManifestEOMapper;
import com.jero.modules.cert.collect.service.IParamsCollectManifestEOService;
import com.jero.modules.cert.collect.service.IParamsConfigDataEOService;
import com.jero.modules.cert.collect.service.IParamsConfigEOService;
import com.jero.modules.cert.collect.service.IParamsManifestEOService;
import com.jero.modules.cert.collect.service.IParamsManifestHistoryEOService;
import com.jero.modules.cert.collect.service.*;
import com.jero.modules.cert.collect.vo.ParamsManifestHistoryVO;
import com.jero.modules.cert.collect.vo.ParamsManifestVO;
import com.jero.modules.cert.report.entity.ParamsReportEO;
@@ -93,15 +90,24 @@ public class ParamsManifestEOServiceImpl extends ServiceImpl<ParamsManifestEOMap
@Autowired
private ParamsCollectManifestEOMapper paramsCollectManifestEOMapper;
@Autowired
private ParamsCollectManifestHistoryEOMapper paramsCollectManifestHistoryEOMapper;
@Autowired
private IParamsManifestHistoryEOService paramsManifestHistoryEOService;
@Autowired
private IParamsConfigEOService paramsConfigEOService;
@Autowired
private IParamsConfigHistoryEOService paramsConfigHistoryEOService;
@Autowired
private IParamsConfigDataEOService paramsConfigDataEOService;
@Autowired
private IParamsConfigDataHistoryEOService paramsConfigDataHistoryEOService;
@Autowired
private IParamsReportEOService paramsReportEOService;
@@ -136,14 +142,24 @@ public class ParamsManifestEOServiceImpl extends ServiceImpl<ParamsManifestEOMap
resList.addAll(paramsManifestEOList);
for (ParamsManifestEO pm : paramsManifestEOList) {
pm.setIsHistory("0");
List<ParamsManifestHistoryEO> hisList = paramsManifestHistoryEOService.getHistoryList(pm.getId());
if(CollectionUtils.isNotEmpty(hisList)){
for (ParamsManifestHistoryEO his : hisList) {
his.setIsHistory("1");
resList.add(his);
}
}
List<ParamsManifestHistoryEO> hisList = paramsManifestHistoryEOService.getHistoryListByProjectId(paramsManifestEO.getProjectId());
if(CollectionUtils.isNotEmpty(hisList)){
for (ParamsManifestHistoryEO his : hisList) {
his.setIsHistory("1");
resList.add(his);
}
}
Collections.sort(resList, new Comparator<ParamsManifestEO>() {
@Override
public int compare(ParamsManifestEO p1, ParamsManifestEO p2) {
if (p1.getTitle().equals(p2.getTitle())) {
return p2.getVersion().compareTo(p1.getVersion());
}
return p2.getCreateTime().compareTo(p1.getCreateTime());
}
});
return resList;
}
@@ -367,7 +383,7 @@ public class ParamsManifestEOServiceImpl extends ServiceImpl<ParamsManifestEOMap
// 删除对应的历史版本数据
List<String> idList = new ArrayList<>();
idList.add(id);
paramsManifestHistoryEOService.deleteAllHistoryVersion(idList);
// paramsManifestHistoryEOService.deleteAllHistoryVersion(idList);
// 添加上报库的项目名称和清单标题
paramsReportEOService.setProjectNameAndTitle(idList);
@@ -419,7 +435,7 @@ public class ParamsManifestEOServiceImpl extends ServiceImpl<ParamsManifestEOMap
}
// 删除对应的历史版本数据
paramsManifestHistoryEOService.deleteAllHistoryVersion(ids);
//paramsManifestHistoryEOService.deleteAllHistoryVersion(ids);
// 添加上报库的项目名称和清单标题
paramsReportEOService.setProjectNameAndTitle(ids);
@@ -518,11 +534,32 @@ public class ParamsManifestEOServiceImpl extends ServiceImpl<ParamsManifestEOMap
*/
@Override
public boolean changeExtension(String id, String cut) {
ParamsManifestEO paramsManifestEO = getById(id);
if(ObjectUtil.isEmpty(paramsManifestEO)){
ParamsManifestHistoryEO paramsManifestHistoryEO = paramsManifestHistoryEOService.getById(id);
if(ObjectUtil.isNotEmpty(paramsManifestHistoryEO)){
//从历史版本进行扩展变更逻辑
return changeExtensionFromHis(paramsManifestHistoryEO, cut);
} else {
if (CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("无效的清单!");
} else {
throw new JeroBootException("Invalid list!");
}
}
}
ParamsTemplateEO paramsTemplateEO = paramsTemplateEOService.queryById(paramsManifestEO.getParamsTemplateId());
if(ObjectUtil.isNotEmpty(paramsTemplateEO) && paramsTemplateEO.getStatus() != 1){
if (CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("参数模版未发布,无法发起变更!");
} else {
throw new JeroBootException("The parameter template is not published, and cannot be initiated change!");
}
}
// 变更扩展时,将历史清单数据 连同历史参数项收集数据 备份到相关历史表中
paramsManifestHistoryEOService.addForChangeExtension(id);
// 将模板最新版本和项目中参数项进行比对
ParamsManifestEO paramsManifestEO = getById(id);
Map<String, Object> map = paramsCollectManifestEOService.isCollectFinished(id);
Boolean finish = (Boolean) map.get("finish");
if (!finish) {
@@ -696,6 +733,187 @@ public class ParamsManifestEOServiceImpl extends ServiceImpl<ParamsManifestEOMap
return updateById(updateManifestEO);
}
/**
* 从历史版本进行扩展变更
*/
private boolean changeExtensionFromHis(ParamsManifestHistoryEO paramsManifestHistoryEO, String cut) {
ParamsManifestEO sourceParamsManifestEO = getById(paramsManifestHistoryEO.getSourceParamsManifestId());
if(ObjectUtil.isEmpty(sourceParamsManifestEO)){
List<ParamsManifestHistoryEO> hisList = paramsManifestHistoryEOService.getHistoryList(paramsManifestHistoryEO.getSourceParamsManifestId());
for (ParamsManifestHistoryEO his : hisList) {
if(his.getVersion()>paramsManifestHistoryEO.getVersion()){
//只能在最高版本历史版本上发起变更扩展
if (CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("存在更高版本,无法发起变更!");
} else {
throw new JeroBootException("Higher version exists, and cannot be initiated change!");
}
}
}
}else{
//收集清单中存在数据
if (CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("存在更高版本,无法发起变更!");
} else {
throw new JeroBootException("Higher version exists, and cannot be initiated change!");
}
}
ParamsTemplateEO paramsTemplateEO = paramsTemplateEOService.queryById(paramsManifestHistoryEO.getParamsTemplateId());
if(ObjectUtil.isNotEmpty(paramsTemplateEO) && paramsTemplateEO.getStatus() != 1){
if (CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("参数模版未发布,无法发起变更!");
} else {
throw new JeroBootException("The parameter template is not published, and cannot be initiated change!");
}
}
// 查询项目引用的模板是否是最新版本
Integer newestVersion = paramsInfoPublishEOService.getNewestVersionByParamsTemplateId(paramsManifestHistoryEO.getParamsTemplateId());
if (newestVersion == null) {
if (CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("查询不到模板最新发布版本!");
} else {
throw new JeroBootException("Can not find the latest template!");
}
}
// 查询最新版模板参数项
List<ParamsInfoPublishEO> newParamsInfoPublishEOList = paramsInfoPublishEOService.getListByPublishVersion(paramsManifestHistoryEO.getParamsTemplateId(), newestVersion);
// 查询项目所有参数项(这时候参数项都收集完了)
ParamsCollectManifestEO paramsCollectManifestEO = new ParamsCollectManifestEO();
paramsCollectManifestEO.setParamsManifestId(paramsManifestHistoryEO.getId());
List<ParamsCollectManifestHistoryEO> oldParamsCollectManifestEOList = paramsCollectManifestHistoryEOMapper.listInfo(paramsCollectManifestEO);
// 查询上报库的项目所有参数项的配置数据
ParamsReportEO paramsReportEO = paramsReportEOService.queryByOldParamsManifestId(paramsManifestHistoryEO.getSourceParamsManifestId(), paramsManifestHistoryEO.getVersion());
List<Map<String, Object>> paramsReportConfigDataList = paramsReportDetailEOService.listInfoForChange(paramsReportEO.getId());
// 比较模板参数项 和 项目参数项
// nio编号一样时,比较参数填写规则(控件类型,控件备选值,控件校验)是否一样;nio编号不一样时,不用管,用户自己添加
List<String> oldNioNumberList = oldParamsCollectManifestEOList.stream().map(ParamsCollectManifestHistoryEO::getNioNumber).collect(Collectors.toList());
List<ParamsInfoPublishEO> sameList = newParamsInfoPublishEOList.stream().filter(e -> oldNioNumberList.contains(e.getNioNumber())).collect(Collectors.toList());
List<String> newNioNumberList = sameList.stream().map(ParamsInfoPublishEO::getNioNumber).collect(Collectors.toList());
List<ParamsCollectManifestHistoryEO> diffList = oldParamsCollectManifestEOList.stream().filter(e -> !newNioNumberList.contains(e.getNioNumber())).collect(Collectors.toList());
List<String> delCollectManifestIdList = new ArrayList<>();
List<ParamsCollectManifestEO> updateCollectManifestEOList = new ArrayList<>();
List<ParamsConfigDataEO> updateConfigDataEOList = new ArrayList<>();
// 模板里没有,清单里有
if (CollectionUtil.isNotEmpty(diffList)) {
for (ParamsCollectManifestHistoryEO oldCollectManifestEO : diffList) {
ParamsCollectManifestEO updateCollectManifestEO = new ParamsCollectManifestEO();
updateCollectManifestEO.setId(oldCollectManifestEO.getId());
updateCollectManifestEO.setState(CollectManifestStateEnum.CHANGE.getValue());
updateCollectManifestEO.setChangeFlag(CollectManifestChangeFlagEnum.CHANGE_BEFORE.getValue()); // 标记为变更前参数项
updateCollectManifestEO.setDelFlag(CollectManifestChangeFlagEnum.DELETE_AFTER.getValue()); // 因新发布模板中没有该参数项,标记为变更时已删除参数项
updateCollectManifestEO.setAddFlag(CollectManifestChangeFlagEnum.ADD_BEFORE.getValue()); // 非添加参数项
updateCollectManifestEO.setParamsManifestId(paramsManifestHistoryEO.getSourceParamsManifestId());
updateCollectManifestEOList.add(updateCollectManifestEO);
}
}
// 模板里有,清单里也有
if (CollectionUtil.isNotEmpty(sameList)) {
for (ParamsInfoPublishEO paramsInfoPublishEO : sameList) {
ParamsCollectManifestHistoryEO oldCollectManifestEO = oldParamsCollectManifestEOList.stream()
.filter(e -> e.getNioNumber().equals(paramsInfoPublishEO.getNioNumber()))
.collect(Collectors.toList()).get(0);
String newControlType = paramsInfoPublishEO.getControlType();
String newControlVerify = paramsInfoPublishEO.getControlVerify();
String newControlValues = paramsInfoPublishEO.getControlValues();
String oldControlType = oldCollectManifestEO.getControlType();
String oldControlVerify = oldCollectManifestEO.getControlVerify();
String oldControlValues = oldCollectManifestEO.getControlValues();
ParamsCollectManifestEO updateCollectManifestEO = new ParamsCollectManifestEO();
BeanUtils.copyProperties(paramsInfoPublishEO, updateCollectManifestEO);
// 比较参数填写规则
if (!newControlType.equals(oldControlType)
|| (newControlVerify != null && !newControlVerify.equals(oldControlVerify))
|| (oldControlVerify != null && !oldControlVerify.equals(newControlVerify))
|| (newControlValues != null && !newControlValues.equals(oldControlValues))
|| (oldControlValues != null && !oldControlValues.equals(newControlValues))) {
// 参数填写规则改变,删除参数项配置数据,状态变为:待发起收集,拍列表前边
updateCollectManifestEO.setId(oldCollectManifestEO.getId()); // 为收集参数项id
updateCollectManifestEO.setState(CollectManifestStateEnum.CHANGE.getValue());
updateCollectManifestEO.setChangeFlag(CollectManifestChangeFlagEnum.CHANGE_AFTER.getValue()); // 因新发布模板中该参数项控件变化,标记为变更后参数项
updateCollectManifestEO.setDelFlag(CollectManifestChangeFlagEnum.DELETE_BEFORE.getValue()); // 标记为变更时未删除参数项
updateCollectManifestEO.setAddFlag(CollectManifestChangeFlagEnum.ADD_BEFORE.getValue()); // 非添加参数项
// updateCollectManifestEO.setControlType(newControlType);
// updateCollectManifestEO.setControlVerify(newControlVerify);
// updateCollectManifestEO.setControlValues(newControlValues);
delCollectManifestIdList.add(oldCollectManifestEO.getId());
} else {
// 参数填写规则没有改变,状态变为:变更
updateCollectManifestEO.setId(oldCollectManifestEO.getId());
updateCollectManifestEO.setState(CollectManifestStateEnum.CHANGE.getValue());
updateCollectManifestEO.setChangeFlag(CollectManifestChangeFlagEnum.CHANGE_BEFORE.getValue()); // 标记为变更前参数项
updateCollectManifestEO.setDelFlag(CollectManifestChangeFlagEnum.DELETE_BEFORE.getValue()); // 标记为变更时未删除参数项
updateCollectManifestEO.setAddFlag(CollectManifestChangeFlagEnum.ADD_BEFORE.getValue()); // 非添加参数项
updateCollectManifestEO.setParamsManifestId(paramsManifestHistoryEO.getSourceParamsManifestId());
}
// 更新附件模板字段
if (StringUtils.isNotEmpty(paramsInfoPublishEO.getFileTemplateConnectId())) {
updateCollectManifestEO.setFileTemplateConnectId(paramsInfoPublishEO.getFileTemplateConnectId());
}
updateCollectManifestEOList.add(updateCollectManifestEO);
}
}
// 查询配置信息
List<ParamsConfigEO> configEOList = new ArrayList<>();
List<String> configIdList = new ArrayList<>();
List<ParamsConfigHistoryEO> configList = paramsConfigHistoryEOService.queryList(paramsManifestHistoryEO.getId());
for (ParamsConfigHistoryEO config : configList) {
ParamsConfigEO newConfig = new ParamsConfigEO();
BeanUtils.copyProperties(config,newConfig);
newConfig.setParamsManifestId(paramsManifestHistoryEO.getSourceParamsManifestId());
configEOList.add(newConfig);
configIdList.add(newConfig.getId());
}
if (CollectionUtil.isNotEmpty(configList)) {
paramsConfigEOService.saveOrUpdateBatch(configEOList);
}
List<ParamsConfigDataEO> configDataEOList = new ArrayList<>();
List<ParamsConfigDataHistoryEO> paramsConfigDataEOList = paramsConfigDataHistoryEOService.queryListByConfigIdList(configIdList);
for (ParamsConfigDataHistoryEO configData : paramsConfigDataEOList) {
ParamsConfigDataEO newConfigData = new ParamsConfigDataEO();
BeanUtils.copyProperties(configData,newConfigData);
configDataEOList.add(newConfigData);
}
if (CollectionUtil.isNotEmpty(configDataEOList)) {
paramsConfigDataEOService.saveOrUpdateBatch(configDataEOList);
}
// 更新项目参数项
paramsCollectManifestEOService.saveOrUpdateBatch(updateCollectManifestEOList);
// 参数清单版本加 1
ParamsManifestEO updateManifestEO = new ParamsManifestEO();
updateManifestEO.setId(paramsManifestHistoryEO.getSourceParamsManifestId());
updateManifestEO.setTitle(paramsManifestHistoryEO.getTitle());
updateManifestEO.setState(ManifestStateEnum.COLLECTING.getValue()); // 变更扩展后,清单状态为收集中
updateManifestEO.setVersion(paramsManifestHistoryEO.getVersion() + 1);
updateManifestEO.setProjectId(paramsManifestHistoryEO.getProjectId());
updateManifestEO.setParamsTemplateId(paramsManifestHistoryEO.getParamsTemplateId());
updateManifestEO.setParamsTemplatePublishVersion(newestVersion);
updateManifestEO.setParamsTemplateName(paramsManifestHistoryEO.getParamsTemplateName());
updateManifestEO.setProjectVersion(paramsManifestHistoryEO.getProjectVersion());
updateManifestEO.setProjectVersionId(paramsManifestHistoryEO.getProjectVersionId());
updateManifestEO.setReferencesColId(paramsManifestHistoryEO.getReferencesColId());
updateManifestEO.setReferencesColName(paramsManifestHistoryEO.getReferencesColName());
return save(updateManifestEO);
}
@Override
public List<ParamsManifestHistoryVO> getHistoryVersionList(String paramsManifestId) {
return paramsManifestHistoryEOService.getHistoryVersionList(paramsManifestId);
@@ -133,6 +133,16 @@ public class ParamsManifestHistoryEOServiceImpl extends ServiceImpl<ParamsManife
paramsManifestHistoryEOService.save(paramsManifestHistoryEO);
}
@Override
public List<ParamsManifestHistoryEO> getHistoryListByProjectId(String projectId) {
// 历史版本和当前版本通过id进行关联
LambdaQueryWrapper<ParamsManifestHistoryEO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ParamsManifestHistoryEO::getProjectId, projectId)
.orderByAsc(ParamsManifestHistoryEO::getVersion);
List<ParamsManifestHistoryEO> list = list(queryWrapper);
return list;
}
@Override
public List<ParamsManifestHistoryEO> getHistoryList(String paramsManifestId) {
// 历史版本和当前版本通过id进行关联
@@ -285,6 +285,26 @@ public class ParamsInfoEOController extends JeroController<ParamsInfoEO, IParams
}
}
/**
* 撤回发布版本
*
* @param paramsTemplateId
* @return
*/
@AutoLog(value = "参数项基本信息表-撤回发布版本")
@ApiOperation(value="参数项基本信息表-撤回发布版本", notes="参数项基本信息表-撤回发布版本")
@GetMapping(value = "/withdraw")
public Result<?> withdraw(@RequestParam(name="paramsTemplateId") String paramsTemplateId,
@RequestParam(name="cut") String cut) {
paramsInfoPublishEOService.withdraw(paramsTemplateId, cut);
if (CutEnum.CN.getValue().equals(cut)) {
return Result.OK("撤回成功!");
} else {
return Result.OK("Withdraw success!");
}
}
/**
* 模板下载
* @param cut
@@ -89,6 +89,11 @@ public class ParamsTemplateEO implements Serializable {
@ApiModelProperty(value = "当前版本")
private java.lang.Integer version;
/**发布状态 1:已发布;0:草稿*/
@Excel(name = "发布状态", width = 15)
@ApiModelProperty(value = "发布状态")
private java.lang.Integer status;
//排序
@TableField(exist = false)
private String orderBy; // 顺序 1-升序, 2-降序
@@ -64,4 +64,6 @@ public interface IParamsInfoPublishEOService extends IService<ParamsInfoPublishE
int publishTemplate(String paramsTemplateId, String cut);
Integer getNewestVersionByParamsTemplateId(String paramsTemplateId);
void withdraw(String paramsTemplateId, String cut);
}
@@ -9,6 +9,7 @@ import com.jero.common.system.vo.LoginUser;
import com.jero.modules.cert.template.entity.*;
import com.jero.modules.cert.template.mapper.ParamsInfoPublishEOMapper;
import com.jero.modules.cert.template.service.*;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -123,6 +124,17 @@ public class ParamsInfoPublishEOServiceImpl extends ServiceImpl<ParamsInfoPublis
}
@Override
public void withdraw(String paramsTemplateId, String cut) {
ParamsTemplateEO source = paramsTemplateEOService.queryById(paramsTemplateId);
if(ObjectUtils.isNotEmpty(source)){
ParamsTemplateEO updateSource = new ParamsTemplateEO();
updateSource.setId(paramsTemplateId);
updateSource.setStatus(0);
paramsTemplateEOService.updateById(updateSource);
}
}
@Override
public int publishTemplate(String paramsTemplateId, String cut) {
ParamsTemplateEO source = paramsTemplateEOService.queryById(paramsTemplateId);
@@ -143,6 +155,7 @@ public class ParamsInfoPublishEOServiceImpl extends ServiceImpl<ParamsInfoPublis
ParamsTemplateEO updateSource = new ParamsTemplateEO();
updateSource.setId(paramsTemplateId);
updateSource.setVersion(newVersion);
updateSource.setStatus(1);
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();