chendayu 2 سال پیش
والد
کامیت
8669f977c8
28فایلهای تغییر یافته به همراه950 افزوده شده و 44 حذف شده
  1. 49 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/EventAddNewDTO.java
  2. 22 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/EventQueryPageDTO.java
  3. 48 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/EventUpdateDTO.java
  4. 82 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/EventListItemVO.java
  5. 18 0
      PAS/src/main/java/cn/cslg/pas/common/utils/ThrowException.java
  6. 0 1
      PAS/src/main/java/cn/cslg/pas/controller/CommonController.java
  7. 1 2
      PAS/src/main/java/cn/cslg/pas/controller/CustomAnalysisItemController.java
  8. 75 0
      PAS/src/main/java/cn/cslg/pas/controller/EventController.java
  9. 1 1
      PAS/src/main/java/cn/cslg/pas/controller/ProductController.java
  10. 7 1
      PAS/src/main/java/cn/cslg/pas/controller/ProjectController.java
  11. 0 1
      PAS/src/main/java/cn/cslg/pas/controller/ProjectImportController.java
  12. 85 0
      PAS/src/main/java/cn/cslg/pas/domain/Event.java
  13. 9 1
      PAS/src/main/java/cn/cslg/pas/domain/Project.java
  14. 39 0
      PAS/src/main/java/cn/cslg/pas/domain/asso/AssoEventProject.java
  15. 24 0
      PAS/src/main/java/cn/cslg/pas/mapper/AssoEventProjectMapper.java
  16. 37 0
      PAS/src/main/java/cn/cslg/pas/mapper/EventMapper.java
  17. 49 0
      PAS/src/main/java/cn/cslg/pas/service/IEventService.java
  18. 1 1
      PAS/src/main/java/cn/cslg/pas/service/IPatentMarketDataService.java
  19. 25 7
      PAS/src/main/java/cn/cslg/pas/service/PatentRightService.java
  20. 28 1
      PAS/src/main/java/cn/cslg/pas/service/ProjectService.java
  21. 5 3
      PAS/src/main/java/cn/cslg/pas/service/asso/AssoProductPatentService.java
  22. 225 0
      PAS/src/main/java/cn/cslg/pas/service/impl/EventServiceImpl.java
  23. 4 4
      PAS/src/main/resources/application-test.yml
  24. 14 0
      PAS/src/main/resources/mapper/AssoEventProjectMapper.xml
  25. 87 0
      PAS/src/main/resources/mapper/EventMapper.xml
  26. 3 5
      PAS/src/main/resources/mapper/PatentMarkerDataMapper.xml
  27. 9 11
      PAS/src/main/resources/mapper/ProductCategoryMapper.xml
  28. 3 5
      PAS/src/main/resources/mapper/ProductMarketDataMapper.xml

+ 49 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/EventAddNewDTO.java

@@ -0,0 +1,49 @@
+package cn.cslg.pas.common.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 新增事件的DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+@Accessors(chain = true)
+@Data
+public class EventAddNewDTO implements Serializable {
+    /**
+     * 主键
+     */
+    private Integer id;
+    /**
+     * 事件名称
+     */
+    private String questionName;
+    /**
+     * 描述
+     */
+    private String description;
+    /**
+     * 应用场景
+     */
+    private List<Integer> applicationScenarios;
+    /**
+     * 时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date eventDate;
+    /**
+     * 专题库id
+     */
+    private Integer projectId;
+
+}

+ 22 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/EventQueryPageDTO.java

@@ -0,0 +1,22 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+
+/**
+ * 事件的分页查询DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+@Data
+public class EventQueryPageDTO extends PageDTO2 {
+    /**
+     * 专题库id
+     */
+    private Integer projectId;
+    /**
+     * 事件名称
+     */
+    private String questionName;
+
+}

+ 48 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/EventUpdateDTO.java

@@ -0,0 +1,48 @@
+package cn.cslg.pas.common.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 修改事件的DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+@Accessors(chain = true)
+@Data
+public class EventUpdateDTO implements Serializable {
+    /**
+     * 主键
+     */
+    private Integer id;
+    /**
+     * 事件名称
+     */
+    private String questionName;
+    /**
+     * 描述
+     */
+    private String description;
+    /**
+     * 应用场景
+     */
+    private List<Integer> applicationScenarios;
+    /**
+     * 时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date eventDate;
+    /**
+     * 专题库id
+     */
+    private Integer projectId;
+
+}

+ 82 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/EventListItemVO.java

