yangys
2024-03-27 44c06e730b392ca2160a843cf54e221156a2b1a2
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/impl/CheckProjectServiceImpl.java
@@ -13,6 +13,7 @@
import java.lang.invoke.SerializedLambda;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -102,7 +103,7 @@
               .and(Func.isNotBlank(key), c -> c.likeRight(CheckProject::getCode, key))
                     .or().likeRight(Func.isNotBlank(key), CheckProject::getName, key).or()
                     .likeRight(Func.isNotBlank(key), CheckProject::getRemark, key)
               .orderByDesc(CheckProject::getCreateTime, CheckProject::getId));
               .orderByDesc(Arrays.asList(CheckProject::getCreateTime, CheckProject::getId)));
       /*
        IPage<CheckProject> page = page(Condition.getPage(query), (Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> {
            return v0.getStatus();
@@ -120,7 +121,7 @@
            return v0.getId();
        }}));*/
        return Optional.<IPage<CheckProject>>ofNullable(page).map(p -> {
            IPage page2 = new Page<>(p.getCurrent(), p.getSize(), p.getTotal());
            IPage<CheckProjectVO> page2 = new Page<>(p.getCurrent(), p.getSize(), p.getTotal());
            page2.setRecords(CheckProjectConvert.INSTANCE.convert(p.getRecords()));
            return page2;
        }).orElse(new Page<>());
