From ab25f94a1e593001bf993d182f9a3860fd098583 Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: 星期二, 15 七月 2025 10:27:11 +0800
Subject: [PATCH] 新增

---
 multi-system/src/main/resources/mapper/system/ProductItemMapper.xml                      |   68 +++++++++++
 multi-system/src/main/java/com/gkhy/exam/system/mapper/ProductItemMapper.java            |   15 ++
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/CatalogueServiceImpl.java   |    7 +
 multi-system/src/main/resources/mapper/system/CompanyIndustryTemplateMapper.xml          |    3 
 multi-system/src/main/java/com/gkhy/exam/system/domain/ProductItem.java                  |   93 +++++++++++++++
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/ProductItemServiceImpl.java |   62 ++++++++++
 multi-system/src/main/java/com/gkhy/exam/system/service/ProductItemService.java          |   19 +++
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/QualityController.java      |   63 ++++++++++
 8 files changed, 329 insertions(+), 1 deletions(-)

diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/QualityController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/QualityController.java
index 8d7905e..2f6dde6 100644
--- a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/QualityController.java
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/QualityController.java
@@ -3,6 +3,7 @@
 import com.gkhy.exam.common.api.CommonResult;
 import com.gkhy.exam.system.domain.*;
 import com.gkhy.exam.system.domain.req.*;
+import com.gkhy.exam.system.domain.vo.CatalogueVo;
 import com.gkhy.exam.system.service.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -10,6 +11,8 @@
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 @Api(tags = "企业质量目标管理")
 @RestController
@@ -30,6 +33,9 @@
 
     @Autowired
     private CatalogueService catalogueService;
