Parcourir la source

Merge branch 'feature-lihb-20250610' of http://219.151.181.73:3000/zhuwei/bladex into test-merge-02

LHB il y a 1 mois
Parent
commit
53446bdade
16 fichiers modifiés avec 426 ajouts et 86 suppressions
  1. 12 0
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/ossre/S3Template2.java
  2. 5 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/PrivateStandardDTO.java
  3. 2 1
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/StandardInfoJoinDTO.java
  4. 20 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardElementVo.java
  5. 26 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoConditionVo.java
  6. 21 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoGroupNameVO.java
  7. 38 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoPrivateJoinGroupVO.java
  8. 5 3
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoPrivateJoinVO.java
  9. 1 1
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoVO.java
  10. 14 2
      blade-service/blade-business/src/main/java/org/springblade/business/controller/PrivateStandardController.java
  11. 9 7
      blade-service/blade-business/src/main/java/org/springblade/business/controller/StandardInfoController.java
  12. 9 7
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/StandardInfoMapper.java
  13. 93 12
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/StandardInfoMapper.xml
  14. 12 12
      blade-service/blade-business/src/main/java/org/springblade/business/service/StandardInfoService.java
  15. 15 5
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/PrivateStandardServiceImpl.java
  16. 144 36
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/UStandardInfoServiceImpl.java

+ 12 - 0
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/ossre/S3Template2.java

@@ -20,12 +20,15 @@ import com.amazonaws.services.s3.AmazonS3;
 import com.amazonaws.services.s3.model.*;
 import lombok.AllArgsConstructor;
 import lombok.SneakyThrows;
+import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.oss.OssTemplate;
 import org.springblade.core.oss.enums.PolicyType;
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.oss.model.OssFile;
 import org.springblade.core.oss.props.OssProperties;
 import org.springblade.core.oss.rule.OssRule;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.FileUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringPool;
 import org.springframework.web.multipart.MultipartFile;
@@ -417,6 +420,15 @@ public class S3Template2 implements OssTemplate {
 	 * @return string
 	 */
 	private String getFileName(String originalFilename) {
+		return fileName(originalFilename);
+	}
+
+	public String fileName(String originalFilename) {
+		//试验-规范管理
+		if(originalFilename.contains("|")){
+			String[] split = originalFilename.split("\\|");
+			return "upload/" + split[0] + "/" + DateUtil.today() + "/" + SnowFlakeUtil.getId() + "." + FileUtil.getFileExtension(split[1]);
+		}
 		return ossRule.fileName(originalFilename);
 	}
 

+ 5 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/PrivateStandardDTO.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.business.entity.PrivateStandard;
+import org.springblade.business.entity.StandardFile;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
@@ -19,4 +20,8 @@ public class PrivateStandardDTO extends PrivateStandard {
      * 文件
      */
     private MultipartFile[] files;
+    /**
+     * 文件
+     */
+    private List<StandardFile> standardFiles;
 }

+ 2 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/StandardInfoJoinDTO.java

@@ -6,6 +6,7 @@ import lombok.Data;
 
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -28,5 +29,5 @@ public class StandardInfoJoinDTO {
      */
     @ApiModelProperty(value = "副连接id集合", required = true)
     @NotEmpty(message = "副连接id不能为空")
-    private List<Long> rightIds;
+    private List<Long> rightIds = new ArrayList<>();
 }

+ 20 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardElementVo.java

@@ -0,0 +1,20 @@
+package org.springblade.business.vo;
+
+import lombok.Data;
+
+
+/**
+ * @author LHB
+ */
+@Data
+public class StandardElementVo {
+    /**
+     * key
+     */
+    private String colKey;
+    /**
+     * name
+     */
+    private String colName;
+
+}

+ 26 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoConditionVo.java

@@ -0,0 +1,26 @@
+package org.springblade.business.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.business.entity.StandardInfo;
+
+import java.util.List;
+
+/**
+ * 试验-规范管理-信息-条件设置
+ * @author LHB
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class StandardInfoConditionVo extends StandardInfo {
+    /**
+     * 子级信息
+     */
+    private List<StandardInfo> rightStandardInfos;
+
+
+    /**
+     * 子级信息
+     */
+    private StandardInfoGroupNameVO standardInfoGroupNameVO;
+}

+ 21 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoGroupNameVO.java

@@ -0,0 +1,21 @@
+package org.springblade.business.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 条件查询最子层响应处理
+ * @author LHB
+ */
+@Data
+public class StandardInfoGroupNameVO {
+    /**
+     * 名称
+     */
+    private String name;
+    /**
+     * ids
+     */
+    private List<Long> ids;
+}

+ 38 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoPrivateJoinGroupVO.java

