diff --git a/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java index fae133b2..e4aeb135 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java @@ -1360,7 +1360,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { } private ModelAndView exportExcelByClause(Map parameterMap) { - List advancedSearchClause = getAdvancedSearchClause(parameterMap); + List advancedSearchClause = getAdvancedSearchClauseExport(parameterMap); List> list = new ArrayList<>(); // 标准sheet页 @@ -1586,6 +1586,51 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { return lawsHomeAdvancedSearchClauseVOList; } + public List getAdvancedSearchClauseExport(Map parameterMap) { + List lawsHomeAdvancedSearchClauseVOList = new ArrayList<>(); + List> data = documentSplitService.queryDocumentSplitDetailByHomeListExport(parameterMap); + // 过滤已发布数据 + List infoIdList = data.stream().map(v -> String.valueOf(v.get("info_id"))) + .distinct().collect(Collectors.toList()); + if (CollectionUtils.isEmpty(infoIdList)){ + return lawsHomeAdvancedSearchClauseVOList; + } + List list = sarFileSplitInfoService.list(new LambdaQueryWrapper() + .in(SarFileSplitInfoEO::getId, infoIdList).isNull(SarFileSplitInfoEO::getPublishBeforeId)); + List idList = list.stream().map(v -> v.getId()).collect(Collectors.toList()); + // 根据info_id分组 + if (!data.isEmpty()){ + Map>> groupMap = + data.stream().collect(Collectors.groupingBy(v -> String.valueOf(v.get("info_id")))); + groupMap.forEach((k, v) -> { + if (!idList.contains(k)){ + return; + } + // 封装数据 + SarFileSplitInfoEO sarFileSplitInfoEO = sarFileSplitInfoService.queryById(k); + if (!Objects.isNull(sarFileSplitInfoEO)){ + LawsDomesticStandard lawsDomesticStandard = + lawsDomesticStandardService.getOne(new LambdaQueryWrapper() + .select(LawsDomesticStandard::getStandardNumber, + LawsDomesticStandard::getStandardName) + .eq(LawsDomesticStandard::getId, sarFileSplitInfoEO.getStandardId())); + if (!Objects.isNull(lawsDomesticStandard)){ + LawsHomeAdvancedSearchClauseVO lawsHomeAdvancedSearchClauseVO = + new LawsHomeAdvancedSearchClauseVO(); + lawsHomeAdvancedSearchClauseVO.setStandardId(sarFileSplitInfoEO.getStandardId()); + lawsHomeAdvancedSearchClauseVO.setStandardNumber(lawsDomesticStandard.getStandardNumber()); + lawsHomeAdvancedSearchClauseVO.setStandardName(lawsDomesticStandard.getStandardName()); + lawsHomeAdvancedSearchClauseVO.setStandardNumberAndName( + lawsDomesticStandard.getStandardNumber() + " " + lawsDomesticStandard.getStandardName()); + lawsHomeAdvancedSearchClauseVO.setClauseList(v); + lawsHomeAdvancedSearchClauseVOList.add(lawsHomeAdvancedSearchClauseVO); + } + } + }); + } + return lawsHomeAdvancedSearchClauseVOList; + } + private boolean updateLawsDomesticStandardToEs(String resourceType, String ids,String opType) { // 批量操作 // 从第0个下标开始 diff --git a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandardDetail.java b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandardDetail.java index c424b619..ca272d61 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandardDetail.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandardDetail.java @@ -101,28 +101,28 @@ public class LawsMarketStandardDetail implements Serializable { /** * 新生产车实施日期 */ - @Excel(name = "新生产车实施日期", width = 15) + @Excel(name = "新生产车实施日期", width = 15, mergeVertical = true, mergeRely = 1) @ApiModelProperty(value = "新生产车实施日期") private String newProductImplDate; /** * 新认证车实施日期 */ - @Excel(name = "新认证车实施日期", width = 15) + @Excel(name = "新认证车实施日期", width = 15, mergeVertical = true, mergeRely = 1) @ApiModelProperty(value = "新认证车实施日期") private String newAuthImplDate; /** * 注册日期 */ - @Excel(name = "注册日期", width = 15) + @Excel(name = "注册日期", width = 15, mergeVertical = true, mergeRely = 1) @ApiModelProperty(value = "注册日期") private String registrationDate; /** * 国家 */ - @Excel(name = "适用国家/地区", width = 15,dicCode = "market_state") + @Excel(name = "适用国家/地区", width = 15,dicCode = "market_state", mergeVertical = true, mergeRely = 1) @NotBlank(message = "适用国家/地区不能为空") @ApiModelProperty(value = "国家") @Dict(dicCode = "market_state") @@ -131,7 +131,7 @@ public class LawsMarketStandardDetail implements Serializable { /** * 适用车型 */ - @Excel(name = "适用车型", width = 15, dicCode = "applicable_vehicle_type") + @Excel(name = "适用车型", width = 15, dicCode = "applicable_vehicle_type", mergeVertical = true, mergeRely = 1) @Dict(dicCode = "applicable_vehicle_type") @ApiModelProperty(value = "适用车型") private String applicableVehicle; @@ -141,21 +141,21 @@ public class LawsMarketStandardDetail implements Serializable { */ @ApiModelProperty(value = "认证对象") @Dict(dicCode = "authentication_object") - @Excel(name = "认证对象", width = 15, dicCode = "authentication_object") + @Excel(name = "认证对象", width = 15, dicCode = "authentication_object", mergeVertical = true, mergeRely = 1) private String authenticationObject; /** * 认证交付物 */ @ApiModelProperty(value = "认证交付物") - @Excel(name = "认证交付物", width = 15) + @Excel(name = "认证交付物", width = 15, mergeVertical = true, mergeRely = 1) private String certifyTheDeliverables; /** * 类型 */ @Dict(dicCode = "type") - @Excel(name = "类型", width = 15, dicCode = "type") + @Excel(name = "类型", width = 15, dicCode = "type", mergeVertical = true, mergeRely = 1) @ApiModelProperty(value = "类型") private String type; @@ -164,7 +164,7 @@ public class LawsMarketStandardDetail implements Serializable { */ @Dict(dicCode = "dynamic_type") @ApiModelProperty(value = "动力类型") - @Excel(name = "动力类型", width = 15, dicCode = "dynamic_type") + @Excel(name = "动力类型", width = 15, dicCode = "dynamic_type", mergeVertical = true, mergeRely = 1) private String dynamicType; /** @@ -173,7 +173,7 @@ public class LawsMarketStandardDetail implements Serializable { @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") @ApiModelProperty(value = "主控部门") @NotBlank(message = "主控部门不能为空") - @Excel(name = "主控部门", width = 15,dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") + @Excel(name = "主控部门", width = 15,dictTable = "sys_depart", dicCode = "id", dicText = "depart_name", mergeVertical = true, mergeRely = 1) private String mainDept; /** @@ -182,7 +182,7 @@ public class LawsMarketStandardDetail implements Serializable { @ApiModelProperty(value = "主控部门专业模块") @NotBlank(message = "主控部门专业模块不能为空") @Dict(dicCode = "professional_module") - @Excel(name = "主控部门专业模块", width = 15, dicCode = "professional_module") + @Excel(name = "主控部门专业模块", width = 15, dicCode = "professional_module", mergeVertical = true, mergeRely = 1) private String mainDeptProfMode; /** @@ -190,14 +190,14 @@ public class LawsMarketStandardDetail implements Serializable { */ @Dict(dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") @ApiModelProperty(value = "关联部门") - @Excel(name = "关联部门", width = 15,dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") + @Excel(name = "关联部门", width = 15,dictTable = "sys_depart", dicCode = "id", dicText = "depart_name", mergeVertical = true, mergeRely = 1) private String associateDept; /** * 关联部门专业模块 */ @ApiModelProperty(value = "关联部门专业模块") - @Excel(name = "关联部门专业模块", width = 15, dicCode = "professional_module") + @Excel(name = "关联部门专业模块", width = 15, dicCode = "professional_module", mergeVertical = true, mergeRely = 1) @Dict(dicCode = "professional_module") private String associateDeptProfMode; @@ -205,7 +205,7 @@ public class LawsMarketStandardDetail implements Serializable { * 批量限制 */ @ApiModelProperty(value = "批量限制") - @Excel(name = "批量限制", width = 15, dicCode = "batch_restriction") + @Excel(name = "批量限制", width = 15, dicCode = "batch_restriction", mergeVertical = true, mergeRely = 1) @Dict(dicCode = "batch_restriction") private String batchLimit; @@ -214,7 +214,7 @@ public class LawsMarketStandardDetail implements Serializable { */ @Dict(dicCode = "automatic_driving_level") @ApiModelProperty(value = "自动驾驶等级") - @Excel(name = "自动驾驶等级", width = 15,dicCode = "automatic_driving_level") + @Excel(name = "自动驾驶等级", width = 15,dicCode = "automatic_driving_level", mergeVertical = true, mergeRely = 1) private String autopilotLevel; /** @@ -222,13 +222,13 @@ public class LawsMarketStandardDetail implements Serializable { */ @Dict(dicCode = "requirement_type") @ApiModelProperty(value = "要求类型") - @Excel(name = "要求类型", width = 15,dicCode = "requirement_type") + @Excel(name = "要求类型", width = 15,dicCode = "requirement_type", mergeVertical = true, mergeRely = 1) private String requireType; /** * 备注 */ @ApiModelProperty(value = "备注") - @Excel(name = "备注", width = 15) + @Excel(name = "备注", width = 15, mergeVertical = true, mergeRely = 1) private String remark; diff --git a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/impl/LawsMarketStandardServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/impl/LawsMarketStandardServiceImpl.java index d09a08b7..e2c7b265 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/impl/LawsMarketStandardServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/impl/LawsMarketStandardServiceImpl.java @@ -39,6 +39,7 @@ import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.lang.reflect.Field; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -310,11 +311,11 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.in(LawsMarketStandardDetail::getManifestId, listIds); wrapper.orderByDesc(LawsMarketStandardDetail::getStandardNumber); - wrapper.orderByDesc(LawsMarketStandardDetail::getCreateTime); listLawsMarketStandardDetail = lawsMarketStandardDetailService.list(wrapper); } - listLawsMarketStandardDetail = listLawsMarketStandardDetail.stream() - .sorted(Comparator.comparing(LawsMarketStandardDetail::getStandardNumber).reversed()).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(listLawsMarketStandardDetail)){ + replaceNullFieldsWithOne(listLawsMarketStandardDetail); + } // AutoPoi 导出Excel ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); @@ -329,6 +330,32 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl list) { + for (LawsMarketStandardDetail obj : list) { + Class clazz = obj.getClass(); + Field[] fields = clazz.getDeclaredFields(); + // 遍历所有字段 + for (Field field : fields) { + // 设置访问权限 + field.setAccessible(true); + try { + Object fieldValue = field.get(obj); + // 检查字段值是否为 null 或空字符串 + if (fieldValue == null || (fieldValue instanceof String && ((String) fieldValue).trim().isEmpty())) { + // 根据字段类型赋值 + if (field.getType().equals(Integer.class) || field.getType().equals(int.class)) { + field.set(obj, 1); + } else if (field.getType().equals(String.class)) { + field.set(obj, "—"); + } + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + } + @Override public Result deleteById(String id) { LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();