+
+    @Autowired
+    private ProductItemService productItemService;
 
 
     /**
@@ -218,6 +224,17 @@
     }
 
     /**
+     * 目录复制
+     * @param catalogue
+     * @return
+     */
+    @ApiOperation(value = "目录复制")
+    @PostMapping("/catalogue/copy")
+    public CommonResult copyCatalogue(@RequestBody List<CatalogueVo> catalogue){
+        return catalogueService.copyCatalogue(catalogue);
+    }
+
+    /**
      * 质量管理体系运行修改
      * @param catalogue
      * @return
@@ -332,5 +349,51 @@
     }
 
 
+    /**
+     * 产品与项目列表
+     * @param productItem
+     * @return
+     */
+    @ApiOperation(value = "产品与项目列表")
+    @GetMapping("/productItem/list")
+    public CommonResult listProductItem(ProductItem productItem){
+        return CommonResult.success(productItemService.selectProductItem(productItem));
+    }
+
+
+    /**
+     * 产品与项目新增
+     * @param productItem
+     * @return
+     */
+    @ApiOperation(value = "产品与项目新增")
+    @PostMapping("/productItem/insert")
+    public CommonResult insertProductItem(@RequestBody ProductItem productItem){
+        return productItemService.insertProductItem(productItem);
+    }
+
+    /**
+     * 产品与项目修改
+     * @param productItem
+     * @return
+     */
+    @ApiOperation(value = "产品与项目修改")
+    @PostMapping("/productItem/update")
+    public CommonResult updateProductItem(@RequestBody ProductItem productItem){
+        return productItemService.updateProductItem(productItem);
+    }
+
+    /**
+     * 产品与项目删除
+     * @param itemId
+     * @return
+     */
+    @ApiOperation(value = "产品与项目删除")
+    @GetMapping("/productItem/deleted")
+    public CommonResult deletedProductItem(@RequestParam("itemId") Integer itemId){
+        return productItemService.deletedProductItem(itemId);
+    }
+
+
 
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/ProductItem.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/ProductItem.java
new file mode 100644
index 0000000..69d1714
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/ProductItem.java
@@ -0,0 +1,93 @@
+package com.gkhy.exam.system.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 io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("product_item")
+@ApiModel(value = "ProductItem对象", description = "产品类和项目类")
+public class ProductItem implements Serializable {
+
+
+    @ApiModelProperty("主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("catalogue_id")
+    private Integer catalogueId;
+    @TableField(exist = false)
+    private String catalogueName;
+
+    @TableField("company_id")
+    private Integer companyId;
+    @TableField(exist = false)
+    private String companyName;
+
+    @ApiModelProperty(value = "文件编号")
+    @TableField("number")
+    private String number;
+
+    @ApiModelProperty(value = "编写指南")
+    @TableField("erdact")
+    private String erdact;
+
+    @ApiModelProperty(value = "数据类型  1产品    2项目")
+    @TableField("type")
+    private Integer type;
+
+    @ApiModelProperty(value = "文件名称")
+    @TableField("file_name")
+    private String fileName;
+
+    @ApiModelProperty(value = "文件路径")
+    @TableField("file_path")
+    private String filePath;
+
+    @TableField("del_flag")
+    private Integer delFlag;
+
+    @TableField("create_by")
+    private String createBy;
+
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @TableField("update_by")
+    private String updateBy;
+
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/ProductItemMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/ProductItemMapper.java
new file mode 100644
index 0000000..76b3574
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/ProductItemMapper.java
@@ -0,0 +1,15 @@
+package com.gkhy.exam.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.exam.system.domain.ProductItem;
+import org.apache.ibatis.annotations.Param;
+import org.mapstruct.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface ProductItemMapper extends BaseMapper<ProductItem> {
+    List<ProductItem> selectProductItemList(ProductItem productItem);
+
+    void deletedByCompanyId(@Param("companyId") Integer companyId, @Param("type") Integer type);
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/ProductItemService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/ProductItemService.java
new file mode 100644
index 0000000..aafd4d1
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/ProductItemService.java
@@ -0,0 +1,19 @@
+package com.gkhy.exam.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.system.domain.ProductItem;
+
+import java.util.List;
+
+public interface ProductItemService extends IService<ProductItem> {
+    CommonPage selectProductItem(ProductItem productItem);
+
+    CommonResult insertProductItem(ProductItem productItem);
+
+    CommonResult updateProductItem(ProductItem productItem);
+
+    CommonResult deletedProductItem(Integer itemId);
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/CatalogueServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/CatalogueServiceImpl.java
index 616fe49..63895a3 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/CatalogueServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/CatalogueServiceImpl.java
@@ -13,6 +13,7 @@
 import com.gkhy.exam.system.domain.vo.CatalogueVo;
 import com.gkhy.exam.system.mapper.CatalogueMapper;
 import com.gkhy.exam.system.mapper.CompanyIndustryTemplateMapper;
+import com.gkhy.exam.system.mapper.ProductItemMapper;
 import com.gkhy.exam.system.mapper.SysCompanyMapper;
 import com.gkhy.exam.system.service.CatalogueService;
 import com.gkhy.exam.system.service.SysCompanyService;
@@ -34,6 +35,8 @@
     private SysCompanyMapper sysCompanyMapper;
     @Autowired
     private CompanyIndustryTemplateMapper companyIndustryTemplateMapper;
+    @Autowired
+    private ProductItemMapper productItemMapper;
 
     /**
      * 目录管理
@@ -243,7 +246,8 @@
     @Override
     public CommonResult copyCatalogue(List<CatalogueVo> catalogue) {
         Integer companyId = catalogue.get(0).getCompanyId();
-        catalogueMapper.delete(Wrappers.<Catalogue>lambdaQuery().eq(Catalogue::getCompanyId,companyId));
+        Integer type = catalogue.get(0).getType();
+        catalogueMapper.delete(Wrappers.<Catalogue>lambdaQuery().eq(Catalogue::getCompanyId,companyId).eq(Catalogue::getType,catalogue.get(0).getType()));
         for (CatalogueVo catalogueVo : catalogue) {
             Catalogue catalogue1 = new Catalogue();
             BeanUtils.copyProperties(catalogueVo,catalogue1);
@@ -253,6 +257,7 @@
                 saveCatalogue(children,catalogue1);
             }
         }
+        productItemMapper.deletedByCompanyId(companyId,type);
         return CommonResult.success();
     }
 
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ProductItemServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ProductItemServiceImpl.java
new file mode 100644
index 0000000..eaf3996
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ProductItemServiceImpl.java
@@ -0,0 +1,62 @@
+package com.gkhy.exam.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.common.exception.ApiException;
+import com.gkhy.exam.common.utils.PageUtils;
+import com.gkhy.exam.common.utils.SecurityUtils;
+import com.gkhy.exam.system.domain.ProductItem;
+import com.gkhy.exam.system.mapper.ProductItemMapper;
+import com.gkhy.exam.system.service.ProductItemService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Service
+public class ProductItemServiceImpl extends ServiceImpl<ProductItemMapper, ProductItem> implements ProductItemService {
+
+    @Autowired
+    private ProductItemMapper productItemMapper;
+
+    @Override
+    public CommonPage selectProductItem(ProductItem productItem) {
+        if (!SecurityUtils.adminUser()){
+            if (productItem.getCompanyId()==null){
+                throw new ApiException("非管理员操作,企业id不可为空");
+            }
+        }
+        PageUtils.startPage();
+        List<ProductItem> productItems = productItemMapper.selectProductItemList(productItem);
+        return CommonPage.restPage(productItems);
+    }
+
+    @Override
+    public CommonResult insertProductItem(ProductItem productItem) {
+        productItem.setCreateTime(LocalDateTime.now());
+        productItem.setCreateBy(SecurityUtils.getUsername());
+        productItemMapper.insert(productItem);
+        return CommonResult.success();
+    }
+
+    @Override
+    public CommonResult updateProductItem(ProductItem productItem) {
+        productItem.setUpdateBy(SecurityUtils.getUsername());
+        productItem.setUpdateTime(LocalDateTime.now());
+        productItemMapper.updateById(productItem);
+        return CommonResult.success();
+    }
+
+    @Override
+    public CommonResult deletedProductItem(Integer itemId) {
+        ProductItem productItem = new ProductItem();
+        productItem.setId(itemId);
+        productItem.setUpdateTime(LocalDateTime.now());
+        productItem.setUpdateBy(SecurityUtils.getUsername());
+        productItem.setDelFlag(2);
+        productItemMapper.updateById(productItem);
+        return CommonResult.success();
+    }
+}
diff --git a/multi-system/src/main/resources/mapper/system/CompanyIndustryTemplateMapper.xml b/multi-system/src/main/resources/mapper/system/CompanyIndustryTemplateMapper.xml
index 5106e1c..cf76a5c 100644
--- a/multi-system/src/main/resources/mapper/system/CompanyIndustryTemplateMapper.xml
+++ b/multi-system/src/main/resources/mapper/system/CompanyIndustryTemplateMapper.xml
@@ -89,6 +89,9 @@
         <if test="type!=null and type!=''">
             and ci.type like concat('%',#{type},'%')
         </if>
+        <if test="templateName!=null and templateName!=''">
+            and ci.`template_name` like concat('%',#{templateName},'%')
+        </if>
         ORDER BY
         CAST(SUBSTRING_INDEX(ci.chapter, '.', 1) AS UNSIGNED) ASC,
         CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(ci.chapter, '.', 2), '.', -1) AS UNSIGNED) ASC,  -- 第二级
diff --git a/multi-system/src/main/resources/mapper/system/ProductItemMapper.xml b/multi-system/src/main/resources/mapper/system/ProductItemMapper.xml
new file mode 100644
index 0000000..a8f39a9
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/ProductItemMapper.xml
@@ -0,0 +1,68 @@
+<?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="com.gkhy.exam.system.mapper.ProductItemMapper">
+    <update  id="deletedByCompanyId">
+        update product_item SET del_flag =2 where company_id = #{companyId} and type = #{type}
+    </update>
+
+    <select id="selectProductItemList" resultType="com.gkhy.exam.system.domain.ProductItem">
+        SELECT
+            pi.`id`,
+            pi.`catalogue_id`,
+            CONCAT(c.`number`, ' ', c.`mess`) AS catalogue_name,
+            pi.`company_id`,
+            sc.`name` as company_name,
+            pi.`number`,
+            pi.`erdact`,
+            pi.`type`,
+            pi.`file_name`,
+            pi.`file_path`,
+            pi.`del_flag`,
+            pi.`create_by`,
+            pi.`create_time`,
+            pi.`update_by`,
+            pi.`update_time`
+        FROM
+            product_item pi
+                LEFT JOIN sys_company sc on pi.company_id = sc.id
+        left join catalogue c on pi.catalogue_id = c.id
+        WHERE
+            pi.del_flag = 1 and pi.type = #{type}
+        <if test="companyId!=null and companyId!=''">
+            and pi.company_id =#{companyId}
+        </if>
+        <if test="catalogueId!=null and catalogueId!=''">
+            and pi.catalogue_id = #{catalogueId}
+        </if>
+        ORDER BY
+            pi.create_time ASC
+    </select>
+    <select id="writeProduct" resultType="com.gkhy.exam.system.domain.ProductItem">
+        SELECT
+        pi.`id`,
+        pi.`catalogue_id`,
+        c.`mess` as catalogue_name,
+        pi.`company_id`,
+        sc.`name` as company_name,
+        pi.`number`,
+        pi.`erdact`,
+        pi.`file_name`,
+        pi.`file_path`,
+        pi.`del_flag`,
+        pi.`create_by`,
+        pi.`create_time`,
+        pi.`update_by`,
+        pi.`update_time`
+        FROM
+        product_item pi
+        LEFT JOIN sys_company sc on pi.company_id = sc.id
+        left join catalogue c on pi.catalogue_id = c.id
+        WHERE
+        pi.del_flag = 1 and pi.company_id = #{companyId}  and pi.catalogue_id in
+        (<foreach collection="catalogueIds" item="catalogueId" separator=",">
+            #{catalogueId}
+         </foreach>)
+        ORDER BY
+        pi.create_time ASC
+    </select>
+</mapper>

--
Gitblit v1.9.2