@@ -0,0 +1,82 @@
+package cn.cslg.pas.common.model.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 事件表的列表查询VO类
+ *
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+@Accessors(chain = true)
+@Data
+public class EventListItemVO implements Serializable {
+    /**
+     * 主键
+     */
+    private Integer id;
+    /**
+     * 事件名称
+     */
+    private String questionName;
+    /**
+     * 描述
+     */
+    private String description;
+    /**
+     * 应用场景(逗号拼接字符串)
+     */
+    private String applicationScenario;
+    /**
+     * 应用场景ids
+     */
+    private List<Integer> applicationScenarios;
+    /**
+     * 应用场景(名称集合)
+     */
+    private List<String> scenarioNames;
+    /**
+     * 专题库ids
+     */
+    private List<Integer> projectIds;
+    /**
+     * 时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "event_date")
+    private Date eventDate;
+    /**
+     * 租户id
+     */
+    private Integer tenantId;
+    /**
+     * 创建人id
+     */
+    private Integer createPersonId;
+    /**
+     * 创建人名称
+     */
+    private String createPersonName;
+    /**
+     * 创建时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    /**
+     * 最后修改时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date modifiedTime;
+
+}

+ 18 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/ThrowException.java

@@ -0,0 +1,18 @@
+package cn.cslg.pas.common.utils;
+
+import cn.cslg.pas.exception.XiaoShiException;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+@Slf4j
+public class ThrowException {
+
+    public static void throwXiaoShiException(String message) {
+        log.info("{}", message);
+        throw new XiaoShiException(message);
+    }
+
+}

+ 0 - 1
PAS/src/main/java/cn/cslg/pas/controller/CommonController.java

@@ -47,7 +47,6 @@ import java.util.stream.Collectors;
 @RequestMapping(Constants.API_VERSION_V2 + "/common")
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class CommonController {
-
     private final AreaService areaService;
     private final SystemDictService systemDictService;
     private final SystemDictAssociateService systemDictAssociateService;

+ 1 - 2
PAS/src/main/java/cn/cslg/pas/controller/CustomAnalysisItemController.java

@@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.*;
 
 /**
  * <p>
- *  自定义分析 前端控制器
+ * 自定义分析 前端控制器
  * </p>
  *
  * @author 王岩
@@ -30,7 +30,6 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping(Constants.API_VERSION_V2 + "/custom/analysis/item")
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class CustomAnalysisItemController {
-
     private final CustomAnalysisItemService customAnalysisItemService;
     private final CustomAnalysisItemSourceService customAnalysisItemSourceService;
 

+ 75 - 0
PAS/src/main/java/cn/cslg/pas/controller/EventController.java

@@ -0,0 +1,75 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.dto.EventAddNewDTO;
+import cn.cslg.pas.common.model.dto.EventQueryPageDTO;
+import cn.cslg.pas.common.model.dto.EventUpdateDTO;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.service.IEventService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 事件的Controller层
+ *
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+@Tag(name = "事件的管理模块")
+@RequiredArgsConstructor
+@Slf4j
+@RequestMapping(Constants.API_VERSION_V2 + "/event")
+@RestController
+public class EventController {
+    private final IEventService eventService;
+
+    @Operation(summary = "新增事件")
+    @PostMapping("/addNew")
+    public String addNew(@RequestBody EventAddNewDTO eventAddNewDTO) {
+        log.info("开始处理【新增事件】的请求,请求参数为:{}", eventAddNewDTO);
+        try {
+            eventService.addNew(eventAddNewDTO);
+        } catch (XiaoShiException e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success("新增事件完成");
+    }
+
+    @Operation(summary = "查询事件")
+    @PostMapping("/query")
+    public String query(@RequestBody EventQueryPageDTO eventQueryPageDTO) {
+        log.info("开始处理【分页查询事件】的请求,请求参数为:{}", eventQueryPageDTO);
+        return Response.success(eventService.query(eventQueryPageDTO));
+
+    }
+
+    @Operation(summary = "修改事件")
+    @PostMapping("/update")
+    public String update(@RequestBody EventUpdateDTO eventUpdateDTO) {
+        log.info("开始处理【修改事件】的请求,请求参数为:{}", eventUpdateDTO);
+        try {
+            eventService.update(eventUpdateDTO);
+        } catch (XiaoShiException e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success("修改完成");
+
+    }
+
+    @Operation(summary = "删除事件")
+    @GetMapping("/delete")
+    public String delete(Integer eventId, Integer projectId) {
+        log.info("开始处理【删除事件】的请求,请求参数为:{}, {}", eventId, projectId);
+        try {
+            eventService.delete(eventId, projectId);
+        } catch (XiaoShiException e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success("删除完成");
+    }
+
+}

+ 1 - 1
PAS/src/main/java/cn/cslg/pas/controller/ProductController.java

@@ -82,7 +82,7 @@ public class ProductController {
         pmdTrendVO.setProductId(dto.getProductId());
         pmdTrendVO.setProductName(productMarketDataService.queryNameByProductId(dto.getProductId()));
         pmdTrendVO.setSaleVOS(queryResult);
-        if (pmdTrendVO != null){
+        if (pmdTrendVO != null) {
             return Response.success(pmdTrendVO);
         } else {
             return Response.error("查询失败");

+ 7 - 1
PAS/src/main/java/cn/cslg/pas/controller/ProjectController.java

@@ -58,7 +58,13 @@ ProjectController {
     @PostMapping("add")
     @Operation(summary = "新增专题库")
     public String add(@RequestBody Project project) throws IOException {
-        return projectService.add(project);
+        String projectId;
+        try {
+            projectId = projectService.add(project);
+        } catch (XiaoShiException e) {
+            return Response.error("新增专题库失败," + e.getMessage());
+        }
+        return Response.success(projectId);
     }
 
     @Permission(roles = {2})

+ 0 - 1
PAS/src/main/java/cn/cslg/pas/controller/ProjectImportController.java

@@ -34,7 +34,6 @@ import org.springframework.web.multipart.MultipartFile;
 @RequestMapping(Constants.API_VERSION_V2 + "/project/import")
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class ProjectImportController {
-
     private final ProjectService projectService;
     private final CacheUtils cacheUtils;
     private final ProjectImportService projectImportService;

+ 85 - 0
PAS/src/main/java/cn/cslg/pas/domain/Event.java

@@ -0,0 +1,85 @@
+package cn.cslg.pas.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 事件表的实体类
+ *
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+@TableName(value = "event")
+@Accessors(chain = true)
+@Data
+public class Event implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 事件名称
+     */
+    @TableField(value = "question_name")
+    private String questionName;
+    /**
+     * 描述
+     */
+    @TableField(value = "description")
+    private String description;
+    /**
+     * 应用场景
+     */
+    @TableField(value = "application_scenario")
+    private String applicationScenario;
+    /**
+     * 时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "event_date")
+    private Date eventDate;
+    /**
+     * 租户id
+     */
+    @TableField(value = "tenant_id")
+    private Integer tenantId;
+    /**
+     * 创建人id
+     */
+    @TableField(value = "create_person_id")
+    private Integer createPersonId;
+    /**
+     * 创建人名称
+     */
+    @TableField(value = "create_person_name")
+    private String createPersonName;
+    /**
+     * 创建时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "create_time")
+    private Date createTime;
+    /**
+     * 最后修改时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "modified_time")
+    private Date modifiedTime;
+
+}

+ 9 - 1
PAS/src/main/java/cn/cslg/pas/domain/Project.java

@@ -1,11 +1,15 @@
 package cn.cslg.pas.domain;
 
 import cn.cslg.pas.common.model.BaseEntity;
+import cn.cslg.pas.common.model.dto.EventAddNewDTO;
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -13,7 +17,7 @@ import java.util.List;
  * 专题库表
  * </p>
  *
- * @author  王岩
+ * @author 王岩
  * @since 2022-01-24
  */
 @Data
@@ -165,4 +169,8 @@ public class Project extends BaseEntity<Project> {
     @TableField(exist = false)
     private String productName;
 
+    //以下为新增专题库时新增的事件(可新增多个事件)↓ 陈宇
+    @TableField(exist = false)
+    private List<EventAddNewDTO> eventAddNewDTOs;
+
 }

+ 39 - 0
PAS/src/main/java/cn/cslg/pas/domain/asso/AssoEventProject.java

@@ -0,0 +1,39 @@
+package cn.cslg.pas.domain.asso;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.lang.reflect.Type;
+
+/**
+ * 事件和专题库关联表
+ *
+ * @Author chenyu
+ * @Date 2023/4/3
+ */
+@TableName(value = "asso_event_project")
+@Accessors(chain = true)
+@Data
+public class AssoEventProject implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 事件id
+     */
+    @TableField(value = "event_id")
+    private Integer eventId;
+    /**
+     * 专题库id
+     */
+    @TableField(value = "project_id")
+    private Integer projectId;
+
+}

