|
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
|
import com.qmth.teachcloud.common.bean.dto.OrgDto;
|
|
|
+import com.qmth.teachcloud.common.bean.dto.UserExportDto;
|
|
|
+import com.qmth.teachcloud.common.bean.dto.excel.SysOrgImportDto;
|
|
|
import com.qmth.teachcloud.common.bean.params.UserSaveParams;
|
|
|
import com.qmth.teachcloud.common.bean.result.SysUserResult;
|
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
@@ -20,6 +22,7 @@ import com.qmth.teachcloud.common.service.CommonCacheService;
|
|
|
import com.qmth.teachcloud.common.service.SysOrgService;
|
|
|
import com.qmth.teachcloud.common.service.SysRoleService;
|
|
|
import com.qmth.teachcloud.common.service.SysUserService;
|
|
|
+import com.qmth.teachcloud.common.util.ExcelUtil;
|
|
|
import com.qmth.teachcloud.common.util.ResultUtil;
|
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
@@ -28,9 +31,11 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
import java.util.*;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -469,6 +474,36 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
|
|
|
// todo 机构导出 未完成
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void exportOrgData(HttpServletResponse response, boolean withoutPrintingRoom) throws Exception {
|
|
|
+ Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
|
+ List<SysOrgImportDto> sysOrgImportDtoList = new ArrayList<>();
|
|
|
+ SysOrg schoolLevelOrg = this.getOne(new QueryWrapper<SysOrg>().lambda()
|
|
|
+ .eq(SysOrg::getSchoolId, schoolId)
|
|
|
+ .eq(SysOrg::getType, OrgTypeEnum.SCHOOL));
|
|
|
+ if (Objects.isNull(schoolLevelOrg)) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("学校级机构不存在");
|
|
|
+ }
|
|
|
+ Long schoolLevelOrgId = schoolLevelOrg.getId();
|
|
|
+ this.buildChildOrgInfoByParentId(schoolLevelOrgId, null, sysOrgImportDtoList);
|
|
|
+ if (!withoutPrintingRoom) {
|
|
|
+ // 需要导出印刷厂
|
|
|
+ List<SysOrg> printHousesOrg = this.list(new QueryWrapper<SysOrg>()
|
|
|
+ .lambda()
|
|
|
+ .eq(SysOrg::getSchoolId, schoolId)
|
|
|
+ .eq(SysOrg::getParentId, schoolLevelOrgId)
|
|
|
+ .eq(SysOrg::getType, OrgTypeEnum.PRINTING_HOUSE));
|
|
|
+ List<SysOrgImportDto> printHouses = printHousesOrg.stream().flatMap(e -> {
|
|
|
+ SysOrgImportDto sysOrgImportDto = new SysOrgImportDto();
|
|
|
+ sysOrgImportDto.setName(e.getName());
|
|
|
+ return Stream.of(sysOrgImportDto);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ sysOrgImportDtoList.addAll(printHouses);
|
|
|
+ }
|
|
|
+ // 生成excel文件
|
|
|
+ ExcelUtil.excelExport("机构数据", SysOrgImportDto.class, sysOrgImportDtoList, response);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 根据子机构id深度优先搜索其父机构们
|
|
|
*
|
|
@@ -551,4 +586,31 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
|
|
|
|
|
|
return sysOrg;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据父机构id构建该父机构下所有子机构信息集合
|
|
|
+ *
|
|
|
+ * @param parentId 父机构id
|
|
|
+ * @param parentInfo 父机构信息
|
|
|
+ * @param result 子机构信息结果集
|
|
|
+ */
|
|
|
+ private void buildChildOrgInfoByParentId(Long parentId, String parentInfo, List<SysOrgImportDto> result) {
|
|
|
+ if (SystemConstant.longNotNull(parentId)) {
|
|
|
+ List<SysOrg> childOrgList = this.list(new QueryWrapper<SysOrg>().lambda()
|
|
|
+ .eq(SysOrg::getParentId, parentId))
|
|
|
+ .stream()
|
|
|
+ .filter(e -> !OrgTypeEnum.PRINTING_HOUSE.equals(e.getType()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ for (SysOrg child : childOrgList) {
|
|
|
+ String orgInfo = child.getName();
|
|
|
+ if (SystemConstant.strNotNull(parentInfo)) {
|
|
|
+ orgInfo = parentInfo + SystemConstant.ORG_SPLIT + orgInfo;
|
|
|
+ }
|
|
|
+ SysOrgImportDto sysOrgImportDto = new SysOrgImportDto();
|
|
|
+ sysOrgImportDto.setName(orgInfo);
|
|
|
+ result.add(sysOrgImportDto);
|
|
|
+ this.buildChildOrgInfoByParentId(child.getId(), orgInfo, result);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|