@@ -0,0 +1,38 @@
+package org.springblade.business.vo;
+
+import lombok.Data;
+import org.springblade.business.entity.StandardInfoPrivateJoin;
+
+import java.util.List;
+
+/**
+ * 项目组
+ * @author LHB
+ */
+@Data
+public class StandardInfoPrivateJoinGroupVO {
+    /**
+     * leftId
+     */
+    private Long standardInfoId;
+    /**
+     * 项目id
+     */
+    private Long privateId;
+
+    /**
+     * 项目名称
+     */
+    private String privateName;
+
+    /**
+     * 元素名称
+     */
+    private String elementNames;
+
+    /**
+     * 元素key集合
+     */
+    private List<StandardElementVo> keys;
+
+}

+ 5 - 3
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoPrivateJoinVO.java

@@ -16,7 +16,9 @@ import java.util.List;
 @Data
 @ApiModel(description = "关联元素对象-视图")
 public class StandardInfoPrivateJoinVO extends StandardInfo {
-
-    @ApiModelProperty(value = "关联元素副元素集合")
-    private List<StandardInfoPrivateJoin> privateJoins;
+    /**
+     * 项目组集合
+     */
+    @ApiModelProperty(value = "项目组集合")
+    private List<StandardInfoPrivateJoinGroupVO> group;
 }

+ 1 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/StandardInfoVO.java

@@ -19,5 +19,5 @@ public class StandardInfoVO extends StandardInfo {
      * 副连接对象
      */
     @ApiModelProperty(value = "副连接对象集合")
-    private List<StandardInfo> standardInfos;
+    private List<StandardInfoConditionVo> standardInfos;
 }

+ 14 - 2
blade-service/blade-business/src/main/java/org/springblade/business/controller/PrivateStandardController.java

@@ -3,18 +3,22 @@ package org.springblade.business.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
 import org.springblade.business.dto.PrivateStandardDTO;
 import org.springblade.business.entity.PrivateStandard;
+import org.springblade.business.entity.StandardFile;
 import org.springblade.business.service.PrivateStandardService;