+ 24 - 0
PAS/src/main/java/cn/cslg/pas/mapper/AssoEventProjectMapper.java

@@ -0,0 +1,24 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.asso.AssoEventProject;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 事件和专题库关联表的Mapper层接口
+ *
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+@Repository
+public interface AssoEventProjectMapper extends BaseMapper<AssoEventProject> {
+    /**
+     * 根据事件id和专题库id删除数据
+     *
+     * @param eventId   事件id
+     * @param projectId 专题库id
+     * @return 返回受影响的行数
+     */
+    int deleteByEventIdAndProjectId(Integer eventId, Integer projectId);
+
+}

+ 37 - 0
PAS/src/main/java/cn/cslg/pas/mapper/EventMapper.java

@@ -0,0 +1,37 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.common.model.dto.EventQueryPageDTO;
+import cn.cslg.pas.common.model.vo.EventListItemVO;
+import cn.cslg.pas.domain.Event;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 事件表的Mapper层接口
+ *
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+@Repository
+public interface EventMapper extends BaseMapper<Event> {
+    /**
+     * 根据名称和租户id统计数量
+     *
+     * @param questionName 事件名称
+     * @param tenantId     租户id
+     * @return 返回统计到的数量
+     */
+    int countByNameAndTenantId(String questionName, Integer tenantId);
+
+    /**
+     * 分页查询事件列表
+     *
+     * @param eventQueryPageDTO 事件的分页查询DTO类
+     * @return 返回查询到的数据
+     */
+    List<EventListItemVO> queryList(EventQueryPageDTO eventQueryPageDTO);
+
+
+}

+ 49 - 0
PAS/src/main/java/cn/cslg/pas/service/IEventService.java

@@ -0,0 +1,49 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.common.JsonPage;
+import cn.cslg.pas.common.model.dto.EventAddNewDTO;
+import cn.cslg.pas.common.model.dto.EventQueryPageDTO;
+import cn.cslg.pas.common.model.dto.EventUpdateDTO;
+import cn.cslg.pas.domain.Event;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 事件的Service层接口
+ *
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+public interface IEventService extends IService<Event> {
+    /**
+     * 新增事件
+     *
+     * @param eventAddNewDTO 新增事件的DTO类对象
+     */
+    @Transactional
+    void addNew(EventAddNewDTO eventAddNewDTO);
+
+    /**
+     * 分页查询事件
+     *
+     * @param eventQueryPageDTO 事件的分页查询DTO类对象
+     */
+    JsonPage query(EventQueryPageDTO eventQueryPageDTO);
+
+    /**
+     * 修改事件
+     *
+     * @param eventUpdateDTO 修改事件的DTO类对象
+     */
+    void update(EventUpdateDTO eventUpdateDTO);
+
+    /**
+     * 根据id删除事件
+     *
+     * @param eventId   事件id
+     * @param projectId 专题库id
+     */
+    @Transactional
+    void delete(Integer eventId, Integer projectId);
+
+}

+ 1 - 1
PAS/src/main/java/cn/cslg/pas/service/IPatentMarketDataService.java

