chendayu 2 jaren geleden
bovenliggende
commit
b48a1e6ff4

+ 163 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/ProjectStandardVO.java

@@ -0,0 +1,163 @@
+package cn.cslg.pas.common.model.vo;
+
+import cn.cslg.pas.common.model.BaseEntity;
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * 专题库表的标准查询VO类
+ */
+@Accessors(chain = true)
+@Data
+public class ProjectStandardVO extends BaseEntity<ProjectStandardVO> {
+    /**
+     * 标题
+     */
+    private String name;
+
+    /**
+     * 创建者(登录账户)ID
+     */
+    @TableField("creat_id")
+    private Integer createBy;
+
+    /**
+     * 技术主题
+     */
+    private String technicalTheme;
+
+    /**
+     * 内部案卷
+     */
+    @TableField("innerfile")
+    private String innerFile;
+
+    /**
+     * 是否更新 0 否  1 是
+     */
+    @TableField("`update`")
+    private Integer update;
+
+    /**
+     * 处理状态
+     */
+    private String status;
+
+    /**
+     * 合同号
+     */
+    private String contractNo;
+
+    /**
+     * 委案日
+     */
+    @TableField("`case`")
+    private String caseDate;
+
+    /**
+     * 更新周期
+     */
+    private String updateTime;
+
+    /**
+     * 排序
+     */
+    private Integer sort;
+
+    /**
+     * 委托方ID
+     */
+    @TableField("clientid")
+    private Integer clientId;
+
+    /**
+     * 委托场景ID
+     */
+    @TableField("scenarioid")
+    private String scenario;
+
+    /**
+     * 调查类型ID
+     */
+    @TableField("typeid")
+    private String type;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 部门ID
+     */
+    @TableField("department_id")
+    private Integer departmentId;
+
+    /**
+     * 部门ID
+     */
+    @TableField("personnel_id")
+    private Integer personnelId;
+    /**
+     * 租户ID
+     */
+    @TableField("tenantId")
+    private Integer tenantId;
+    /**
+     * 创建时间
+     */
+    private Integer createTime;
+
+    @TableField(exist = false)
+    private String clientName;
+
+    @TableField(exist = false)
+    private List<String> typeName;
+
+    @TableField(exist = false)
+    private List<String> scenarioName;
+
+    @TableField(exist = false)
+    private String createName;
+
+    @TableField(exist = false)
+    private List<Integer> scenarioList;
+
+    @TableField(exist = false)
+    private List<Integer> typeList;
+
+    @TableField(exist = false)
+    private Integer reportNum;
+
+    @TableField(exist = false)
+    private String departmentName;
+
+    @TableField(exist = false)
+    private String personnelName;
+
+    /**
+     * 产品id
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private Integer productId;
+    /**
+     * 架构id
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private Integer structureId;
+    /**
+     * 是否分类(1是 0否)
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private Integer isCategory;
+    /**
+     * 产品名称
+     */
+    @TableField(exist = false)
+    private String productName;
+
+}

+ 2 - 1
PAS/src/main/java/cn/cslg/pas/common/model/vo/ProjectVO.java

