diff --git a/laws-base/laws-base-core/src/main/java/com/jero/common/api/vo/ResultCommon.java b/laws-base/laws-base-core/src/main/java/com/jero/common/api/vo/ResultCommon.java index 3a6b494c..21ae52e9 100644 --- a/laws-base/laws-base-core/src/main/java/com/jero/common/api/vo/ResultCommon.java +++ b/laws-base/laws-base-core/src/main/java/com/jero/common/api/vo/ResultCommon.java @@ -177,4 +177,22 @@ public class ResultCommon { public static final String PROCESS_ALREADY_DISTRIBUTED = "process.already.distributed"; // 不是会签节点任务 public static final String PROCESS_NOT_COUNTERSIGNATURE = "process.not.countersignature"; + + // 数据已发布 + public static final String DATA_PUBLISHED = "data.published"; + // 版本不存在 + public static final String VERSION_DOES_NOT_EXIST = "version.does.not.exist"; + // 请导入excel文件 + public static final String IMPORT_THE_EXCEL_FILE = "import.the.excel.file"; + // 标准编号重复 + public static final String DUPLICATE_STANDARD_NUMBER = "duplicate.standard.number"; + // 标准编号已存在 + public static final String STANDARD_NUMBER_ALREADY_EXISTS = "standard.number.already.exists"; + // {0}格式错误 + public static final String FORMATTING_ERROR = "formatting.error"; + // {0}数据不存在 + public static final String DATA_DOES_NOT_EXIST = "data.does.not.exist"; + // 第{0}行 + public static final String ROW_N_IMPORT = "row.n.import"; + } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java index 148475b4..29fcf6d2 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java @@ -77,6 +77,7 @@ import org.apache.shiro.SecurityUtils; import org.jeecgframework.poi.excel.annotation.Excel; import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -2767,7 +2768,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService { } ObjectMapper mapper = new ObjectMapper(); String json; - String jsonError = "json解析失败"; + String jsonError = ResultCommon.ERROR; try { json = mapper.writeValueAsString(record); } catch (JsonProcessingException e) { @@ -2781,7 +2782,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService { log.error(jsonError + e.getMessage(), e); throw new JeroBootException(jsonError); } - + Locale locale = LocaleContextHolder.getLocale(); for (Field field : oConvertUtils.getAllFields(record)) { field.setAccessible(true); if (field.getAnnotation(Excel.class) != null) { @@ -2799,7 +2800,11 @@ public class LawsCommonServiceImpl implements ILawsCommonService { } String textValue = translateDictValue(code, text, table, key, listDict); if(StringUtils.isBlank(textValue)){ - msg.append(name).append("数据不存在,"); + String[] str1 = name.split("\\("); + String en = str1.length > 1 ? str1[1].split("\\)")[0] : str1[0]; + String zh = str1[0]; + name = Objects.equals(locale,Locale.ENGLISH) ? en : zh; + msg.append(MessageUtils.getMessage(ResultCommon.DATA_DOES_NOT_EXIST,name)).append(","); } } } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/controller/MarketStandardDetailController.java b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/controller/MarketStandardDetailController.java index 9466b43d..f6cd2aef 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/controller/MarketStandardDetailController.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/controller/MarketStandardDetailController.java @@ -2,6 +2,7 @@ package com.jero.modules.laws.marketStandard.controller; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.jero.common.api.vo.Result; +import com.jero.common.api.vo.ResultCommon; import com.jero.common.aspect.annotation.AutoLog; import com.jero.common.aspect.annotation.Translation; import com.jero.modules.laws.marketStandard.entity.LawsMarketStandardDetail; @@ -111,10 +112,10 @@ public class MarketStandardDetailController { @RequiresPermissions("marketStandard:detail:operate") public Result copy(@RequestBody Map map) { if (!map.containsKey("newId") || StringUtils.isEmpty(map.get("newId"))) { - return Result.error("请选择数据!"); + return Result.error(ResultCommon.SELECT_DATA); } if (!map.containsKey("oldId") || StringUtils.isEmpty(map.get("oldId"))) { - return Result.error("请选择数据!"); + return Result.error(ResultCommon.SELECT_DATA); } return lawsMarketStandardDetailService.copy(map.get("oldId"),map.get("newId")); } @@ -163,7 +164,7 @@ public class MarketStandardDetailController { @RequiresPermissions("marketStandard:detail:operate") public Result delete(@RequestBody Map map) { if (!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))) { - return Result.error("请选择数据!"); + return Result.error(ResultCommon.SELECT_DATA); } return lawsMarketStandardDetailService.deleteById(map.get("id")); } @@ -181,7 +182,7 @@ public class MarketStandardDetailController { @RequiresPermissions("marketStandard:detail:operate") public Result deleteBatch(@RequestBody Map map) { if (!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))) { - return Result.error("请选择数据!"); + return Result.error(ResultCommon.SELECT_DATA); } return lawsMarketStandardDetailService.deleteBatchById(map.get("ids")); } 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 ae1737bb..2a8fa6fd 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 @@ -80,7 +80,7 @@ public class LawsMarketStandardDetail implements Serializable { */ @NotBlank(message = "标准编号不能为空") @ApiModelProperty(value = "标准编号") - @Excel(name = "标准编号", width = 15) + @Excel(name = "标准编号(Regulation No.)", width = 15) private String standardNumber; /** @@ -88,20 +88,20 @@ public class LawsMarketStandardDetail implements Serializable { */ @ApiModelProperty(value = "标准名称") @NotBlank(message = "标准名称不能为空") - @Excel(name = "标准名称", width = 15) + @Excel(name = "标准名称(Regulation Name)", width = 15) private String standardName; /** * 标准英文名称 */ @ApiModelProperty(value = "标准英文名称") - @Excel(name = "标准英文名称", width = 15) + @Excel(name = "标准英文名称(Regulation English Name)", width = 15) private String standardEnglishName; /** * 新生产车实施日期 */ - @Excel(name = "新生产车实施日期", width = 15) + @Excel(name = "新生产车实施日期(New Production Vehicle Implementation Date)", width = 15) @NotBlank(message = "新生产车实施日期不能为空") @ApiModelProperty(value = "新生产车实施日期") private String newProductImplDate; @@ -109,7 +109,7 @@ public class LawsMarketStandardDetail implements Serializable { /** * 新认证车实施日期 */ - @Excel(name = "新认证车实施日期", width = 15) + @Excel(name = "新认证车实施日期(New Certified Vehicle Implementation Date)", width = 15) @NotBlank(message = "新认证车实施日期不能为空") @ApiModelProperty(value = "新认证车实施日期") private String newAuthImplDate; @@ -117,7 +117,7 @@ public class LawsMarketStandardDetail implements Serializable { /** * 注册日期 */ - @Excel(name = "注册日期", width = 15) + @Excel(name = "注册日期(Registration Date)", width = 15) @NotBlank(message = "注册日期不能为空") @ApiModelProperty(value = "注册日期") private String registrationDate; @@ -125,7 +125,7 @@ public class LawsMarketStandardDetail implements Serializable { /** * 国家 */ - @Excel(name = "适用国家/地区", width = 15,dicCode = "market_state") + @Excel(name = "适用国家/地区(Country/Region)", width = 15,dicCode = "market_state") @NotBlank(message = "适用国家/地区不能为空") @ApiModelProperty(value = "国家") @Dict(dicCode = "market_state") @@ -134,7 +134,7 @@ public class LawsMarketStandardDetail implements Serializable { /** * 适用车型 */ - @Excel(name = "适用车型", width = 15, dicCode = "applicable_vehicle_type") + @Excel(name = "适用车型(Vehicle Catagory)", width = 15, dicCode = "applicable_vehicle_type") @Dict(dicCode = "applicable_vehicle_type") @ApiModelProperty(value = "适用车型") private String applicableVehicle; @@ -150,21 +150,21 @@ public class LawsMarketStandardDetail implements Serializable { */ @ApiModelProperty(value = "认证对象") @Dict(dicCode = "authentication_object") - @Excel(name = "认证对象", width = 15, dicCode = "authentication_object") + @Excel(name = "认证对象(Certification Item)", width = 15, dicCode = "authentication_object") private String authenticationObject; /** * 认证交付物 */ @ApiModelProperty(value = "认证交付物") - @Excel(name = "认证交付物", width = 15) + @Excel(name = "认证交付物(Verification)", width = 15) private String certifyTheDeliverables; /** * 类型 */ @Dict(dicCode = "type") - @Excel(name = "类型", width = 15, dicCode = "type") + @Excel(name = "类型(Type)", width = 15, dicCode = "type") @ApiModelProperty(value = "类型") private String type; @@ -173,7 +173,7 @@ public class LawsMarketStandardDetail implements Serializable { */ @Dict(dicCode = "dynamic_type") @ApiModelProperty(value = "动力类型") - @Excel(name = "动力类型", width = 15, dicCode = "dynamic_type") + @Excel(name = "动力类型(Power Propulsion Type)", width = 15, dicCode = "dynamic_type") private String dynamicType; /** @@ -182,7 +182,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 = "主控部门(Main Responsible Dept.)", width = 15,dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") private String mainDept; /** @@ -191,7 +191,7 @@ public class LawsMarketStandardDetail implements Serializable { @ApiModelProperty(value = "主控部门专业模块") @NotBlank(message = "主控部门专业模块不能为空") @Dict(dicCode = "professional_module") - @Excel(name = "主控部门专业模块", width = 15, dicCode = "professional_module") + @Excel(name = "主控部门专业模块(Module of Main Responsible Dept.)", width = 15, dicCode = "professional_module") private String mainDeptProfMode; /** @@ -199,14 +199,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 = "关联部门(Related Dept.)", width = 15,dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") private String associateDept; /** * 关联部门专业模块 */ @ApiModelProperty(value = "关联部门专业模块") - @Excel(name = "关联部门专业模块", width = 15, dicCode = "professional_module") + @Excel(name = "关联部门专业模块(Module of Related Dept.)", width = 15, dicCode = "professional_module") @Dict(dicCode = "professional_module") private String associateDeptProfMode; @@ -214,7 +214,7 @@ public class LawsMarketStandardDetail implements Serializable { * 批量限制 */ @ApiModelProperty(value = "批量限制") - @Excel(name = "批量限制", width = 15, dicCode = "batch_restriction") + @Excel(name = "批量限制(Production Amount)", width = 15, dicCode = "batch_restriction") @Dict(dicCode = "batch_restriction") private String batchLimit; @@ -223,7 +223,7 @@ public class LawsMarketStandardDetail implements Serializable { */ @Dict(dicCode = "automatic_driving_level") @ApiModelProperty(value = "自动驾驶等级") - @Excel(name = "自动驾驶等级", width = 15,dicCode = "automatic_driving_level") + @Excel(name = "自动驾驶等级(Automatic Driving Level)", width = 15,dicCode = "automatic_driving_level") private String autopilotLevel; /** @@ -231,7 +231,7 @@ public class LawsMarketStandardDetail implements Serializable { */ @Dict(dicCode = "requirement_type") @ApiModelProperty(value = "要求类型") - @Excel(name = "要求类型", width = 15,dicCode = "requirement_type") + @Excel(name = "要求类型(Optional/Compulsory)", width = 15,dicCode = "requirement_type") private String requireType; diff --git a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandardDetailExcel.java b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandardDetailExcel.java index ec5c4723..d7aef1a8 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandardDetailExcel.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/entity/LawsMarketStandardDetailExcel.java @@ -78,7 +78,7 @@ public class LawsMarketStandardDetailExcel implements Serializable { */ @NotBlank(message = "标准编号不能为空") @ApiModelProperty(value = "标准编号") - @Excel(name = "*标准编号", width = 15) + @Excel(name = "*标准编号(Regulation No.)", width = 15) private String standardNumber; /** @@ -86,20 +86,20 @@ public class LawsMarketStandardDetailExcel implements Serializable { */ @ApiModelProperty(value = "标准名称") @NotBlank(message = "标准名称不能为空") - @Excel(name = "*标准名称", width = 15) + @Excel(name = "*标准名称(Regulation Name)", width = 15) private String standardName; /** * 标准英文名称 */ @ApiModelProperty(value = "标准英文名称") - @Excel(name = "标准英文名称", width = 15) + @Excel(name = "标准英文名称(Regulation English Name)", width = 15) private String standardEnglishName; /** * 新生产车实施日期 */ - @Excel(name = "*新生产车实施日期", width = 15) + @Excel(name = "*新生产车实施日期(New Production Vehicle Implementation Date)", width = 15) @NotBlank(message = "新生产车实施日期不能为空") @ApiModelProperty(value = "新生产车实施日期") private String newProductImplDate; @@ -107,7 +107,7 @@ public class LawsMarketStandardDetailExcel implements Serializable { /** * 新认证车实施日期 */ - @Excel(name = "*新认证车实施日期", width = 15) + @Excel(name = "*新认证车实施日期(New Certified Vehicle Implementation Date)", width = 15) @NotBlank(message = "新认证车实施日期不能为空") @ApiModelProperty(value = "新认证车实施日期") private String newAuthImplDate; @@ -115,7 +115,7 @@ public class LawsMarketStandardDetailExcel implements Serializable { /** * 注册日期 */ - @Excel(name = "*注册日期", width = 15) + @Excel(name = "*注册日期(Registration Date)", width = 15) @NotBlank(message = "注册日期不能为空") @ApiModelProperty(value = "注册日期") private String registrationDate; @@ -123,7 +123,7 @@ public class LawsMarketStandardDetailExcel implements Serializable { /** * 国家 */ - @Excel(name = "*适用国家/地区", width = 15,dicCode = "market_state") + @Excel(name = "*适用国家/地区(Country/Region)", width = 15,dicCode = "market_state") @NotBlank(message = "适用国家/地区不能为空") @ApiModelProperty(value = "国家") @Dict(dicCode = "market_state") @@ -132,7 +132,7 @@ public class LawsMarketStandardDetailExcel implements Serializable { /** * 适用车型 */ - @Excel(name = "适用车型", width = 15, dicCode = "applicable_vehicle_type") + @Excel(name = "适用车型(Vehicle Catagory)", width = 15, dicCode = "applicable_vehicle_type") @Dict(dicCode = "applicable_vehicle_type") @ApiModelProperty(value = "适用车型") private String applicableVehicle; @@ -148,21 +148,21 @@ public class LawsMarketStandardDetailExcel implements Serializable { */ @ApiModelProperty(value = "认证对象") @Dict(dicCode = "authentication_object") - @Excel(name = "认证对象", width = 15, dicCode = "authentication_object") + @Excel(name = "认证对象(Certification Item)", width = 15, dicCode = "authentication_object") private String authenticationObject; /** * 认证交付物 */ @ApiModelProperty(value = "认证交付物") - @Excel(name = "认证交付物", width = 15) + @Excel(name = "认证交付物(Verification)", width = 15) private String certifyTheDeliverables; /** * 类型 */ @Dict(dicCode = "type") - @Excel(name = "类型", width = 15, dicCode = "type") + @Excel(name = "类型(Type)", width = 15, dicCode = "type") @ApiModelProperty(value = "类型") private String type; @@ -171,7 +171,7 @@ public class LawsMarketStandardDetailExcel implements Serializable { */ @Dict(dicCode = "dynamic_type") @ApiModelProperty(value = "动力类型") - @Excel(name = "动力类型", width = 15, dicCode = "dynamic_type") + @Excel(name = "动力类型(Power Propulsion Type)", width = 15, dicCode = "dynamic_type") private String dynamicType; /** @@ -180,7 +180,7 @@ public class LawsMarketStandardDetailExcel 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 = "*主控部门(Main Responsible Dept.)", width = 15,dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") private String mainDept; /** @@ -189,7 +189,7 @@ public class LawsMarketStandardDetailExcel implements Serializable { @ApiModelProperty(value = "主控部门专业模块") @NotBlank(message = "主控部门专业模块不能为空") @Dict(dicCode = "professional_module") - @Excel(name = "*主控部门专业模块", width = 15, dicCode = "professional_module") + @Excel(name = "*主控部门专业模块(Module of Main Responsible Dept.)", width = 15, dicCode = "professional_module") private String mainDeptProfMode; /** @@ -197,14 +197,14 @@ public class LawsMarketStandardDetailExcel 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 = "关联部门(Related Dept.)", width = 15,dictTable = "sys_depart", dicCode = "id", dicText = "depart_name") private String associateDept; /** * 关联部门专业模块 */ @ApiModelProperty(value = "关联部门专业模块") - @Excel(name = "关联部门专业模块", width = 15, dicCode = "professional_module") + @Excel(name = "关联部门专业模块(Module of Related Dept.)", width = 15, dicCode = "professional_module") @Dict(dicCode = "professional_module") private String associateDeptProfMode; @@ -212,7 +212,7 @@ public class LawsMarketStandardDetailExcel implements Serializable { * 批量限制 */ @ApiModelProperty(value = "批量限制") - @Excel(name = "批量限制", width = 15, dicCode = "batch_restriction") + @Excel(name = "批量限制(Production Amount)", width = 15, dicCode = "batch_restriction") @Dict(dicCode = "batch_restriction") private String batchLimit; @@ -221,7 +221,7 @@ public class LawsMarketStandardDetailExcel implements Serializable { */ @Dict(dicCode = "automatic_driving_level") @ApiModelProperty(value = "自动驾驶等级") - @Excel(name = "自动驾驶等级", width = 15,dicCode = "automatic_driving_level") + @Excel(name = "自动驾驶等级(Automatic Driving Level)", width = 15,dicCode = "automatic_driving_level") private String autopilotLevel; /** @@ -229,7 +229,7 @@ public class LawsMarketStandardDetailExcel implements Serializable { */ @Dict(dicCode = "requirement_type") @ApiModelProperty(value = "要求类型") - @Excel(name = "要求类型", width = 15,dicCode = "requirement_type") + @Excel(name = "要求类型(Optional/Compulsory)", width = 15,dicCode = "requirement_type") private String requireType; diff --git a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/impl/LawsMarketStandardDetailServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/impl/LawsMarketStandardDetailServiceImpl.java index a6d93b38..5f7c05c9 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/impl/LawsMarketStandardDetailServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/marketStandard/service/impl/LawsMarketStandardDetailServiceImpl.java @@ -6,11 +6,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.api.vo.Result; +import com.jero.common.api.vo.ResultCommon; import com.jero.common.exception.JeroBootException; import com.jero.common.system.base.controller.JeroController; import com.jero.common.system.query.QueryGenerator; import com.jero.common.system.vo.LoginUser; import com.jero.common.util.ImportExcelUtil; +import com.jero.common.util.MessageUtils; import com.jero.modules.laws.common.service.ILawsCommonService; import com.jero.modules.laws.marketStandard.constans.MarketStandardConstants; import com.jero.modules.laws.marketStandard.entity.LawsMarketStandard; @@ -26,6 +28,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.annotation.Excel; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ImportParams; @@ -33,6 +36,7 @@ import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -42,9 +46,11 @@ import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.validation.ConstraintViolation; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.lang.reflect.Field; import java.util.*; import java.util.stream.Collectors; @@ -64,12 +70,6 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl listLawsMarketStandardOld = marketStandardService .listByIds(Arrays.asList(manifestId.split(","))); if(CollectionUtils.isEmpty(listLawsMarketStandardOld)){ - return Result.error(NOT_DATA); + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } for (LawsMarketStandard lawsMarketStandard : listLawsMarketStandardOld) { // 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除 @@ -109,7 +109,7 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl getList(String manifestId,String manifestVersion) { if(StringUtils.isBlank(manifestId)){ - return Result.error("id不能为空"); + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } if(!StringUtils.isBlank(manifestVersion)){ LawsMarketStandard lawsMarketStandardOld = marketStandardService.getById(manifestId); if(Objects.isNull(lawsMarketStandardOld)){ - return Result.error(NOT_DATA); + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } LambdaQueryWrapper queryLawsMarketStandard = new LambdaQueryWrapper<>(); queryLawsMarketStandard.eq(LawsMarketStandard::getManifestNo,lawsMarketStandardOld.getManifestNo()); queryLawsMarketStandard.eq(LawsMarketStandard::getManifestVersion,manifestVersion); LawsMarketStandard lawsMarketStandard = marketStandardService.getOne(queryLawsMarketStandard,false); if(Objects.isNull(lawsMarketStandard)){ - return Result.error(manifestVersion + VERSION_NOT); + return Result.error(manifestVersion + ResultCommon.VERSION_DOES_NOT_EXIST); } manifestId = lawsMarketStandard.getId(); } @@ -166,7 +166,7 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl importExcel(MultipartFile file,String manifestId) { LawsMarketStandard lawsMarketStandardOld = marketStandardService.getById(manifestId); if(Objects.isNull(lawsMarketStandardOld)){ - return Result.error(NOT_DATA); + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } // 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除 LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); @@ -174,11 +174,11 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl listLawsMarketStandardDetailExcel = getLawsMarketStandardDetailExcels(file, params); if(CollectionUtils.isEmpty(listLawsMarketStandardDetailExcel)){ - return Result.error("导入数据为空"); + return Result.error(ResultCommon.IMPORT_DATA_CANNOT_BE_EMPTY); } List listLawsMarketStandardDetail = JSON.parseArray( JSON.toJSONString(listLawsMarketStandardDetailExcel),LawsMarketStandardDetail.class); @@ -212,10 +212,10 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl listLawsMarketStandardDetail, List listIdsStandard) { + private StringBuilder getStringBuilder(String manifestId, + List listLawsMarketStandardDetail, + List listIdsStandard) { StringBuilder m = new StringBuilder(); // 获取当前清单的标准 List listStandardIds = getStandardIds(manifestId); @@ -237,33 +239,36 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl op = listIdsStandard.stream().filter(o-> Objects.equals(o.getStandardNumber(),p.getStandardNumber())).findFirst(); if(!op.isPresent()){ - s.append("标准编号不存在,"); + String name = ValidUtil.getAnnotation(LawsMarketStandardDetail.class,"standardNumber"); + s.append(MessageUtils.getMessage(ResultCommon.DATA_DOES_NOT_EXIST,name)).append(","); }else{ checkStandard(listStandardIds, listStandardIdRepeat, p, s, op); } } } if(!StringUtils.isBlank(s.toString())){ - m.append("第").append(i + 4).append("行,").append(s.toString(), 0, s.toString().length() - 1) - .append("
"); + m.append(MessageUtils.getMessage(ResultCommon.ROW_N_IMPORT,i + 4)).append(",") + .append(s.toString(), 0, s.toString().length() - 1).append("
"); } } return m; } - private void checkStandard(List listStandardIds, List listStandardIdRepeat, LawsMarketStandardDetail p, StringBuilder s, Optional op) { + private void checkStandard(List listStandardIds, List listStandardIdRepeat, + LawsMarketStandardDetail p, StringBuilder s, Optional op) { if(!op.isPresent()){ return; } @@ -271,23 +276,26 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl 0){ - return Result.error("标准已存在"); + return Result.error(ResultCommon.STANDARD_NUMBER_ALREADY_EXISTS); } save(marketStandardDetail); // 更细状态 marketStandardService.updateStatus(marketStandardDetail.getManifestId()); - return Result.OK("操作成功"); + return Result.OK(ResultCommon.OK); } @Override public Result batchAdd(List list) { if(CollectionUtils.isEmpty(list)){ - return Result.error("数据不能为空"); + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } long l = list.stream().filter(o->StringUtils.isBlank(o.getManifestId())).count(); if(l > 0){ - return Result.error("数据异常"); + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } List listManifestId = list.stream().map(LawsMarketStandardDetail::getManifestId) .collect(Collectors.toList()); listManifestId = listManifestId.stream().distinct().collect(Collectors.toList()); if(listManifestId.size() > 1){ - return Result.error("数据异常"); + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } String manifestId = listManifestId.get(0); LawsMarketStandard lawsMarketStandard = marketStandardService.getById(manifestId); if(Objects.isNull(lawsMarketStandard)){ - return Result.error(NOT_DATA); + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } // 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除 LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); @@ -421,7 +435,7 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl listStandardId = list.stream().map(LawsMarketStandardDetail::getStandardId).collect(Collectors.toList()); @@ -435,28 +449,28 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl!listIds.contains(o.getStandardId())).collect(Collectors.toList()); } saveBatch(list); - return Result.OK("操作成功"); + return Result.OK(ResultCommon.OK); } @Override public synchronized Result copy(String oldId,String newId) { LawsMarketStandard lawsMarketStandard = marketStandardService.getById(newId); if(Objects.isNull(lawsMarketStandard)){ - return Result.error(NOT_DATA); + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin) && !Arrays.stream(sysUser.getRoleIds().split(",")).anyMatch(otherAdmin::contains) && !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin) && !Objects.equals(lawsMarketStandard.getAuthor(),sysUser.getId())){ - return Result.error(NO_PERMISSIONS); + return Result.error(ResultCommon.NO_PERMISSION); } LambdaQueryWrapper queryOld = new LambdaQueryWrapper<>(); queryOld.in(LawsMarketStandardDetail::getManifestId,Arrays.asList(oldId.split(","))); queryOld.groupBy(LawsMarketStandardDetail::getStandardId); List listOld = list(queryOld); if(CollectionUtils.isEmpty(listOld)){ - return Result.error(NOT_DATA); + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } LambdaQueryWrapper queryNew = new LambdaQueryWrapper<>(); queryNew.eq(LawsMarketStandardDetail::getManifestId,newId); @@ -466,11 +480,11 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl!listStandardId.contains(o.getStandardId())).collect(Collectors.toList()); } if(CollectionUtils.isEmpty(listOld)){ - return Result.error("没有可复制的数据"); + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } setData(newId, listOld); saveBatch(listOld); - return Result.OK("操作成功"); + return Result.OK(ResultCommon.OK); } private void setData(String newId, List listOld) { @@ -489,14 +503,14 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl edit(LawsMarketStandardDetail marketStandardDetail) { LawsMarketStandard lawsMarketStandard = marketStandardService.getById(marketStandardDetail.getManifestId()); if(Objects.isNull(lawsMarketStandard)){ - return Result.error(NOT_DATA); + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin) && !Arrays.stream(sysUser.getRoleIds().split(",")).anyMatch(otherAdmin::contains) && !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin) && !Objects.equals(lawsMarketStandard.getAuthor(),sysUser.getId())){ - return Result.error(NO_PERMISSIONS); + return Result.error(ResultCommon.NO_PERMISSION); } LambdaQueryWrapper queryLawsMarketStandardDetail = new LambdaQueryWrapper<>(); queryLawsMarketStandardDetail.eq(LawsMarketStandardDetail::getStandardId,marketStandardDetail.getStandardId()); @@ -504,12 +518,12 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl 0){ - return Result.error("标准已存在"); + return Result.error(ResultCommon.EXIST_STANDARD_NUMBER); } updateById(marketStandardDetail); // 更细状态 marketStandardService.updateStatus(marketStandardDetail.getManifestId()); - return Result.OK("操作成功"); + return Result.OK(ResultCommon.OK); } @Override @@ -518,12 +532,12 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl queryById(String id) { LawsMarketStandardDetail lawsMarketStandardDetail = getById(id); if(Objects.isNull(lawsMarketStandardDetail)){ - return Result.error(NOT_DATA); + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } LawsMarketStandard lawsMarketStandard = marketStandardService.getById(lawsMarketStandardDetail.getManifestId()); if(Objects.isNull(lawsMarketStandard)){ - return Result.error(NOT_DATA); + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); if(!Arrays.asList(sysUser.getRoleIds().split(",")).contains(lawsAdmin) - && !Arrays.stream(sysUser.getRoleIds().split(",")).anyMatch(otherAdmin::contains) + && Arrays.stream(sysUser.getRoleIds().split(",")).noneMatch(otherAdmin::contains) && !Arrays.asList(sysUser.getRoleIds().split(",")).contains(superAdmin) && !Objects.equals(lawsMarketStandard.getAuthor(),sysUser.getId()) && !Objects.equals(lawsMarketStandard.getManifestStatus(),MarketStandardConstants.MANIFEST_STATUS_PUBLISH)){ - return Result.error(NO_PERMISSIONS); + return Result.error(ResultCommon.NO_PERMISSION); } return Result.OK(lawsMarketStandardDetail); } @@ -591,12 +605,12 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl listLawsMarketStandardOld = marketStandardService .listByIds(Arrays.asList(manifestId.split(","))); if(CollectionUtils.isEmpty(listLawsMarketStandardOld)){ - throw new JeroBootException(NOT_DATA); + throw new JeroBootException(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } for (LawsMarketStandard lawsMarketStandard : listLawsMarketStandardOld) { // 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除 @@ -607,7 +621,7 @@ public class LawsMarketStandardDetailServiceImpl extends ServiceImpl listLawsMarketStandard = list(queryLawsMarketStandard); if(CollectionUtils.isEmpty(listLawsMarketStandard)){ - return Result.error("数据不存在"); + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } // 删除版本标识下所有数据 LambdaUpdateWrapper updateLawsMarketStandard = new LambdaUpdateWrapper<>(); @@ -340,7 +340,7 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.in(LawsMarketStandardDetail::getManifestId, listIds); lawsMarketStandardDetailService.remove(wrapper); - return Result.OK("删除成功!"); + return Result.OK(ResultCommon.SUCCESSFULLY_DELETED); } @Override @@ -348,7 +348,7 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); @@ -364,7 +364,7 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl(); idList.add(manifest.getId()); @@ -420,7 +420,7 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl queryLawsMarketStandard = new LambdaQueryWrapper<>(); queryLawsMarketStandard.eq(LawsMarketStandard::getVersionFlag,lawsMarketStandard.getVersionFlag()); @@ -433,7 +433,7 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl checkPublish(String id) { LawsMarketStandard lawsMarketStandardOld = getById(id); if(Objects.isNull(lawsMarketStandardOld)){ - return Result.error("数据不存在"); + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } // 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除 LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); @@ -441,13 +441,13 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl publish(String id) { LawsMarketStandard lawsMarketStandardOld = getById(id); if(Objects.isNull(lawsMarketStandardOld)){ - return Result.error("数据不存在"); + return Result.error(ResultCommon.NO_CORRESPONDING_DATA_FOUND); } // 已发布的清单所有人都可以查看,未发布的数据只能作者和管理管查看、编辑、删除 LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); if(Objects.equals(lawsMarketStandardOld.getManifestStatus(),MarketStandardConstants.MANIFEST_STATUS_PUBLISH)){ - return Result.error("数据已发布"); + return Result.error(ResultCommon.DATA_PUBLISHED); } LambdaQueryWrapper queryLawsMarketStandard = new LambdaQueryWrapper<>(); queryLawsMarketStandard.eq(LawsMarketStandard::getVersionFlag,lawsMarketStandardOld.getVersionFlag()); @@ -482,7 +482,7 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl listLawsMarketStandardDetail = lawsMarketStandardDetailService .list(queryLawsMarketStandardDetail); if(CollectionUtils.isEmpty(listLawsMarketStandardDetail)){ - return Result.OK("发布成功"); + return Result.OK(ResultCommon.OK); } List listLawsDomesticStandard = new ArrayList<>(); String country = lawsMarketStandardOld.getCountry(); @@ -496,7 +496,8 @@ public class LawsMarketStandardServiceImpl extends ServiceImpl getManifestNo(LawsMarketStandard marketStandard) { if(StringUtils.isEmpty(marketStandard.getCountry())){ - Result.error("请选择国家/地区"); + return Result.error(ResultCommon.SELECT_DATA); } List listCountry = marketStandardMapper.getOneByEnBase(Arrays.asList(marketStandard.getCountry().split(","))); if(CollectionUtils.isEmpty(listCountry)){ diff --git a/laws-modules/src/main/java/com/jero/modules/laws/utils/ValidUtil.java b/laws-modules/src/main/java/com/jero/modules/laws/utils/ValidUtil.java index 926d00b7..8018eb3f 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/utils/ValidUtil.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/utils/ValidUtil.java @@ -1,29 +1,20 @@ package com.jero.modules.laws.utils; -import com.alibaba.fastjson.JSONObject; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.jero.common.aspect.annotation.Dict; -import com.jero.common.constant.CommonConstant; +import com.jero.common.api.vo.ResultCommon; import com.jero.common.exception.JeroBootException; -import com.jero.common.system.api.ISysBaseAPI; -import com.jero.common.system.vo.SysDictItemCore; -import com.jero.common.util.oConvertUtils; +import com.jero.common.util.MessageUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.springframework.util.CollectionUtils; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.util.ReflectionUtils; -import javax.annotation.Resource; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; +import javax.validation.constraints.NotBlank; import java.lang.reflect.Field; -import java.text.SimpleDateFormat; import java.util.*; -import java.util.stream.Collectors; /** * 手动校验@Vaild方法 @@ -98,6 +89,38 @@ public class ValidUtil { return msg; } + /** + * @Description 校验不能为空 + * @Author lqt + * @Date 2021/8/26 + * @Param object 对象 + * @Return StringBuilder + */ + public static StringBuilder validateReturnBuilderIsNotBlank(Object object, Class... groups){ + StringBuilder msg = new StringBuilder(); + Set> set = validator.validate(object, groups); + if(set != null && set.size() >0 ){ + Field[] fields = object.getClass().getDeclaredFields(); + setField(object, fields); + Locale locale = LocaleContextHolder.getLocale(); + for (Field field : fields) { + for(ConstraintViolation constraintViolation : set){ + if(Objects.equals(constraintViolation.getPropertyPath().toString(),field.getName())){ + if (field.isAnnotationPresent(Excel.class) && field.isAnnotationPresent(NotBlank.class)) { + String name = field.getAnnotation(Excel.class).name(); + String[] str1 = name.split("\\("); + String en = str1.length > 1 ? str1[1].split("\\)")[0] : str1[0]; + String zh = str1[0]; + name = Objects.equals(locale,Locale.ENGLISH) ? en : zh; + msg.append(MessageUtils.getMessage(ResultCommon.EMPTY_COMMON,name)).append(","); + } + } + } + } + } + return msg; + } + private static void setField(Object object, Field[] fields) { for (Field field : fields) { try { @@ -133,4 +156,33 @@ public class ValidUtil { } return msg; } + + + /** + * 获取指定类的指定字段上的注解 + * + * @param clazz 要检查的类 + * @param fieldName 字段名 + */ + public static String getAnnotation(Class clazz, String fieldName) { + try { + Locale locale = LocaleContextHolder.getLocale(); + // 获取字段 + Field field = clazz.getDeclaredField(fieldName); + // 检查字段是否有 MyAnnotation 注解 + if (field.isAnnotationPresent(Excel.class)) { + // 获取注解实例 + Excel annotation = field.getAnnotation(Excel.class); + String name = annotation.name(); + String[] str1 = name.split("\\("); + String en = str1.length > 1 ? str1[1].split("\\)")[0] : str1[0]; + String zh = str1[0]; + name = Objects.equals(locale,Locale.ENGLISH) ? en : zh; + return name; + } + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } + return null; + } } diff --git a/laws-modules/src/main/resources/excelTemplate/导入模板-市场法规清单.xls b/laws-modules/src/main/resources/excelTemplate/导入模板-市场法规清单.xls index 4d42bf3e..0a227156 100644 Binary files a/laws-modules/src/main/resources/excelTemplate/导入模板-市场法规清单.xls and b/laws-modules/src/main/resources/excelTemplate/导入模板-市场法规清单.xls differ diff --git a/laws-single-startup/src/main/resources/i18n/messages_en.properties b/laws-single-startup/src/main/resources/i18n/messages_en.properties index 5a72c6f7..51fe194d 100644 --- a/laws-single-startup/src/main/resources/i18n/messages_en.properties +++ b/laws-single-startup/src/main/resources/i18n/messages_en.properties @@ -85,4 +85,12 @@ process.already.distributed=The process has been distributed, do not reject! process.not.countersignature=It is not a countersign node task! zip_root_one_excel=The zip file contains more than one excel file message.no.exists.standard=The standard does not exist -scc.delete.standard.error=The standard has been used by the Standard Compliance Check Process, can not delete \ No newline at end of file +data.published=Data published +version.does.not.exist=Version does not exist +import.the.excel.file=Import the excel file +duplicate.standard.number=Duplicate standard number +standard.number.already.exists=The standard number already exists +formatting.error={0} formatting error +data.does.not.exist={0} does not exist +row.n.import=Row {0} +scc.delete.standard.error=The standard has been used by the Standard Compliance Check Process, can not delete diff --git a/laws-single-startup/src/main/resources/i18n/messages_zh.properties b/laws-single-startup/src/main/resources/i18n/messages_zh.properties index cc3416f6..dcf37f51 100644 --- a/laws-single-startup/src/main/resources/i18n/messages_zh.properties +++ b/laws-single-startup/src/main/resources/i18n/messages_zh.properties @@ -84,4 +84,12 @@ process.already.distributed=\u6D41\u7A0B\u5DF2\u5206\u53D1,\u7981\u6B62\u9A73\u5 process.not.countersignature=\u4E0D\u662F\u4F1A\u7B7E\u8282\u70B9\u4EFB\u52A1! zip_root_one_excel=\u538B\u7F29\u5305\u6839\u76EE\u5F55\u4E0B\u4EC5\u80FD\u5B58\u5728\u4E00\u4E2Aexcel\u4E3A\u5BFC\u5165\u6570\u636E message.no.exists.standard=\u6807\u51C6\u4E0D\u5B58\u5728\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458 +data.published=\u6570\u636E\u5DF2\u53D1\u5E03 +version.does.not.exist=\u7248\u672C\u4E0D\u5B58\u5728 +import.the.excel.file=\u8BF7\u5BFC\u5165excel\u6587\u4EF6 +duplicate.standard.number=\u6807\u51C6\u7F16\u53F7\u91CD\u590D +standard.number.already.exists=\u6807\u51C6\u7F16\u53F7\u5DF2\u5B58\u5728 +formatting.error={0}\u683C\u5F0F\u9519\u8BEF +data.does.not.exist={0}\u6570\u636E\u4E0D\u5B58\u5728 +row.n.import=\u7B2C{0}\u884C scc.delete.standard.error=\u6709\u6B63\u5728\u8FDB\u884C\u4E2D\u7684\u6CD5\u89C4\u7B26\u5408\u6027\u6392\u67E5\u6D41\u7A0B\uFF0C\u4E0D\u5141\u8BB8\u5220\u9664