@@ -8,7 +8,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.List;
 
 /**
- * 专利价值曲线的Service层
+ * 专利价值曲线的Service层接口
  *
  * @Author xiexiang
  * @Date 2023/3/15

+ 25 - 7
PAS/src/main/java/cn/cslg/pas/service/PatentRightService.java

@@ -430,7 +430,6 @@ public class PatentRightService extends ServiceImpl<PatentRightMapper, PatentRig
 
     }
 
-
     public void updatePatentRight(PatentRightParams params) {
 //        List<PatentRight> patentRightList = new ArrayList<>();
 //        获取国家 公开号前两位
@@ -494,8 +493,19 @@ public class PatentRightService extends ServiceImpl<PatentRightMapper, PatentRig
 //                patentRightList.add(patentRight);
             ArrayList<PatentRight> patentRights = new ArrayList<>();
             //先去掉所有换行符,使原文连起来
-            content = content.replaceAll("\n", "");
-            contentOut = contentOut.replaceAll("\n", "");
+            if (content.contains("\r\n")) {
+                content = content.replaceAll("\r\n", "");
+            } else {
+                content = content.replaceAll("\n", "");
+            }
+            if (contentOut == null) {
+                contentOut = "";
+            }
+            if (contentOut.contains("\r\n")) {
+                contentOut = contentOut.replaceAll("\r\n", "");
+            } else {
+                contentOut = contentOut.replaceAll("\n", "");
+            }
 
             //根据专利所属国家,定义序号规则
             String regex;
@@ -520,7 +530,7 @@ public class PatentRightService extends ServiceImpl<PatentRightMapper, PatentRig
             String[] strs = content.split("\n");
             while (matcherOut.find()) {
                 if (!matcherOut.group().equals("1.") && !matcherOut.group().equals("1、") && !matcherOut.group().equals("[001]")) {
-                    contentOut = contentOut.replaceFirst(matcher.group(), "\n" + matcher.group());
+                    contentOut = contentOut.replaceFirst(matcherOut.group(), "\n" + matcherOut.group());
                 }
             }
             String[] strsOut = contentOut.split("\n");
@@ -560,9 +570,11 @@ public class PatentRightService extends ServiceImpl<PatentRightMapper, PatentRig
                                 .setPatentId(params.getPatentId())
                                 .setType(1)
                                 .setContent(strs[i])
-                                .setContentOut(strsOut[i])
                                 .setSort(i)
                                 .setParentSort(builder + "");
+                        if (strsOut.length - 1 >= i) {
+                            patentRight.setContentOut(strsOut[i]);
+                        }
                         patentRights.add(patentRight);
                     } else if (matcher1.find()) {
                         String parentNum = matcher1.group().substring(matcher1.group().indexOf("求") + 1);
@@ -570,9 +582,11 @@ public class PatentRightService extends ServiceImpl<PatentRightMapper, PatentRig
                                 .setPatentId(params.getPatentId())
                                 .setType(1)
                                 .setContent(strs[i])
-                                .setContentOut(strsOut[i])
                                 .setSort(i)
                                 .setParentSort((Integer.parseInt(parentNum) - 1) + "");
+                        if (strsOut.length - 1 >= i) {
+                            patentRight.setContentOut(strsOut[i]);
+                        }
                         patentRights.add(patentRight);
                     }
 
@@ -581,15 +595,19 @@ public class PatentRightService extends ServiceImpl<PatentRightMapper, PatentRig
                             .setPatentId(params.getPatentId())
                             .setType(0)
                             .setContent(strs[i])
-                            .setContentOut(strsOut[i])
                             .setSort(i)
                             .setParentSort("-1");
+                    if (strsOut.length - 1 >= i) {
+                        patentRight.setContentOut(strsOut[i]);
+                    }
                     patentRights.add(patentRight);
                 }
             }
             this.saveOrUpdateBatch(patentRights);
         }
     }
+
+
 }
 
 

+ 28 - 1
PAS/src/main/java/cn/cslg/pas/service/ProjectService.java

@@ -4,6 +4,7 @@ import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.core.exception.CustomException;
 import cn.cslg.pas.common.model.PersonnelVO;
 import cn.cslg.pas.common.model.dto.ClientDTO;
+import cn.cslg.pas.common.model.dto.EventAddNewDTO;
 import cn.cslg.pas.common.model.dto.UploadFileDTO;
 import cn.cslg.pas.common.model.vo.*;
 import cn.cslg.pas.common.utils.*;
@@ -11,7 +12,9 @@ import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.pas.common.utils.SecurityUtils.SecurityUtils;
 import cn.cslg.pas.common.utils.auth.checkAuth;
 import cn.cslg.pas.domain.*;
+import cn.cslg.pas.domain.asso.AssoEventProject;
 import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.AssoEventProjectMapper;
 import cn.cslg.pas.mapper.ProductMapper;
 import cn.cslg.pas.mapper.ProjectMapper;
 import cn.cslg.pas.mapper.asso.AssoStructurePatentMapper;
@@ -106,6 +109,8 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
     private final AssoStructurePatentMapper assoStructurePatentMapper;
     private final ProductMapper productMapper;
     private final ProjectMapper projectMapper;
+    private final IEventService eventService;
+    private final AssoEventProjectMapper assoEventProjectMapper;
 
     public Project getProjectByName(String name) {
         LambdaQueryWrapper<Project> queryWrapper = new LambdaQueryWrapper<>();
@@ -436,7 +441,7 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
         //检查专题库名称是否被占用
         Project temp = this.getProjectByName(project.getName());
         if (temp != null) {
-            return Response.error("专题库名称已存在");
+            ThrowException.throwXiaoShiException("专题库名称已存在");
         }
         if (project.getClientId() == null || project.getClientId() == -1) {
             ClientDTO clientDTO = new ClientDTO();
@@ -456,6 +461,28 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
         log.info("专题库表新增数据");
         project.insert();
         this.addProjectUser(project.getId());
+
+        //新增事件(若有添加事件)
+        List<EventAddNewDTO> eventAddNewDTOs = project.getEventAddNewDTOs();
+        Integer projectId = project.getId();
+        if (eventAddNewDTOs != null && eventAddNewDTOs.size() > 0) {
+            for (EventAddNewDTO eventAddNewDTO : eventAddNewDTOs) {
+                //若没有事件id则为新创建的事件,需要调用新增事件接口,若有事件id则为添加已有的事件,此时只需将事件id和专题库id存入关联表即可
+                Integer eventId = eventAddNewDTO.getId();
+                if (eventId == null) {
+                    eventAddNewDTO.setProjectId(projectId);
+                    eventService.addNew(eventAddNewDTO);
+                } else {
+                    AssoEventProject assoEventProject = new AssoEventProject()
+                            .setEventId(eventId)
+                            .setProjectId(projectId);
+                    assoEventProjectMapper.insert(assoEventProject);
+                }
+
+            }
+        }
+
+        log.info("新增专题库完成");
         return Response.success(project.getId());
     }
 

+ 5 - 3
PAS/src/main/java/cn/cslg/pas/service/asso/AssoProductPatentService.java

@@ -80,7 +80,9 @@ public class AssoProductPatentService extends ServiceImpl<AssoProductPatentMappe
         wrapper.eq(AssoProductPatent::getProductId, productId);
         wrapper.in(AssoProductPatent::getPatentNo, patentNos);
         List<String> patentNo = this.listObjs(wrapper, Object::toString);
-        patentNos.removeAll(patentNo);
+        ArrayList<String> list = new ArrayList<>();
+        list.addAll(patentNos);
+        list.removeAll(patentNo);
         if (patentNos.size() == 0) {
             return -1;
         }
@@ -130,8 +132,8 @@ public class AssoProductPatentService extends ServiceImpl<AssoProductPatentMappe
         if (params.getProductId() == null) {
             //当架构id不为null时
             if (params.getStructureId() != null) {
-           Structure structure =  structureService.getById(params.getStructureId());
-           params.setProductId(structure.getProductId());
+                Structure structure = structureService.getById(params.getStructureId());
+                params.setProductId(structure.getProductId());
             } else {
                 return pageList;
             }

+ 225 - 0
PAS/src/main/java/cn/cslg/pas/service/impl/EventServiceImpl.java

@@ -0,0 +1,225 @@
+package cn.cslg.pas.service.impl;
+
+import cn.cslg.pas.common.JsonPage;
+import cn.cslg.pas.common.model.PersonnelVO;
+import cn.cslg.pas.common.model.dto.EventAddNewDTO;
+import cn.cslg.pas.common.model.dto.EventQueryPageDTO;
+import cn.cslg.pas.common.model.dto.EventUpdateDTO;
+import cn.cslg.pas.common.model.vo.EventListItemVO;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
+import cn.cslg.pas.common.utils.ThrowException;
+import cn.cslg.pas.domain.Event;
+import cn.cslg.pas.domain.Project;
+import cn.cslg.pas.domain.asso.AssoEventProject;
+import cn.cslg.pas.mapper.AssoEventProjectMapper;
+import cn.cslg.pas.mapper.EventMapper;
+import cn.cslg.pas.service.IEventService;
+import cn.cslg.pas.service.ProjectService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.StringJoiner;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+/**
+ * 事件的Service层接口实现类
+ *
+ * @Author chenyu
+ * @Date 2023/4/2
+ */
+@RequiredArgsConstructor
+@Slf4j
+@Service
+public class EventServiceImpl extends ServiceImpl<EventMapper, Event> implements IEventService {
+    private final ProjectService projectService;
+    private final EventMapper eventMapper;
+    private final AssoEventProjectMapper assoEventProjectMapper;
+    private final CacheUtils cacheUtils;
+    private final LoginUtils loginUtils;
+
+    /**
+     * 新增事件
+     *
+     * @param eventAddNewDTO 新增事件的DTO类对象
+     */
+    @Override
+    public void addNew(EventAddNewDTO eventAddNewDTO) {
+        log.info("开始处理【新增事件】的业务,参数为:{}", eventAddNewDTO);
+
+        //检查名称是否被占用(同一租户下不能有同名事件名称)
+        String questionName = eventAddNewDTO.getQuestionName();
+        Integer projectId = eventAddNewDTO.getProjectId();
+        Project project = projectService.getById(projectId);
+        Integer tenantId = project.getTenantId();
+
+        log.info("检查事件名称是否被占用(同一租户下不能有同名事件)");
+        int count = eventMapper.countByNameAndTenantId(questionName, tenantId);
+        if (count > 0) {
+            ThrowException.throwXiaoShiException("新增事件失败,当前租户下事件名称【" + questionName + "】已存在,请尝试更换名称");
+        }
+
+        //新增事件DTO数据赋值给事件表实体类
+        Event event = new Event();
+        BeanUtils.copyProperties(eventAddNewDTO, event);
+        event.setTenantId(tenantId);
+        List<Integer> applicationScenarios = eventAddNewDTO.getApplicationScenarios();
+        //若有应用场景,则将应用场景集合转换成以逗号拼接的字符串,并赋值给实体类对应参数
+        if (applicationScenarios != null && applicationScenarios.size() > 0) {
+            String applicationScenario = applicationScenarios.stream().map(String::valueOf).collect(Collectors.joining(","));
+            event.setApplicationScenario(applicationScenario);
+        }
+
+        //获取当前登陆人id及姓名
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        event
+                .setCreatePersonId(personnelVO.getId())
+                .setCreatePersonName(personnelVO.getName());
+
+        log.info("数据入事件表");
+        int rows = eventMapper.insert(event);
+        if (rows != 1) {
+            ThrowException.throwXiaoShiException("新增事件失败,服务器忙请稍后再次尝试");
+        }
+
+        //数据入事件和专题库关联表
+        Integer eventId = event.getId();
+        AssoEventProject assoEventProject = new AssoEventProject()
+                .setEventId(eventId)
+                .setProjectId(projectId);
+        log.info("数据入事件和专题库关联表");
+        rows = assoEventProjectMapper.insert(assoEventProject);
+        if (rows != 1) {
+            ThrowException.throwXiaoShiException("新增事件失败,数据入事件和专题库关联表失败,服务器忙请稍后再次尝试");
+        }
+
+        log.info("新增事件完成");
+
+    }
+
+    /**
+     * 分页查询事件
+     *
+     * @param eventQueryPageDTO 事件的分页查询DTO类对象
+     */
+    @Override
+    public JsonPage query(EventQueryPageDTO eventQueryPageDTO) {
+        log.info("开始处理【分页查询事件】的业务,参数为:{}", eventQueryPageDTO);
+
+        Integer current = eventQueryPageDTO.getCurrent();
+        Integer size = eventQueryPageDTO.getSize();
+        String orderBy = eventQueryPageDTO.getOrderBy();
+        if (orderBy != null && !orderBy.equals("")) {
+            String regex = "[A-Z]+";
+            Pattern compile = Pattern.compile(regex);
+            Matcher matcher = compile.matcher(orderBy);
+            while (matcher.find()) {
+                orderBy = orderBy.replaceFirst(matcher.group(), "_" + matcher.group().toLowerCase());
+            }
+            eventQueryPageDTO.setOrderBy(orderBy);
+        }
+
+        if (current != null && size != null) {
+            PageHelper.startPage(current, size);
+        }
+        List<EventListItemVO> queryResults = eventMapper.queryList(eventQueryPageDTO);
+        for (EventListItemVO queryResult : queryResults) {
+            String applicationScenario = queryResult.getApplicationScenario();
+            if (applicationScenario != null && !applicationScenario.equals("")) {
+                List<Integer> applicationScenarioIds = Arrays.stream(applicationScenario.split(",")).map(Integer::parseInt).collect(Collectors.toList());
+                queryResult.setApplicationScenarios(applicationScenarioIds);
+            }
+        }
+        return JsonPage.restPage(new PageInfo<>(queryResults));
+    }
+
+    /**
+     * 修改事件
+     *
+     * @param eventUpdateDTO 修改事件的DTO类对象
+     */
+    @Override
+    public void update(EventUpdateDTO eventUpdateDTO) {
+        log.info("开始处理【修改事件】的业务,参数为:{}", eventUpdateDTO);
+
+        //检查尝试修改的数据是否存在
+        Event queryResult = eventMapper.selectById(eventUpdateDTO.getId());
+        if (queryResult == null) {
+            ThrowException.throwXiaoShiException("修改失败,访问的数据不存在,请尝试刷新页面");
+        }
+
+        //若修改了名称,则检查名称是否被占用(同一租户下专题库不能有同名事件名称)
+        String newQuestionName = eventUpdateDTO.getQuestionName();
+        String oldQuestionName = queryResult.getQuestionName();
+        Project project = projectService.getById(eventUpdateDTO.getProjectId());
+        Integer tenantId = project.getTenantId();
+        if (!newQuestionName.equals(oldQuestionName)) {
+            log.info("检查事件名称是否被占用(同一租户下专题库不能有同名事件)");
+            int count = eventMapper.countByNameAndTenantId(newQuestionName, tenantId);
+            if (count > 0) {
+                ThrowException.throwXiaoShiException("修改失败,当前租户下事件名称【" + newQuestionName + "】已存在,请尝试更换名称");
+            }
+        }
+
+        //修改事件
+        Event event = new Event();
+        BeanUtils.copyProperties(eventUpdateDTO, event);
+        event.setTenantId(tenantId);
+        List<Integer> applicationScenarios = eventUpdateDTO.getApplicationScenarios();
+        if (applicationScenarios != null && applicationScenarios.size() > 0) {
+            String applicationScenario = applicationScenarios.stream().map(String::valueOf).collect(Collectors.joining(","));
+            event.setApplicationScenario(applicationScenario);
+        }
+        int rows = eventMapper.updateById(event);
+        if (rows != 1) {
+            ThrowException.throwXiaoShiException("修改失败,服务器忙请稍后再次尝试");
+        }
+
+        log.info("修改完成");
+
+    }
+
+    /**
+     * 根据id删除事件
+     *
+     * @param eventId   事件id
+     * @param projectId 专题库id
+     */
+    @Override
+    public void delete(Integer eventId, Integer projectId) {
+        log.info("开始处理【删除事件】的业务,参数为:{}, {}", eventId, projectId);
+
+        //检查尝试删除的数据是否存在
+        Event queryResult = eventMapper.selectById(eventId);
+        if (queryResult == null) {
+            ThrowException.throwXiaoShiException("删除失败,访问的数据不存在,请尝试刷新页面");
+        }
+
+        //删除事件和专题库关联表数据
+        assoEventProjectMapper.deleteByEventIdAndProjectId(eventId, projectId);
+
+        //删除事件表数据
+//        int rows = eventMapper.deleteById(eventId);
+//        if (rows != 1) {
+//            ThrowException.throwXiaoShiException("删除失败,服务器忙请稍后再次尝试");
+//        }
+
+        log.info("删除完成");
+
+    }
+
+
+}

