|
@@ -46,16 +46,16 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
|
|
|
|
|
|
@Autowired
|
|
|
private PatentProjectMapper patentProjectMapper;
|
|
|
+
|
|
|
@Autowired
|
|
|
private FormatQueryService formatQueryService;
|
|
|
|
|
|
-
|
|
|
@Autowired
|
|
|
private QueryGroupFactory queryGroupFactory;
|
|
|
|
|
|
-
|
|
|
@Autowired
|
|
|
private CacheUtils cacheUtils;
|
|
|
+
|
|
|
@Autowired
|
|
|
private LoginUtils loginUtils;
|
|
|
|
|
@@ -73,6 +73,7 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
|
|
|
|
|
|
@Autowired
|
|
|
private FileManagerService fileManagerService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private AssoProjectService assoProjectService;
|
|
|
|
|
@@ -91,6 +92,12 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
|
|
|
@Autowired
|
|
|
private ProductCategoryService productCategoryService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ProjectService projectService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AssoProjectScenarioService assoProjectScenarioService;
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Object queryMessage(QueryRequest queryRequest) throws Exception {
|
|
@@ -133,11 +140,21 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Object deleteMessage(List<Integer> ids) throws IOException {
|
|
|
//TODO 检查是否有关联报告,如果有则提示不允许删除
|
|
|
-
|
|
|
+ LambdaQueryWrapper<AssoProject> reportExistWrapper = new LambdaQueryWrapper<>();
|
|
|
+ reportExistWrapper.in(AssoProject::getProjectId, ids);
|
|
|
+ reportExistWrapper.eq(AssoProject::getAssoProjectType, 2);
|
|
|
+ List<AssoProject> assoProjects = assoProjectService.list(reportExistWrapper);
|
|
|
+ if (assoProjects.size() != 0) {
|
|
|
+ throw new XiaoShiException("待删除专题库集合中有关联报告,无法删除!");
|
|
|
+ }
|
|
|
//TODO 根据id删除专利数据库和文件关联表
|
|
|
-
|
|
|
+ LambdaQueryWrapper<AssoProjectFile> deleteFileWrapper = new LambdaQueryWrapper<>();
|
|
|
+ deleteFileWrapper.in(AssoProjectFile::getProjectId, ids);
|
|
|
+ assoProjectFileService.remove(deleteFileWrapper);
|
|
|
//TODO 根据id删除专利数据库和事件的关联表
|
|
|
-
|
|
|
+ LambdaQueryWrapper<AssoProjectEvent> deleteEventWrapper = new LambdaQueryWrapper<>();
|
|
|
+ deleteEventWrapper.in(AssoProjectEvent::getProjectId, ids);
|
|
|
+ assoProjectEventService.remove(deleteEventWrapper);
|
|
|
//TODO 根据id删除专利数据库的自定义字段的标引(es部分,暂时不做)
|
|
|
|
|
|
//TODO 根据id删除专利数据库的自定义字段(自定义字段模块未完成,暂时不做)
|
|
@@ -145,7 +162,9 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
|
|
|
//TODO 根据id删除专利数据库和事件的关联
|
|
|
|
|
|
//TODO 根据id删除专利数据库和应用场景关联
|
|
|
-
|
|
|
+ LambdaQueryWrapper<AssoProjectScenario> deleteScenarioWrapper = new LambdaQueryWrapper<>();
|
|
|
+ deleteScenarioWrapper.in(AssoProjectScenario::getProjectId, ids);
|
|
|
+ assoProjectScenarioService.remove(deleteScenarioWrapper);
|
|
|
//TODO 根据id删除专利数据库和报告的关联
|
|
|
|
|
|
//TODO 根据id删除任务信息(任务模块未完成,暂时不做)
|
|
@@ -155,9 +174,7 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
|
|
|
//TODO 根据id删除导入任务信息(导入任务模块未完成,暂时不做)
|
|
|
|
|
|
//
|
|
|
-
|
|
|
-
|
|
|
- return null;
|
|
|
+ return ids;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -396,8 +413,176 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
|
|
|
//TODO 更新事件
|
|
|
//TODO 若产品或产品类别技术类别有更新,则删除产品或产品类别技术类别和专利的标引(只需判断,删除部分,待es完成)
|
|
|
//TODO 更新关联附件
|
|
|
+ if (object == null) {
|
|
|
+ throw new XiaoShiException("参数不能为空");
|
|
|
+ }
|
|
|
+ //TODO 校验参数
|
|
|
+ UpdatePatentProjectDTO updatePatentProjectDTO = (UpdatePatentProjectDTO) object;
|
|
|
+ //判断是否选择更新并且上传了cron表达式
|
|
|
+ if (updatePatentProjectDTO.getIfUpdate() != false) {
|
|
|
+ if (updatePatentProjectDTO.getCrons() == null && updatePatentProjectDTO.getCrons().equals("")) {
|
|
|
+ throw new XiaoShiException("选择更新,则cron表达式不能为空!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //校验必传参数是否上传
|
|
|
+ if (updatePatentProjectDTO.getHeadId() == null) {
|
|
|
+ throw new XiaoShiException("负责人id不能为空");
|
|
|
+ }
|
|
|
+ //获取登陆人信息 用于设置创建人
|
|
|
+ PersonnelVO personnelVO = new PersonnelVO();
|
|
|
+ try {
|
|
|
+ personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new UnLoginException("未登录");
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 装载project
|
|
|
+ */
|
|
|
+ //根据传入对象id查询project对象
|
|
|
+ Project project = projectService.getById(updatePatentProjectDTO.getId());
|
|
|
+ BeanUtils.copyProperties(updatePatentProjectDTO, project);
|
|
|
+ //当委托方id不为空时
|
|
|
+ if (updatePatentProjectDTO.getEntrustId() != null) {
|
|
|
+ project.setEntrustId(updatePatentProjectDTO.getEntrustId());
|
|
|
+ } else {//若且租户类型为代理机构,并且委托方id为空,委托方名称不为空时,新增委托方
|
|
|
+ ClientDTO clientDTO = new ClientDTO();
|
|
|
+ clientDTO.setName(updatePatentProjectDTO.getEntrustName());
|
|
|
+ clientDTO.setTenantId(personnelVO.getTenantId());
|
|
|
+ try {
|
|
|
+ String res = permissionService.addClient(clientDTO);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(res);
|
|
|
+ Integer clientId = Integer.parseInt(jsonObject.get("data").toString());
|
|
|
+ project.setEntrustId(clientId.toString());
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new XiaoShiException("网络异常");
|
|
|
+ }
|
|
|
|
|
|
- return null;
|
|
|
+ }
|
|
|
+ project.updateById();
|
|
|
+ /**
|
|
|
+ * 装载patentProject
|
|
|
+ */
|
|
|
+ //根据projectId查询出patentProject
|
|
|
+ LambdaQueryWrapper<PatentProject> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(PatentProject::getProjectId, project.getId());
|
|
|
+ PatentProject patentProject = this.getOne(queryWrapper);
|
|
|
+ //赋值
|
|
|
+ BeanUtils.copyProperties(updatePatentProjectDTO, patentProject);
|
|
|
+ patentProject.updateById();
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 装载事件与project关联
|
|
|
+ */
|
|
|
+ List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
|
|
|
+ LambdaQueryWrapper<AssoProjectEvent> updateEventWrapper = new LambdaQueryWrapper<>();
|
|
|
+ updateEventWrapper.eq(AssoProjectEvent::getProjectId, project.getId());
|
|
|
+ assoProjectEventService.remove(updateEventWrapper);
|
|
|
+ List<ProjectEventDTO> events = updatePatentProjectDTO.getEvents();
|
|
|
+ if (events != null && events.size() != 0) {
|
|
|
+ //遍历传入的事件集合
|
|
|
+ for (ProjectEventDTO projectEventDTO : events) {
|
|
|
+ AssoProjectEvent assoProjectEvent = new AssoProjectEvent();
|
|
|
+ //事件id和处理事项id
|
|
|
+ BeanUtils.copyProperties(projectEventDTO, assoProjectEvent);
|
|
|
+ //项目id
|
|
|
+ assoProjectEvent.setProjectId(project.getId());
|
|
|
+ //创建人
|
|
|
+ assoProjectEvent.setCreateId(personnelVO.getId());
|
|
|
+ //类型为专题库
|
|
|
+ assoProjectEvent.setProjectType(0);
|
|
|
+ assoProjectEvents.add(assoProjectEvent);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //装载应用场景和project关联
|
|
|
+ List<Integer> scenarios = updatePatentProjectDTO.getScenarioIds();
|
|
|
+ if (scenarios != null && scenarios.size() > 0) {
|
|
|
+ for (Integer item : scenarios) {
|
|
|
+ AssoProjectEvent assoProjectEvent = new AssoProjectEvent();
|
|
|
+ //项目id
|
|
|
+ assoProjectEvent.setProjectId(project.getId());
|
|
|
+ //创建人
|
|
|
+ assoProjectEvent.setCreateId(personnelVO.getId());
|
|
|
+ //类型为专题库
|
|
|
+ assoProjectEvent.setProjectType(0);
|
|
|
+ //装载场景id
|
|
|
+ assoProjectEvent.setScenarioId(item);
|
|
|
+ assoProjectEvents.add(assoProjectEvent);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //装载处理事项和project关联
|
|
|
+ List<Integer> matter = updatePatentProjectDTO.getMatterIds();
|
|
|
+ if (matter != null && matter.size() > 0) {
|
|
|
+ for (Integer item : matter) {
|
|
|
+ AssoProjectEvent assoProjectEvent = new AssoProjectEvent();
|
|
|
+ //项目id
|
|
|
+ assoProjectEvent.setProjectId(project.getId());
|
|
|
+ //创建人
|
|
|
+ assoProjectEvent.setCreateId(personnelVO.getId());
|
|
|
+ //类型为专题库
|
|
|
+ assoProjectEvent.setProjectType(0);
|
|
|
+ //装载处理事项id
|
|
|
+ assoProjectEvent.setMatterId(item);
|
|
|
+ assoProjectEvents.add(assoProjectEvent);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //统一进行保存
|
|
|
+ if (assoProjectEvents != null && assoProjectEvents.size() != 0) {
|
|
|
+ assoProjectEventService.saveBatch(assoProjectEvents);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 装载树结构和project关联
|
|
|
+ */
|
|
|
+ List<AssoProjectTreeNode> assoProjectTreeNodes = new ArrayList<>();
|
|
|
+ LambdaQueryWrapper<AssoProjectTreeNode> updateTreeWrapper = new LambdaQueryWrapper<>();
|
|
|
+ updateTreeWrapper.eq(AssoProjectTreeNode::getProjectId, project.getId());
|
|
|
+ assoProjectTreeNodeService.remove(updateTreeWrapper);
|
|
|
+
|
|
|
+ List<ProjectTreesDTO> trees = updatePatentProjectDTO.getTrees();
|
|
|
+ if (trees != null && trees.size() != 0) {
|
|
|
+ //遍历传入的树
|
|
|
+ for (ProjectTreesDTO projectTreesDTO : trees) {
|
|
|
+ List<Integer> valueIds = projectTreesDTO.getValueIds();
|
|
|
+ //遍历值id集合
|
|
|
+ for (Integer valueId : valueIds) {
|
|
|
+ AssoProjectTreeNode assoProjectTreeNode = new AssoProjectTreeNode();
|
|
|
+ BeanUtils.copyProperties(projectTreesDTO, assoProjectTreeNode);
|
|
|
+ //专题库、报告id
|
|
|
+ assoProjectTreeNode.setProjectId(project.getId());
|
|
|
+ //值id
|
|
|
+ assoProjectTreeNode.setValueId(valueId);
|
|
|
+ assoProjectTreeNodes.add(assoProjectTreeNode);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (assoProjectTreeNodes != null && assoProjectTreeNodes.size() != 0) {
|
|
|
+ assoProjectTreeNodeService.saveBatch(assoProjectTreeNodes);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 装载和附件关联
|
|
|
+ */
|
|
|
+ List<AssoProjectFile> assoProjectFiles = new ArrayList<>();
|
|
|
+ LambdaQueryWrapper<AssoProjectFile> updateFileWrapper = new LambdaQueryWrapper<>();
|
|
|
+ updateFileWrapper.eq(AssoProjectFile::getProjectId, project.getId());
|
|
|
+ assoProjectFileService.remove(updateFileWrapper);
|
|
|
+ List<String> fileGuids = updatePatentProjectDTO.getFileGuids();
|
|
|
+ if (fileGuids != null && fileGuids.size() != 0) {
|
|
|
+ for (String fileGuid : fileGuids) {
|
|
|
+ AssoProjectFile assoProjectFile = new AssoProjectFile();
|
|
|
+ assoProjectFile.setProjectId(project.getId());
|
|
|
+ assoProjectFile.setFileGuid(fileGuid);
|
|
|
+ assoProjectFile.setCreateId(personnelVO.getId());
|
|
|
+ assoProjectFiles.add(assoProjectFile);
|
|
|
+ }
|
|
|
+ if (assoProjectFiles != null && assoProjectFiles.size() != 0) {
|
|
|
+ assoProjectFileService.saveBatch(assoProjectFiles);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return project.getId();
|
|
|
}
|
|
|
|
|
|
/**
|