@@ -26,13 +26,14 @@ public class ProjectVO extends BaseVO {
      */
     private Integer RoleType;
     /*
-  登录人Id
+    登录人Id
     */
     private Integer PersonnelId;
     /*
    登录人租户Id
     */
     private Integer tenantId;
+
     @Data
     public static class Sort {
         private String order;

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

@@ -8,6 +8,7 @@ import cn.cslg.pas.common.utils.StringUtils;
 import cn.cslg.pas.common.utils.auth.checkAuth;
 import cn.cslg.pas.domain.Project;
 import cn.cslg.pas.domain.ProjectUser;
+import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.service.ProjectPatentLinkService;
 import cn.cslg.pas.service.ProjectService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -65,7 +66,12 @@ ProjectController {
     @PostMapping("edit")
     @Operation(summary = "编辑专题库")
     public String edit(@RequestBody Project project) throws IOException {
-        return projectService.edit(project);
+        try {
+            projectService.edit(project);
+        } catch (XiaoShiException e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success();
     }
 
     @Permission(roles = {2})

+ 9 - 0
PAS/src/main/java/cn/cslg/pas/mapper/ProjectMapper.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.mapper;
 
+import cn.cslg.pas.common.model.vo.ProjectStandardVO;
 import cn.cslg.pas.domain.Project;
 import cn.cslg.pas.common.model.vo.ProjectVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -33,4 +34,12 @@ public interface ProjectMapper extends BaseMapper<Project> {
      */
     int countByProductId(Integer productId);
 
+    /**
+     * 根据id查询数据
+     *
+     * @param id 专题库id
+     * @return 返回查询到的数据
+     */
+    ProjectStandardVO getStandardById(Integer id);
+
 }

+ 8 - 0
PAS/src/main/java/cn/cslg/pas/mapper/asso/AssoStructurePatentMapper.java

@@ -49,6 +49,14 @@ public interface AssoStructurePatentMapper extends BaseMapper<AssoStructurePaten
     int countByStructureIds(List<Integer> structureIds);
 
     /**
+     * 根据专题库id统计数量
+     *
+     * @param projectId 专题库id
+     * @return 返回统计到的数量
+     */
+    int countByProjectId(Integer projectId);
+
+    /**
      * 根据专题库id和专利号查询数据
      *
      * @param assoStructurePatentQueryDTO 专题库产品架构专利号标引的查询DTO类

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

@@ -11,6 +11,7 @@ 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.exception.XiaoShiException;
 import cn.cslg.pas.mapper.ProductMapper;
 import cn.cslg.pas.mapper.ProjectMapper;
 import cn.cslg.pas.mapper.asso.AssoStructurePatentMapper;
@@ -104,6 +105,7 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
     private final RequestService requestService;
     private final AssoStructurePatentMapper assoStructurePatentMapper;
     private final ProductMapper productMapper;
+    private final ProjectMapper projectMapper;
 
     public Project getProjectByName(String name) {
         LambdaQueryWrapper<Project> queryWrapper = new LambdaQueryWrapper<>();
@@ -459,7 +461,22 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
 
     @Transactional
     public String edit(Project project) throws IOException {
-        Integer productId = project.getProductId();
+        //检查当前专题库的修改是否要修改产品
+        Integer projectId = project.getId();
+        Integer newProductId = project.getProductId();
+        ProjectStandardVO queryResult = projectMapper.getStandardById(projectId);
+        Integer oldProductId = queryResult.getProductId();
+        //若当前产品id和原产品id不一致,则表示当前的修改要修改产品
+        if (!newProductId.equals(oldProductId)) {
+            //检查当前专题库产品架构是否已标引,若已标引则不允许修改产品
+            int count = assoStructurePatentMapper.countByProjectId(projectId);
+            if (count > 0) {
+                String message = "修改专题库失败,该专题库已被标引,无法更换产品或架构";
+                log.info("{}", message);
+                throw new XiaoShiException(message);
+            }
+        }
+
         Project temp = this.getProjectByName(project.getName());
         //检查尝试修改的新专题库名称是否被占用
         if (temp != null && !temp.getId().equals(project.getId())) {

+ 7 - 8
PAS/src/main/java/cn/cslg/pas/service/impl/ProductCategoryServiceImpl.java

@@ -73,7 +73,7 @@ public class ProductCategoryServiceImpl implements IProductCategoryService {
 
         //检查许可费率数值是否合法
         Double licenseRate = productCategoryAddNewDTO.getLicenseRate();
-        if (licenseRate < 0 || licenseRate > 1) {
+        if (licenseRate != null && (licenseRate < 0 || licenseRate > 1)) {
             String message = "新增产品失败,许可费率不合法,请填写正确数值";
             log.info("{}", message);
             throw new XiaoShiException(message);
@@ -321,12 +321,12 @@ public class ProductCategoryServiceImpl implements IProductCategoryService {
     }
 
     @Override
-    public List<String> getAreaList(Integer id,Integer productId) {
+    public List<String> getAreaList(Integer id, Integer productId) {
         //存储所有产品的营销数据
         List<ProductMarketData> marketData = new ArrayList<>();
         List<String> areaList = new ArrayList<>();
         List<Integer> productIds = new ArrayList<>();
-        if(productId==null) {
+        if (productId == null) {
             //根据架构id获得产品
             LambdaQueryWrapper<Product> productWrapper = new LambdaQueryWrapper<>();
             productWrapper.eq(Product::getProductCategoryId, id);
@@ -335,9 +335,8 @@ public class ProductCategoryServiceImpl implements IProductCategoryService {
             if (products.size() != 0) {
                 productIds = products.stream().map(Product::getId).collect(Collectors.toList());
             }
-        }
-        else {
-            productIds=Arrays.asList(productId);
+        } else {
+            productIds = Arrays.asList(productId);
         }
         if (productIds.size() > 0) {
             //根据产品Id获得产品营销数据
@@ -364,8 +363,8 @@ public class ProductCategoryServiceImpl implements IProductCategoryService {
         LambdaQueryWrapper<Product> productWrapper = new LambdaQueryWrapper<>();
         productWrapper.eq(Product::getProductCategoryId, id);
         List<Product> products = productService.list(productWrapper);
-        products.forEach(item->{
-            if(!areaList.contains(item.getCompanyName())){
+        products.forEach(item -> {
+            if (!areaList.contains(item.getCompanyName())) {
                 areaList.add(item.getCompanyName());
             }
         });

+ 8 - 0
PAS/src/main/resources/mapper/AssoStructurePatentMapper.xml

@@ -48,6 +48,14 @@
         )
     </select>
 
+    <!--根据专题库id统计数量-->
+    <!--int countByProjectId(Integer projectId);-->
+    <select id="countByProjectId" resultType="int">
+        select count(*)
+        from asso_structure_patent
+        where project_id = #{projectId}
+    </select>
+
     <!-- 根据专题库id和专利号查询数据-->
     <!--List<AssoStructurePatentVO> selectByProjectIdPatentNo(AssoStructurePatentQueryDTO assoStructurePatentQueryDTO);-->
     <select id="selectByProjectIdPatentNo" resultMap="selectByProjectIdPatentNoMap">

+ 18 - 0
PAS/src/main/resources/mapper/ProjectMapper.xml

@@ -86,4 +86,22 @@
         where product_id = #{productId}
     </select>
 
+    <!--根据id查询数据-->
+    <!--ProjectVO getStandardById(Integer id);-->
+    <select id="getStandardById" resultMap="getStandardByIdMap">
+        select id,
+               product_id,
+               structure_id,
+               is_category
+        from os_thematic
+        where id = #{id}
+    </select>
+
+    <resultMap id="getStandardByIdMap" type="cn.cslg.pas.common.model.vo.ProjectStandardVO">
+        <id column="id" property="id"/>
+        <result column="product_id" property="productId"/>
+        <result column="structure_id" property="structureId"/>
+        <result column="is_category" property="isCategory"/>
+    </resultMap>
+
 </mapper>