+ 4 - 4
PAS/src/main/resources/application-test.yml

@@ -1,6 +1,6 @@
 spring:
   redis:
-    host: 192.168.1.24
+    host: 172.27.247.174
     port: 6379
     database: 3
     password: Xx0GWxdWQJxx6Swe
@@ -12,9 +12,9 @@ spring:
         max-wait: -1ms
     timeout: 2000ms
   datasource:
-    url: jdbc:mysql://192.168.1.24:3306/pas?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+    url: jdbc:mysql://172.27.247.174:3306/pas?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
     username: root
-    password: rrzTwWAYX8Gxh5JH
+    password: TU5x6IeBi7rl
     driver-class-name: com.mysql.cj.jdbc.Driver
     type: com.alibaba.druid.pool.DruidDataSource
     druid:
@@ -23,4 +23,4 @@ spring:
         login-password: 123456
       web-stat-filter:
         exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
-authorUrl: http://localhost:8871
+authorUrl: http://localhost:8880

+ 14 - 0
PAS/src/main/resources/mapper/AssoEventProjectMapper.xml

@@ -0,0 +1,14 @@
+<?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.AssoEventProjectMapper">
+    <!--根据事件id和专题库id删除数据-->
+    <!--int deleteByEventIdAndProjectId(Integer eventId, Integer projectId);-->
+    <delete id="deleteByEventIdAndProjectId">
+        delete
+        from pas.asso_event_project
+        where event_id = #{eventId}
+          and project_id = #{projectId}
+    </delete>
+
+</mapper>

