Jelajahi Sumber

查询专题库,查询报告

lwhhszx 1 tahun lalu
induk
melakukan
e489859454

+ 44 - 0
src/main/java/cn/cslg/pas/common/dto/business/FollowUpDTO.java

@@ -0,0 +1,44 @@
+package cn.cslg.pas.common.dto.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 后续事项表
+ * </p>
+ *
+ * @author 李仁杰
+ * @since 2023-11-9
+ */
+@Data
+/*数据库中的表对应的类
+ */
+public class FollowUpDTO  {
+    /**
+     * 名称
+     */
+
+    private String name;
+
+    /**
+     * 处理人
+     */
+    private String handler;
+    /**
+     * 协同人
+     */
+    private String synery;
+
+    /**
+     * 截止时间
+     */
+    private Date deadline;
+
+    private String   description;
+
+}

+ 6 - 6
src/main/java/cn/cslg/pas/common/dto/business/PatentProjectDTO.java

@@ -16,19 +16,19 @@ import java.util.List;
  */
 @Data
 public class PatentProjectDTO {
-    @Schema(description = "名称")
+    @Schema(description = "名称")//查询
     private String name;
     @Schema(description = "委托方id")
     private String entrustId;
-    @Schema(description = "委托方名称")
+    @Schema(description = "委托方名称") //查询/分组
     private String entrustName;
     @Schema(description = "负责人id")
     private String headId;
-    @Schema(description = "负责部门id")
+    @Schema(description = "负责部门id") // 查询
     private String departmentId;
     @Schema(description = "合同号")
     private String contractNo;
-    @Schema(description = "内部卷号")
+    @Schema(description = "内部卷号") //查询
     private String volumeNumber;
     @Schema(description = "委案日")
     @DateTimeFormat(pattern = "yyyy-MM-dd")
@@ -36,10 +36,10 @@ public class PatentProjectDTO {
     private Date commissionCaseDay;
     @Schema(description = "描述")
     private String description;
-    @Schema(description = "应用场景")
+    @Schema(description = "应用场景") //查询分组
     private List<Integer> scenarioIds;
 
-    @Schema(description = "应用场景")
+    @Schema(description = "处理事项") //查询分组
     private List<Integer> matterIds;
     @Schema(description = "是否更新")
     private Boolean ifUpdate;

+ 10 - 3
src/main/java/cn/cslg/pas/common/dto/business/ReportProjectDTO.java

@@ -18,11 +18,11 @@ public class ReportProjectDTO {
     @Schema(description = "委托类型1客户,2部门")
     private Integer entrustType;
     @Schema(description = "委托方id")
-    private Integer entrustId;
+    private String entrustId;
     @Schema(description = "负责人id")
-    private Integer headId;
+    private String headId;
     @Schema(description = "负责部门id")
-    private Integer departmentId;
+    private String departmentId;
     @Schema(description = "项目类型(1专题库 2报告 3专利挖掘项目)")
     private Integer type;
     @Schema(description = "合同号")
@@ -60,4 +60,11 @@ public class ReportProjectDTO {
     private List<String> fileGuids;
     @Schema(description = "核心结论")
     private List<Integer> cronIds;
+    @Schema(description = "后续事项")
+    private List<FollowUpDTO> followUps;
+    @Schema(description = "产品或技术")
+    private String productOrTech;
+    @Schema(description = "关联报告")
+    private Integer AssoReportId;
+
 }

+ 27 - 3
src/main/java/cn/cslg/pas/common/vo/business/PatentProjectVO.java

@@ -93,7 +93,7 @@ public class PatentProjectVO {
      * 委案日
      */
     @Schema(description = "委案日")
-    private String commissionCaseDay;
+    private Date commissionCaseDay;
 
     /**
      * 描述
@@ -131,12 +131,36 @@ public class PatentProjectVO {
     private String createName;
 
     @Schema(description= "创建时间")
-    private DateTime createTime;
+    private Date createTime;
 
     @Schema(description = "文件信息")
     private List<SystemFile> systemFileList;
 
-    @Schema(description = "文件信息")
+    @Schema(description = "报告数量")
     private Integer reportProjectNum;
 
+    @Schema(description = "应用场景id")
+    private List<Integer> scenarioIds;
+
+    @Schema(description = "应用场景名称")
+    private List<String> scenarioNames;
+
+
+    @Schema(description = "处理事项id")
+    private List<Integer> matterIds;
+
+    @Schema(description = "处理事项名称")
+    private List<String> matterNames;
+
+    @Schema(description = "事件id")
+    private List<Integer> eventIds;
+
+    @Schema(description = "事件名称")
+    private List<String> eventNames;
+
+    @Schema(description = "产品或产品类别名称")
+    private String productOrCategoryName;
+
+    @Schema(description = "技术类别名称")
+    private String technicalCategoryName;
 }

+ 25 - 8
src/main/java/cn/cslg/pas/common/vo/business/ReportProjectVO.java

@@ -1,10 +1,14 @@
 package cn.cslg.pas.common.vo.business;
 
+import cn.cslg.pas.common.model.cronModel.SystemFile;
 import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import org.joda.time.DateTime;
 
+import java.util.Date;
+import java.util.List;
+
 /**
  * <p>
  * 报告DTO类
@@ -19,7 +23,7 @@ import org.joda.time.DateTime;
 public class ReportProjectVO {
 
     @Schema(description = "id")
-    private String id;
+    private Integer id;
 
     @Schema(description = "名称")
     private String name;
@@ -34,38 +38,38 @@ public class ReportProjectVO {
      * 委托方id
      */
     @Schema(description = "委托方id")
-    private Integer entrustId;
+    private String entrustId;
 
     /**
      * 委托方姓名
      */
     @Schema(description = "委托方姓名")
-    private Integer entrustName;
+    private String entrustName;
 
     /**
      * 负责人id
      */
     @Schema(description = "head_id")
-    private Integer headId;
+    private String headId;
 
     /**
      * 负责人名称
      */
     @Schema(description = "负责人名称")
-    private Integer headName;
+    private String headName;
 
 
     /**
      * 负责部门id
      */
     @Schema(description = "负责部门id")
-    private Integer departmentId;
+    private String departmentId;
 
     /**
      * 负责部门名称
      */
     @Schema(description = "负责部门名称")
-    private Integer departmentName;
+    private String departmentName;
 
     /**
      * 项目类型(1专题库 2报告 3专利挖掘项目)
@@ -167,7 +171,20 @@ public class ReportProjectVO {
     @Schema(description = "创建人")
     private String createId;
 
+    /**
+     * 创建人
+     */
+    @Schema(description = "创建人")
+    private String createName;
 
     @Schema(description= "创建时间")
-    private DateTime createTime;
+    private Date createTime;
+
+    @Schema(description = "事件id")
+    private List<Integer> eventIds;
+
+    @Schema(description = "事件名称")
+    private List<String> eventNames;
+    @Schema(description = "文件信息")
+    private List<SystemFile> systemFileList;
 }

+ 3 - 3
src/main/java/cn/cslg/pas/controller/ReportProjectController.java

@@ -47,12 +47,12 @@ public class ReportProjectController {
 
     @Operation(summary = "添加报告")
     @PostMapping("/addReportProject")
-    public Response addReportProject(ReportProjectDTO reportProjectDTO, List<MultipartFile> files) throws Exception {
+    public Response addReportProject(@RequestBody ReportProjectDTO reportProjectDTO) throws Exception {
         if (reportProjectDTO != null) {
             Business business = businessFactory.getClass("reportProjectService");
             Integer id = null;
             try {
-                id = (Integer) business.addMessage(reportProjectDTO, files);
+                id = (Integer) business.addMessage(reportProjectDTO);
             } catch (Exception e) {
                 if (e instanceof XiaoShiException) {
                     return Response.error(e.getMessage());
@@ -82,7 +82,7 @@ public class ReportProjectController {
         }
     }
 
-    @Operation(summary = "删除专利数据库")
+    @Operation(summary = "删除报告")
     @PostMapping("/deleteReportProject")
     public String deletePatentProject(@RequestBody List<Integer> ids) throws Exception {
         Business business = businessFactory.getClass("eventService");

+ 66 - 0
src/main/java/cn/cslg/pas/domain/business/FollowUp.java

@@ -0,0 +1,66 @@
+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;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 后续事项表
+ * </p>
+ *
+ * @author 李仁杰
+ * @since 2023-11-9
+ */
+@Data
+@TableName("follow_up")
+/*数据库中的表对应的类
+ */
+public class FollowUp extends BaseEntity<FollowUp> {
+    @TableField(value = "project_id")
+    private Integer projectId;
+    /**
+     * 名称
+     */
+    @TableField(value = "name")
+    private String name;
+
+    /**
+     * 处理人
+     */
+    @TableField(value = "handler")
+    private String handler;
+    /**
+     * 协同人
+     */
+    @TableField(value = "synery")
+    private String synery;
+
+    /**
+     * 截止时间
+     */
+    @TableField(value = "deadline")
+    private Date deadline;
+
+    /**
+     * 创建人
+     */
+    @TableField(value = "create_id")
+    private String createId;
+
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+
+    /**
+     * 备注
+     */
+    @TableField(value = "description")
+    private String description;
+}

+ 7 - 2
src/main/java/cn/cslg/pas/domain/business/ReportProject.java

@@ -21,7 +21,7 @@ public class ReportProject extends BaseEntity<ReportProject> {
      * 项目id
      */
     @TableField(value = "project_id")
-    private Integer project_id;
+    private Integer projectId;
 
     /**
      *标的专利号
@@ -38,7 +38,7 @@ public class ReportProject extends BaseEntity<ReportProject> {
     /**
      *类型
      */
-    @TableField(value = "type")
+    @TableField(value = "report_type")
     private Integer type;
     /**
      * 状态
@@ -77,6 +77,11 @@ public class ReportProject extends BaseEntity<ReportProject> {
     @TableField(value = "invalid_application")
     private String invalidApplication;
 
+    /**
+     * 产品或技术
+     */
+    @TableField(value = "product_or_tech")
+    private String productOrTech;
 
 
     /**

+ 21 - 0
src/main/java/cn/cslg/pas/mapper/FollowUpMapper.java

@@ -0,0 +1,21 @@
+package cn.cslg.pas.mapper;
+
+
+import cn.cslg.pas.common.vo.business.ReportCountVO;
+import cn.cslg.pas.domain.business.AssoProject;
+import cn.cslg.pas.domain.business.FollowUp;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 后续事项表
+ *
+ * @author lirj
+ * @date 2023/11/9
+ */
+@Repository
+public interface FollowUpMapper extends BaseMapper<FollowUp> {
+
+}

+ 1 - 0
src/main/java/cn/cslg/pas/mapper/ReportProjectMapper.java

@@ -18,4 +18,5 @@ import java.util.List;
 public interface ReportProjectMapper extends BaseMapper<ReportProject> {
 
     public List<ReportProjectVO> getReportProject(String sql1,String sql2,String sql3);
+    public Long getReportProjectCount(String sql);
 }

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

@@ -0,0 +1,16 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.domain.business.FollowUp;
+import cn.cslg.pas.domain.business.RdProject;
+import cn.cslg.pas.mapper.FollowUpMapper;
+import cn.cslg.pas.mapper.RdProjectMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author lrj
+ * @Date 2023/11/9
+ */
+@Service
+public class FollowUpService extends ServiceImpl<FollowUpMapper, FollowUp> {
+}

+ 145 - 44
src/main/java/cn/cslg/pas/service/business/PatentProjectService.java

@@ -9,8 +9,7 @@ import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.DepartmentVO;
-import cn.cslg.pas.common.vo.business.EventCountVO;
-import cn.cslg.pas.common.vo.business.EventVO;
+
 import cn.cslg.pas.common.vo.business.PatentProjectVO;
 import cn.cslg.pas.common.vo.business.ReportCountVO;
 import cn.cslg.pas.domain.business.*;
@@ -77,6 +76,21 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
     @Autowired
     private AssoProjectService assoProjectService;
 
+    @Autowired
+    private EventService eventService;
+
+    @Autowired
+    private ScenarioService scenarioService;
+
+    @Autowired
+    private MatterService matterService;
+
+    @Autowired
+    private ProductService productService;
+
+    @Autowired
+    private ProductCategoryService productCategoryService;
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
@@ -248,7 +262,6 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
                     } catch (Exception e) {
                         throw new XiaoShiException("网络异常");
                     }
-
                 }
             } else {
 
@@ -394,14 +407,19 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
     private void loadPatentProject(List<PatentProjectVO> patentProjectVOS) throws IOException {
         List<String> createIds = new ArrayList<>();
         List<String> departmentIds = new ArrayList<>();
-        List<Integer> clientIds =new ArrayList<>();
+        List<Integer> clientIds = new ArrayList<>();
         List<Integer> ids = new ArrayList<>();
-        List<DepartmentVO> departmentVOS =new ArrayList<>();
+        List<DepartmentVO> departmentVOS = new ArrayList<>();
         List<ReportCountVO> reportCountVOS = new ArrayList<>();
         List<Client> clients = new ArrayList<>();
-        List<AssoProjectEvent> assoProjectEvents =new ArrayList<>();
-        List<AssoProjectTreeNode> assoProjectTreeNodes =new ArrayList<>();
-        List<Event> events =new ArrayList<>();
+        List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
+        List<AssoProjectTreeNode> assoProjectTreeNodes = new ArrayList<>();
+        List<Event> events = new ArrayList<>();
+        List<Scenario> scenarios = new ArrayList<>();
+        List<Matter> matters = new ArrayList<>();
+        List<Product> products = new ArrayList<>();
+        List<ProductCategory> productCategories = new ArrayList<>();
+        //TODO 技术分类
         //获得创建人id集合
         patentProjectVOS.forEach(
                 item -> {
@@ -422,13 +440,11 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
                         departmentIds.add(item.getDepartmentId());
                     }
 
-                    if(item.getEntrustType()!=null&&item.getEntrustType().equals(2))
-                    {
+                    if (item.getEntrustType() != null && item.getEntrustType().equals(2)) {
                         departmentIds.add(item.getEntrustId());
                     }
 
-                    if(item.getEntrustType()!=null&&item.getEntrustType().equals(1))
-                    {
+                    if (item.getEntrustType() != null && item.getEntrustType().equals(1)) {
                         clientIds.add(Integer.parseInt(item.getEntrustId()));
                     }
                 }
@@ -448,14 +464,14 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
 
         //查询部门名称
         if (departmentIds.size() != 0) {
-            String   json = permissionService.getDepartmentByIdsFromPCS(departmentIds);
-            departmentVOS = JSON.parseArray(json,DepartmentVO.class);
+            String json = permissionService.getDepartmentByIdsFromPCS(departmentIds);
+            departmentVOS = JSON.parseArray(json, DepartmentVO.class);
 
         }
 
 
         if (ids.size() != 0) {
-            //根据事件id获得事件文件关联表
+            //根据事件id获得专利数据库文件关联表
             LambdaQueryWrapper<AssoProjectFile> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.in(AssoProjectFile::getProjectId, ids);
             assoEventFiles = assoProjectFileService.list(queryWrapper);
@@ -481,19 +497,48 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
         }
 
         //查询应用场景、调查类型、事件和专题库的关联
-        if(ids!=null&&ids.size()>0) {
+        if (ids != null && ids.size() > 0) {
             LambdaQueryWrapper<AssoProjectEvent> assoProjectEventQueryWrapper = new LambdaQueryWrapper<>();
             assoProjectEventQueryWrapper.in(AssoProjectEvent::getProjectId, ids);
             assoProjectEvents = assoProjectEventService.list(assoProjectEventQueryWrapper);
+
+            //查询事件
+            if (assoProjectEvents != null && assoProjectEvents.size() != 0) {
+                scenarios = scenarioService.list();
+                matters = matterService.list();
+                List<Integer> eventIds = assoProjectEvents.stream().filter(item -> item.getEventId() != null).map(AssoProjectEvent::getEventId).collect(Collectors.toList());
+                if (eventIds.size() != 0) {
+                    LambdaQueryWrapper<Event> eventQueryWrapper = new LambdaQueryWrapper<>();
+                    eventQueryWrapper.in(Event::getEventId, eventIds);
+                    events = eventService.list(eventQueryWrapper);
+                }
+
+
+            }
         }
 
-       //查询和产品,产品分类,技术分类关联列表
-         if(ids!=null&&ids.size()>0){
-             LambdaQueryWrapper<AssoProjectTreeNode> assoProjectTreeNodeQueryWrapper = new LambdaQueryWrapper<>();
-             assoProjectTreeNodeQueryWrapper.in(AssoProjectTreeNode::getProjectId, ids);
-             assoProjectTreeNodes = assoProjectTreeNodeService.list(assoProjectTreeNodeQueryWrapper);
+        //查询和产品,产品分类,技术分类关联列表
+        if (ids != null && ids.size() > 0) {
+            LambdaQueryWrapper<AssoProjectTreeNode> assoProjectTreeNodeQueryWrapper = new LambdaQueryWrapper<>();
+            assoProjectTreeNodeQueryWrapper.in(AssoProjectTreeNode::getProjectId, ids);
+            assoProjectTreeNodes = assoProjectTreeNodeService.list(assoProjectTreeNodeQueryWrapper);
+            if (assoProjectTreeNodes != null && assoProjectTreeNodes.size() > 0) {
+                List<Integer> productIds = assoProjectTreeNodes.stream().filter(item -> item.getTreeType().equals(2)).map(AssoProjectTreeNode::getFieldId).collect(Collectors.toList());
+                if (productIds.size() != 0) {
+                    LambdaQueryWrapper<Product> productQueryWrapper = new LambdaQueryWrapper<>();
+                    productQueryWrapper.in(Product::getId, productIds);
+                    products = productService.list(productQueryWrapper);
+                }
+                List<Integer> productCategoryIds = assoProjectTreeNodes.stream().filter(item -> item.getTreeType().equals(3)).map(AssoProjectTreeNode::getFieldId).collect(Collectors.toList());
+                if (productCategoryIds.size() != 0) {
+                    LambdaQueryWrapper<ProductCategory> productCategoryQueryWrapper = new LambdaQueryWrapper<>();
+                    productCategoryQueryWrapper.in(ProductCategory::getId, productCategoryIds);
+                    productCategories = productCategoryService.list(productCategoryQueryWrapper);
+                }
 
-         }
+            }
+
+        }
 
         //装载信息
         for (PatentProjectVO patentProjectVO : patentProjectVOS) {
@@ -504,7 +549,7 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
                 patentProjectVO.setCreateName(personnel.getPersonnelName());
             }
 
-            if(patentProjectVO.getHeadId()!=null) {
+            if (patentProjectVO.getHeadId() != null) {
                 Personnel headPersonnel = personnels.stream().filter(item -> item.getId().equals(patentProjectVO.getHeadId())).findFirst().orElse(null);
                 if (headPersonnel != null) {
                     patentProjectVO.setHeadName(personnel.getPersonnelName());
@@ -542,35 +587,91 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
             }
 
             //装载部门
-             if(patentProjectVO.getDepartmentId()!=null){
-                 DepartmentVO departmentVO =  departmentVOS.stream().filter(item->item.getDepartId().equals(patentProjectVO.getDepartmentId())).findFirst().orElse(null);
-                  if(departmentVO!=null){
-                      patentProjectVO.setDepartmentName(departmentVO.getDepartName());
-                  }
-             }
+            if (patentProjectVO.getDepartmentId() != null) {
+                DepartmentVO departmentVO = departmentVOS.stream().filter(item -> item.getDepartId().equals(patentProjectVO.getDepartmentId())).findFirst().orElse(null);
+                if (departmentVO != null) {
+                    patentProjectVO.setDepartmentName(departmentVO.getDepartName());
+                }
+            }
 
             //裝載委托方
-             if(patentProjectVO.getEntrustType()!=null){
-                 //当委托方为客户时
-                 if(patentProjectVO.getEntrustType().equals(1)){
-              Client client =  clients.stream().filter(item->item.getId().equals(Integer.parseInt(patentProjectVO.getEntrustId()))).findFirst().orElse(null);
+            if (patentProjectVO.getEntrustType() != null) {
+                //当委托方为客户时
+                if (patentProjectVO.getEntrustType().equals(1)) {
+                    Client client = clients.stream().filter(item -> item.getId().equals(Integer.parseInt(patentProjectVO.getEntrustId()))).findFirst().orElse(null);
+
+                    if (client != null) {
+                        patentProjectVO.setEntrustName(client.getName());
+                    }
 
-              if(client!=null){
-                  patentProjectVO.setEntrustName(client.getName());
-              }
+                } else if (patentProjectVO.getEntrustType().equals(2)) {
+                    DepartmentVO departmentVO = departmentVOS.stream().filter(item -> item.getDepartId().equals(patentProjectVO.getEntrustId())).findFirst().orElse(null);
 
-                 }
+                    if (departmentVO != null) {
+                        patentProjectVO.setEntrustName(departmentVO.getDepartName());
+                    }
+                }
 
-                 else if(patentProjectVO.getEntrustType().equals(2)){
-                     DepartmentVO departmentVO =  departmentVOS.stream().filter(item->item.getDepartId().equals(patentProjectVO.getEntrustId())).findFirst().orElse(null);
+            }
 
-                     if(departmentVO!=null){
-                         patentProjectVO.setEntrustName(departmentVO.getDepartName());
-                     }
-                 }
+            //装载事件 应用场景,处理事项
+            List<Integer> eventIds = new ArrayList<>();
+            List<Integer> matterIds = new ArrayList<>();
+            List<Integer> scenarioIds = new ArrayList<>();
+            List<String> eventTmpNames = new ArrayList<>();
+            List<String> matterTmpNames = new ArrayList<>();
+            List<String> scenarioTmpNames = new ArrayList<>();
+            if (assoProjectEvents != null) {
+                List<AssoProjectEvent> assoProjectEventTmps = assoProjectEvents.stream().filter(item -> item.getProjectId().equals(patentProjectVO.getId())).collect(Collectors.toList());
+
+                if (assoProjectEventTmps.size() != 0) {
+                    //过滤出事件
+                    eventIds = assoProjectEventTmps.stream().filter(item -> item.getEventId() != null).map(AssoProjectEvent::getEventId).collect(Collectors.toList());
+                    matterIds = assoProjectEventTmps.stream().filter(item -> item.getMatterId() != null).map(AssoProjectEvent::getMatterId).collect(Collectors.toList());
+                    scenarioIds = assoProjectEventTmps.stream().filter(item -> item.getScenarioId() != null).map(AssoProjectEvent::getScenarioId).collect(Collectors.toList());
+
+                    List<Integer> eventIdsFilter = eventIds;
+                    List<Integer> matterIdsFilter = matterIds;
+                    List<Integer> scenarioIdsFilter = scenarioIds;
+
+                    List<Event> eventTmps = events.stream().filter(item -> eventIdsFilter.contains(item.getId())).collect(Collectors.toList());
+                    List<Matter> matterTmps = matters.stream().filter(item -> matterIdsFilter.contains(item.getId())).collect(Collectors.toList());
+                    List<Scenario> scenarioTmps = scenarios.stream().filter(item -> scenarioIdsFilter.contains(item.getId())).collect(Collectors.toList());
+                    eventTmpNames = eventTmps.stream().map(Event::getName).collect(Collectors.toList());
+                    matterTmpNames = matterTmps.stream().map(Matter::getName).collect(Collectors.toList());
+                    scenarioTmpNames = scenarioTmps.stream().map(Scenario::getName).collect(Collectors.toList());
 
-             }
+                }
+            }
+            patentProjectVO.setScenarioIds(scenarioIds);
+            patentProjectVO.setMatterIds(matterIds);
+            patentProjectVO.setEventIds(eventIds);
+            patentProjectVO.setScenarioNames(scenarioTmpNames);
+            patentProjectVO.setMatterNames(matterTmpNames);
+            patentProjectVO.setEventNames(eventTmpNames);
+
+
+            //装载产品,产品分类,技术分类
+            if (assoProjectTreeNodes != null) {
+                AssoProjectTreeNode assoProjectTreeNode = assoProjectTreeNodes.stream().filter(item -> item.getProjectId().equals(patentProjectVO.getId()) && item.getTreeType().equals(2) || item.getTreeType().equals(3)).
+                        findFirst().orElse(null);
+                if (assoProjectTreeNode != null) {
+                    if(assoProjectTreeNode.getTreeType().equals(2)){
+               Product product =  products.stream().filter(item->item.getId().equals(assoProjectTreeNode.getFieldId())).findFirst().orElse(null);
+                        if(product!=null){
+                            patentProjectVO.setProductOrCategoryName(product.getName());
+                        }
+                    }
+                    else if(assoProjectTreeNode.getTreeType().equals(3)){
+                        ProductCategory productCategory =  productCategories.stream().filter(item->item.getId().equals(assoProjectTreeNode.getFieldId())).findFirst().orElse(null);
+                        if(productCategory!=null){
+                            patentProjectVO.setProductOrCategoryName(productCategory.getName());
+                        }
+                    }
 
+                    //TODO 装载技术分类名称
+                }
+            }
 
         }
 

+ 176 - 97
src/main/java/cn/cslg/pas/service/business/ReportProjectService.java

@@ -9,9 +9,8 @@ import cn.cslg.pas.common.model.request.QueryRequest;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
-import cn.cslg.pas.common.vo.business.EventCountVO;
-import cn.cslg.pas.common.vo.business.EventVO;
-import cn.cslg.pas.common.vo.business.ReportProjectVO;
+import cn.cslg.pas.common.vo.DepartmentVO;
+import cn.cslg.pas.common.vo.business.*;
 import cn.cslg.pas.domain.business.*;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
@@ -44,7 +43,7 @@ import java.util.stream.Collectors;
 
 @Service
 @Slf4j
-public class ReportProjectService extends ServiceImpl<ReportProjectMapper,ReportProject> implements Business {
+public class ReportProjectService extends ServiceImpl<ReportProjectMapper, ReportProject> implements Business {
     @Autowired
     private EventMapper eventMapper;
 
@@ -86,17 +85,20 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper,Report
     @Autowired
     private LoginUtils loginUtils;
 
+    @Autowired
+    private FollowUpService followUpService;
+
+    @Autowired
+    private EventService eventService;
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
-
-       List<String> sqls = formatQueryService.reSqls(queryRequest,"event");
+        List<String> sqls = formatQueryService.reSqls(queryRequest, "event");
         //根据sql查询事件信息
-        List<ReportProjectVO> reportProject = reportProjectMapper.getReportProject(sqls.get(0),sqls.get(1),sqls.get(2));
-
+        List<ReportProjectVO> reportProject = reportProjectMapper.getReportProject(sqls.get(0), sqls.get(1), sqls.get(2));
+        this.loadReportProjectVO(reportProject);
         //查询总数
-        Long total = eventMapper.getEventCount(sqls.get(0));
-
+        Long total = reportProjectMapper.getReportProjectCount(sqls.get(0));
         //装载事件信息
         Records records = new Records();
         records.setCurrent(queryRequest.getCurrent());
@@ -106,6 +108,7 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper,Report
         return records;
     }
 
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Integer addMessage(Object object, List<MultipartFile> files) {
@@ -143,8 +146,9 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper,Report
     @Transactional(rollbackFor = Exception.class)
     public Object updateMessage(Object object, List<MultipartFile> files) {
 
-       return null;
-        }
+        return null;
+    }
+
     /**
      * 查询事件分组信息
      *
@@ -153,14 +157,14 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper,Report
      * @throws Exception
      */
     @Transactional(rollbackFor = Exception.class)
-    public Object getGroup(GroupRequest groupRequest,String tableName) throws Exception {
-        StringRequest stringRequest =new StringRequest();
-        BeanUtils.copyProperties(groupRequest,stringRequest);
-        List<String> sqls = formatQueryService.reSqls(stringRequest,tableName);
+    public Object getGroup(GroupRequest groupRequest, String tableName) throws Exception {
+        StringRequest stringRequest = new StringRequest();
+        BeanUtils.copyProperties(groupRequest, stringRequest);
+        List<String> sqls = formatQueryService.reSqls(stringRequest, tableName);
         //格式化 分组
-        GroupConfig groupConfig=null;
+        GroupConfig groupConfig = null;
         if (groupRequest.getGroupBy() != null) {
-            String json = CommonService.readJsonFile(tableName+".json");
+            String json = CommonService.readJsonFile(tableName + ".json");
             List<GroupConfig> groupConfigs = JSON.parseArray(json, GroupConfig.class);
             groupConfig = groupConfigs.stream().filter(item -> groupRequest.getGroupBy().equals(item.getField())).findFirst().orElse(null);
             if (groupConfig == null) {
@@ -170,7 +174,7 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper,Report
 
         //返回分组数据
         QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
-        ReGroupDataVO  reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField());
+        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField());
 
         //装载数据
         GroupVO groupVO = new GroupVO();
@@ -185,6 +189,7 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper,Report
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Object addMessage(Object object) {
         //TODO 校验参数
         //object to reportProjectDTO
@@ -200,10 +205,7 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper,Report
         if (reportProjectDTO.getReportType().equals(null)) {
             throw new XiaoShiException("报告类型不能为空");
         }
-        //报告状态
-        if (reportProjectDTO.getStauts().equals(null)) {
-            throw new XiaoShiException("报告状态不能为空");
-        }
+
         //获取登陆人信息 用于设置创建人
         PersonnelVO personnelVO = new PersonnelVO();
         try {
@@ -211,6 +213,7 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper,Report
         } catch (Exception e) {
             throw new UnLoginException("未登录");
         }
+        String userId =personnelVO.getId();
         /**
          * 装载project
          */
@@ -220,12 +223,39 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper,Report
         project.setTenantId(personnelVO.getTenantId());
         project.insert();
         /**
+         * 装载和报告关联
+         */
+        if(reportProjectDTO.getAssoReportId()!=null) {
+            AssoProject assoProject = new AssoProject();
+            assoProject.setAssoProjectId(project.getId());
+            assoProject.setAssoProjectType(2);
+            assoProject.setProjectId(reportProjectDTO.getAssoReportId());
+            assoProject.setProjectType(2);
+            assoProject.insert();
+        }
+        /**
          * 装载reportProject
          */
         ReportProject reportProject = new ReportProject();
         BeanUtils.copyProperties(reportProjectDTO, reportProject);
-        reportProject.setProject_id(project.getId());
+        reportProject.setProjectId(project.getId());
+        reportProject.setStatus(0);
         reportProject.insert();
+
+        /**
+         * 装载后续事项和project关联
+         */
+        if (reportProjectDTO.getFollowUps() != null && reportProjectDTO.getFollowUps().size() != 0) {
+            List<FollowUp> followUps = new ArrayList<>();
+            reportProjectDTO.getFollowUps().forEach(item -> {
+                FollowUp followUp = new FollowUp();
+                BeanUtils.copyProperties(item, followUp);
+                followUp.setCreateId(userId);
+                followUps.add(followUp);
+            });
+            followUpService.saveBatch(followUps);
+        }
+
         /**
          * 装载事件与project关联
          */
@@ -291,48 +321,52 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper,Report
     }
 
     /**
-     * 装载事件返回类
+     * 装载报告返回类
      *
-     * @param eventVOs
+     * @param reportProjectVOs
      */
-    private void loadEvent(List<EventVO> eventVOs) throws IOException {
+    private void loadReportProjectVO(List<ReportProjectVO> reportProjectVOs) throws IOException {
         List<String> createIds = new ArrayList<>();
+        List<String> departmentIds = new ArrayList<>();
+        List<DepartmentVO> departmentVOS = new ArrayList<>();
         List<Integer> clientIds = new ArrayList<>();
         List<Integer> ids = new ArrayList<>();
-        List<EventCountVO> eventCountVOS = new ArrayList<>();
-        //获得所有文件的guid
-        eventVOs.forEach(
+        List<Client> clients = new ArrayList<>();
+        List<Event> events =new ArrayList<>();
+        List<AssoProjectEvent> assoProjectEvents = new ArrayList<>();
+        reportProjectVOs.forEach(
                 item -> {
-                    if (item.getClientId() != null) {
-                        clientIds.add(item.getClientId());
-                    }
 
                     if (item.getCreateId() != null) {
                         createIds.add(item.getCreateId());
                     }
+
+                    if (item.getHeadId() != null) {
+                        createIds.add(item.getHeadId());
+                    }
+
                     if (item.getId() != null) {
                         ids.add(item.getId());
                     }
+
+                    if (item.getDepartmentId() != null) {
+                        departmentIds.add(item.getDepartmentId());
+                    }
+
+                    if (item.getEntrustType() != null && item.getEntrustType().equals(2)) {
+                        departmentIds.add(item.getEntrustId());
+                    }
+
+                    if (item.getEntrustType() != null && item.getEntrustType().equals(1)) {
+                        clientIds.add(Integer.parseInt(item.getEntrustId()));
+                    }
                 }
         );
 
         List<Personnel> personnels = new ArrayList<>();
-        List<Client> clients = new ArrayList<>();
         List<String> guids = new ArrayList<>();
         List<SystemFile> systemFiles = new ArrayList<>();
-        List<AssoEventFile> assoEventFiles = new ArrayList<>();
-
-        if (ids.size() != 0) {
-            //根据事件id获得事件文件关联表
-            LambdaQueryWrapper<AssoEventFile> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.in(AssoEventFile::getEventId, ids);
-            assoEventFiles = assoEventFileService.list(queryWrapper);
-            guids = assoEventFiles.stream().map(AssoEventFile::getFileGuid).collect(Collectors.toList());
-
-
-            //根据事件id分组查询事件关联专题库或报告数量
-            eventCountVOS = assoProjectEventMapper.getEventProjectCount(ids);
-        }
+        List<AssoProjectFile> assoEventFiles = new ArrayList<>();
 
         //查询创建人名称
         if (createIds.size() != 0) {
@@ -341,91 +375,136 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper,Report
             personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
         }
 
-        //查询客户名称
-        if (clientIds.size() != 0) {
-            String res = permissionService.getClientByIdsFromPCS(clientIds);
-            JSONObject jsonObject = JSONObject.parseObject(res);
-            clients = JSONObject.parseArray(jsonObject.getString("data"), Client.class);
+        //查询部门名称
+        if (departmentIds.size() != 0) {
+            String json = permissionService.getDepartmentByIdsFromPCS(departmentIds);
+            departmentVOS = JSON.parseArray(json, DepartmentVO.class);
+
         }
 
+        if (ids.size() != 0) {
+            //根据事件id获得专利数据库文件关联表
+            LambdaQueryWrapper<AssoProjectFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(AssoProjectFile::getProjectId, ids);
+            assoEventFiles = assoProjectFileService.list(queryWrapper);
+            guids = assoEventFiles.stream().map(AssoProjectFile::getFileGuid).collect(Collectors.toList());
+        }
+
+
         //查询文件
         if (guids.size() != 0) {
             String res = fileManagerService.getSystemFileFromFMS(guids);
+
+            systemFiles = JSONObject.parseArray(res, SystemFile.class);
+        }
+
+        //查询客户名称
+        if (clientIds.size() != 0) {
+            String res = permissionService.getClientByIdsFromPCS(clientIds);
             JSONObject jsonObject = JSONObject.parseObject(res);
-            systemFiles = JSONObject.parseArray(jsonObject.getString("data"), SystemFile.class);
+            clients = JSONObject.parseArray(jsonObject.getString("data"), Client.class);
         }
 
-        //查询关联报告或专题库
+        //查询应用场景、调查类型、事件和专题库的关联
+        if (ids != null && ids.size() > 0) {
+            LambdaQueryWrapper<AssoProjectEvent> assoProjectEventQueryWrapper = new LambdaQueryWrapper<>();
+            assoProjectEventQueryWrapper.in(AssoProjectEvent::getProjectId, ids);
+            assoProjectEvents = assoProjectEventService.list(assoProjectEventQueryWrapper);
+
+            //查询事件
+            if (assoProjectEvents != null && assoProjectEvents.size() != 0) {
+                List<Integer> eventIds = assoProjectEvents.stream().filter(item -> item.getEventId() != null).map(AssoProjectEvent::getEventId).collect(Collectors.toList());
+                if (eventIds.size() != 0) {
+                    LambdaQueryWrapper<Event> eventQueryWrapper = new LambdaQueryWrapper<>();
+                    eventQueryWrapper.in(Event::getEventId, eventIds);
+                    events = eventService.list(eventQueryWrapper);
+                }
 
-        //查询应用场景
-        List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Arrays.asList("ENTERPRISE_APPLICATION_SCENARIO"));
 
-        //查询专题库数量
+            }
+        }
 
         //装载信息
-        for (EventVO eventVO : eventVOs) {
+        for (ReportProjectVO reportProjectVO : reportProjectVOs) {
+
             //装载人员信息
-            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(eventVO.getCreateId())).findFirst().orElse(null);
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(reportProjectVO.getCreateId())).findFirst().orElse(null);
             if (personnel != null) {
-                eventVO.setCreateName(personnel.getPersonnelName());
-            }
-
-            //装载客户信息
-            Client client = clients.stream().filter(item -> item.getId().equals(eventVO.getClientId())).findFirst().orElse(null);
-            if (client != null) {
-                eventVO.setClientName(client.getName());
+                reportProjectVO.setCreateName(personnel.getPersonnelName());
             }
 
-            //装载场景
-            SystemDict systemDict = systemDictList.stream().filter(item -> item.getValue().equals(eventVO.getScenarioId().toString())).findFirst().orElse(null);
-            if (systemDict != null) {
-                eventVO.setScenarioName(systemDict.getLabel());
+            if (reportProjectVO.getHeadId() != null) {
+                Personnel headPersonnel = personnels.stream().filter(item -> item.getId().equals(reportProjectVO.getHeadId())).findFirst().orElse(null);
+                if (headPersonnel != null) {
+                    reportProjectVO.setHeadName(personnel.getPersonnelName());
+                }
             }
 
             //装载文件信息
-            List<AssoEventFile> assoEventFileTemp = assoEventFiles.stream().filter(item -> item.getEventId().equals(eventVO.getId())).collect(Collectors.toList());
-            if (assoEventFileTemp.size() != 0) {
-                List<String> guidTemp = assoEventFileTemp.stream().map(AssoEventFile::getFileGuid).collect(Collectors.toList());
+            List<AssoProjectFile> assoProjectFileTemp = assoEventFiles.stream().filter(item -> item.getProjectId().equals(reportProjectVO.getId())).collect(Collectors.toList());
+            if (assoProjectFileTemp.size() != 0) {
+                List<String> guidTemp = assoProjectFileTemp.stream().map(AssoProjectFile::getFileGuid).collect(Collectors.toList());
                 if (guidTemp.size() != 0) {
                     List<SystemFile> systemFileTemp = systemFiles.stream().filter(item -> guidTemp.contains(item.getGuid())).collect(Collectors.toList());
                     if (systemFileTemp.size() != 0) {
-                        eventVO.setSystemFileList(systemFileTemp);
+                        reportProjectVO.setSystemFileList(systemFileTemp);
                     }
                 }
             }
 
 
-            //装载专题库或报告数量
-            if (eventCountVOS.size() != 0) {
-                //专题库数量
-                EventCountVO eventCountVO1 = eventCountVOS.stream().filter(item ->
-                        item.getEventId().equals(eventVO.getId()) && item.getProjectType().equals(1)).findFirst().orElse(null);
+            //装载部门
+            if (reportProjectVO.getDepartmentId() != null) {
+                DepartmentVO departmentVO = departmentVOS.stream().filter(item -> item.getDepartId().equals(reportProjectVO.getDepartmentId())).findFirst().orElse(null);
+                if (departmentVO != null) {
+                    reportProjectVO.setDepartmentName(departmentVO.getDepartName());
+                }
+            }
 
-                //报告数量
-                EventCountVO eventCountVO2 = eventCountVOS.stream().filter(item ->
-                        item.getEventId().equals(eventVO.getId()) && item.getProjectType().equals(2)).findFirst().orElse(null);
+            //裝載委托方
+            if (reportProjectVO.getEntrustType() != null) {
+                //当委托方为客户时
+                if (reportProjectVO.getEntrustType().equals(1)) {
+                    Client client = clients.stream().filter(item -> item.getId().equals(Integer.parseInt(reportProjectVO.getEntrustId()))).findFirst().orElse(null);
 
-                //设置专题库数量
-                if (eventCountVO1 != null) {
-                    eventVO.setPatentProjectNum(eventCountVO1.getProjectCount());
-                } else {
-                    eventVO.setPatentProjectNum(0);
-                }
+                    if (client != null) {
+                        reportProjectVO.setEntrustName(client.getName());
+                    }
+
+                } else if (reportProjectVO.getEntrustType().equals(2)) {
+                    DepartmentVO departmentVO = departmentVOS.stream().filter(item -> item.getDepartId().equals(reportProjectVO.getEntrustId())).findFirst().orElse(null);
 
-                //设置报告数量
-                if (eventCountVO2 != null) {
-                    eventVO.setReportProjectNum(eventCountVO2.getProjectCount());
-                } else {
-                    eventVO.setReportProjectNum(0);
+                    if (departmentVO != null) {
+                        reportProjectVO.setEntrustName(departmentVO.getDepartName());
+                    }
                 }
 
-            } else {
-                eventVO.setReportProjectNum(0);
-                eventVO.setPatentProjectNum(0);
             }
-        }
 
+            //装载事件
+            List<Integer> eventIds = new ArrayList<>();
+            List<String> eventTmpNames = new ArrayList<>();
+            if (assoProjectEvents != null) {
+                List<AssoProjectEvent> assoProjectEventTmps = assoProjectEvents.stream().filter(item -> item.getProjectId().equals(reportProjectVO.getId())).collect(Collectors.toList());
 
+                if (assoProjectEventTmps.size() != 0) {
+                    //过滤出事件
+                    eventIds = assoProjectEventTmps.stream().filter(item -> item.getEventId() != null).map(AssoProjectEvent::getEventId).collect(Collectors.toList());
+
+                    List<Integer> eventIdsFilter = eventIds;
+
+                    List<Event> eventTmps = events.stream().filter(item -> eventIdsFilter.contains(item.getId())).collect(Collectors.toList());
+                    eventTmpNames = eventTmps.stream().map(Event::getName).collect(Collectors.toList());
+
+                }
+            }
+
+            reportProjectVO.setEventIds(eventIds);
+            reportProjectVO.setEventNames(eventTmpNames);
+
+
+
+        }
     }
 
 

+ 135 - 15
src/main/resources/jsons/patentProject.json

@@ -60,18 +60,6 @@
     "ifGroup": "true",
     "ifShow":"false"
   },
-  {"name":"发生时间",
-    "type":"DateTime",
-    "value":"eventDate",
-    "field": "eventDate",
-    "sqlField": "event_Date",
-    "sqlClass": "getDateTimeSql",
-    "orderClass": "getComOrder",
-    "groupClass":"getTimeGroup",
-    "ifSearch":"true",
-    "ifGroup": "false",
-    "ifShow":"true"
-  },
   {"name":"描述",
     "type":"String",
     "value":"description",
@@ -82,12 +70,11 @@
     "ifSearch":"true",
     "ifGroup": "false",
     "ifShow":"true"
-
   },
   {"name":"应用场景",
     "type":"Array",
-    "value":"scenarioId",
-    "field": "scenarioId",
+    "value":"scenarioNames",
+    "field": "scenarioNames",
     "sqlField": "scenario_id",
     "sqlClass": "getComSql",
     "orderClass": "getScenarioNameOrder",
@@ -95,5 +82,138 @@
     "ifSearch":"true",
     "ifGroup": "true",
     "ifShow":"true"
+  },
+  {"name":"负责人名称",
+    "type":"String",
+    "value":"headName",
+    "field": "headName",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"负责部门",
+    "type":"String",
+    "value":"departmentName",
+    "field": "departmentName",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"委托方",
+    "type":"String",
+    "value":"entrustName",
+    "field": "entrustName",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"合同号",
+    "type":"String",
+    "value":"contractNo",
+    "field": "contractNo",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"内部卷号",
+    "type":"String",
+    "value":"volumeNumber",
+    "field": "volumeNumber",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"委案日",
+    "type":"String",
+    "value":"commissionCaseDay",
+    "field": "commissionCaseDay",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"报告数量",
+    "type":"String",
+    "value":"reportProjectNum",
+    "field": "reportProjectNum",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"调查类型",
+    "type":"Array",
+    "value":"matterNames",
+    "field": "matterNames",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"相关事件",
+    "type":"Array",
+    "value":"eventNames",
+    "field": "eventNames",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"产品或产品类别名称",
+    "type":"String",
+    "value":"productOrCategoryName",
+    "field": "productOrCategoryName",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"技术类别名称",
+    "type":"String",
+    "value":"technicalCategoryName",
+    "field": "technicalCategoryName",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
   }
+
 ]

+ 219 - 0
src/main/resources/jsons/reportProject.json

@@ -0,0 +1,219 @@
+[
+  {"name":"Id",
+    "type":"Integer",
+    "value":"id",
+    "field":"id",
+    "sqlField": "p.id",
+    "sqlClass": "getComSql",
+    "orderClass": "",
+    "groupClass":"",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"false"
+  },
+  {"name":"报告名称",
+  "type":"String",
+  "value":"name",
+  "field": "name",
+  "sqlField": "p.name",
+  "sqlClass": "getLikeSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getComGroup",
+  "ifSearch":"true",
+  "ifGroup": "false",
+    "ifShow":"true"
+},
+  {"name":"创建人",
+    "type":"String",
+    "value":"createName",
+    "field": "createName",
+    "sqlField": "p.create_id",
+    "sqlClass": "getCreateNameSql",
+    "orderClass": "getCreateNameOrder",
+    "groupClass":"getComGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"创建时间",
+    "type":"DateTime",
+    "value":"createTime",
+    "field": "createTime",
+    "sqlField": "p.create_time",
+    "sqlClass": "getDateTimeSql",
+    "orderClass": "getComOrder",
+    "groupClass":"getTimeGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"标的专利号",
+    "type":"String",
+    "value":"signPatentNo",
+    "field": "signPatentNo",
+    "sqlField": "sign_patent_no",
+    "sqlClass": "getLikeSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"标的产品号",
+    "type":"String",
+    "value":"signProjectId",
+    "field": "signProjectId",
+    "sqlField": "sign_patent_no",
+    "sqlClass": "getLikeSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"报告类型",
+    "type":"Integer",
+    "value":"reportType",
+    "field": "reportType",
+    "sqlField": "report_type",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"报告状态",
+    "type":"Integer",
+    "value":"status",
+    "field": "status",
+    "sqlField": "report_type",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {
+    "name": "结论论述",
+    "type": "Integer",
+    "value": "cronDescription",
+    "field": "cronDescription",
+    "sqlField": "report_type",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "ifSearch": "true",
+    "ifGroup": "false",
+    "ifShow": "true"
+  },
+  {"name":"描述",
+    "type":"String",
+    "value":"description",
+    "field": "description",
+    "sqlField": "p.description",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"相关事件",
+    "type":"Array",
+    "value":"eventNames",
+    "field": "eventNames",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"无效宣告请求人",
+    "type":"String",
+    "value":"invalidApplication",
+    "field": "invalidApplication",
+    "sqlField": "p.description",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"专利权人",
+    "type":"String",
+    "value":"currentApplication",
+    "field": "currentApplication",
+    "sqlField": "p.description",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"发明创造名称",
+    "type":"String",
+    "value":"inventionName",
+    "field": "inventionName",
+    "sqlField": "p.description",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"发文序号",
+    "type":"String",
+    "value":"issueNumber",
+    "field": "issueNumber",
+    "sqlField": "p.description",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"案件编号",
+    "type":"String",
+    "value":"caseNumber",
+    "field": "caseNumber",
+    "sqlField": "p.description",
+    "sqlClass": "getComSql",
+    "orderClass": "getComOrder",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },{"name":"合同号",
+  "type":"String",
+  "value":"contractNo",
+  "field": "contractNo",
+  "sqlField": "scenario_id",
+  "sqlClass": "getComSql",
+  "orderClass": "getScenarioNameOrder",
+  "groupClass":"getScenarioGroup",
+  "ifSearch":"true",
+  "ifGroup": "false",
+  "ifShow":"true"
+},
+  {"name":"内部卷号",
+    "type":"String",
+    "value":"volumeNumber",
+    "field": "volumeNumber",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  },
+  {"name":"委案日",
+    "type":"String",
+    "value":"commissionCaseDay",
+    "field": "commissionCaseDay",
+    "sqlField": "scenario_id",
+    "sqlClass": "getComSql",
+    "orderClass": "getScenarioNameOrder",
+    "groupClass":"getScenarioGroup",
+    "ifSearch":"true",
+    "ifGroup": "false",
+    "ifShow":"true"
+  }
+]

+ 12 - 3
src/main/resources/mapper/ReportProjectMapper.xml

@@ -2,14 +2,23 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="cn.cslg.pas.mapper.ReportProjectMapper">
     <select id="getReportProject" resultType="cn.cslg.pas.common.vo.business.ReportProjectVO">
-        select p.id as id,p.name as name ,p.contract_no as contract_no,p.volume_number as
+        select p.id as id,p.name as name ,rp.sign_patent_no as signPatentNo,p.contract_no as contract_no,p.volume_number as
         volumeNumber,p.commission_case_day as commissionCaseDay,p.description as description,p.create_id as
-        createId,p.create_time as createTime from report_project as rp left join project as p
-        on pp.project_id =p.id left join asso_project_event as asso_event on  asso_event.project_id =p.id
+        createId,p.create_time as createTime from report as rp left join project as p
+        on rp.project_id =p.id
         <if test="sql1!=''">
             where ${sql1}
         </if>
         ${sql2} ${sql3}
     </select>
 
+    <select id="getReportProjectCount" resultType="java.lang.Long">
+        select count(*) from (select distinct p.id  from report as rp left join project as p
+        on rp.project_id =p.id
+        <if test="sql1!=''">
+            where ${sql1}
+        </if>
+        ) as c
+    </select>
+
 </mapper>

+ 20 - 0
src/test/java/cn/cslg/pas/service/CommonServiceTests.java

@@ -4,19 +4,23 @@ import cn.cslg.pas.common.model.common.QueryCondition;
 import cn.cslg.pas.common.model.request.QueryRequest;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.vo.DepartmentVO;
 import cn.cslg.pas.common.vo.business.ScenarioVO;
 import cn.cslg.pas.controller.CommonController;
 import cn.cslg.pas.controller.EventController;
 import cn.cslg.pas.domain.business.Matter;
 import cn.cslg.pas.service.business.CommonService;
 import cn.cslg.pas.service.permissions.PermissionService;
+import com.alibaba.fastjson.JSON;
 import org.assertj.core.internal.Arrays;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author chenyu
@@ -59,4 +63,20 @@ public class CommonServiceTests {
 //        System.out.println(matterIds);
     }
 
+    @Test
+    void getDepartment() throws IOException {
+        List<String> scenarioIds = new ArrayList<>();
+        scenarioIds.add("1");
+        scenarioIds.add("2");
+     String   json = permissionService.getDepartmentByIdsFromPCS(scenarioIds);
+     List<DepartmentVO> departmentVOS = JSON.parseArray(json,DepartmentVO.class);
+     System.out.println(departmentVOS);
+
+//        scenarioIds.add(3);
+//        List<Matter> matterIds = commonController.queryMatter(scenarioIds);
+//        System.out.println(matterIds);
+    }
+
+
+
 }

+ 1 - 10
src/test/java/cn/cslg/pas/service/PatentProjectTests.java

@@ -46,16 +46,7 @@ public class PatentProjectTests {
 
     @Test
     void addPatentProject() throws Exception {
-//        PatentProjectDTO patentProjectDTO =new PatentProjectDTO();
-//        patentProjectDTO.setName("专题库1");
-//        patentProjectDTO.setEntrustType(1);
-//        patentProjectDTO.setEntrustId("1");
-//        patentProjectDTO.setHeadId("328");
-//        patentProjectDTO.setDepartmentId("1");
-//        patentProjectDTO.setContractNo("12314");
-//        patentProjectDTO.setVolumeNumber("junhao125456");
-//        patentProjectDTO.setDescription("描述");
-//        patentProjectDTO.s
+
     }
 
 

+ 72 - 2
src/test/java/cn/cslg/pas/service/TreeNodeServiceTests.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.service;
 
+import cn.cslg.pas.common.dto.CopyTreeNodeDTO;
 import cn.cslg.pas.common.dto.business.QueryTreeNodeDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.OrderDTO;
@@ -36,11 +37,80 @@ public class TreeNodeServiceTests {
     }
 
     @Test
-    void testCopy() throws Exception {
-//        treeNodeService.copy(2, null, 1, 4);
+    void testCopyAllToAll() throws Exception {
+        CopyTreeNodeDTO copyTreeNodeDTO =new CopyTreeNodeDTO();
+   copyTreeNodeDTO.setFromTypeId(7);
+        copyTreeNodeDTO.setFromType(1);
+        copyTreeNodeDTO.setToTypeId(10);
+        copyTreeNodeDTO.setToType(2);
+        treeNodeService.copy(copyTreeNodeDTO);
     }
 
     @Test
+    void testCopyIdsToAll() throws Exception {
+        CopyTreeNodeDTO copyTreeNodeDTO =new CopyTreeNodeDTO();
+        copyTreeNodeDTO.setFromTypeId(7);
+        copyTreeNodeDTO.setFromType(1);
+        List<Integer> ids = new ArrayList<>();
+        ids.add(85);
+        ids.add(86);
+        ids.add(87);
+        copyTreeNodeDTO.setFromNodeIds(ids);
+        copyTreeNodeDTO.setIfCopyChild(false);
+        copyTreeNodeDTO.setToTypeId(10);
+        copyTreeNodeDTO.setToType(2);
+        treeNodeService.copy(copyTreeNodeDTO);
+    }
+
+    @Test
+    void testCopyIdsToId() throws Exception {
+        CopyTreeNodeDTO copyTreeNodeDTO =new CopyTreeNodeDTO();
+        copyTreeNodeDTO.setFromTypeId(7);
+        copyTreeNodeDTO.setFromType(1);
+        List<Integer> ids = new ArrayList<>();
+        ids.add(85);
+        ids.add(86);
+        ids.add(87);
+        copyTreeNodeDTO.setFromNodeIds(ids);
+        copyTreeNodeDTO.setIfCopyChild(false);
+        copyTreeNodeDTO.setToTypeId(10);
+        copyTreeNodeDTO.setToType(2);
+        copyTreeNodeDTO.setToNodeId(102);
+        treeNodeService.copy(copyTreeNodeDTO);
+    }
+
+    @Test
+    void testCopyIdsToAllWithChild() throws Exception {
+        CopyTreeNodeDTO copyTreeNodeDTO =new CopyTreeNodeDTO();
+        copyTreeNodeDTO.setFromTypeId(7);
+        copyTreeNodeDTO.setFromType(1);
+        List<Integer> ids = new ArrayList<>();
+        ids.add(85);
+        ids.add(86);
+        ids.add(87);
+        copyTreeNodeDTO.setFromNodeIds(ids);
+        copyTreeNodeDTO.setIfCopyChild(true);
+        copyTreeNodeDTO.setToTypeId(10);
+        copyTreeNodeDTO.setToType(2);
+        treeNodeService.copy(copyTreeNodeDTO);
+    }
+    @Test
+    void testCopyIdsToIdWithChild() throws Exception {
+        CopyTreeNodeDTO copyTreeNodeDTO =new CopyTreeNodeDTO();
+        copyTreeNodeDTO.setFromTypeId(7);
+        copyTreeNodeDTO.setFromType(1);
+        List<Integer> ids = new ArrayList<>();
+        ids.add(85);
+        ids.add(86);
+        ids.add(87);
+        copyTreeNodeDTO.setFromNodeIds(ids);
+        copyTreeNodeDTO.setIfCopyChild(true);
+        copyTreeNodeDTO.setToTypeId(10);
+        copyTreeNodeDTO.setToType(2);
+        copyTreeNodeDTO.setToNodeId(108);
+        treeNodeService.copy(copyTreeNodeDTO);
+    }
+    @Test
     void query() throws Exception {
         StringRequest queryRequest = new StringRequest();
         queryRequest.setSearchQuery("parentId=2");