From 772274e21ad8f5e89b47575e31634e344e3a7f17 Mon Sep 17 00:00:00 2001 From: chenwei Date: Thu, 8 Aug 2024 15:35:49 +0800 Subject: [PATCH] 导入基础数据,组织权限验证 --- zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/controller/McBasicCmtyController.java | 63 ++++++++++++++++++++------------------------------------------- zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/controller/McBasicMoneyController.java | 65 ++++++++++++++++++++++++++++------------------------------------- zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/mapper/CommonMapper.java | 5 +++++ zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/ICommonService.java | 5 +++++ zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/CommonService.java | 8 ++++++++ zr-cloud/zr-modules/zr-schsf/src/main/resources/mapper/CommonMapper.xml | 7 +++++++ 6 files changed, 73 insertions(+), 80 deletions(-) diff --git a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/controller/McBasicCmtyController.java b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/controller/McBasicCmtyController.java index 68840af..e494dda 100644 --- a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/controller/McBasicCmtyController.java +++ b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/controller/McBasicCmtyController.java @@ -5,7 +5,9 @@ import com.alibaba.excel.util.MapUtils; import com.alibaba.fastjson2.JSON; import com.alibaba.nacos.common.utils.CollectionUtils; import com.chinagas.common.core.domain.AjaxResult; +import com.chinagas.common.core.exceptions.ServiceException; import com.chinagas.common.core.web.controller.BaseController; +import com.chinagas.common.core.web.domain.BaseEntity; import com.chinagas.common.core.web.page.TableDataInfo; import com.chinagas.common.log.annotation.Log; import com.chinagas.common.log.enums.BusinessType; @@ -18,7 +20,6 @@ import com.chinagas.modules.schsf.service.ICommonService; import com.chinagas.modules.schsf.service.IMcBasicCmtyService; import com.chinagas.modules.schsf.utils.listener.McBasicCmtyImportInspection; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -27,12 +28,9 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.net.URLEncoder; -import java.sql.SQLIntegrityConstraintViolationException; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; /** @@ -127,8 +125,6 @@ public class McBasicCmtyController extends BaseController { throw new RuntimeException("文件大小不得超过5M"); } try { - - // 获取文件的输入流 InputStream inputStream = file.getInputStream(); List list = EasyExcel.read(inputStream) //调用read方法 @@ -139,45 +135,27 @@ public class McBasicCmtyController extends BaseController { .headRowNumber(4) // 列表头行数,1代表列表头有1行,第二行开始为数据行 .doReadSync(); // 开始读Excel,返回一个List集合,继续后续入库操作 log.info("导入基础数据-户数总条数:{}", list == null ? 0 : list.size()); - -// List> sysDeptAlls = commonService.selectSysDeptAll(); - - -// // 检验重复数据 -// Map> collect = list.stream().collect(Collectors.groupingBy(o -> -// o.getRegionName() + -// o.getGroupName() + -// o.getCompanyName() + -// o.getCompanyCode() -// + o.getFiscalYear() -// + o.getProvince() -// + o.getCity() -// + o.getDistrict() -// + o.getStreet() -// + o.getVlgOrCmty() -// )); -// Set strings = collect.keySet(); -// if (strings.size() < list.size()) { -// throw new RuntimeException("表格中存在重复的数据"); -// } + List> userSysDeptAll = commonService.selectUserSysDeptAll(new BaseEntity()); long startTime = System.currentTimeMillis(); // 记录任务开始时间 - // 插入数据库 - if (CollectionUtils.isNotEmpty(list)) { -// Runnable task = () -> { + if (CollectionUtils.isNotEmpty(userSysDeptAll) && CollectionUtils.isNotEmpty(list)) { + // 使用 Map 来存储 companyCode 及其对应的部门信息 + Map> deptMap = new HashMap<>(); + for (HashMap dept : userSysDeptAll) { + String companyCode = String.valueOf(dept.get("deptId")); + if (companyCode != null) { + deptMap.put(companyCode, dept); + } + } + for (McBasicCmty mcBasicCmty : list) { + String companyCode = mcBasicCmty.getCompanyCode(); + if (!deptMap.containsKey(companyCode)) { + throw new ServiceException("导入项目公司错误,请检查!"); + } + } + // 插入数据库 for (McBasicCmty mcBasicCmty : list) { mcBasicCmtyService.insertMcBasicCmty(mcBasicCmty); - System.out.println(list); // 注意:这里直接打印list可能不是最佳实践,具体看需求 } -// }; -// Thread backgroundThread = new Thread(task, "后台插入任务线程"); -// backgroundThread.setDaemon(true); // 设置为守护线程,随主线程结束而结束 -// backgroundThread.start(); -// try { -// backgroundThread.join(); // 等待线程执行完毕,确保能准确计算运行时长 -// } catch (InterruptedException e) { -// Thread.currentThread().interrupt(); // 恢复中断状态 -// log.error("导入基础数据-户数,等待线程执行完毕时被中断", e); -// } } long endTime = System.currentTimeMillis(); // 记录任务结束时间 long duration = endTime - startTime; // 计算任务运行时长 @@ -237,7 +215,7 @@ public class McBasicCmtyController extends BaseController { @RequirePermission("schsf:mcBasicCmty:summaryExport") @PostMapping("/summaryExport") - public void summaryExport(@RequestBody McBasicCmtyVo mcBasicCmtyVo,HttpServletResponse response) throws IOException { + public void summaryExport(@RequestBody McBasicCmtyVo mcBasicCmtyVo, HttpServletResponse response) throws IOException { List list = mcBasicCmtyService.selectMcBasicCmtySummaryList(mcBasicCmtyVo); try { response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); @@ -261,5 +239,4 @@ public class McBasicCmtyController extends BaseController { } - } diff --git a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/controller/McBasicMoneyController.java b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/controller/McBasicMoneyController.java index 57fcb5b..b0dd1eb 100644 --- a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/controller/McBasicMoneyController.java +++ b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/controller/McBasicMoneyController.java @@ -5,7 +5,9 @@ import com.alibaba.excel.util.MapUtils; import com.alibaba.fastjson2.JSON; import com.alibaba.nacos.common.utils.CollectionUtils; import com.chinagas.common.core.domain.AjaxResult; +import com.chinagas.common.core.exceptions.ServiceException; import com.chinagas.common.core.web.controller.BaseController; +import com.chinagas.common.core.web.domain.BaseEntity; import com.chinagas.common.core.web.page.TableDataInfo; import com.chinagas.common.log.annotation.Log; import com.chinagas.common.log.enums.BusinessType; @@ -15,6 +17,7 @@ import com.chinagas.modules.schsf.domain.McBasicCmty; import com.chinagas.modules.schsf.domain.McBasicMoney; import com.chinagas.modules.schsf.domain.vo.McBasicCmtyVo; import com.chinagas.modules.schsf.domain.vo.McBasicMoneyVo; +import com.chinagas.modules.schsf.service.ICommonService; import com.chinagas.modules.schsf.service.IMcBasicMoneyService; import com.chinagas.modules.schsf.utils.listener.McBasicMoneyImportInspection; import lombok.extern.slf4j.Slf4j; @@ -28,6 +31,7 @@ import java.io.IOException; import java.io.InputStream; import java.net.URLEncoder; import java.sql.SQLIntegrityConstraintViolationException; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -44,6 +48,9 @@ import java.util.Map; public class McBasicMoneyController extends BaseController { @Autowired private IMcBasicMoneyService mcBasicMoneyService; + @Autowired + private ICommonService commonService; + /** * 查询基础数据-金额列表 @@ -88,41 +95,29 @@ public class McBasicMoneyController extends BaseController { .headRowNumber(4) // 列表头行数,1代表列表头有1行,第二行开始为数据行 .doReadSync(); // 开始读Excel,返回一个List集合,继续后续入库操作 log.info("导入基础数据-金额总条数:{}", list == null ? 0 : list.size()); + List> userSysDeptAll = commonService.selectUserSysDeptAll(new BaseEntity()); -// // 检验重复数据 -// Map> collect = list.stream().collect(Collectors.groupingBy(o -> -// o.getRegionName() + -// o.getGroupName() + -// o.getCompanyName() + -// o.getCompanyCode() -// + o.getFiscalYear() -// + o.getProvince() -// + o.getCity() -// + o.getDistrict() -// + o.getStreet() -// + o.getVlgOrCmty() -// )); -// Set strings = collect.keySet(); -// if (strings.size() < list.size()) { -// throw new RuntimeException("表格中存在重复的数据"); -// } long startTime = System.currentTimeMillis(); // 记录任务开始时间 // 插入数据库 - if (CollectionUtils.isNotEmpty(list)) { -// Runnable task = () -> { - for (McBasicMoney mcBasicCmty : list) { - mcBasicMoneyService.insertMcBasicMoney(mcBasicCmty); + if (CollectionUtils.isNotEmpty(list) && CollectionUtils.isNotEmpty(userSysDeptAll)) { + // 使用 Map 来存储 companyCode 及其对应的部门信息 + Map> deptMap = new HashMap<>(); + for (HashMap dept : userSysDeptAll) { + String companyCode = String.valueOf(dept.get("deptId")); + if (companyCode != null) { + deptMap.put(companyCode, dept); } -// }; -// Thread backgroundThread = new Thread(task, "后台插入任务线程"); -// backgroundThread.setDaemon(true); // 设置为守护线程,随主线程结束而结束 -// backgroundThread.start(); -// try { -// backgroundThread.join(); // 等待线程执行完毕,确保能准确计算运行时长 -// } catch (InterruptedException e) { -// Thread.currentThread().interrupt(); // 恢复中断状态 -// log.error("导入基础数据-户数,等待线程执行完毕时被中断", e); -// } + } + for (McBasicMoney mcBasicCmty : list) { + String companyCode = mcBasicCmty.getCompanyCode(); + if (!deptMap.containsKey(companyCode)) { + throw new ServiceException("导入项目公司错误,请检查!"); + } + } + // 插入数据库 + for (McBasicMoney mcBasicCmty : list) { + mcBasicMoneyService.insertMcBasicMoney(mcBasicCmty); + } } long endTime = System.currentTimeMillis(); // 记录任务结束时间 long duration = endTime - startTime; // 计算任务运行时长 @@ -137,12 +132,12 @@ public class McBasicMoneyController extends BaseController { /** * 导出基础数据-金额列表模板 */ - @RequirePermission(value = {"schsf:mcBasicMoney:exportTemplate","schsf:mcBasicMoney:importData"}, logical = Logical.OR) + @RequirePermission(value = {"schsf:mcBasicMoney:exportTemplate", "schsf:mcBasicMoney:importData"}, logical = Logical.OR) @Log(title = "基础数据-金额", businessType = BusinessType.EXPORT) @PostMapping("/exportTemplate") public void exportTemplate(HttpServletResponse response) throws IOException { startPage(); - McBasicMoneyVo mcBasicMoneyVo =new McBasicMoneyVo(); + McBasicMoneyVo mcBasicMoneyVo = new McBasicMoneyVo(); mcBasicMoneyVo.setDefFlag("0"); List list = mcBasicMoneyService.selectMcBasicMoneyList(mcBasicMoneyVo); try { @@ -168,7 +163,6 @@ public class McBasicMoneyController extends BaseController { } - @RequirePermission("schsf:mcBasicMoney:summaryList") @GetMapping("/summaryList") public TableDataInfo summaryList(McBasicMoneyVo mcBasicMoneyVo) { @@ -206,7 +200,4 @@ public class McBasicMoneyController extends BaseController { } - - - } diff --git a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/mapper/CommonMapper.java b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/mapper/CommonMapper.java index e4afdf0..8f9e40d 100644 --- a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/mapper/CommonMapper.java +++ b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/mapper/CommonMapper.java @@ -1,11 +1,16 @@ package com.chinagas.modules.schsf.mapper; +import com.chinagas.common.core.web.domain.BaseEntity; import org.apache.ibatis.annotations.Param; import java.util.HashMap; +import java.util.List; public interface CommonMapper { HashMap selectSysDeptByidName(@Param("deptId") String deptId,@Param("deptName") String deptName); + List> selectUserSysDeptAll(BaseEntity baseEntity); + + } diff --git a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/ICommonService.java b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/ICommonService.java index 970a0aa..adbf95b 100644 --- a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/ICommonService.java +++ b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/ICommonService.java @@ -1,10 +1,15 @@ package com.chinagas.modules.schsf.service; +import com.chinagas.common.core.web.domain.BaseEntity; + import java.util.HashMap; +import java.util.List; public interface ICommonService { HashMap selectSysDeptByidName(String companyCode, String companyName); + List> selectUserSysDeptAll(BaseEntity baseEntity); + } diff --git a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/CommonService.java b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/CommonService.java index 2ff94c8..ce211c3 100644 --- a/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/CommonService.java +++ b/zr-cloud/zr-modules/zr-schsf/src/main/java/com/chinagas/modules/schsf/service/impl/CommonService.java @@ -1,5 +1,7 @@ package com.chinagas.modules.schsf.service.impl; +import com.chinagas.common.core.web.domain.BaseEntity; +import com.chinagas.common.datascope.annotation.DataScope; import com.chinagas.modules.schsf.mapper.CommonMapper; import com.chinagas.modules.schsf.service.ICommonService; import lombok.extern.slf4j.Slf4j; @@ -7,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.HashMap; +import java.util.List; @Slf4j @Service @@ -18,4 +21,9 @@ public class CommonService implements ICommonService { public HashMap selectSysDeptByidName(String deptId, String deptName) { return commonMapper.selectSysDeptByidName(deptId,deptName); } + @DataScope(deptAlias = "d") + @Override + public List> selectUserSysDeptAll(BaseEntity baseEntity) { + return commonMapper.selectUserSysDeptAll(baseEntity); + } } diff --git a/zr-cloud/zr-modules/zr-schsf/src/main/resources/mapper/CommonMapper.xml b/zr-cloud/zr-modules/zr-schsf/src/main/resources/mapper/CommonMapper.xml index 137af22..2b61a9f 100644 --- a/zr-cloud/zr-modules/zr-schsf/src/main/resources/mapper/CommonMapper.xml +++ b/zr-cloud/zr-modules/zr-schsf/src/main/resources/mapper/CommonMapper.xml @@ -7,4 +7,11 @@ + + -- libgit2 0.21.2