@@ -154,6 +155,19 @@
    @Override // org.springblade.modules.cps.service.ICheckProjectService
    public BladeFile exportCheckProject(String key, Integer status) {
       List<CheckProject> checkProjects = list(
             Wrappers.<CheckProject>lambdaQuery()
               .eq(CheckProject::getStatus, status)
               .and(Func.isNotBlank(key), c -> c.likeRight(CheckProject::getCode, key)).or()
               .likeRight(Func.isNotBlank(key), CheckProject::getName, key).or()
            .likeRight(Func.isNotBlank(key), CheckProject::getRemark, key)
               .orderByDesc(Arrays.asList(CheckProject::getCreateTime, CheckProject::getId))
               );
       List<Long> ids = checkProjects.stream().map(CheckProject::getId).collect(Collectors.toList());
       /*
        List<CheckProject> checkProjects = list((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> {
            return v0.getStatus();
        }, status)).and(Func.isNotBlank(key), c -> {
@@ -172,14 +186,18 @@
        List<Long> ids = (List) checkProjects.stream().map((v0) -> {
            return v0.getId();
        }).collect(Collectors.toList());
        */
        Map<Long, List<CheckItem>> itemMap = null;
        if (Func.isNotEmpty(ids)) {
           List<CheckItem> checkItems = this.checkItemService.list(Wrappers.<CheckItem>lambdaQuery().in(CheckItem::getCheckProjectId, ids));
            itemMap = (Map<Long, List<CheckItem>>)checkItems.stream().collect(Collectors.groupingBy(CheckItem::getCheckProjectId));
           /*
            List<CheckItem> checkItems = this.checkItemService.list((Wrapper) Wrappers.lambdaQuery().in((v0) -> {
                return v0.getCheckProjectId();
            }, ids));
            itemMap = (Map) checkItems.stream().collect(Collectors.groupingBy((v0) -> {
                return v0.getCheckProjectId();
            }));
            }));*/
        }
        List<CheckProjectExcel> result = Lists.newArrayList();
        for (CheckProject checkProject : checkProjects) {
@@ -210,6 +228,17 @@
        if (rawData.size() > 200) {
            throw new ServiceException(MessageUtils.message("excel.import.size.failed", new Object[0]));
        }
        Set<String> codes = Sets.newHashSet(listObjs(Wrappers.<CheckProject>lambdaQuery().select(CheckProject::getCode).eq(CheckProject::getStatus, CommonConstant.ENABLE), String::valueOf));
        Set<String> names = Sets.newHashSet(listObjs(Wrappers.<CheckProject>lambdaQuery().select(CheckProject::getName).eq(CheckProject::getStatus, CommonConstant.ENABLE), String::valueOf));
        Map<String, Set<String>> codeNameMap = (Map<String, Set<String>>)rawData.stream().filter(c -> Func.isNotBlank(c.getProjectCode())).collect(Collectors.groupingBy(CheckProjectImport::getProjectCode,
              Collectors.mapping(v -> v.getProjectCode() + "-" + v.getProjectName() + "-" + v.getRemark(), Collectors.toSet())));
        Map<String, Integer> itemNameCount = (Map<String, Integer>)rawData.stream().filter(c -> Func.isNotBlank(c.getProjectCode())).collect(Collectors.groupingBy(CheckProjectImport::getProjectCode,
              Collectors.mapping(CheckProjectImport::getItemName, Collectors.reducing(Integer.valueOf(0), e -> Integer.valueOf(1), Integer::sum))));
        Map<String, Set<String>> itemNameSet = (Map<String, Set<String>>)rawData.stream().filter(c -> Func.isNotBlank(c.getProjectCode())).collect(Collectors.groupingBy(CheckProjectImport::getProjectCode,
              Collectors.mapping(CheckProjectImport::getItemName, Collectors.toSet())));
        /*
        Set<String> codes = Sets.newHashSet(listObjs((Wrapper) Wrappers.lambdaQuery().select(new SFunction[]{(v0) -> {
            return v0.getCode();
        }}).eq((v0) -> {
@@ -245,6 +274,7 @@
        }, Collectors.mapping((v0) -> {
            return v0.getItemName();
        }, Collectors.toSet())));
        */
        List<CheckProjectImport> failExcel = Lists.newArrayList();
        for (CheckProjectImport data : rawData) {
            validImport(data, codes, names, codeNameMap, itemNameCount, itemNameSet, failExcel);
@@ -254,14 +284,21 @@
            MultipartFile multipartFile = ExcelUtil.exportFillTemplateToMultipartFile(ExcelConstant.DIRECTORY + "checkProjectFailTemplate" + ExcelConstant.SUFFIX, MessageUtils.message("excel.import.failed.report.name", new Object[0]) + ExcelConstant.SUFFIX, "点检项目表", failExcel, (Object) null, (AbstractMergeStrategy) null);
            return this.ossBuilder.tempTemplate().putFile(multipartFile.getOriginalFilename(), multipartFile);
        }
        Map<CheckProject, List<CheckItem>> collect = rawData.stream().collect(Collectors.groupingBy(c -> CheckProject.builder().code(c.getProjectCode()).name(c.getProjectName()).remark(c.getRemark()).build(),
                Collectors.mapping(c -> CheckItem.builder().name(c.getItemName()).valueType(c.getValueType()).requirement(c.getRequirement()).standardValue(c.getStandardValue()).build(),
                  Collectors.toList())));
        /*
        Map<CheckProject, List<CheckItem>> collect = (Map) rawData.stream().collect(Collectors.groupingBy(c4 -> {
            return CheckProject.builder().code(c4.getProjectCode()).name(c4.getProjectName()).remark(c4.getRemark()).build();
        }, Collectors.mapping(c5 -> {
            return CheckItem.builder().name(c5.getItemName()).valueType(c5.getValueType()).requirement(c5.getRequirement()).standardValue(c5.getStandardValue()).build();
        }, Collectors.toList())));
        collect.forEach(project, items -> {
        }, Collectors.toList())));*/
        collect.forEach((project, items) -> {
            save(project);
            List<CheckItem> itemList = (List) items.stream().filter(c6 -> {
            List<CheckItem> itemList = items.stream().filter(c6 -> {
                return Func.isNotBlank(c6.getName());
            }).peek(c7 -> {
                c7.setCheckProjectId(project.getId());
@@ -354,14 +391,17 @@
    }
    private boolean checkStopStatus(String code) {
       CheckProject checkProject = getOne(Wrappers.<CheckProject>lambdaQuery().eq(CheckProject::getCode, code).eq(CheckProject::getStatus, CommonConstant.DEACTIVATE));
       /*
        CheckProject checkProject = (CheckProject) getOne((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> {
            return v0.getCode();
        }, code)).eq((v0) -> {
            return v0.getStatus();
        }, CommonConstant.DEACTIVATE));
        */
        if (checkProject != null) {
            return Boolean.TRUE.booleanValue();
            return true;
        }
        return Boolean.FALSE.booleanValue();
        return false;
    }
}