+import org.springblade.business.service.StandardFileService;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -38,6 +42,9 @@ public class PrivateStandardController {
     @Resource
     private PrivateStandardService privateStandardService;
 
+    @Resource
+    private StandardFileService standardFileService;
+
     /**
      * 分页查询所有数据
      *
@@ -68,9 +75,14 @@ public class PrivateStandardController {
     @ApiOperation(value = "通过主键查询单条数据", notes = "传入主键Id")
     @ApiImplicitParam(name = "id", value = "主键id", required = true)
     @GetMapping("/getById")
-    public R<PrivateStandard> selectOne(Long id) {
+    public R<PrivateStandardDTO> selectOne(Long id) {
         PrivateStandard byId = this.privateStandardService.getById(id);
-        return R.data(byId);
+        List<StandardFile> list = standardFileService.list(Wrappers.<StandardFile>lambdaQuery()
+                .eq(StandardFile::getStandardId, id)
+                .eq(StandardFile::getIsDeleted, 0));
+        PrivateStandardDTO privateStandardDTO = BeanUtil.copyProperties(byId, PrivateStandardDTO.class);
+        privateStandardDTO.setStandardFiles(list);
+        return R.data(privateStandardDTO);
     }
 
     /**

+ 9 - 7
blade-service/blade-business/src/main/java/org/springblade/business/controller/StandardInfoController.java

@@ -110,12 +110,14 @@ public class StandardInfoController {
      * 条件设置
      *
      * @param standardInfoJoins 条件设置对象
+     * @param id 规范文件id
      * @return 结果
      */
     @ApiOperation(value = "条件设置")
     @PostMapping("saveConditionSet")
-    public R<Boolean> setCondition(@RequestBody @Validated List<StandardInfoJoinDTO> standardInfoJoins) {
-        Boolean b = this.uStandardInfoService.setCondition(standardInfoJoins);
+    public R<Boolean> setCondition(@RequestBody @Validated List<StandardInfoVO> standardInfoJoins,
+                                   @RequestParam Long id) {
+        Boolean b = this.uStandardInfoService.setCondition(standardInfoJoins,id);
         return R.data(b);
     }
 
@@ -127,7 +129,7 @@ public class StandardInfoController {
      */
     @ApiOperation(value = "关联元素")
     @PostMapping("saveElementJoin")
-    public R<Boolean> setElementJoin(@RequestBody @Validated List<StandardInfoPrivateJoinDTO> standardInfoPrivateJoins) {
+    public R<Boolean> setElementJoin(@RequestBody @Validated List<StandardInfoPrivateJoinVO> standardInfoPrivateJoins) {
         Boolean b = this.uStandardInfoService.setElementJoin(standardInfoPrivateJoins);
         return R.data(b);
     }
@@ -165,8 +167,8 @@ public class StandardInfoController {
     @ApiOperation(value = "查询条件设置")
     @ApiImplicitParam(name = "id", value = "规范文件id", required = true)
     @GetMapping("getConditionSet")
-    public R<List<StandardInfoVO>> getConditionSet(Long id) {
-        List<StandardInfoVO> list = this.uStandardInfoService.getConditionSet(id);
+    public R<List<StandardInfoVO>> getConditionSet(Long id,Long leftId) {
+        List<StandardInfoVO> list = this.uStandardInfoService.getConditionSet(id,leftId);
         return R.data(list);
     }
 
@@ -177,8 +179,8 @@ public class StandardInfoController {
     @ApiOperation(value = "查询关联元素")
     @ApiImplicitParam(name = "id", value = "规范文件id", required = true)
     @GetMapping("getElementJoin")
-    public R<List<StandardInfoPrivateJoinVO>> getElementJoin(Long id) {
-        List<StandardInfoPrivateJoinVO> list = this.uStandardInfoService.getElementJoin(id);
+    public R<List<StandardInfoPrivateJoinVO>> getElementJoin(Long id,Long leftId) {
+        List<StandardInfoPrivateJoinVO> list = this.uStandardInfoService.getElementJoin(id,leftId);
         return R.data(list);
     }
 

+ 9 - 7
blade-service/blade-business/src/main/java/org/springblade/business/mapper/StandardInfoMapper.java

@@ -13,20 +13,22 @@ import org.springblade.business.vo.StandardInfoVO;
 import java.util.List;
 
 /**
-* @author LHB
-* @description 针对表【u_standard_info(规范参数管理-基础信息)】的数据库操作Mapper
-* @createDate 2025-06-11 09:57:39
-* @Entity org.springblade.business.entity.UStandardInfo
-*/
+ * @author LHB
+ * @description 针对表【u_standard_info(规范参数管理-基础信息)】的数据库操作Mapper
+ * @createDate 2025-06-11 09:57:39
+ * @Entity org.springblade.business.entity.UStandardInfo
+ */
 public interface StandardInfoMapper extends BaseMapper<StandardInfo> {
 
     IPage<StandardInfoDtoVo> selectMyPage(Page<StandardInfoDtoVo> page, @Param("query") StandardInfo standardInfo);
 
     StandardInfoDTO selectMyOne(@Param("id") Long id);
 
-    List<StandardInfoVO> getConditionSet(@Param("id") Long id);
+    List<StandardInfoVO> getConditionSet(@Param("id") Long id,
+                                         @Param("leftId") Long leftId);
 
-    List<StandardInfoPrivateJoinVO> getElementJoin(@Param("id") Long id);
+    List<StandardInfoPrivateJoinVO> getElementJoin(@Param("id") Long id,
+                                                   @Param("leftId") Long leftId);
 
     List<StandardInfoPrivateJoinVO> effectPreview(@Param("rightIds") List<Long> rightIds);
 }

+ 93 - 12
blade-service/blade-business/src/main/java/org/springblade/business/mapper/StandardInfoMapper.xml

@@ -90,7 +90,9 @@
         <result property="name" column="name"/>
         <result property="parentId" column="parent_id"/>
         <result property="type" column="type"/>
-        <collection property="standardInfos" ofType="org.springblade.business.entity.StandardInfo" select="findByJoinLeftId" column="{leftId=id}">
+        <result property="symbol" column="symbol"/>
+        <result property="symbolName" column="symbolName"/>
+        <collection property="standardInfos" ofType="org.springblade.business.vo.StandardInfoConditionVo" select="findByJoinLeftId" column="{leftId=id}">
         </collection>
     </resultMap>
     <sql id="Base_Column_Join_List">
@@ -108,26 +110,63 @@
 
     <select id="getConditionSet" resultMap="BaseResultConditionSet">
         select
-            <include refid="Base_Column_Join_List"/>
+            <include refid="Base_Column_Join_List"/>, concat(a.symbol,a.name) symbolName
         from
             u_standard_info a
             INNER JOIN u_standard_info_join b on a.id = b.standard_info_left_id and a.is_deleted = b.is_deleted
         where
-            a.standard_id = #{id} and a.is_deleted = 0
+            a.is_deleted = 0
+            <if test="id != null">
+                and  a.standard_id = #{id}
+            </if>
+            <if test="leftId != null">
+                and  b.standard_info_left_id = #{leftId}
+            </if>
+
         GROUP BY
             b.standard_info_left_id
     </select>
-    <select id="findByJoinLeftId" resultType="org.springblade.business.entity.StandardInfo">
+
+    <resultMap id="findByJoinLeftIdMap" type="org.springblade.business.vo.StandardInfoConditionVo">
+        <id property="id" column="id"/>
+        <collection property="rightStandardInfos" ofType="org.springblade.business.entity.StandardInfo" select="findRightByJoinLeftId" column="{id=id,leftId=leftId}">
+        </collection>
+    </resultMap>
+
+    <select id="findByJoinLeftId" resultMap="findByJoinLeftIdMap">
         SELECT
-            <include refid="Base_Column_Join_List"/>, c.name parentName
+            c.id,
+            c.`name`,
+            c.parent_id,
+            c.standard_id,
+            c.`type`,
+            c.is_deleted,
+            c.create_time,
+            c.create_user,
+            c.update_time,
+            c.update_user,
+            b.standard_info_left_id leftId
         FROM
             u_standard_info a
             INNER JOIN u_standard_info_join b ON a.id = b.standard_info_right_id AND a.is_deleted = b.is_deleted
             INNER JOIN u_standard_info c ON a.parent_id = c.id AND a.is_deleted = c.is_deleted
         WHERE
             b.standard_info_left_id = #{leftId} and a.is_deleted = 0
+        group by
+            c.id
+    </select>
+    <select id="findRightByJoinLeftId" resultType="org.springblade.business.entity.StandardInfo">
+        SELECT
+            <include refid="Base_Column_Join_List"/>, c.name parentName
+        FROM
+            u_standard_info a
+            INNER JOIN u_standard_info_join b ON a.id = b.standard_info_right_id AND a.is_deleted = b.is_deleted
+            INNER JOIN u_standard_info c ON a.parent_id = c.id AND a.is_deleted = c.is_deleted
+        WHERE
+            a.parent_id = #{id} and b.standard_info_left_id = #{leftId} and a.is_deleted = 0
+        group by
+            a.id
     </select>
-
     <!-- ``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````` -->
 
     <resultMap id="BaseResultElementJoin" type="org.springblade.business.vo.StandardInfoPrivateJoinVO">
@@ -135,7 +174,9 @@
         <result property="name" column="name"/>
         <result property="parentId" column="parent_id"/>
         <result property="type" column="type"/>
-        <collection property="privateJoins" ofType="org.springblade.business.entity.StandardInfoPrivateJoin" select="findByPrivateJoinLeftId" column="{leftId=id}">
+        <result property="symbol" column="symbol"/>
+        <result property="symbolName" column="symbolName"/>
+        <collection property="group" ofType="org.springblade.business.vo.StandardInfoPrivateJoinGroupVO" select="findByPrivateJoinLeftId" column="{leftId=id}">
         </collection>
     </resultMap>
 
@@ -153,27 +194,67 @@
     </sql>
     <select id="getElementJoin" resultMap="BaseResultElementJoin">
         select
-            <include refid="Base_Column_Join_List"/>
+            <include refid="Base_Column_Join_List"/>, concat(a.symbol,a.name) symbolName
         from
             u_standard_info a
             INNER JOIN u_standard_info_private_join b on a.id = b.standard_info_id and a.is_deleted = b.is_deleted
         where
-            a.standard_id = #{id} and a.is_deleted = 0
+            a.is_deleted = 0
+            <if test="id != null">
+                and  a.standard_id = #{id}
+            </if>
+            <if test="leftId != null">
+                and  b.standard_info_id = #{leftId}
+            </if>
         GROUP BY
             b.standard_info_id
     </select>
 
-    <select id="findByPrivateJoinLeftId" resultType="org.springblade.business.entity.StandardInfoPrivateJoin">
+
+    <resultMap id="BaseResultElementGroupPrivate" type="org.springblade.business.vo.StandardInfoPrivateJoinGroupVO">
+        <result property="standardInfoId" column="standard_info_id"/>
+        <result property="privateId" column="private_id"/>
+        <result property="privateName" column="privateName"/>
+        <result property="elementNames" column="elementNames"/>
+        <collection property="keys" ofType="org.springblade.business.vo.StandardElementVo" select="findByPrivateGroupJoinLeftId" column="{standardInfoId=standard_info_id,privateId=private_id}">
+        </collection>
+    </resultMap>
+    <select id="findByPrivateJoinLeftId" resultMap="BaseResultElementGroupPrivate">
         SELECT
-            <include refid="Base_Private_Column_List"/>,
-            b.node_name privateName
+            a.standard_info_id,
+            a.private_id,
+            b.node_name privateName,
+            GROUP_CONCAT(col_name SEPARATOR ',') elementNames
         FROM
             u_standard_info_private_join a
             INNER JOIN m_wbs_tree_private b ON a.private_id = b.p_key_id AND a.is_deleted = b.is_deleted
         WHERE
             a.standard_info_id = #{leftId}
           AND a.is_deleted = 0
+        GROUP BY
+            a.private_id
+    </select>
+
+    <select id="findByPrivateGroupJoinLeftId" resultType="org.springblade.business.vo.StandardElementVo">
+        SELECT
+            col_key,col_name
+        FROM
+        u_standard_info_private_join a
+        INNER JOIN m_wbs_tree_private b ON a.private_id = b.p_key_id AND a.is_deleted = b.is_deleted
+        WHERE
+        a.standard_info_id = #{standardInfoId} and a.private_id = #{privateId}
+        AND a.is_deleted = 0
     </select>
+
+
+
+
+
+    <!-- ``````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````` -->
+
+
+
+
     <select id="effectPreview" resultMap="BaseResultElementJoin">
         SELECT
             a.*

+ 12 - 12
blade-service/blade-business/src/main/java/org/springblade/business/service/StandardInfoService.java

@@ -1,12 +1,10 @@
 package org.springblade.business.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.business.dto.StandardInfoJoinDTO;
-import org.springblade.business.dto.StandardInfoPrivateJoinDTO;
+import com.baomidou.mybatisplus.extension.service.IService;
 import org.springblade.business.dto.StandardInfoDTO;
+import org.springblade.business.dto.StandardInfoPrivateJoinDTO;
 import org.springblade.business.entity.StandardInfo;
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springblade.business.vo.StandardInfoDtoVo;
 import org.springblade.business.vo.StandardInfoPrivateJoinVO;
 import org.springblade.business.vo.StandardInfoVO;
 import org.springblade.core.mp.support.Query;
@@ -14,10 +12,10 @@ import org.springblade.core.mp.support.Query;
 import java.util.List;
 
 /**
-* @author LHB
-* @description 针对表【u_standard_info(规范参数管理-基础信息)】的数据库操作Service
-* @createDate 2025-06-11 09:57:39
-*/
+ * @author LHB
+ * @description 针对表【u_standard_info(规范参数管理-基础信息)】的数据库操作Service
+ * @createDate 2025-06-11 09:57:39
+ */
 public interface StandardInfoService extends IService<StandardInfo> {
 
     IPage<StandardInfoDtoVo> selectMyPage(Query query, StandardInfo standardInfo);
@@ -30,17 +28,19 @@ public interface StandardInfoService extends IService<StandardInfo> {
 
     Boolean delete(Long id);
 
-    Boolean setCondition(List<StandardInfoJoinDTO> standardInfoJoins);
+    Boolean setCondition(List<StandardInfoVO> standardInfoJoins, Long id);
 
-    Boolean setElementJoin(List<StandardInfoPrivateJoinDTO> standardInfoPrivateJoins);
+    Boolean setElementJoin(List<StandardInfoPrivateJoinVO> standardInfoPrivateJoins);
 
     Boolean deleteConditionSet(Long leftId);
 
     Boolean deleteElementJoin(Long leftId);
 
-    List<StandardInfoVO> getConditionSet(Long id);
+    List<StandardInfoVO> getConditionSet(Long id, Long leftId);
 
-    List<StandardInfoPrivateJoinVO> getElementJoin(Long id);
+    List<StandardInfoPrivateJoinVO> getElementJoin(Long id, Long leftId);
 
     List<StandardInfoPrivateJoinVO> effectPreview(String ids);
+
+    Boolean editConditionSet(List<StandardInfoVO> standardInfoJoins);
 }

+ 15 - 5
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/PrivateStandardServiceImpl.java

@@ -1,5 +1,6 @@
 package org.springblade.business.service.impl;
 
+import cn.hutool.core.util.ReflectUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springblade.business.entity.StandardFile;
@@ -19,11 +20,13 @@ import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.resource.feign.NewIOSSClient;
+import org.springframework.mock.web.MockMultipartFile;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -68,6 +71,7 @@ public class PrivateStandardServiceImpl extends ServiceImpl<PrivateStandardMappe
 
             try {
                 for (MultipartFile file : files) {
+
                     StandardFile standardFile = new StandardFile();
                     standardFile.setId(SnowFlakeUtil.getId());
                     standardFile.setStandardId(uWbsPrivateStandard.getId());
@@ -76,12 +80,15 @@ public class PrivateStandardServiceImpl extends ServiceImpl<PrivateStandardMappe
 
                     String originalFilename = file.getOriginalFilename();
                     standardFile.setFileName(originalFilename);
-                    originalFilename = "standard/" + uWbsPrivateStandard.getId() + "|" + originalFilename;
 
 
+                    originalFilename = "standard/" + uWbsPrivateStandard.getId() + "|" + originalFilename;
+//
+//                    ReflectUtil.setFieldValue(file,"filename",originalFilename);
 
+                    MockMultipartFile multipartFile = new MockMultipartFile("file", originalFilename, "application/pdf", file.getInputStream());
                     //Oss上传 传特殊文件名 在oss中做特殊路径处理
-                    BladeFile bladeFile = this.newIOSSClient.uploadFileByInputStream2(file.getOriginalFilename(), file.getInputStream());
+                    BladeFile bladeFile = newIOSSClient.uploadFileByInputStream(multipartFile);
 
                     standardFile.setStandardFileUrl(bladeFile.getLink());
                     standardFiles.add(standardFile);
@@ -89,7 +96,8 @@ public class PrivateStandardServiceImpl extends ServiceImpl<PrivateStandardMappe
             } catch (Exception e) {
                 //删除之前上传的文件
                 for (StandardFile standardFile : standardFiles) {
-                    this.newIOSSClient.removeFile(standardFile.getStandardFileUrl());
+                    String pdfName = standardFile.getStandardFileUrl().split("upload")[1];
+                    this.newIOSSClient.removeFile("upload" + pdfName);
                 }
                 e.printStackTrace();
                 throw new ServiceException("文件上传失败!请检查Oss");
@@ -136,7 +144,8 @@ public class PrivateStandardServiceImpl extends ServiceImpl<PrivateStandardMappe
             } catch (Exception e) {
                 //删除之前上传的文件
                 for (StandardFile standardFile : standardFiles) {
-                    this.newIOSSClient.removeFile(standardFile.getStandardFileUrl());
+                    String pdfName = standardFile.getStandardFileUrl().split("upload")[1];
+                    this.newIOSSClient.removeFile("upload" + pdfName);
                 }
                 e.printStackTrace();
                 throw new ServiceException("文件上传失败!请检查Oss");
@@ -192,7 +201,8 @@ public class PrivateStandardServiceImpl extends ServiceImpl<PrivateStandardMappe
         StandardFile byId = standardFileService.getById(id);
         if (byId != null) {
             try {
-                this.newIOSSClient.removeFile(byId.getStandardFileUrl());
+                String pdfName = byId.getStandardFileUrl().split("upload")[1];
+                this.newIOSSClient.removeFile("upload" + pdfName);
             } catch (Exception e) {
                 e.printStackTrace();
                 throw new ServiceException("文件删除失败,Oss异常");

+ 144 - 36
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/UStandardInfoServiceImpl.java

@@ -1,6 +1,7 @@
 package org.springblade.business.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -14,15 +15,15 @@ import org.springblade.business.mapper.StandardInfoMapper;
 import org.springblade.business.service.StandardInfoJoinService;
 import org.springblade.business.service.StandardInfoPrivateJoinService;
 import org.springblade.business.service.StandardInfoService;
-import org.springblade.business.vo.StandardInfoDtoVo;
-import org.springblade.business.vo.StandardInfoPrivateJoinVO;
-import org.springblade.business.vo.StandardInfoVO;
+import org.springblade.business.vo.*;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.CollectionUtil;
+import org.springblade.core.tool.utils.StringUtil;
 import org.springframework.beans.BeansException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -163,54 +164,99 @@ public class UStandardInfoServiceImpl extends ServiceImpl<StandardInfoMapper, St
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean setCondition(List<StandardInfoJoinDTO> standardInfoJoins) {
-        BladeUser user = SecureUtil.getUser();
-        List<StandardInfoJoin> saveData = new ArrayList<>();
-        try {
-            for (StandardInfoJoinDTO standardInfoJoin : standardInfoJoins) {
-                Long leftId = standardInfoJoin.getLeftId();
+    public Boolean setCondition(List<StandardInfoVO> standardInfoJoins, Long id) {
+        List<StandardInfo> standardInfoIds = baseMapper.selectList(Wrappers.<StandardInfo>lambdaQuery()
+                .eq(StandardInfo::getStandardId, id)
+                .eq(StandardInfo::getIsDeleted, 0));
+        if(CollectionUtil.isEmpty(standardInfoIds)){
+            throw new ServiceException("未查询到规范文件的信息");
+        }
+        List<Long> collect = standardInfoIds.stream().map(StandardInfo::getId).collect(Collectors.toList());
+        //删除当前规范文件下的条件设置
+        standardInfoJoinService.remove(Wrappers.<StandardInfoJoin>lambdaQuery()
+                .in(StandardInfoJoin::getStandardInfoLeftId, collect));
+
+
+        if (CollectionUtil.isNotEmpty(standardInfoJoins)) {
+            BladeUser user = SecureUtil.getUser();
+            //先删除,在添加
+            List<Long> leftIds = new ArrayList<>();
+            //获取参宿
+            List<StandardInfoJoinDTO> list = new ArrayList<>();
+            //新增数据
+            List<StandardInfoJoin> saveData = new ArrayList<>();
+            //解析参数
+            for (StandardInfoVO standardInfoJoin : standardInfoJoins) {
+                StandardInfoJoinDTO standardInfoJoinDTO = new StandardInfoJoinDTO();
+
+                Long leftId = standardInfoJoin.getId();
+                standardInfoJoinDTO.setLeftId(leftId);
+                leftIds.add(leftId);
+                List<StandardInfoConditionVo> standardInfos = standardInfoJoin.getStandardInfos();
+                if (CollectionUtil.isNotEmpty(standardInfos)) {
+                    for (StandardInfoConditionVo standardInfo : standardInfos) {
+                        StandardInfoGroupNameVO standardInfoGroupNameVO = standardInfo.getStandardInfoGroupNameVO();
+                        List<Long> ids = standardInfoGroupNameVO.getIds();
+                        standardInfoJoinDTO.getRightIds().addAll(ids);
+                    }
+                    list.add(standardInfoJoinDTO);
+                }
+            }
+
+            //封装参数
+            for (StandardInfoJoinDTO standardInfoJoin : list) {
                 List<Long> rightIds = standardInfoJoin.getRightIds();
                 for (Long rightId : rightIds) {
                     StandardInfoJoin uStandardInfoJoin = new StandardInfoJoin();
                     uStandardInfoJoin.setId(SnowFlakeUtil.getId());
-                    uStandardInfoJoin.setStandardInfoLeftId(leftId);
+                    uStandardInfoJoin.setStandardInfoLeftId(standardInfoJoin.getLeftId());
                     uStandardInfoJoin.setStandardInfoRightId(rightId);
                     uStandardInfoJoin.setCreateUser(user.getUserId());
                     saveData.add(uStandardInfoJoin);
                 }
-                //先删除之前的关联关系
-                standardInfoJoinService.remove(Wrappers.<StandardInfoJoin>lambdaQuery()
-                        .eq(StandardInfoJoin::getStandardInfoLeftId,leftId));
             }
-            //新增
-            return standardInfoJoinService.saveBatch(saveData);
-        } catch (Exception e) {
-            e.printStackTrace();
-            throw new ServiceException("条件设置失败");
+
+            return standardInfoJoinService.saveOrUpdateBatch(saveData);
         }
+        return true;
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean setElementJoin(List<StandardInfoPrivateJoinDTO> standardInfoPrivateJoins) {
+    public Boolean setElementJoin(List<StandardInfoPrivateJoinVO> standardInfoPrivateJoins) {
         BladeUser user = SecureUtil.getUser();
         List<StandardInfoPrivateJoin> saveData = new ArrayList<>();
+        List<Long> leftIds = new ArrayList<>();
 
         try {
-            for (StandardInfoPrivateJoinDTO standardInfoPrivateJoin : standardInfoPrivateJoins) {
-                Long leftId = standardInfoPrivateJoin.getLeftId();
-                List<StandardInfoPrivateJoin> rightIds = standardInfoPrivateJoin.getRightIds();
-                rightIds.forEach(f -> {
-                    f.setId(SnowFlakeUtil.getId());
-                    f.setStandardInfoId(leftId);
-                    f.setCreateUser(user.getUserId());
-                });
-                saveData.addAll(rightIds);
-                //删除之前的关联关系
-                standardInfoPrivateJoinService.remove(Wrappers.<StandardInfoPrivateJoin>lambdaQuery()
-                        .eq(StandardInfoPrivateJoin::getStandardInfoId,leftId));
+
+            for (StandardInfoPrivateJoinVO standardInfoPrivateJoin : standardInfoPrivateJoins) {
+                Long leftId = standardInfoPrivateJoin.getId();
+                leftIds.add(leftId);
+                List<StandardInfoPrivateJoinGroupVO> group = standardInfoPrivateJoin.getGroup();
+                //项目组
+                for (StandardInfoPrivateJoinGroupVO standardInfoPrivateJoinGroupVO : group) {
+                    //项目id
+                    Long privateId = standardInfoPrivateJoinGroupVO.getPrivateId();
+                    List<StandardElementVo> keys = standardInfoPrivateJoinGroupVO.getKeys();
+
+                    for (StandardElementVo key : keys) {
+                        StandardInfoPrivateJoin join = new StandardInfoPrivateJoin();
+                        join.setStandardInfoId(leftId);
+                        join.setId(SnowFlakeUtil.getId());
+                        join.setPrivateId(privateId);
+                        join.setColKey(key.getColKey());
+                        join.setColName(key.getColName());
+                        join.setCreateUser(user.getUserId());
+                        saveData.add(join);
+                    }
+                }
             }
-            return standardInfoPrivateJoinService.saveBatch(saveData);
+            //删除之前的关联关系
+            standardInfoPrivateJoinService.remove(Wrappers.<StandardInfoPrivateJoin>lambdaQuery()
+                    .in(StandardInfoPrivateJoin::getStandardInfoId, leftIds));
+
+            return standardInfoPrivateJoinService.saveOrUpdateBatch(saveData);
         } catch (Exception e) {
             e.printStackTrace();
             throw new ServiceException("元素关联失败");
@@ -248,13 +294,29 @@ public class UStandardInfoServiceImpl extends ServiceImpl<StandardInfoMapper, St
     }
 
     @Override
-    public List<StandardInfoVO> getConditionSet(Long id) {
-        return baseMapper.getConditionSet(id);
+    public List<StandardInfoVO> getConditionSet(Long id, Long leftId) {
+        List<StandardInfoVO> conditionSet = baseMapper.getConditionSet(id, leftId);
+        for (StandardInfoVO standardInfoVO : conditionSet) {
+            List<StandardInfoConditionVo> standardInfos = standardInfoVO.getStandardInfos();
+            for (StandardInfoConditionVo standardInfo : standardInfos) {
+                //重新组装数据
+                List<String> name = standardInfo.getRightStandardInfos().stream().map(StandardInfo::getName).collect(Collectors.toList());
+                List<Long> ids = standardInfo.getRightStandardInfos().stream().map(StandardInfo::getId).collect(Collectors.toList());
+
+                StandardInfoGroupNameVO standardInfoGroupNameVO = new StandardInfoGroupNameVO();
+                standardInfoGroupNameVO.setName(StringUtil.join(name, ","));
+                standardInfoGroupNameVO.setIds(ids);
+
+                standardInfo.setStandardInfoGroupNameVO(standardInfoGroupNameVO);
+                standardInfo.setRightStandardInfos(null);
+            }
+        }
+        return conditionSet;
     }
 
     @Override
-    public List<StandardInfoPrivateJoinVO> getElementJoin(Long id) {
-        return baseMapper.getElementJoin(id);
+    public List<StandardInfoPrivateJoinVO> getElementJoin(Long id, Long leftId) {
+        return baseMapper.getElementJoin(id, leftId);
 
     }
 
@@ -263,6 +325,52 @@ public class UStandardInfoServiceImpl extends ServiceImpl<StandardInfoMapper, St
         List<Long> collect = Arrays.stream(ids.split(",")).map(Long::parseLong).collect(Collectors.toList());
         return baseMapper.effectPreview(collect);
     }
+
+    @Override
+    @Transactional
+    public Boolean editConditionSet(List<StandardInfoVO> standardInfoJoins) {
+        BladeUser user = SecureUtil.getUser();
+        //先删除,在添加
+        List<Long> leftIds = new ArrayList<>();
+        //获取参宿
+        List<StandardInfoJoinDTO> list = new ArrayList<>();
+        //新增数据
+        List<StandardInfoJoin> saveData = new ArrayList<>();
+        //解析参数
+        for (StandardInfoVO standardInfoJoin : standardInfoJoins) {
+            StandardInfoJoinDTO standardInfoJoinDTO = new StandardInfoJoinDTO();
+
+            Long leftId = standardInfoJoin.getId();
+            standardInfoJoinDTO.setLeftId(leftId);
+            leftIds.add(leftId);
+            List<StandardInfoConditionVo> standardInfos = standardInfoJoin.getStandardInfos();
+            for (StandardInfoConditionVo standardInfo : standardInfos) {
+                StandardInfoGroupNameVO standardInfoGroupNameVO = standardInfo.getStandardInfoGroupNameVO();
+                List<Long> ids = standardInfoGroupNameVO.getIds();
+                standardInfoJoinDTO.getRightIds().addAll(ids);
+            }
+            list.add(standardInfoJoinDTO);
+        }
+
+
+        for (StandardInfoJoinDTO standardInfoJoin : list) {
+
+            List<Long> rightIds = standardInfoJoin.getRightIds();
+            for (Long rightId : rightIds) {
+                StandardInfoJoin uStandardInfoJoin = new StandardInfoJoin();
+                uStandardInfoJoin.setId(SnowFlakeUtil.getId());
+                uStandardInfoJoin.setStandardInfoLeftId(standardInfoJoin.getLeftId());
+                uStandardInfoJoin.setStandardInfoRightId(rightId);
+                uStandardInfoJoin.setCreateUser(user.getUserId());
+                saveData.add(uStandardInfoJoin);
+            }
+        }
+
+        boolean remove = standardInfoJoinService.remove(Wrappers.<StandardInfoJoin>lambdaQuery()
+                .in(StandardInfoJoin::getStandardInfoLeftId, leftIds));
+
+        return standardInfoJoinService.saveOrUpdateBatch(saveData);
+    }
 }