+ 87 - 0
PAS/src/main/resources/mapper/EventMapper.xml

@@ -0,0 +1,87 @@
+<?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.EventMapper">
+    <!--根据名称和租户id统计数量-->
+    <!--int countByNameAndTenantId(String questionName, Integer tenantId);-->
+    <select id="countByNameAndTenantId" resultType="int">
+        select count(*)
+        from pas.event
+        where question_name = #{questionName}
+          and tenant_id = #{tenantId}
+    </select>
+
+    <!--分页查询事件列表-->
+    <!--List<EventListItemVO> queryList(EventQueryPageDTO eventQueryPageDTO);-->
+    <select id="queryList" resultMap="queryListMap">
+        select eve.id eventId,
+        question_name,
+        description,
+        application_scenario as applicationScenario,
+        event_date,
+        tenant_id,
+        create_person_id,
+        create_person_name,
+        create_time,
+        modified_time
+        <if test="projectId != null and projectId != ''">
+            , project_id
+        </if>
+        from pas.event eve
+        <if test="projectId != null and projectId != ''">
+            join pas.asso_event_project asso on eve.id = asso.event_id
+        </if>
+        <where>
+            <if test="projectId != null and projectId != ''">
+                and project_id = #{projectId}
+            </if>
+            <if test="questionName != null and questionName != ''">
+                and question_name like '%${questionName}%'
+            </if>
+        </where>
+        order by
+        <choose>
+            <when test="orderBy != null and orderBy != ''">
+                ${orderBy} ${orderType}
+            </when>
+            <otherwise>
+                create_time desc
+            </otherwise>
+        </choose>
+    </select>
+
+    <resultMap id="queryListMap" type="cn.cslg.pas.common.model.vo.EventListItemVO">
+        <id column="eventId" property="id"/>
+        <result column="question_name" property="questionName"/>
+        <result column="description" property="description"/>
+        <result column="applicationScenario" property="applicationScenario"/>
+        <result column="event_date" property="eventDate"/>
+        <result column="tenant_id" property="tenantId"/>
+        <result column="create_person_id" property="createPersonId"/>
+        <result column="create_person_name" property="createPersonName"/>
+        <result column="create_time" property="createTime"/>
+        <result column="modified_time" property="modifiedTime"/>
+        <collection property="scenarioNames" ofType="string"
+                    select="select1" column="{applicationScenario=applicationScenario}">
+        </collection>
+        <collection property="projectIds" ofType="integer"
+                    select="select2" column="{eventId=eventId}">
+        </collection>
+    </resultMap>
+
+    <select id="select1" resultType="string">
+        select label
+        from pas.os_system_dict
+        where FIND_IN_SET(value, #{applicationScenario})
+          and type = "ENTERPRISE_APPLICATION_SCENARIO"
+        order by id
+    </select>
+
+    <select id="select2" resultType="integer">
+        select project_id
+        from pas.asso_event_project
+        where event_id = #{eventId}
+        order by id
+    </select>
+
+</mapper>

+ 3 - 5
PAS/src/main/resources/mapper/PatentMarkerDataMapper.xml

@@ -11,7 +11,7 @@
     <!--传入了地区-->
     <!--按照年为单位返回查询到的营销数据-->
     <select id="patentQueryByYear" resultMap="queryByDateMap">
-        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'年') AS market_date,
+        SELECT CONCAT(YEAR(CONCAT(sale_time,'-02')),'年') AS market_date,
             sum(sale_money) AS sale_total_money,
             CAST(sum(custom_license_rate * sale_money) AS DECIMAL (19, 2)) AS custom_license_money
         FROM  product_market_data
