Просмотр исходного кода

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	PAS/src/main/java/cn/cslg/pas/common/model/dto/StructureQueryPageDTO.java
#	PAS/src/main/resources/mapper/StructureMapper.xml
lwhhszx 2 лет назад
Родитель
Сommit
eaab05ed59

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

@@ -19,7 +19,7 @@ public class PathStructureNameVO implements Serializable {
      */
     private String path;
     /**
-     * 路径分别对应的架构名称
+     * 路径对应的完整架构名称
      */
     private String pathStructureName;
 

+ 13 - 4
PAS/src/main/java/cn/cslg/pas/controller/StructureController.java

@@ -13,10 +13,7 @@ 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.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
@@ -75,4 +72,16 @@ public class StructureController {
         return Response.error("请求参数为null");
     }
 
+    @Operation(summary = "删除架构")
+    @GetMapping("/delete")
+    public String delete(Integer id) {
+        log.info("开始处理【删除架构】的请求,请求参数为:{}", id);
+        try {
+            structureService.delete(id);
+        } catch (XiaoShiException e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success("删除架构完成");
+    }
+
 }

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

@@ -31,6 +31,14 @@ public interface AssoStructurePictureMapper {
     int deleteByIds(List<Integer> ids);
 
     /**
+     * 根据架构ids批量删除数据
+     *
+     * @param structures 架构ids
+     * @return 返回受影响的行数
+     */
+    int deleteByStructureIds(List<Integer> structures);
+
+    /**
      * 根据架构id查询数据
      *
      * @param structureId 架构id

+ 17 - 6
PAS/src/main/java/cn/cslg/pas/mapper/StructureMapper.java

@@ -2,7 +2,6 @@ package cn.cslg.pas.mapper;
 
 import cn.cslg.pas.common.model.vo.StructureVO;
 import cn.cslg.pas.domain.Structure;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -14,7 +13,7 @@ import java.util.List;
  * @Date 2023/3/10
  */
 @Repository
-public interface StructureMapper extends BaseMapper<Structure> {
+public interface StructureMapper {
     /**
      * 插入数据
      *
@@ -32,6 +31,14 @@ public interface StructureMapper extends BaseMapper<Structure> {
     int deleteById(Integer id);
 
     /**
+     * 根据id批量删除数据
+     *
+     * @param ids 架构ids
+     * @return 返回受影响的行数
+     */
+    int deleteByIds(List<Integer> ids);
+
+    /**
      * 根据id修改数据
      *
      * @param structure 数据对象
@@ -64,7 +71,7 @@ public interface StructureMapper extends BaseMapper<Structure> {
      * @param productId 产品id
      * @return 返回查询到的数据
      */
-    List<StructureVO> selectByParentIdAndProductId(Integer parentId, Integer productId,List<Integer> ids);
+    List<StructureVO> selectByParentIdAndProductId(Integer parentId, Integer productId);
 
     /**
      * 根据模糊路径查询数据
@@ -74,8 +81,12 @@ public interface StructureMapper extends BaseMapper<Structure> {
      */
     List<StructureVO> selectByFindInSetPath(String findInSetPath);
 
-    List<StructureVO> selectByName(String name);
-
-    //List<StructureVO>
+    /**
+     * 根据产品id查询数据
+     *
+     * @param productId 产品id
+     * @return 返回查询到的数据
+     */
+    List<StructureVO> selectAllByProductId(Integer productId);
 
 }

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

@@ -50,7 +50,7 @@ public interface IStructureService {
      *
      * @return 返回查询到的数据
      */
-    List<PathStructureNameVO> queryPathStructureName();
+    List<PathStructureNameVO> queryPathStructureName(Integer productId);
 
     /**
      * 删除架构

+ 6 - 40
PAS/src/main/java/cn/cslg/pas/service/impl/ProductCategoryServiceImpl.java

@@ -260,16 +260,9 @@ public class ProductCategoryServiceImpl implements IProductCategoryService {
         List<ProductCategoryTrendVO> trendVOS = new ArrayList<>();
         //存储所有产品的营销数据
         List<ProductMarketData> marketData = new ArrayList<>();
-        //存储所有
-        ProductCategoryTrendVO trendAllVO = new ProductCategoryTrendVO();
-        trendAllVO.setProductId(0);
-        trendAllVO.setProductName("总产品");
-        Map<String, Object> allMarketDataMap = new HashMap<>();
         //根据产品类别ID获得产品id和产品名称
         LambdaQueryWrapper<Product> productWrapper = new LambdaQueryWrapper<>();
         productWrapper.eq(Product::getProductCategoryId, dto.getCategoryId());
-        if(dto.getCompanyName()!=null&&dto.getCompanyName()!=""){
-        productWrapper.eq(Product::getCompanyName,dto.getCompanyName());}
         List<Product> products = productService.list(productWrapper);
         if (products.size() != 0) {
             List<Integer> productIds = products.stream().map(Product::getId).collect(Collectors.toList());
@@ -297,42 +290,23 @@ public class ProductCategoryServiceImpl implements IProductCategoryService {
             temMarketData.forEach(item -> {
                         //获得营销数据的时间
                         String date = item.getSaleTime();
-                        double saleCount = item.getSaleMoney();
+                        double saleCount = item.getSaleCount() * item.getSaleMoney();
                         if (dto.getTimeUnit() == 1) {
                             try {
                                 Date dateForm = new SimpleDateFormat("yyyy-MM").parse(date);
-                                Calendar ca = Calendar.getInstance();
-                                ca.setTime(dateForm);
-                                int month = ca.get(Calendar.MONTH);//第几个月
-                                int year = ca.get(Calendar.YEAR);//年份数值
-                                int season = (month - 1) / 3+1;
+                                int month = dateForm.getMonth();
+                                int year = dateForm.getYear();
+                                int season = (month - 1) / 3;
                                 date = year + "-" + season;
                             } catch (ParseException e) {
                                 e.printStackTrace();
                             }
                         }
-                        else if(dto.getTimeUnit() == 2){
-                            try {
-                                Date dateForm = new SimpleDateFormat("yyyy-MM").parse(date);
-                                Calendar ca = Calendar.getInstance();
-                                ca.setTime(dateForm);
-                                int year = ca.get(Calendar.YEAR);//年份数值
-                                date = year+"";
-                            } catch (ParseException e) {
-                                e.printStackTrace();
-                            }
-                        }
                         //计算销售额
                         if (marketDataMap.get(date) != null) {
                             saleCount += Double.parseDouble(marketDataMap.get(date).toString());
                         }
                         marketDataMap.put(date, saleCount);
-
-                        //产品总体部分
-                if (allMarketDataMap.get(date) != null) {
-                    saleCount += Double.parseDouble(allMarketDataMap.get(date).toString());
-                }
-                allMarketDataMap.put(date, saleCount);
                     }
             );
             Set keyset = marketDataMap.keySet();
@@ -346,16 +320,7 @@ public class ProductCategoryServiceImpl implements IProductCategoryService {
             trendVO.setSaleVOS(saleVOS);
             trendVOS.add(trendVO);
         }
-        Set keyset = allMarketDataMap.keySet();
-        List<ProductCategoryTrendVO.saleVO> saleVOS = new ArrayList<>();
-        for (Object key : keyset) {
-            ProductCategoryTrendVO.saleVO saleVO = new ProductCategoryTrendVO.saleVO();
-            saleVO.setMarketData(key.toString());
-            saleVO.setSaleTotalMoney(Double.parseDouble(allMarketDataMap.get(key).toString()));
-            saleVOS.add(saleVO);
-        }
-        trendAllVO.setSaleVOS(saleVOS);
-        trendVOS.add(trendAllVO);
+
         return trendVOS;
     }
 
@@ -389,6 +354,7 @@ public class ProductCategoryServiceImpl implements IProductCategoryService {
 
 
     public List<String> getCompanyList(Integer id) {
+
         List<String> areaList = new ArrayList<>();
         //根据架构id获得产品
         LambdaQueryWrapper<Product> productWrapper = new LambdaQueryWrapper<>();

+ 52 - 41
PAS/src/main/java/cn/cslg/pas/service/impl/StructureServiceImpl.java

@@ -5,16 +5,12 @@ import cn.cslg.pas.common.model.vo.PathStructureNameVO;
 import cn.cslg.pas.common.model.vo.StructurePictureVO;
 import cn.cslg.pas.common.model.vo.StructureVO;
 import cn.cslg.pas.common.utils.FileUtils;
-import cn.cslg.pas.domain.Project;
 import cn.cslg.pas.domain.Structure;
 import cn.cslg.pas.domain.asso.AssoStructurePicture;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.AssoStructurePictureMapper;
-import cn.cslg.pas.mapper.ProjectMapper;
 import cn.cslg.pas.mapper.StructureMapper;
 import cn.cslg.pas.service.IStructureService;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -22,9 +18,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * 架构的Service层接口实现类
@@ -35,7 +29,7 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor
 @Slf4j
 @Service
-public class StructureServiceImpl extends ServiceImpl<StructureMapper, Structure> implements IStructureService {
+public class StructureServiceImpl implements IStructureService {
     private final StructureMapper structureMapper;
     private final AssoStructurePictureMapper assoStructurePictureMapper;
     private final FileUtils fileUtils;
@@ -259,31 +253,13 @@ public class StructureServiceImpl extends ServiceImpl<StructureMapper, Structure
     @Override
     public StructureVO query(StructureQueryPageDTO structureQueryPageDTO) {
         log.info("开始处理【查询架构树】的业务,参数为:{}", structureQueryPageDTO);
-        StructureVO structureVO = new StructureVO();
-        //从DTO中取出产品id、架构id
+
+        //从DTO中取出产品id、架构id、架构名称
         Integer productId = structureQueryPageDTO.getProductId();
         Integer structureId = structureQueryPageDTO.getStructureId();
-        LambdaQueryWrapper<Structure> wrapper = new LambdaQueryWrapper<>();
-        wrapper.like(Structure::getStructureName, structureQueryPageDTO.getStructureName());
-        List<Structure> structures = this.list(wrapper);
-        List<Integer> ids = structures.stream().map(Structure::getId).collect(Collectors.toList());
-        List<String> paths = structures.stream().map(Structure::getPath).collect(Collectors.toList());
-        paths.forEach(
-                item -> {
-                    String[] pathStrs = item.split(",");
-                    List<String> pathStr = new ArrayList<>(Arrays.asList(pathStrs));
-                    pathStr.forEach(
-                            tem -> {
-                                Integer paId = Integer.parseInt(tem);
-                                if (!ids.contains(paId)) {
-                                    ids.add(paId);
-                                }
-                            }
-                    );
-                }
-        );
 
-        diGui(structureVO, structureId, productId, ids);
+        StructureVO structureVO = new StructureVO();
+        diGui(structureVO, structureId, productId);
         return structureVO;
     }
 
@@ -293,9 +269,15 @@ public class StructureServiceImpl extends ServiceImpl<StructureMapper, Structure
      * @return 返回查询到的数据
      */
     @Override
-    public List<PathStructureNameVO> queryPathStructureName() {
+    public List<PathStructureNameVO> queryPathStructureName(Integer productId) {
         log.info("开始处理【查询所有架构路径和路径架构名称】的业务");
 
+        List<StructureVO> structures = structureMapper.selectAllByProductId(productId);
+        for (StructureVO structure : structures) {
+            Integer structureId = structure.getId();
+            
+
+        }
 
         return null;
     }
@@ -303,41 +285,70 @@ public class StructureServiceImpl extends ServiceImpl<StructureMapper, Structure
     /**
      * 删除架构
      *
-     * @param structureId 架构id
+     * @param id 架构id
      */
     @Override
-    public void delete(Integer structureId) {
-        log.info("开始处理【删除架构】的业务,参数为:{}", structureId);
+    public void delete(Integer id) {
+        log.info("开始处理【删除架构】的业务,参数为:{}", id);
 
         //检查尝试删除的数据是否存在
-        Structure queryResult = structureMapper.getStandardById(structureId);
+        Structure queryResult = structureMapper.getStandardById(id);
         if (queryResult == null) {
             String message = "删除架构失败,尝试访问的数据已不存在";
             log.info("{}", message);
             throw new XiaoShiException(message);
         }
 
-        //架构和专利关联表删除数据
+        //根据架构id查询其所有子级架构
         ArrayList<Integer> structureIds = new ArrayList<>();
-        structureIds.add(structureId);
-        int rows = assoStructurePictureMapper.deleteByIds(structureIds);
+        structureIds.add(id);
+        String path = queryResult.getPath();
+        log.info("根据架构id查询其所有子级架构");
+        List<StructureVO> structures = structureMapper.selectByFindInSetPath(path);
+        for (StructureVO structure : structures) {
+            Integer childStructureId = structure.getId();
+            structureIds.add(childStructureId);
+        }
+
+        //架构和专利关联表删除数据
+        log.info("架构和专利关联表删除数据");
+        assoStructurePictureMapper.deleteByIds(structureIds);
+//        if (rows != structureIds.size()) {
+//            String message = "删除架构失败,架构和专利关联表删除数据失败,服务器忙请稍后再次尝试";
+//            log.info("{}", message);
+//            throw new XiaoShiException(message);
+//        }
+
+        //架构和图片关联表删除数据
+        log.info("架构和图片关联表删除数据");
+        assoStructurePictureMapper.deleteByStructureIds(structureIds);
+//        if (rows != structureIds.size()) {
+//            String message = "删除架构失败,架构和图片关联表删除数据失败,服务器忙请稍后再次尝试";
+//            log.info("{}", message);
+//            throw new XiaoShiException(message);
+//        }
+
+        //架构表删除数据
+        log.info("架构表删除数据");
+        int rows = structureMapper.deleteByIds(structureIds);
         if (rows != structureIds.size()) {
-            String message = "删除架构失败,服务器忙请稍后再次尝试";
+            String message = "删除架构失败,架构表删除数据失败,服务器忙请稍后再次尝试";
             log.info("{}", message);
             throw new XiaoShiException(message);
         }
 
+        log.info("删除架构完成");
 
     }
 
     //递归组装架构树集合
-    private void diGui(StructureVO structureVO, Integer structureId, Integer productId, List<Integer> ids) {
-        List<StructureVO> structureVOs = structureMapper.selectByParentIdAndProductId(structureId, productId, ids);
+    private void diGui(StructureVO structureVO, Integer structureId, Integer productId) {
+        List<StructureVO> structureVOs = structureMapper.selectByParentIdAndProductId(structureId, productId);
         if (structureVOs != null) {
             structureVO.setChildren(structureVOs);
             for (StructureVO n : structureVOs) {
                 structureId = n.getId();
-                diGui(n, structureId, productId, ids);
+                diGui(n, structureId, productId);
             }
         }
     }

+ 12 - 0
PAS/src/main/resources/mapper/AssoStructurePictureMapper.xml

@@ -22,6 +22,18 @@
         )
     </delete>
 
+    <!--根据架构ids批量删除数据-->
+    <!--int deleteByStructureIds(List<Integer> structures);-->
+    <delete id="deleteByStructureIds">
+        delete
+        from asso_structure_picture
+        where structure_id in (
+        <foreach collection="list" item="n" separator=",">
+            #{n}
+        </foreach>
+        )
+    </delete>
+
     <!--根据架构id查询数据-->
     <!--List<StructurePictureVO> selectByStructureId(Integer structureId);-->
     <select id="selectByStructureId" resultMap="selectByStructureIdMap">