zero преди 1 година
родител
ревизия
4cc7c986e0

+ 50 - 0
src/main/java/cn/cslg/pas/common/dto/AddNoveltyProjectDTO.java

@@ -0,0 +1,50 @@
+package cn.cslg.pas.common.dto;
+
+import lombok.Data;
+
+@Data
+public class AddNoveltyProjectDTO {
+
+    private String customCaseNumber;
+
+    private String innerCaseNumber;
+
+    private String applicants;
+
+    private String inventor;
+
+    private String ipr;
+
+    private String technicalContact;
+
+    private String searchUnit;
+
+    private String searchUnitContact;
+
+    private String caseName;
+
+    private String searchReviewer;
+
+    private String preliminaryConclusions;
+
+    private String ifPatentability;
+
+    private String applicationAdvice;
+
+    private String applicationRemark;
+
+    private Integer projectId;
+
+    private Integer entrustType;
+
+    private String entrustId;
+
+    private String headId;
+
+    private String departmentId;
+
+    /**
+     * 项目类型(1专题库 2报告 3专利挖掘项目)
+     */
+    private Integer type;
+}

+ 9 - 0
src/main/java/cn/cslg/pas/common/dto/NoveltyProjectIdDTO.java

@@ -0,0 +1,9 @@
+package cn.cslg.pas.common.dto;
+
+import lombok.Data;
+
+@Data
+public class NoveltyProjectIdDTO {
+
+    private Integer projectId;
+}

+ 13 - 0
src/main/java/cn/cslg/pas/common/dto/QueryNoveltyProjectDTO.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.dto;
+
+import lombok.Data;
+
+@Data
+public class QueryNoveltyProjectDTO {
+
+    private Integer projectId;
+
+    private Long current;
+
+    private Long size;
+}

+ 60 - 0
src/main/java/cn/cslg/pas/common/vo/QueryNoveltyProjectVO.java

@@ -0,0 +1,60 @@
+package cn.cslg.pas.common.vo;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class QueryNoveltyProjectVO {
+
+    private Integer projectId;
+
+    private Integer noveltyProjectId;
+
+    private Integer technicalCaseId ;
+
+    private String customCaseNumber;
+
+    private String innerCaseNumber;
+
+    private String applicants;
+
+    private String inventor;
+
+    private String ipr;
+
+    private String technicalContact;
+
+    private String searchUnit;
+
+    private String searchUnitContact;
+
+    private String caseName;
+
+    private String searchReviewer;
+
+    private String preliminaryConclusions;
+
+    private String ifPatentability;
+
+    private String applicationAdvice;
+
+    private String applicationRemark;
+
+    private String ipc;
+
+    private String solvedProblem;
+
+    private String technicalField;
+
+    private String remark;
+
+    private String picture;
+
+    private String inventionPoint;
+
+    private List<SystemFile> systemFileList;
+
+
+}

+ 76 - 0
src/main/java/cn/cslg/pas/controller/NoveltyProjectController.java