@@ -34,8 +34,7 @@
     <!--传入了地区-->
     <!--按照季度为单位返回查询到的营销数据-->
     <select id="patentQueryBySeason" resultMap="queryByDateMap">
-        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'年',
-                 '第',CAST(QUARTER(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'季度') AS market_date,
+        SELECT CONCAT(YEAR(CONCAT(sale_time,'-02')),'年','第',QUARTER(CONCAT(sale_time,'-02')),'季度') AS market_date,
             sum(sale_money) AS sale_total_money,
             CAST(sum(custom_license_rate * sale_money) AS DECIMAL (19, 2)) AS custom_license_money
         FROM  product_market_data
@@ -58,8 +57,7 @@
     <!--传入了地区-->
     <!--按照月份为单位返回查询到的营销数据-->
     <select id="patentQueryByMonth" resultMap="queryByDateMap">
-        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) AS CHAR),'-',
-                      CAST(MONTH(STR_TO_DATE(sale_time,'%Y-%m')) AS CHAR)) AS market_date,
+        SELECT CONCAT(YEAR(CONCAT(sale_time,'-02')),'-',MONTH(CONCAT(sale_time,'-02'))) AS market_date,
             sum(sale_money) AS sale_total_money,
             CAST(sum(custom_license_rate * sale_money) AS DECIMAL (19, 2)) AS custom_license_money
         FROM product_market_data

