Bläddra i källkod

报价单需求修改

haoyu 2 år sedan
förälder
incheckning
29b5ab2c5d

+ 39 - 74
src/main/java/com/ydtech/modules/admin/controller/SysQuotationController.java

@@ -2,18 +2,23 @@ package com.ydtech.modules.admin.controller;
 
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.dto.SysUserDto;
 import com.ydtech.modules.admin.model.po.SysOrganizationQuotation;
 import com.ydtech.modules.admin.model.po.SysQuotationTheme;
 import com.ydtech.modules.admin.model.vo.SysQuotationThemeVo;
+import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
 import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.SysOrganizationQuotationService;
 import com.ydtech.modules.admin.service.SysQuotationThemeService;
 import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.base.model.dto.PageDto;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -41,9 +46,6 @@ public class SysQuotationController extends BaseController {
     @Autowired
     private SysUserService sysUserService;
 
-    @Autowired
-    private SysDeptService sysDeptService;
-
 
     @ApiOperation(value = "分页查询报价单")
     @PostMapping(value = "page")
@@ -98,87 +100,50 @@ public class SysQuotationController extends BaseController {
     }
 
 
-    @ApiOperation(value = "获取树结构")
-    @GetMapping(value = "/findTree")
-    public HttpResult<List<SysDept>> findTree(String deptId, String managementSource) {
-        //获取主题报价单关联数据
-        List<SysOrganizationQuotation> quotations = sysOrganizationQuotationService.list();
-        //获取主题数据
-        List<SysQuotationTheme> quotationThemes = sysQuotationThemeService.list();
-        //获取机构数据
-        List<SysDept> Depts = sysDeptService.findTree(deptId, managementSource);
-        List<SysDept> DeptList = sysOrganizationQuotationService.findTree(quotations, quotationThemes, Depts);
-        return HttpResult.ok(DeptList);
+    @ApiOperation(value = "用户查询分页")
+    @PostMapping(value = "/findUserList")
+    public HttpResult findUserList(@RequestBody PageDto<SysUserDto> pageDto) {
+        if (pageDto.getDto().getDeptId() == null) {
+            BaseController baseController = new BaseController();
+            pageDto.getDto().setDeptId(baseController.getDeptId());
+        }
+        IPage<SysUserBaseVO> userList = sysUserService.findUserList(pageDto);
+        if (userList.getRecords().size() != 0) {
+             sysOrganizationQuotationService.findUserList(userList);
+        }
+        return HttpResult.ok(userList);
     }
 
 
-    @ApiOperation(value = "报价单授权批量编辑")
-    @PostMapping(value = "/batch")
-    public HttpResult<SysOrganizationQuotation> batch(@RequestBody SysOrganizationQuotation sysOrganizationQuotation) {
-        if (sysOrganizationQuotation.getOrganizationIds().size() == 0) {
-            return HttpResult.error("编辑失败,未选中修改机构");
+    @ApiOperation(value = "报价单配置")
+    @PostMapping(value = "/config")
+    public HttpResult<SysOrganizationQuotation> config(@RequestBody SysOrganizationQuotation sysOrganizationQuotation) {
+        if (sysOrganizationQuotation.getAuthorizationIds().size() == 0) {
+            return HttpResult.error("配置失败,未选中用户");
         }
-        // 构造查询条件,根据提供的组织ID集合查询出对应的报价单授权信息,然后进行删除
+        // 构造查询条件,根据提供的用户ID集合查询出对应的报价单授权信息,然后进行删除
         LambdaQueryWrapper<SysOrganizationQuotation> removeWrapper = new LambdaQueryWrapper<>();
-        removeWrapper.in(SysOrganizationQuotation::getOrganizationId, sysOrganizationQuotation.getOrganizationIds());
+        removeWrapper.in(SysOrganizationQuotation::getAuthorizationId, sysOrganizationQuotation.getAuthorizationIds());
         sysOrganizationQuotationService.remove(removeWrapper);
-        List<String> organizationIds = sysOrganizationQuotation.getOrganizationIds();
-        // 遍历组织ID集合,为每个组织ID构造新的报价单授权信息,并添加到待保存的列表中
-        ArrayList<SysOrganizationQuotation> quotations = new ArrayList<>();
-        for (String organizationId : organizationIds) {
-            SysOrganizationQuotation quotation = new SysOrganizationQuotation();
-            quotation.setOrganizationId(organizationId);
-            quotation.setThemeId(sysOrganizationQuotation.getThemeId());
-            quotation.setThemeCode(sysOrganizationQuotation.getThemeCode());
-            quotation.setUserId(getUserId());
-            quotation.setCreateTime(new Date());
-            quotations.add(quotation);
+        List<String> authorizationIds = sysOrganizationQuotation.getAuthorizationIds();
+        List<String> themecodes = sysOrganizationQuotation.getThemecodes();
+        // 遍历用户ID集合,为每个用户ID构造新的报价单授权信息,并添加到待保存的列表中
+        List<SysOrganizationQuotation> quotations = new ArrayList<>();
+        for (String authorizationId : authorizationIds) {
+            for (String themecode : themecodes) {
+                SysOrganizationQuotation quotation = new SysOrganizationQuotation();
+                quotation.setAuthorizationId(authorizationId);
+                quotation.setThemeCode(themecode);
+                quotation.setUserId(getUserId());
+                quotation.setCreateTime(new Date());
+                quotations.add(quotation);
+            }
         }
         // 批量保存新的报价单授权信息
         boolean saveBatch = sysOrganizationQuotationService.saveBatch(quotations);
         // 断言添加操作成功,若失败则抛出异常
-        AssertionUtils.isSucceed(saveBatch, "添加失败");
-        return HttpResult.ok("添加成功");
+        AssertionUtils.isSucceed(saveBatch, "配置失败");
+        return HttpResult.ok("配置成功");
     }
 
-    @ApiOperation(value = "报价单授权编辑")
-    @PostMapping(value = "/redact")
-    public HttpResult<SysOrganizationQuotation> redact(@RequestBody SysOrganizationQuotation sysOrganizationQuotation) {
-        // 构造查询条件,删除与新报价单组织ID相同的旧报价单
-        LambdaQueryWrapper<SysOrganizationQuotation> removeWrapper = new LambdaQueryWrapper<>();
-        removeWrapper.eq(SysOrganizationQuotation::getOrganizationId, sysOrganizationQuotation.getOrganizationId());
-        sysOrganizationQuotationService.remove(removeWrapper);
-        // 设置新报价单信息,包括用户ID和创建时间
-        sysOrganizationQuotation.setUserId(getUserId());
-        sysOrganizationQuotation.setCreateTime(new Date());
-        // 保存新的报价单信息
-        boolean save = sysOrganizationQuotationService.save(sysOrganizationQuotation);
-        // 断言新增操作成功
-        AssertionUtils.isSucceed(save, "添加失败");
-        return HttpResult.ok("添加成功");
-    }
-
-    @ApiOperation(value = "报价单授权编辑回填")
-    @GetMapping(value = "/get/{id}")
-    public HttpResult<SysOrganizationQuotation> getSysOrganizationQuotation(@PathVariable String id) {
-        LambdaQueryWrapper<SysOrganizationQuotation> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(SysOrganizationQuotation::getOrganizationId, id);
-        SysOrganizationQuotation serviceOne = sysOrganizationQuotationService.getOne(queryWrapper);
-        return HttpResult.ok(serviceOne);
-    }
-
-    @ApiOperation(value = "获取用户对应报价单")
-    @GetMapping(value = "/getThemeByUserId")
-    public HttpResult<SysOrganizationQuotation> getThemeByUserId() {
-        SysUser user = getUser();
-        String deptId = user.getDeptId();
-        LambdaQueryWrapper<SysOrganizationQuotation> oQueryWrapper = new LambdaQueryWrapper<>();
-        oQueryWrapper.eq(SysOrganizationQuotation::getOrganizationId, deptId);
-        SysOrganizationQuotation quotationServiceOne = sysOrganizationQuotationService.getOne(oQueryWrapper);
-        if (quotationServiceOne == null) {
-            quotationServiceOne = new SysOrganizationQuotation();
-            quotationServiceOne.setThemeCode("QD");
-        }
-        return HttpResult.ok(quotationServiceOne);
-    }
 }

+ 6 - 0
src/main/java/com/ydtech/modules/admin/dao/SysOrganizationQuotationDao.java

@@ -3,6 +3,12 @@ package com.ydtech.modules.admin.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ydtech.modules.admin.model.po.SysOrganizationQuotation;
 import com.ydtech.modules.admin.model.po.SysUserTreeShowLevel;
+import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.stream.Stream;
 
 public interface SysOrganizationQuotationDao extends BaseMapper<SysOrganizationQuotation> {
+    List<SysUserBaseVO> findUserQuotationThemeList(@Param("userIds") List<String> userIds);
 }

+ 11 - 8
src/main/java/com/ydtech/modules/admin/model/po/SysOrganizationQuotation.java

@@ -23,11 +23,11 @@ public class SysOrganizationQuotation {
 
 
     /**
-     * 机构id
+     * 授权用户id
      */
-    @ApiModelProperty(value = "机构id")
-    @TableField(value = "organization_id")
-    private String organizationId;
+    @ApiModelProperty(value = "授权用户id")
+    @TableField(value = "authorization_id")
+    private String authorizationId;
 
 
     /**
@@ -64,14 +64,17 @@ public class SysOrganizationQuotation {
     /**
      * 授权部门IDS
      */
-    @ApiModelProperty(value = "授权部门Ids")
+    @ApiModelProperty(value = "授权用户Ids")
     @TableField(exist = false)
-    private List<String> organizationIds;
+    private List<String> authorizationIds;
 
     /**
-     * 报价单code
+     * 报价单codes
      */
+    @ApiModelProperty(value = "报价单codes")
     @TableField(exist = false)
-    private String sysQuotationThemeId;
+    private List<String> themecodes;
+
+
 
 }

+ 12 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysUserBaseVO.java

@@ -4,6 +4,9 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.HashMap;
+import java.util.List;
+
 /**
  * 基础用户信息
  *
@@ -51,4 +54,13 @@ public class SysUserBaseVO {
     @ApiModelProperty(value = "岗位名称")
     private String positionName;
 
+    @ApiModelProperty(value = "报价单简称:报价单颜色")
+    private List<HashMap<String, String>> quotation;
+
+    @ApiModelProperty(value = "报价单主题")
+    private String quotationAbbr;
+
+    @ApiModelProperty(value = "报价单颜色")
+    private String themeColour;
+
 }

+ 6 - 1
src/main/java/com/ydtech/modules/admin/service/SysOrganizationQuotationService.java

@@ -1,12 +1,17 @@
 package com.ydtech.modules.admin.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.modules.admin.model.SysDept;
+import com.ydtech.modules.admin.model.dto.SysUserDto;
 import com.ydtech.modules.admin.model.po.SysOrganizationQuotation;
 import com.ydtech.modules.admin.model.po.SysQuotationTheme;
+import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
+import com.ydtech.modules.base.model.dto.PageDto;
 
 import java.util.List;
 
 public interface SysOrganizationQuotationService extends IService<SysOrganizationQuotation> {
-    List<SysDept> findTree(List<SysOrganizationQuotation> quotations,List<SysQuotationTheme> quotationThemes,List<SysDept> Depts);
+    void findUserList(IPage<SysUserBaseVO> userList);
+
 }

+ 43 - 29
src/main/java/com/ydtech/modules/admin/service/impl/SysOrganizationQuotationImpl.java

@@ -1,49 +1,28 @@
 package com.ydtech.modules.admin.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.modules.admin.dao.SysOrganizationQuotationDao;
+import com.ydtech.modules.admin.dao.SysQuotationThemeDao;
 import com.ydtech.modules.admin.model.SysDept;
+import com.ydtech.modules.admin.model.dto.SysUserDto;
 import com.ydtech.modules.admin.model.po.SysOrganizationQuotation;
 import com.ydtech.modules.admin.model.po.SysQuotationTheme;
+import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
 import com.ydtech.modules.admin.service.SysOrganizationQuotationService;
+import com.ydtech.modules.admin.service.SysUserService;
+import com.ydtech.modules.base.model.dto.PageDto;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 @Service
 public class SysOrganizationQuotationImpl extends ServiceImpl<SysOrganizationQuotationDao, SysOrganizationQuotation> implements SysOrganizationQuotationService {
 
-    /**
-     * 根据提供的组织报价和报价主题列表,构建部门树。
-     *
-     * @param quotations 组织报价列表,用于映射组织和报价的关系。
-     * @param quotationThemes 报价主题列表,用于映射主题和报价的关系。
-     * @param sysDepts 部门列表,初始为空,函数将递归构建其结构。
-     * @return 返回构建完成的部门树列表。
-     */
-    @Override
-    public List<SysDept> findTree(List<SysOrganizationQuotation> quotations, List<SysQuotationTheme> quotationThemes, List<SysDept> sysDepts) {
-        // 将组织报价列表转换为Map,以组织ID为键
-        Map<String, SysOrganizationQuotation> quotationMap = quotations.stream()
-                .collect(Collectors.toMap(
-                        SysOrganizationQuotation::getOrganizationId,
-                        quotation -> quotation
-                ));
-        // 将报价主题列表转换为Map,以主题ID为键
-        Map<String, SysQuotationTheme> themeMap = quotationThemes.stream()
-                .collect(Collectors.toMap(
-                        SysQuotationTheme::getThemeCode,
-                        Theme -> Theme
-                ));
-
-        // 通过递归构建部门树
-        recursion(quotationMap, themeMap, sysDepts);
-
-        return sysDepts;
-    }
-
     /**
      * 通过递归遍历部门树结构,为每个部门设置报价信息和标记。
      *
@@ -77,4 +56,39 @@ public class SysOrganizationQuotationImpl extends ServiceImpl<SysOrganizationQuo
             recursion(quotationMap, themeMap, children);
         }
     }
+
+
+    /**
+     * 查询用户列表,并为每个用户设置其报价主题信息。
+     *
+     * @param userList 分页后的用户列表,是一个包含SysUserBaseVO对象的IPage实例。
+     *                 SysUserBaseVO对象包含了用户的基本信息。
+     *                 IPage是一个分页接口,用于表示分页结果。
+     *                 这个方法会为IPage中的每个SysUserBaseVO对象补充报价主题信息。
+     */
+    @Override
+    public void findUserList(IPage<SysUserBaseVO> userList) {
+        // 从分页列表中提取用户记录列表
+        List<SysUserBaseVO> records = userList.getRecords();
+        // 提取所有用户ID
+        List<String> userIds = records.stream().map(SysUserBaseVO::getUserId).collect(Collectors.toList());
+        // 根据用户ID列表查询每个用户的报价主题信息
+        List<SysUserBaseVO> quotationTheme  =  baseMapper.findUserQuotationThemeList(userIds);
+        // 遍历用户记录,为每个用户设置报价主题信息
+        for (SysUserBaseVO record : records) {
+            List<HashMap<String, String>> hashMaps = new ArrayList<>();
+            // 找到当前用户的报价主题信息,并添加到当前用户的记录中
+            for (SysUserBaseVO sysUserBaseVO : quotationTheme) {
+                if (record.getUserId().equals(sysUserBaseVO.getUserId())){
+                    // 将主题颜色和报价缩写添加到哈希表中
+                    HashMap<String, String> hashMap = new HashMap<>();
+                    hashMap.put("themeColour",sysUserBaseVO.getThemeColour());
+                    hashMap.put("quotationAbbr",sysUserBaseVO.getQuotationAbbr());
+                    hashMaps.add(hashMap);
+                }
+            }
+            // 设置用户的报价主题信息
+            record.setQuotation(hashMaps);
+        }
+    }
 }

+ 23 - 0
src/main/resources/mapper/modules/admin/SysOrganizationQuotationMapper.xml

@@ -0,0 +1,23 @@
+<?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.ydtech.modules.admin.dao.SysOrganizationQuotationDao">
+
+    <!-- 假设这个方法是用来查询指定用户ID列表的用户的报价主题信息 -->
+    <select id="findUserQuotationThemeList" resultType="com.ydtech.modules.admin.model.vo.SysUserBaseVO">
+        SELECT
+        sqo.authorization_id AS userId,
+        sqt.quotation_abbr AS quotationAbbr,
+        sqt.theme_colour AS themeColour
+        FROM
+        sys_quotation_organization sqo
+        LEFT JOIN
+        sys_quotation_theme sqt ON sqo.theme_code = sqt.theme_code
+        WHERE
+        sqo.authorization_id IN
+        <foreach item="userId" index="index" collection="userIds" open="(" separator="," close=")">
+            #{userId}
+        </foreach>
+    </select>
+</mapper>