@@ -0,0 +1,76 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.AddNoveltyProjectDTO;
+import cn.cslg.pas.common.dto.NoveltyProjectIdDTO;
+import cn.cslg.pas.common.dto.QueryNoveltyProjectDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
+import cn.cslg.pas.factorys.businessFactory.Business;
+import cn.cslg.pas.service.business.NoveltyProjectService;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RequestMapping(Constants.API_XiaoSHI + "/noveltyProject")
+@RestController
+public class NoveltyProjectController {
+
+    @Autowired
+    private NoveltyProjectService noveltyProjectService;
+
+    @Operation(summary = "添加查新检索报告")
+    @PostMapping("/addNoveltyProject")
+    public Response addNoveltyProject(@RequestBody AddNoveltyProjectDTO noveltyProjectDTO) throws Exception {
+        Integer noveltyProjectId = null;
+        try {
+            noveltyProjectId = noveltyProjectService.addNoveltyProject(noveltyProjectDTO);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success(noveltyProjectId);
+    }
+
+    @Operation(summary = "查询查新检索报告")
+    @PostMapping("/queryNoveltyProject")
+    public Response queryNoveltyProject(@RequestBody QueryNoveltyProjectDTO noveltyProjectDTO) throws Exception {
+        Records records = new Records();
+        try {
+            records = noveltyProjectService.queryNoveltyProject(noveltyProjectDTO);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success(records);
+    }
+
+    @Operation(summary = "编辑查新检索报告")
+    @PostMapping("/updateNoveltyProject")
+    public Response updateNoveltyProject(@RequestBody AddNoveltyProjectDTO noveltyProjectDTO) throws Exception {
+        Integer noveltyProjectId = null;
+        try {
+            noveltyProjectId = noveltyProjectService.updateNoveltyProject(noveltyProjectDTO);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success(noveltyProjectId);
+    }
+
+    @Operation(summary = "删除查新检索报告")
+    @PostMapping("/deleteNoveltyProject")
+    public Response deleteNoveltyProject(@RequestBody NoveltyProjectIdDTO vo) throws Exception {
+        try {
+            noveltyProjectService.deleteNoveltyProject(vo);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success("删除成功");
+    }
+
+}

+ 72 - 0
src/main/java/cn/cslg/pas/domain/business/NoveltyProject.java

@@ -0,0 +1,72 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("novelty_project")
+public class NoveltyProject extends BaseEntity<NoveltyProject> {
+
+    //客户案号
+    @TableField(value = "custom_case_number")
+    private String customCaseNumber;
+
+    //内部案号
+    @TableField(value = "inner_case_number")
+    private String innerCaseNumber;
+
+    //申请单位
+    @TableField(value = "applicants")
+    private String applicants;
+
+    //发明人
+    @TableField(value = "inventor")
+    private String inventor;
+
+    //IPR
+    @TableField(value = "ipr")
+    private String ipr;
+
+    //技术接口人
+    @TableField(value = "technical_contact")
+    private String technicalContact;
+
+    //检索单位
+    @TableField(value = "search_unit")
+    private String searchUnit;
+
+    //检索员联系方式
+    @TableField(value = "search_unit_contact")
+    private String searchUnitContact;
+
+    //案件名称
+    @TableField(value = "case_name")
+    private String caseName;
+
+    //检索员审核人
+    @TableField(value = "search_reviewer")
+    private String searchReviewer;
+
+    //初步结论
+    @TableField(value = "preliminary_conclusions")
+    private String preliminaryConclusions;
+
+    //是否具有专利性
+    @TableField(value = "if_patentability")
+    private String ifPatentability;
+
+    //申请建议
+    @TableField(value = "application_advice")
+    private String applicationAdvice;
+
+    //申请描述
+    @TableField(value = "application_remark")
+    private String applicationRemark;
+
+    //项目id
+    @TableField(value = "project_id")
+    private Integer projectId;
+
+}

+ 39 - 0
src/main/java/cn/cslg/pas/domain/business/TechnicalCase.java

@@ -0,0 +1,39 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("technical_case")
+public class TechnicalCase extends BaseEntity<TechnicalCase> {
+
+    //IPC类号
+    @TableField(value = "ipc")
+    private String ipc;
+
+    //项目id
+    @TableField(value = "project_id")
+    private Integer projectId;
+
+    //解决的问题
+    @TableField(value = "solved_problem")
+    private String solvedProblem;
+
+    //方案技术领域
+    @TableField(value = "technical_field")
+    private String technicalField;
+
+    //技术方案概述
+    @TableField(value = "remark")
+    private String remark;
+
+    //代表图
+    @TableField(value = "picture")
+    private String picture;
+
+    //发明点
+    @TableField(value = "invention_point")
+    private String inventionPoint;
+}

+ 17 - 0
src/main/java/cn/cslg/pas/mapper/NoveltyProjectMapper.java

@@ -0,0 +1,17 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.common.dto.QueryNoveltyProjectDTO;
+import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
+import cn.cslg.pas.domain.business.NoveltyProject;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface NoveltyProjectMapper extends BaseMapper<NoveltyProject> {
+
+    List<QueryNoveltyProjectVO> queryNoveltyProject(@Param("vo") QueryNoveltyProjectDTO vo);
+    Long queryNoveltyProjectCount(@Param("vo") QueryNoveltyProjectDTO vo);
+}

+ 7 - 0
src/main/java/cn/cslg/pas/mapper/TechnicalCaseMapper.java

@@ -0,0 +1,7 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.TechnicalCase;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface TechnicalCaseMapper extends BaseMapper<TechnicalCase> {
+}

+ 123 - 0
src/main/java/cn/cslg/pas/service/business/NoveltyProjectService.java

@@ -0,0 +1,123 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.common.dto.AddNoveltyProjectDTO;
+import cn.cslg.pas.common.dto.NoveltyProjectIdDTO;
+import cn.cslg.pas.common.dto.QueryNoveltyProjectDTO;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
+import cn.cslg.pas.domain.business.NoveltyProject;
+import cn.cslg.pas.domain.business.Project;
+import cn.cslg.pas.mapper.NoveltyProjectMapper;
+import cn.cslg.pas.mapper.ProjectMapper;
+import cn.cslg.pas.service.common.FileManagerService;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Service
+@Slf4j
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class NoveltyProjectService extends ServiceImpl<NoveltyProjectMapper, NoveltyProject> {
+    private final CacheUtils cacheUtils;
+    private final LoginUtils loginUtils;
+
+    @Autowired
+    private FileManagerService fileManagerService;
+
+    @Autowired
+    private ProjectMapper projectMapper;
+
+    @Autowired
+    private NoveltyProjectMapper noveltyProjectMapper;
+
+
+    public Records queryNoveltyProject(QueryNoveltyProjectDTO vo) {
+        vo.setCurrent(vo.getCurrent() - 1);
+        //查询数据库
+        List<QueryNoveltyProjectVO> noveltyProjectVOS = noveltyProjectMapper.queryNoveltyProject(vo);
+        if (!CollectionUtils.isEmpty(noveltyProjectVOS)) {
+            noveltyProjectVOS.forEach(i -> {
+                if (StringUtils.isNotEmpty(i.getPicture())) {
+                    List<String> guids = new ArrayList<>();
+                    guids.add(i.getPicture());
+                    String res = null;
+                    try {
+                        res = fileManagerService.getSystemFileFromFMS(guids);
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                    if (StringUtils.isNotEmpty(res)) {
+                        final List<SystemFile> systemFiles = JSONObject.parseArray(res, SystemFile.class);
+                        i.setSystemFileList(systemFiles);
+                    }
+                }
+            });
+        }
+        //查询总数
+        final Long total = noveltyProjectMapper.queryNoveltyProjectCount(vo);
+        Records records = new Records();
+        records.setCurrent(vo.getCurrent());
+        records.setSize(vo.getSize());
+        records.setData(noveltyProjectVOS);
+        records.setTotal(total);
+        return records;
+    }
+
+
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
+    public Integer addNoveltyProject(AddNoveltyProjectDTO vo) {
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+
+        Project project = new Project();
+        BeanUtils.copyProperties(vo, project);
+        project.setTenantId(personnelVO.getTenantId());
+        project.setCreateId(personnelVO.getId());
+        project.setCreateTime(new Date());
+        project.insert();
+
+        NoveltyProject noveltyProject = new NoveltyProject();
+        BeanUtils.copyProperties(vo, noveltyProject);
+        noveltyProject.setProjectId(project.getId());
+        noveltyProject.insert();
+
+        return project.getId();
+    }
+
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
+    public Integer updateNoveltyProject(AddNoveltyProjectDTO vo) {
+        Project project = projectMapper.selectById(vo.getProjectId());
+        BeanUtils.copyProperties(vo, project);
+        project.updateById();
+
+        NoveltyProject noveltyProject = noveltyProjectMapper.selectOne(new LambdaQueryWrapper<NoveltyProject>()
+                .eq(NoveltyProject::getProjectId, vo.getProjectId()));
+        BeanUtils.copyProperties(vo, noveltyProject);
+        noveltyProject.setId(noveltyProject.getId());
+        noveltyProject.updateById();
+        return project.getId();
+    }
+
+    public void deleteNoveltyProject(NoveltyProjectIdDTO vo) {
+        this.remove(new LambdaQueryWrapper<NoveltyProject>().eq(NoveltyProject::getProjectId, vo.getProjectId()));
+        projectMapper.deleteById(vo.getProjectId());
+    }
+}

+ 16 - 0
src/main/java/cn/cslg/pas/service/business/TechnicalCaseService.java

@@ -0,0 +1,16 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.domain.business.TechnicalCase;
+import cn.cslg.pas.mapper.TechnicalCaseMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+@Service
+@Slf4j
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class TechnicalCaseService extends ServiceImpl<TechnicalCaseMapper, TechnicalCase> {
+
+}

+ 51 - 0
src/main/resources/mapper/NoveltyProjectMapper.xml

@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="cn.cslg.pas.mapper.NoveltyProjectMapper">
+
+    <select id="queryNoveltyProject" resultType="cn.cslg.pas.common.vo.QueryNoveltyProjectVO">
+        select p.id as projectId,
+        np.id as noveltyProjectId,
+        tc.id as technicalCaseId,
+        np.custom_case_number,
+        np.inner_case_number,
+        np.applicants,
+        np.inventor,
+        np.ipr,
+        np.technical_contact,
+        np.search_unit,
+        np.search_unit_contact,
+        np.case_name,
+        np.search_reviewer,
+        np.preliminary_conclusions,
+        np.if_patentability,
+        np.application_advice,
+        np.application_remark,
+        tc.ipc,
+        tc.solved_problem,
+        tc.technical_field,
+        tc.remark,
+        tc.picture,
+        tc.invention_point
+        from novelty_project np
+        left join project p on p.id = np.project_id
+        left join technical_case tc on tc.project_id = p.id
+        <where>
+            <if test="vo.projectId != null">
+                and np.project_id = #{vo.projectId}
+            </if>
+        </where>
+        limit #{vo.current},#{vo.size};
+    </select>
+
+    <select id="queryNoveltyProjectCount" resultType="java.lang.Long">
+        select count(*)
+        from novelty_project np
+        left join project p on p.id = np.project_id
+        left join technical_case tc on tc.project_id = p.id
+        <where>
+            <if test="vo.projectId != null">
+                and np.project_id = #{vo.projectId}
+            </if>
+        </where>
+    </select>
+</mapper>