+ 9 - 11
PAS/src/main/resources/mapper/ProductCategoryMapper.xml

@@ -124,10 +124,9 @@
     <!--根据产品架构id、公司名称、营销地区、时间单位查询产品类别营销数据-->
     <!--按照月份返回总体-->
     <select id="categoryQueryByMonth" resultMap="queryByDateMap">
-        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) AS CHAR),'-',
-        CAST(MONTH(STR_TO_DATE(sale_time,'%Y-%m')) AS CHAR)) AS market_date,
-        sum(sale_money) AS sale_total_money,
-        CAST(sum(custom_license_rate * sale_money) AS DECIMAL (19, 2)) AS custom_license_money
+        SELECT CONCAT(YEAR(CONCAT(sale_time,'-02')),'-',MONTH(CONCAT(sale_time,'-02'))) AS market_date,
+                sum(sale_money) AS sale_total_money,
+                CAST(sum(custom_license_rate * sale_money) AS DECIMAL (19, 2)) AS custom_license_money
         FROM product_market_data
         WHERE product_id IN(SELECT id AS product_id
         FROM product
@@ -143,8 +142,7 @@
 
     <!--按照季度返回总体-->
     <select id="categoryQueryBySeason" resultMap="queryByDateMap">
-        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'年',
-        '第',CAST(QUARTER(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'季度') AS market_date,
+        SELECT CONCAT(YEAR(CONCAT(sale_time,'-02')),'年','第',QUARTER(CONCAT(sale_time,'-02')),'季度') AS market_date,
         sum(sale_money) AS sale_total_money,
         CAST(sum(custom_license_rate * sale_money) AS DECIMAL (19, 2)) AS custom_license_money
         FROM product_market_data
@@ -161,7 +159,7 @@
     </select>
     <!--按照年度返回总体-->
     <select id="categoryQueryByYear" resultMap="queryByDateMap">
-        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'年') AS market_date,
+        SELECT CONCAT(YEAR(CONCAT(sale_time,'-02')),'年') AS market_date,
         sum(sale_money) AS sale_total_money,
         CAST(sum(custom_license_rate * sale_money) AS DECIMAL (19, 2)) AS custom_license_money
         FROM product_market_data
@@ -205,10 +203,9 @@
 
     <!--按照月份返回每个-->
     <select id="queryByMonth" resultMap="queryByDateMap">
-        SELECT CONCAT(YEAR(CONCAT(sale_time,'-02')),'-',
-        MONTH(CONCAT(sale_time,'-02'))) AS market_date,
-        sum(sale_money) AS sale_total_money,
-        CAST(sum(custom_license_rate * sale_money) AS DECIMAL (19, 2)) AS custom_license_money
+        SELECT CONCAT(YEAR(CONCAT(sale_time,'-02')),'-',MONTH(CONCAT(sale_time,'-02'))) AS market_date,
+                sum(sale_money) AS sale_total_money,
+                CAST(sum(custom_license_rate * sale_money) AS DECIMAL (19, 2)) AS custom_license_money
         FROM product_market_data
         WHERE product_id = #{productId}
         <if test="categoryArea != null and categoryArea != ''">
@@ -217,6 +214,7 @@
         GROUP BY market_date
     </select>
 
+
     <!--根据架构id查询产品id和名称-->
     <resultMap id="idNameMap" type="cn.cslg.pas.common.model.vo.ProductIdAndNameVO">
         <result column="product_id" property="productId"/>

+ 3 - 5
PAS/src/main/resources/mapper/ProductMarketDataMapper.xml

@@ -116,7 +116,7 @@
     </resultMap>
 
     <select id="queryByYear" resultMap="queryByDateMap">
-        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'年') AS market_date,
+        SELECT CONCAT(YEAR(CONCAT(sale_time,'-02')),'年') AS market_date,
             sum(sale_money) AS sale_total_money,
             CAST(sum(custom_license_rate * sale_money) AS DECIMAL (19, 2)) AS custom_license_money
         FROM  product_market_data
@@ -128,8 +128,7 @@
     </select>
 
     <select id="queryBySeason" resultMap="queryByDateMap">
-        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'年',
-                      '第',CAST(QUARTER(STR_TO_DATE(sale_time,'%Y-%m')) as CHAR),'季度') AS market_date,
+        SELECT CONCAT(YEAR(CONCAT(sale_time,'-02')),'年','第',QUARTER(CONCAT(sale_time,'-02')),'季度') AS market_date,
             sum(sale_money) AS sale_total_money,
             CAST(sum(custom_license_rate * sale_money) AS DECIMAL (19, 2)) AS custom_license_money
         FROM  product_market_data
@@ -141,8 +140,7 @@
     </select>
 
     <select id="queryByMonth" resultMap="queryByDateMap">
-        SELECT CONCAT(CAST(YEAR(STR_TO_DATE(sale_time,'%Y-%m')) AS CHAR),'-',
-                      CAST(MONTH(STR_TO_DATE(sale_time,'%Y-%m')) AS CHAR)) AS market_date,
+        SELECT CONCAT(YEAR(CONCAT(sale_time,'-02')),'-',MONTH(CONCAT(sale_time,'-02'))) AS market_date,
             sum(sale_money) AS sale_total_money,
             CAST(sum(custom_license_rate * sale_money) AS DECIMAL (19, 2)) AS custom_license_money
         FROM  product_market_data